You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jan 29, 2023. It is now read-only.
<ahref="https://www.buymeacoffee.com/khoihprog6"target="_blank"><imgsrc="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png"alt="Buy Me A Coffee"style="height: 60px!important;width: 217px!important;" ></a>
10
+
11
+
12
+
---
13
+
---
14
+
9
15
## Table of Contents
10
16
11
17
*[Important Change from v1.5.0](#Important-Change-from-v150)
@@ -132,7 +138,8 @@ The catch is your function is now part of an ISR (Interrupt Service Routine), an
132
138
133
139
1.[`Arduino IDE 1.8.19+` for Arduino](https://github.com/arduino/Arduino). [](https://github.com/arduino/Arduino/releases/latest)
134
140
2.[`Arduino megaAVR core 1.8.7+`](https://github.com/arduino/ArduinoCore-megaavr/releases) for Arduino megaAVR boards. Use Arduino Board Manager to install.
135
-
3. To use with certain example
141
+
3.[`MegaCoreX megaAVR core 1.0.9+`](https://github.com/MCUdude/MegaCoreX/releases) for Arduino megaAVR boards. [](https://github.com/MCUdude/MegaCoreX/releases/latest). Follow [**How to install**](https://github.com/MCUdude/MegaCoreX#how-to-install).
142
+
4. To use with certain example
136
143
-[`SimpleTimer library`](https://github.com/jfturcot/SimpleTimer) for [ISR_Timers_Array_Simple](examples/ISR_Timers_Array_Simple) and [ISR_16_Timers_Array_Complex](examples/ISR_16_Timers_Array_Complex) examples.
137
144
138
145
---
@@ -427,8 +434,11 @@ void setup()
427
434
### Example [ISR_16_Timers_Array_Complex](examples/ISR_16_Timers_Array_Complex)
### 1. ISR_16_Timers_Array_Complex on Arduino megaAVR Nano Every using MegaCoreX
1248
+
1249
+
The following is the sample terminal output when running example [ISR_16_Timers_Array_Complex](examples/ISR_16_Timers_Array_Complex) on **Arduino megaAVR Nano Every using MegaCoreX** to demonstrate the accuracy of ISR Hardware Timer, **especially when system is very busy**. The ISR timer is **programmed for 2s, is activated exactly after 2.000s !!!**
1250
+
1251
+
While software timer, **programmed for 2s, is activated after more than 10.000s in loop().
1252
+
1253
+
```
1254
+
Starting ISR_16_Timers_Array_Complex on MegaCoreX ATmega4809
1255
+
megaAVR_TimerInterrupt v1.6.0
1256
+
CPU Frequency = 16 MHz
1257
+
TCB Clock Frequency = 16MHz for highest accuracy
1258
+
[TISR] TCB1
1259
+
[TISR] ==================
1260
+
[TISR] Init, Timer = 1
1261
+
[TISR] CTRLB = 0
1262
+
[TISR] CCMP = 65535
1263
+
[TISR] INTCTRL = 0
1264
+
[TISR] CTRLA = 1
1265
+
[TISR] ==================
1266
+
[TISR] Frequency = 200.00, CLK_TCB_FREQ = 16000000
1267
+
[TISR] setFrequency: _CCMPValueRemaining = 80000
1268
+
Starting ITimer1 OK, millis() = 12
1269
+
SimpleTimer : 2, ms : 10013, Dms : 10013
1270
+
Timer : 0, programmed : 5000, actual : 5016
1271
+
Timer : 1, programmed : 10000, actual : 10016
1272
+
Timer : 2, programmed : 15000, actual : 0
1273
+
Timer : 3, programmed : 20000, actual : 0
1274
+
Timer : 4, programmed : 25000, actual : 0
1275
+
Timer : 5, programmed : 30000, actual : 0
1276
+
Timer : 6, programmed : 35000, actual : 0
1277
+
Timer : 7, programmed : 40000, actual : 0
1278
+
Timer : 8, programmed : 45000, actual : 0
1279
+
Timer : 9, programmed : 50000, actual : 0
1280
+
Timer : 10, programmed : 55000, actual : 0
1281
+
Timer : 11, programmed : 60000, actual : 0
1282
+
Timer : 12, programmed : 65000, actual : 0
1283
+
Timer : 13, programmed : 70000, actual : 0
1284
+
Timer : 14, programmed : 75000, actual : 0
1285
+
Timer : 15, programmed : 80000, actual : 0
1286
+
SimpleTimer : 2, ms : 20072, Dms : 10059
1287
+
Timer : 0, programmed : 5000, actual : 5000
1288
+
Timer : 1, programmed : 10000, actual : 10000
1289
+
Timer : 2, programmed : 15000, actual : 15016
1290
+
Timer : 3, programmed : 20000, actual : 20016
1291
+
Timer : 4, programmed : 25000, actual : 0
1292
+
Timer : 5, programmed : 30000, actual : 0
1293
+
Timer : 6, programmed : 35000, actual : 0
1294
+
Timer : 7, programmed : 40000, actual : 0
1295
+
Timer : 8, programmed : 45000, actual : 0
1296
+
Timer : 9, programmed : 50000, actual : 0
1297
+
Timer : 10, programmed : 55000, actual : 0
1298
+
Timer : 11, programmed : 60000, actual : 0
1299
+
Timer : 12, programmed : 65000, actual : 0
1300
+
Timer : 13, programmed : 70000, actual : 0
1301
+
Timer : 14, programmed : 75000, actual : 0
1302
+
Timer : 15, programmed : 80000, actual : 0
1303
+
SimpleTimer : 2, ms : 30132, Dms : 10060
1304
+
Timer : 0, programmed : 5000, actual : 5000
1305
+
Timer : 1, programmed : 10000, actual : 10001
1306
+
Timer : 2, programmed : 15000, actual : 15001
1307
+
Timer : 3, programmed : 20000, actual : 20016
1308
+
Timer : 4, programmed : 25000, actual : 25017
1309
+
Timer : 5, programmed : 30000, actual : 30017
1310
+
Timer : 6, programmed : 35000, actual : 0
1311
+
Timer : 7, programmed : 40000, actual : 0
1312
+
Timer : 8, programmed : 45000, actual : 0
1313
+
Timer : 9, programmed : 50000, actual : 0
1314
+
Timer : 10, programmed : 55000, actual : 0
1315
+
Timer : 11, programmed : 60000, actual : 0
1316
+
Timer : 12, programmed : 65000, actual : 0
1317
+
Timer : 13, programmed : 70000, actual : 0
1318
+
Timer : 14, programmed : 75000, actual : 0
1319
+
Timer : 15, programmed : 80000, actual : 0
1320
+
SimpleTimer : 2, ms : 40192, Dms : 10060
1321
+
Timer : 0, programmed : 5000, actual : 5000
1322
+
Timer : 1, programmed : 10000, actual : 10000
1323
+
Timer : 2, programmed : 15000, actual : 15001
1324
+
Timer : 3, programmed : 20000, actual : 20001
1325
+
Timer : 4, programmed : 25000, actual : 25017
1326
+
Timer : 5, programmed : 30000, actual : 30017
1327
+
Timer : 6, programmed : 35000, actual : 35017
1328
+
Timer : 7, programmed : 40000, actual : 40017
1329
+
Timer : 8, programmed : 45000, actual : 0
1330
+
Timer : 9, programmed : 50000, actual : 0
1331
+
Timer : 10, programmed : 55000, actual : 0
1332
+
Timer : 11, programmed : 60000, actual : 0
1333
+
Timer : 12, programmed : 65000, actual : 0
1334
+
Timer : 13, programmed : 70000, actual : 0
1335
+
Timer : 14, programmed : 75000, actual : 0
1336
+
Timer : 15, programmed : 80000, actual : 0
1337
+
SimpleTimer : 2, ms : 50253, Dms : 10061
1338
+
Timer : 0, programmed : 5000, actual : 5000
1339
+
Timer : 1, programmed : 10000, actual : 10000
1340
+
Timer : 2, programmed : 15000, actual : 15000
1341
+
Timer : 3, programmed : 20000, actual : 20001
1342
+
Timer : 4, programmed : 25000, actual : 25000
1343
+
Timer : 5, programmed : 30000, actual : 30017
1344
+
Timer : 6, programmed : 35000, actual : 35017
1345
+
Timer : 7, programmed : 40000, actual : 40017
1346
+
Timer : 8, programmed : 45000, actual : 45017
1347
+
Timer : 9, programmed : 50000, actual : 50017
1348
+
Timer : 10, programmed : 55000, actual : 0
1349
+
Timer : 11, programmed : 60000, actual : 0
1350
+
Timer : 12, programmed : 65000, actual : 0
1351
+
Timer : 13, programmed : 70000, actual : 0
1352
+
Timer : 14, programmed : 75000, actual : 0
1353
+
Timer : 15, programmed : 80000, actual : 0
1354
+
SimpleTimer : 2, ms : 60315, Dms : 10062
1355
+
Timer : 0, programmed : 5000, actual : 5000
1356
+
Timer : 1, programmed : 10000, actual : 10000
1357
+
Timer : 2, programmed : 15000, actual : 15000
1358
+
Timer : 3, programmed : 20000, actual : 20000
1359
+
Timer : 4, programmed : 25000, actual : 25000
1360
+
Timer : 5, programmed : 30000, actual : 30000
1361
+
Timer : 6, programmed : 35000, actual : 35017
1362
+
Timer : 7, programmed : 40000, actual : 40017
1363
+
Timer : 8, programmed : 45000, actual : 45017
1364
+
Timer : 9, programmed : 50000, actual : 50017
1365
+
Timer : 10, programmed : 55000, actual : 55017
1366
+
Timer : 11, programmed : 60000, actual : 60017
1367
+
Timer : 12, programmed : 65000, actual : 0
1368
+
Timer : 13, programmed : 70000, actual : 0
1369
+
Timer : 14, programmed : 75000, actual : 0
1370
+
Timer : 15, programmed : 80000, actual : 0
1371
+
SimpleTimer : 2, ms : 70377, Dms : 10062
1372
+
Timer : 0, programmed : 5000, actual : 5000
1373
+
Timer : 1, programmed : 10000, actual : 9996
1374
+
Timer : 2, programmed : 15000, actual : 15000
1375
+
Timer : 3, programmed : 20000, actual : 20000
1376
+
Timer : 4, programmed : 25000, actual : 25000
1377
+
Timer : 5, programmed : 30000, actual : 30000
1378
+
Timer : 6, programmed : 35000, actual : 34996
1379
+
Timer : 7, programmed : 40000, actual : 40017
1380
+
Timer : 8, programmed : 45000, actual : 45017
1381
+
Timer : 9, programmed : 50000, actual : 50017
1382
+
Timer : 10, programmed : 55000, actual : 55017
1383
+
Timer : 11, programmed : 60000, actual : 60017
1384
+
Timer : 12, programmed : 65000, actual : 65013
1385
+
Timer : 13, programmed : 70000, actual : 70013
1386
+
Timer : 14, programmed : 75000, actual : 0
1387
+
Timer : 15, programmed : 80000, actual : 0
1388
+
SimpleTimer : 2, ms : 80440, Dms : 10063
1389
+
Timer : 0, programmed : 5000, actual : 5000
1390
+
Timer : 1, programmed : 10000, actual : 10000
1391
+
Timer : 2, programmed : 15000, actual : 14996
1392
+
Timer : 3, programmed : 20000, actual : 19996
1393
+
Timer : 4, programmed : 25000, actual : 24996
1394
+
Timer : 5, programmed : 30000, actual : 30000
1395
+
Timer : 6, programmed : 35000, actual : 34996
1396
+
Timer : 7, programmed : 40000, actual : 39996
1397
+
Timer : 8, programmed : 45000, actual : 45017
1398
+
Timer : 9, programmed : 50000, actual : 50017
1399
+
Timer : 10, programmed : 55000, actual : 55017
1400
+
Timer : 11, programmed : 60000, actual : 60017
1401
+
Timer : 12, programmed : 65000, actual : 65013
1402
+
Timer : 13, programmed : 70000, actual : 70013
1403
+
Timer : 14, programmed : 75000, actual : 75013
1404
+
Timer : 15, programmed : 80000, actual : 80013
1405
+
```
1406
+
1236
1407
---
1237
1408
---
1238
1409
@@ -1288,6 +1459,8 @@ Submit issues to: [megaAVR_TimerInterrupt issues](https://github.com/khoih-prog/
1288
1459
9. Selectable **TCB Clock 16MHz, 8MHz or 250KHz** depending on necessary accuracy
1289
1460
10. Fix `multiple-definitions` linker error
1290
1461
11. Optimize library code by using `reference-passing` instead of `value-passing`
1462
+
12. Add support to `MegaCoreX` core, including ATmega4809, ATmega4808, ATmega3209, ATmega3208, ATmega1609, ATmega1608, ATmega809 and ATmega808
0 commit comments