Skip to content
This repository was archived by the owner on Jan 29, 2023. It is now read-only.

Commit b13aa2d

Browse files
authored
v1.2.0 to fix accuracy bug
### Releases v1.2.0 1. Fix `poor-timer-accuracy` bug. Check [Poor accuracy on timer interrupt frequency or interval. #4](#4)
1 parent 72a9d11 commit b13aa2d

11 files changed

+162
-121
lines changed

README.md

Lines changed: 127 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ While software timer, **programmed for 2s, is activated after more than 10.000s
445445
446446
```
447447
Starting ISR_Timers_Array_Simple on RaspberryPi Pico
448-
MBED_RPi_Pico_TimerInterrupt v1.1.2
448+
MBED_RPi_Pico_TimerInterrupt v1.2.0
449449
[TISR] _timerNo = 1, Clock (Hz) = 1000000.00, _fre (Hz) = 1000.00
450450
[TISR] _count = 0-1000
451451
[TISR] hardware_alarm_set_target, uS = 1000
@@ -469,7 +469,7 @@ The following is the sample terminal output when running example [TimerInterrupt
469469
470470
```
471471
Starting TimerInterruptTest on RaspberryPi Pico
472-
MBED_RPi_Pico_TimerInterrupt v1.1.2
472+
MBED_RPi_Pico_TimerInterrupt v1.2.0
473473
[TISR] _timerNo = 0, Clock (Hz) = 1000000.00, _fre (Hz) = 1.00
474474
[TISR] _count = 0-1000000
475475
[TISR] hardware_alarm_set_target, uS = 1000000
@@ -497,7 +497,7 @@ The following is the sample terminal output when running example [Change_Interva
497497
498498
```
499499
Starting Change_Interval on RaspberryPi Pico
500-
MBED_RPi_Pico_TimerInterrupt v1.1.2
500+
MBED_RPi_Pico_TimerInterrupt v1.2.0
501501
[TISR] _timerNo = 0, Clock (Hz) = 1000000.00, _fre (Hz) = 0.50
502502
[TISR] _count = 0-2000000
503503
[TISR] hardware_alarm_set_target, uS = 2000000
@@ -535,7 +535,7 @@ The following is the sample terminal output when running example [SwitchDebounce
535535
536536
```
537537
Starting SwitchDebounce on RaspberryPi Pico
538-
MBED_RPi_Pico_TimerInterrupt v1.1.2
538+
MBED_RPi_Pico_TimerInterrupt v1.2.0
539539
[TISR] _timerNo = 1, Clock (Hz) = 1000000.00, _fre (Hz) = 1000.00
540540
[TISR] _count = 0-1000
541541
[TISR] hardware_alarm_set_target, uS = 1000
@@ -569,13 +569,13 @@ The following is the sample terminal output when running example [ISR_16_Timers_
569569
570570
```
571571
Starting ISR_16_Timers_Array_Complex on RaspberryPi Pico
572-
MBED_RPi_Pico_TimerInterrupt v1.1.2
572+
MBED_RPi_Pico_TimerInterrupt v1.2.0
573573
[TISR] _timerNo = 0, Clock (Hz) = 1000000.00, _fre (Hz) = 100.00
574574
[TISR] _count = 0-10000
575575
[TISR] hardware_alarm_set_target, uS = 10000
576-
Starting ITimer OK, millis() = 1083
577-
SimpleTimer : 2, ms : 10683, Dms : 9599
578-
Timer : 0, programmed : 5000, actual : 5000
576+
Starting ITimer OK, millis() = 1621
577+
SimpleTimer : 2, ms : 11622, Dms : 10000
578+
Timer : 0, programmed : 5000, actual : 5009
579579
Timer : 1, programmed : 10000, actual : 0
580580
Timer : 2, programmed : 15000, actual : 0
581581
Timer : 3, programmed : 20000, actual : 0
@@ -591,10 +591,10 @@ Timer : 12, programmed : 65000, actual : 0
591591
Timer : 13, programmed : 70000, actual : 0
592592
Timer : 14, programmed : 75000, actual : 0
593593
Timer : 15, programmed : 80000, actual : 0
594-
SimpleTimer : 2, ms : 20289, Dms : 9606
595-
Timer : 0, programmed : 5000, actual : 5001
596-
Timer : 1, programmed : 10000, actual : 10000
597-
Timer : 2, programmed : 15000, actual : 15001
594+
SimpleTimer : 2, ms : 21628, Dms : 10006
595+
Timer : 0, programmed : 5000, actual : 5000
596+
Timer : 1, programmed : 10000, actual : 10009
597+
Timer : 2, programmed : 15000, actual : 15009
598598
Timer : 3, programmed : 20000, actual : 0
599599
Timer : 4, programmed : 25000, actual : 0
600600
Timer : 5, programmed : 30000, actual : 0
@@ -608,13 +608,13 @@ Timer : 12, programmed : 65000, actual : 0
608608
Timer : 13, programmed : 70000, actual : 0
609609
Timer : 14, programmed : 75000, actual : 0
610610
Timer : 15, programmed : 80000, actual : 0
611-
SimpleTimer : 2, ms : 29895, Dms : 9606
612-
Timer : 0, programmed : 5000, actual : 5001
613-
Timer : 1, programmed : 10000, actual : 10001
614-
Timer : 2, programmed : 15000, actual : 15001
615-
Timer : 3, programmed : 20000, actual : 20001
616-
Timer : 4, programmed : 25000, actual : 25002
617-
Timer : 5, programmed : 30000, actual : 0
611+
SimpleTimer : 2, ms : 31634, Dms : 10006
612+
Timer : 0, programmed : 5000, actual : 5000
613+
Timer : 1, programmed : 10000, actual : 10000
614+
Timer : 2, programmed : 15000, actual : 15000
615+
Timer : 3, programmed : 20000, actual : 20009
616+
Timer : 4, programmed : 25000, actual : 25009
617+
Timer : 5, programmed : 30000, actual : 30009
618618
Timer : 6, programmed : 35000, actual : 0
619619
Timer : 7, programmed : 40000, actual : 0
620620
Timer : 8, programmed : 45000, actual : 0
@@ -625,15 +625,15 @@ Timer : 12, programmed : 65000, actual : 0
625625
Timer : 13, programmed : 70000, actual : 0
626626
Timer : 14, programmed : 75000, actual : 0
627627
Timer : 15, programmed : 80000, actual : 0
628-
SimpleTimer : 2, ms : 39501, Dms : 9606
629-
Timer : 0, programmed : 5000, actual : 5001
630-
Timer : 1, programmed : 10000, actual : 10001
631-
Timer : 2, programmed : 15000, actual : 15001
632-
Timer : 3, programmed : 20000, actual : 20001
633-
Timer : 4, programmed : 25000, actual : 25002
634-
Timer : 5, programmed : 30000, actual : 30002
635-
Timer : 6, programmed : 35000, actual : 35003
636-
Timer : 7, programmed : 40000, actual : 0
628+
SimpleTimer : 2, ms : 41640, Dms : 10006
629+
Timer : 0, programmed : 5000, actual : 5000
630+
Timer : 1, programmed : 10000, actual : 10000
631+
Timer : 2, programmed : 15000, actual : 15000
632+
Timer : 3, programmed : 20000, actual : 20000
633+
Timer : 4, programmed : 25000, actual : 25009
634+
Timer : 5, programmed : 30000, actual : 30009
635+
Timer : 6, programmed : 35000, actual : 35009
636+
Timer : 7, programmed : 40000, actual : 40009
637637
Timer : 8, programmed : 45000, actual : 0
638638
Timer : 9, programmed : 50000, actual : 0
639639
Timer : 10, programmed : 55000, actual : 0
@@ -642,91 +642,110 @@ Timer : 12, programmed : 65000, actual : 0
642642
Timer : 13, programmed : 70000, actual : 0
643643
Timer : 14, programmed : 75000, actual : 0
644644
Timer : 15, programmed : 80000, actual : 0
645-
SimpleTimer : 2, ms : 49106, Dms : 9605
646-
Timer : 0, programmed : 5000, actual : 5001
647-
Timer : 1, programmed : 10000, actual : 10001
648-
Timer : 2, programmed : 15000, actual : 15002
649-
Timer : 3, programmed : 20000, actual : 20002
650-
Timer : 4, programmed : 25000, actual : 25002
651-
Timer : 5, programmed : 30000, actual : 30002
652-
Timer : 6, programmed : 35000, actual : 35003
653-
Timer : 7, programmed : 40000, actual : 40003
654-
Timer : 8, programmed : 45000, actual : 45004
655-
Timer : 9, programmed : 50000, actual : 0
645+
SimpleTimer : 2, ms : 51646, Dms : 10006
646+
Timer : 0, programmed : 5000, actual : 5000
647+
Timer : 1, programmed : 10000, actual : 10000
648+
Timer : 2, programmed : 15000, actual : 15000
649+
Timer : 3, programmed : 20000, actual : 20000
650+
Timer : 4, programmed : 25000, actual : 25000
651+
Timer : 5, programmed : 30000, actual : 30009
652+
Timer : 6, programmed : 35000, actual : 35009
653+
Timer : 7, programmed : 40000, actual : 40009
654+
Timer : 8, programmed : 45000, actual : 45009
655+
Timer : 9, programmed : 50000, actual : 50009
656656
Timer : 10, programmed : 55000, actual : 0
657657
Timer : 11, programmed : 60000, actual : 0
658658
Timer : 12, programmed : 65000, actual : 0
659659
Timer : 13, programmed : 70000, actual : 0
660660
Timer : 14, programmed : 75000, actual : 0
661661
Timer : 15, programmed : 80000, actual : 0
662-
SimpleTimer : 2, ms : 58712, Dms : 9606
663-
Timer : 0, programmed : 5000, actual : 5001
664-
Timer : 1, programmed : 10000, actual : 10001
665-
Timer : 2, programmed : 15000, actual : 15002
666-
Timer : 3, programmed : 20000, actual : 20002
667-
Timer : 4, programmed : 25000, actual : 25002
668-
Timer : 5, programmed : 30000, actual : 30002
669-
Timer : 6, programmed : 35000, actual : 35003
670-
Timer : 7, programmed : 40000, actual : 40003
671-
Timer : 8, programmed : 45000, actual : 45004
672-
Timer : 9, programmed : 50000, actual : 50004
673-
Timer : 10, programmed : 55000, actual : 55005
674-
Timer : 11, programmed : 60000, actual : 0
662+
SimpleTimer : 2, ms : 61652, Dms : 10006
663+
Timer : 0, programmed : 5000, actual : 5000
664+
Timer : 1, programmed : 10000, actual : 10000
665+
Timer : 2, programmed : 15000, actual : 15000
666+
Timer : 3, programmed : 20000, actual : 20000
667+
Timer : 4, programmed : 25000, actual : 25000
668+
Timer : 5, programmed : 30000, actual : 30000
669+
Timer : 6, programmed : 35000, actual : 35009
670+
Timer : 7, programmed : 40000, actual : 40009
671+
Timer : 8, programmed : 45000, actual : 45009
672+
Timer : 9, programmed : 50000, actual : 50009
673+
Timer : 10, programmed : 55000, actual : 55009
674+
Timer : 11, programmed : 60000, actual : 60009
675675
Timer : 12, programmed : 65000, actual : 0
676676
Timer : 13, programmed : 70000, actual : 0
677677
Timer : 14, programmed : 75000, actual : 0
678678
Timer : 15, programmed : 80000, actual : 0
679-
SimpleTimer : 2, ms : 68318, Dms : 9606
680-
Timer : 0, programmed : 5000, actual : 5001
681-
Timer : 1, programmed : 10000, actual : 10001
682-
Timer : 2, programmed : 15000, actual : 15001
683-
Timer : 3, programmed : 20000, actual : 20002
684-
Timer : 4, programmed : 25000, actual : 25002
685-
Timer : 5, programmed : 30000, actual : 30003
686-
Timer : 6, programmed : 35000, actual : 35003
687-
Timer : 7, programmed : 40000, actual : 40003
688-
Timer : 8, programmed : 45000, actual : 45004
689-
Timer : 9, programmed : 50000, actual : 50004
690-
Timer : 10, programmed : 55000, actual : 55005
691-
Timer : 11, programmed : 60000, actual : 60005
692-
Timer : 12, programmed : 65000, actual : 65006
693-
Timer : 13, programmed : 70000, actual : 0
679+
SimpleTimer : 2, ms : 71658, Dms : 10006
680+
Timer : 0, programmed : 5000, actual : 5000
681+
Timer : 1, programmed : 10000, actual : 10000
682+
Timer : 2, programmed : 15000, actual : 15000
683+
Timer : 3, programmed : 20000, actual : 20000
684+
Timer : 4, programmed : 25000, actual : 25000
685+
Timer : 5, programmed : 30000, actual : 30000
686+
Timer : 6, programmed : 35000, actual : 35000
687+
Timer : 7, programmed : 40000, actual : 40009
688+
Timer : 8, programmed : 45000, actual : 45009
689+
Timer : 9, programmed : 50000, actual : 50009
690+
Timer : 10, programmed : 55000, actual : 55009
691+
Timer : 11, programmed : 60000, actual : 60009
692+
Timer : 12, programmed : 65000, actual : 65009
693+
Timer : 13, programmed : 70000, actual : 70009
694694
Timer : 14, programmed : 75000, actual : 0
695695
Timer : 15, programmed : 80000, actual : 0
696-
SimpleTimer : 2, ms : 77924, Dms : 9606
697-
Timer : 0, programmed : 5000, actual : 5001
698-
Timer : 1, programmed : 10000, actual : 10001
699-
Timer : 2, programmed : 15000, actual : 15002
700-
Timer : 3, programmed : 20000, actual : 20002
701-
Timer : 4, programmed : 25000, actual : 25003
702-
Timer : 5, programmed : 30000, actual : 30003
703-
Timer : 6, programmed : 35000, actual : 35003
704-
Timer : 7, programmed : 40000, actual : 40003
705-
Timer : 8, programmed : 45000, actual : 45004
706-
Timer : 9, programmed : 50000, actual : 50004
707-
Timer : 10, programmed : 55000, actual : 55005
708-
Timer : 11, programmed : 60000, actual : 60005
709-
Timer : 12, programmed : 65000, actual : 65006
710-
Timer : 13, programmed : 70000, actual : 70006
711-
Timer : 14, programmed : 75000, actual : 75007
712-
Timer : 15, programmed : 80000, actual : 0
713-
SimpleTimer : 2, ms : 87529, Dms : 9605
714-
Timer : 0, programmed : 5000, actual : 5001
715-
Timer : 1, programmed : 10000, actual : 10001
716-
Timer : 2, programmed : 15000, actual : 15002
717-
Timer : 3, programmed : 20000, actual : 20002
718-
Timer : 4, programmed : 25000, actual : 25003
719-
Timer : 5, programmed : 30000, actual : 30003
720-
Timer : 6, programmed : 35000, actual : 35003
721-
Timer : 7, programmed : 40000, actual : 40004
722-
Timer : 8, programmed : 45000, actual : 45004
723-
Timer : 9, programmed : 50000, actual : 50004
724-
Timer : 10, programmed : 55000, actual : 55005
725-
Timer : 11, programmed : 60000, actual : 60005
726-
Timer : 12, programmed : 65000, actual : 65006
727-
Timer : 13, programmed : 70000, actual : 70006
728-
Timer : 14, programmed : 75000, actual : 75007
729-
Timer : 15, programmed : 80000, actual : 80007
696+
SimpleTimer : 2, ms : 81664, Dms : 10006
697+
Timer : 0, programmed : 5000, actual : 5000
698+
Timer : 1, programmed : 10000, actual : 10000
699+
Timer : 2, programmed : 15000, actual : 15000
700+
Timer : 3, programmed : 20000, actual : 20000
701+
Timer : 4, programmed : 25000, actual : 25000
702+
Timer : 5, programmed : 30000, actual : 30000
703+
Timer : 6, programmed : 35000, actual : 35000
704+
Timer : 7, programmed : 40000, actual : 40000
705+
Timer : 8, programmed : 45000, actual : 45009
706+
Timer : 9, programmed : 50000, actual : 50009
707+
Timer : 10, programmed : 55000, actual : 55009
708+
Timer : 11, programmed : 60000, actual : 60009
709+
Timer : 12, programmed : 65000, actual : 65009
710+
Timer : 13, programmed : 70000, actual : 70009
711+
Timer : 14, programmed : 75000, actual : 75009
712+
Timer : 15, programmed : 80000, actual : 80009
713+
...
714+
SimpleTimer : 2, ms : 161712, Dms : 10006
715+
Timer : 0, programmed : 5000, actual : 5000
716+
Timer : 1, programmed : 10000, actual : 10000
717+
Timer : 2, programmed : 15000, actual : 15000
718+
Timer : 3, programmed : 20000, actual : 20000
719+
Timer : 4, programmed : 25000, actual : 25000
720+
Timer : 5, programmed : 30000, actual : 30000
721+
Timer : 6, programmed : 35000, actual : 35000
722+
Timer : 7, programmed : 40000, actual : 40000
723+
Timer : 8, programmed : 45000, actual : 45000
724+
Timer : 9, programmed : 50000, actual : 50000
725+
Timer : 10, programmed : 55000, actual : 55000
726+
Timer : 11, programmed : 60000, actual : 60000
727+
Timer : 12, programmed : 65000, actual : 65000
728+
Timer : 13, programmed : 70000, actual : 70000
729+
Timer : 14, programmed : 75000, actual : 75000
730+
Timer : 15, programmed : 80000, actual : 80000
731+
SimpleTimer : 2, ms : 171718, Dms : 10006
732+
Timer : 0, programmed : 5000, actual : 5000
733+
Timer : 1, programmed : 10000, actual : 10000
734+
Timer : 2, programmed : 15000, actual : 15000
735+
Timer : 3, programmed : 20000, actual : 20000
736+
Timer : 4, programmed : 25000, actual : 25000
737+
Timer : 5, programmed : 30000, actual : 30000
738+
Timer : 6, programmed : 35000, actual : 35000
739+
Timer : 7, programmed : 40000, actual : 40000
740+
Timer : 8, programmed : 45000, actual : 45000
741+
Timer : 9, programmed : 50000, actual : 50000
742+
Timer : 10, programmed : 55000, actual : 55000
743+
Timer : 11, programmed : 60000, actual : 60000
744+
Timer : 12, programmed : 65000, actual : 65000
745+
Timer : 13, programmed : 70000, actual : 70000
746+
Timer : 14, programmed : 75000, actual : 75000
747+
Timer : 15, programmed : 80000, actual : 80000
748+
730749
```
731750
732751
---
@@ -788,6 +807,13 @@ Submit issues to: [MBED_RPI_PICO_TimerInterrupt issues](https://github.com/khoih
788807

789808
Many thanks for everyone for bug reporting, new feature suggesting, testing and contributing to the development of this library.
790809

810+
1. [Neil Baylis](https://github.com/pixpop) to report issue [Poor accuracy on timer interrupt frequency or interval. #4](https://github.com/khoih-prog/MBED_RPI_PICO_TimerInterrupt/issues/4) leading to version v1.2.0 to fix `poor-timer-accuracy` bug
811+
812+
<table>
813+
<tr>
814+
<td align="center"><a href="https://github.com/pixpop"><img src="https://github.com/pixpop.png" width="100px;" alt="pixpop"/><br /><sub><b>Neil Baylis</b></sub></a><br /></td>
815+
</tr>
816+
</table>
791817

792818
---
793819

changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323

2424
## Changelog
2525

26+
### Releases v1.2.0
27+
28+
1. Fix `poor-timer-accuracy` bug. Check [Poor accuracy on timer interrupt frequency or interval. #4](https://github.com/khoih-prog/MBED_RPI_PICO_TimerInterrupt/issues/4)
29+
2630
### Releases v1.1.2
2731

2832
1. Using `float` instead of `ulong` for interval for better accuracy

library.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "MBED_RPI_PICO_TimerInterrupt",
3-
"version": "1.1.2",
3+
"version": "1.2.0",
44
"keywords": "timing, device, control, timer, interrupt, hardware, isr, isr-based, hardware-timer, mission-critical, accuracy, precise, non-blocking, mbed, mbed-rp2040, nano-rp2040-connect, raspberry-pico, rpi-pico, pico, rp2040",
55
"description": "This library enables you to use Interrupt from Hardware Timers on MBED RP2040-based boards such as Nano_RP2040_Connect, RASPBERRY_PI_PICO. It now supports 16 ISR-based timers, while consuming only 1 Hardware Timer. Timers' interval is very long (ulong millisecs). The most important feature is they're ISR-based timers. Therefore, their executions are not blocked by bad-behaving functions or tasks. This important feature is absolutely necessary for mission-critical tasks. These hardware timers, using interrupt, still work even if other functions are blocking. Moreover, they are much more precise (certainly depending on clock frequency accuracy) than other software timers using millis() or micros(). That's necessary if you need to measure some data requiring better accuracy.",
66
"authors":

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=MBED_RPI_PICO_TimerInterrupt
2-
version=1.1.2
2+
version=1.2.0
33
author=Khoi Hoang <khoih.prog@gmail.com>
44
maintainer=Khoi Hoang <khoih.prog@gmail.com>
55
sentence=This library enables you to use Interrupt from Hardware Timers on RP2040-based boards such as Nano_RP2040_Connect, RASPBERRY_PI_PICO

src/MBED_RPi_Pico_ISR_Timer-Impl.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
Based on BlynkTimer.h
2626
Author: Volodymyr Shymanskyy
2727
28-
Version: 1.1.2
28+
Version: 1.2.0
2929
3030
Version Modified By Date Comments
3131
------- ----------- ---------- -----------
@@ -34,6 +34,7 @@
3434
1.1.0 K.Hoang 22/01/2022 Fix `multiple-definitions` linker error
3535
1.1.1 K.Hoang 25/09/2022 Remove redundant function call
3636
1.1.2 K.Hoang 25/09/2022 Using float instead of ulong for interval
37+
1.2.0 K.Hoang 12/10/2022 Fix poor timer accuracy bug
3738
*****************************************************************************************************************************/
3839

3940
#pragma once

src/MBED_RPi_Pico_ISR_Timer.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
Based on BlynkTimer.h
2626
Author: Volodymyr Shymanskyy
2727
28-
Version: 1.1.2
28+
Version: 1.2.0
2929
3030
Version Modified By Date Comments
3131
------- ----------- ---------- -----------
@@ -34,6 +34,7 @@
3434
1.1.0 K.Hoang 22/01/2022 Fix `multiple-definitions` linker error
3535
1.1.1 K.Hoang 25/09/2022 Remove redundant function call
3636
1.1.2 K.Hoang 25/09/2022 Using float instead of ulong for interval
37+
1.2.0 K.Hoang 12/10/2022 Fix poor timer accuracy bug
3738
*****************************************************************************************************************************/
3839

3940
#pragma once

0 commit comments

Comments
 (0)