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

Commit b99aafc

Browse files
authored
v1.3.0 to fix severe bug affecting start time
### Releases v1.3.0 1. Fix affecting time between the starts. Check [Enable fixed timing between timer calls (vs fixed time btw. end of timer call and next call as implemented) #3](#3)
1 parent f2ca9ce commit b99aafc

14 files changed

+171
-198
lines changed

CONTRIBUTING.md

+6-5
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ If you don't find anything, please [open a new issue](https://github.com/khoih-p
1515
Please ensure to specify the following:
1616

1717
* Arduino IDE version (e.g. 1.8.19) or Platform.io version
18-
* `RP2040` Core Version (e.g. RP2040 core v1.9.14)
19-
* `RP2040` Board type (e.g. RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040, GENERIC_RP2040, etc.)
18+
* `RP2040` Core Version (e.g. RP2040 core v2.5.4)
19+
* `RP2040` Board type (e.g. RASPBERRY_PI_PICO, RASPBERRY_PI_PICO_W, ADAFRUIT_FEATHER_RP2040, GENERIC_RP2040, etc.)
2020
* Contextual information (e.g. what you were trying to achieve)
2121
* Simplest possible steps to reproduce
2222
* Anything that might be relevant in your opinion, such as:
@@ -28,13 +28,13 @@ Please ensure to specify the following:
2828

2929
```
3030
Arduino IDE version: 1.8.19
31-
RP2040 core v1.9.14
31+
RP2040 core v2.5.4
3232
RASPBERRY_PI_PICO Module
3333
OS: Ubuntu 20.04 LTS
34-
Linux xy-Inspiron-3593 5.4.0-96-generic #109-Ubuntu SMP Wed Jan 12 16:49:16 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
34+
Linux xy-Inspiron-3593 5.15.0-46-generic #49~20.04.1-Ubuntu SMP Thu Aug 4 19:15:44 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
3535
3636
Context:
37-
I encountered a crash while using TimerInterrupt.
37+
I encountered a crash while using this library
3838
3939
Steps to reproduce:
4040
1. ...
@@ -51,3 +51,4 @@ There are usually some outstanding feature requests in the [existing issues list
5151
### Sending Pull Requests
5252

5353
Pull Requests with changes and fixes are also welcome!
54+

README.md

+28-161
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
[![arduino-library-badge](https://www.ardu-badge.com/badge/RPI_PICO_TimerInterrupt.svg?)](https://www.ardu-badge.com/RPI_PICO_TimerInterrupt)
44
[![GitHub release](https://img.shields.io/github/release/khoih-prog/RPI_PICO_TimerInterrupt.svg)](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt/releases)
5-
[![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt/blob/master/LICENSE)
5+
[![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt/blob/main/LICENSE)
66
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](#Contributing)
77
[![GitHub issues](https://img.shields.io/github/issues/khoih-prog/RPI_PICO_TimerInterrupt.svg)](http://github.com/khoih-prog/RPI_PICO_TimerInterrupt/issues)
88

9-
<a href="https://www.buymeacoffee.com/khoihprog6" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 50px !important;width: 181px !important;" ></a>
9+
<a href="https://www.buymeacoffee.com/khoihprog6" title="Donate to my libraries using BuyMeACoffee"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Donate to my libraries using BuyMeACoffee" style="height: 50px !important;width: 181px !important;" ></a>
10+
<a href="https://www.buymeacoffee.com/khoihprog6" title="Donate to my libraries using BuyMeACoffee"><img src="https://img.shields.io/badge/buy%20me%20a%20coffee-donate-orange.svg?logo=buy-me-a-coffee&logoColor=FFDD00" style="height: 20px !important;width: 200px !important;" ></a>
1011

1112
---
1213
---
@@ -76,6 +77,8 @@
7677

7778
Please have a look at [HOWTO Fix `Multiple Definitions` Linker Error](#howto-fix-multiple-definitions-linker-error)
7879

80+
---
81+
7982
### Why do we need this [RPI_PICO_TimerInterrupt library](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt)
8083

8184
## Features
@@ -119,7 +122,7 @@ The catch is **your function is now part of an ISR (Interrupt Service Routine),
119122

120123
### Currently supported Boards
121124

122-
1. RP2040-based boards such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040, Nano_RP2040_Connect, GENERIC_RP2040**, etc.
125+
1. RP2040-based boards such as **RASPBERRY_PI_PICO, RASPBERRY_PI_PICO_W, ADAFRUIT_FEATHER_RP2040, Nano_RP2040_Connect, GENERIC_RP2040**, etc., using [`arduino-pico core`](https://github.com/earlephilhower/arduino-pico)
123126

124127
---
125128

@@ -137,7 +140,7 @@ The catch is **your function is now part of an ISR (Interrupt Service Routine),
137140
## Prerequisites
138141

139142
1. [`Arduino IDE 1.8.19+` for Arduino](https://github.com/arduino/Arduino). [![GitHub release](https://img.shields.io/github/release/arduino/Arduino.svg)](https://github.com/arduino/Arduino/releases/latest)
140-
2. [`Earle Philhower's arduino-pico core v1.10.0+`](https://github.com/earlephilhower/arduino-pico) for RP2040-based boards such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, etc. [![GitHub release](https://img.shields.io/github/release/earlephilhower/arduino-pico.svg)](https://github.com/earlephilhower/arduino-pico/releases/latest)
143+
2. [`Earle Philhower's arduino-pico core v2.5.4+`](https://github.com/earlephilhower/arduino-pico) for RP2040-based boards such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, etc. [![GitHub release](https://img.shields.io/github/release/earlephilhower/arduino-pico.svg)](https://github.com/earlephilhower/arduino-pico/releases/latest)
141144
3. To use with certain example
142145
- [`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.
143146

@@ -157,15 +160,15 @@ You can also use this link [![arduino-library-badge](https://www.ardu-badge.com/
157160
Another way to install is to:
158161

159162
1. Navigate to [**RPI_PICO_TimerInterrupt**](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt) page.
160-
2. Download the latest release `RPI_PICO_TimerInterrupt-master.zip`.
161-
3. Extract the zip file to `RPI_PICO_TimerInterrupt-master` directory
162-
4. Copy whole `RPI_PICO_TimerInterrupt-master` folder to Arduino libraries' directory such as `~/Arduino/libraries/`.
163+
2. Download the latest release `RPI_PICO_TimerInterrupt-main.zip`.
164+
3. Extract the zip file to `RPI_PICO_TimerInterrupt-main` directory
165+
4. Copy whole `RPI_PICO_TimerInterrupt-main` folder to Arduino libraries' directory such as `~/Arduino/libraries/`.
163166

164167
### VS Code & PlatformIO
165168

166169
1. Install [VS Code](https://code.visualstudio.com/)
167170
2. Install [PlatformIO](https://platformio.org/platformio-ide)
168-
3. Install [**RPI_PICO_TimerInterrupt** library](https://platformio.org/lib/show/12177/RPI_PICO_TimerInterrupt) or [**RPI_PICO_TimerInterrupt** library](https://platformio.org/lib/show/12273/RPI_PICO_TimerInterrupt) by using [Library Manager](https://platformio.org/lib/show/12177/RPI_PICO_TimerInterrupt/installation). Search for **RPI_PICO_TimerInterrupt** in [Platform.io Author's Libraries](https://platformio.org/lib/search?query=author:%22Khoi%20Hoang%22)
171+
3. Install [**RPI_PICO_TimerInterrupt** library](https://registry.platformio.org/libraries/khoih-prog/RPI_PICO_TimerInterrupt) by using [Library Manager](https://registry.platformio.org/libraries/khoih-prog/RPI_PICO_TimerInterrupt/installation). Search for **RPI_PICO_TimerInterrupt** in [Platform.io Author's Libraries](https://platformio.org/lib/search?query=author:%22Khoi%20Hoang%22)
169172
4. Please visit documentation for the other options and examples at [Project Configuration File](https://docs.platformio.org/page/projectconf.html)
170173

171174

@@ -445,152 +448,8 @@ void setup()
445448

446449
### Example [ISR_Timers_Array_Simple](examples/ISR_Timers_Array_Simple)
447450

448-
```
449-
// These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h"
450-
// _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4
451-
// Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system.
452-
#define TIMER_INTERRUPT_DEBUG 1
453-
#define _TIMERINTERRUPT_LOGLEVEL_ 4
454-
455-
// Can be included as many times as necessary, without `Multiple Definitions` Linker Error
456-
#include "RPi_Pico_TimerInterrupt.h"
457-
458-
// To be included only in main(), .ino with setup() to avoid `Multiple Definitions` Linker Error
459-
#include "RPi_Pico_ISR_Timer.h"
460-
461-
#include <SimpleTimer.h> // https://github.com/jfturcot/SimpleTimer
462-
463-
// Init RPI_PICO_Timer
464-
RPI_PICO_Timer ITimer1(1);
465-
466-
RPI_PICO_ISR_Timer ISR_timer;
467-
468-
#ifndef LED_BUILTIN
469-
#define LED_BUILTIN 25
470-
#endif
471-
472-
#define LED_TOGGLE_INTERVAL_MS 1000L
473-
474-
// You have to use longer time here if having problem because Arduino AVR clock is low, 16MHz => lower accuracy.
475-
// Tested OK with 1ms when not much load => higher accuracy.
476-
#define TIMER_INTERVAL_MS 1L
477-
478-
volatile uint32_t startMillis = 0;
451+
https://github.com/khoih-prog/RPI_PICO_TimerInterrupt/blob/f2ca9ced6ef985653cb234a3268b237b0fa257f1/examples/ISR_Timers_Array_Simple/ISR_Timers_Array_Simple.ino#L23-L166
479452

480-
volatile uint32_t deltaMillis2s = 0;
481-
volatile uint32_t deltaMillis5s = 0;
482-
483-
volatile uint32_t previousMillis2s = 0;
484-
volatile uint32_t previousMillis5s = 0;
485-
486-
487-
bool TimerHandler(struct repeating_timer *t)
488-
{
489-
static bool toggle = false;
490-
static int timeRun = 0;
491-
492-
ISR_timer.run();
493-
494-
// Toggle LED every LED_TOGGLE_INTERVAL_MS = 2000ms = 2s
495-
if (++timeRun == ((LED_TOGGLE_INTERVAL_MS) / TIMER_INTERVAL_MS) )
496-
{
497-
timeRun = 0;
498-
499-
//timer interrupt toggles pin LED_BUILTIN
500-
digitalWrite(LED_BUILTIN, toggle);
501-
toggle = !toggle;
502-
}
503-
504-
return true;
505-
}
506-
507-
void doingSomething2s()
508-
{
509-
unsigned long currentMillis = millis();
510-
511-
deltaMillis2s = currentMillis - previousMillis2s;
512-
previousMillis2s = currentMillis;
513-
}
514-
515-
void doingSomething5s()
516-
{
517-
unsigned long currentMillis = millis();
518-
519-
deltaMillis5s = currentMillis - previousMillis5s;
520-
previousMillis5s = currentMillis;
521-
}
522-
523-
/////////////////////////////////////////////////
524-
525-
#define SIMPLE_TIMER_MS 2000L
526-
527-
// Init SimpleTimer
528-
SimpleTimer simpleTimer;
529-
530-
// Here is software Timer, you can do somewhat fancy stuffs without many issues.
531-
// But always avoid
532-
// 1. Long delay() it just doing nothing and pain-without-gain wasting CPU power.Plan and design your code / strategy ahead
533-
// 2. Very long "do", "while", "for" loops without predetermined exit time.
534-
void simpleTimerDoingSomething2s()
535-
{
536-
static unsigned long previousMillis = startMillis;
537-
538-
unsigned long currMillis = millis();
539-
540-
Serial.print(F("SimpleTimer : programmed ")); Serial.print(SIMPLE_TIMER_MS);
541-
Serial.print(F("ms, current time ms : ")); Serial.print(currMillis);
542-
Serial.print(F(", Delta ms : ")); Serial.println(currMillis - previousMillis);
543-
544-
Serial.print(F("Timer2s actual : ")); Serial.println(deltaMillis2s);
545-
Serial.print(F("Timer5s actual : ")); Serial.println(deltaMillis5s);
546-
547-
previousMillis = currMillis;
548-
}
549-
550-
////////////////////////////////////////////////
551-
552-
void setup()
553-
{
554-
pinMode(LED_BUILTIN, OUTPUT);
555-
556-
Serial.begin(115200);
557-
while (!Serial);
558-
559-
Serial.print(F("\nStarting ISR_Timers_Array_Simple on ")); Serial.println(BOARD_NAME);
560-
Serial.println(RPI_PICO_TIMER_INTERRUPT_VERSION);
561-
Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz"));
562-
563-
if (ITimer1.attachInterruptInterval(TIMER_INTERVAL_MS * 1000, TimerHandler))
564-
{
565-
Serial.print(F("Starting ITimer1 OK, millis() = ")); Serial.println(millis());
566-
}
567-
else
568-
Serial.println(F("Can't set ITimer1. Select another freq. or timer"));
569-
570-
previousMillis5s = previousMillis2s = millis();
571-
572-
ISR_timer.setInterval(2000L, doingSomething2s);
573-
ISR_timer.setInterval(5000L, doingSomething5s);
574-
575-
// You need this timer for non-critical tasks. Avoid abusing ISR if not absolutely necessary.
576-
simpleTimer.setInterval(SIMPLE_TIMER_MS, simpleTimerDoingSomething2s);
577-
}
578-
579-
#define BLOCKING_TIME_MS 10000L
580-
581-
void loop()
582-
{
583-
// This unadvised blocking task is used to demonstrate the blocking effects onto the execution and accuracy to Software timer
584-
// You see the time elapse of ISR_Timer still accurate, whereas very unaccurate for Software Timer
585-
// The time elapse for 2000ms software timer now becomes 3000ms (BLOCKING_TIME_MS)
586-
// While that of ISR_Timer is still prefect.
587-
delay(BLOCKING_TIME_MS);
588-
589-
// You need this Software timer for non-critical tasks. Avoid abusing ISR if not absolutely necessary
590-
// You don't need to and never call ISR_Timer.run() here in the loop(). It's already handled by ISR timer.
591-
simpleTimer.run();
592-
}
593-
```
594453
---
595454
---
596455

@@ -605,7 +464,7 @@ While software timer, **programmed for 2s, is activated after more than 10.000s
605464
```
606465
607466
Starting ISR_Timers_Array_Simple on RASPBERRY_PI_PICO
608-
RPi_Pico_TimerInterrupt v1.2.0
467+
RPi_Pico_TimerInterrupt v1.3.0
609468
CPU Frequency = 125 MHz
610469
[TISR] _timerNo = 1, Clock (Hz) = 1000000.00, _fre (Hz) = 1000.00
611470
[TISR] _count = 0-1000
@@ -630,7 +489,7 @@ The following is the sample terminal output when running example [TimerInterrupt
630489

631490
```
632491
Starting TimerInterruptTest on RASPBERRY_PI_PICO
633-
RPi_Pico_TimerInterrupt v1.2.0
492+
RPi_Pico_TimerInterrupt v1.3.0
634493
CPU Frequency = 125 MHz
635494
[TISR] _timerNo = 0, Clock (Hz) = 1000000.00, _fre (Hz) = 1.00
636495
[TISR] _count = 0-1000000
@@ -674,7 +533,7 @@ The following is the sample terminal output when running example [Change_Interva
674533

675534
```
676535
Starting Change_Interval on RASPBERRY_PI_PICO
677-
RPi_Pico_TimerInterrupt v1.2.0
536+
RPi_Pico_TimerInterrupt v1.3.0
678537
CPU Frequency = 125 MHz
679538
[TISR] _timerNo = 0, Clock (Hz) = 1000000.00, _fre (Hz) = 0.50
680539
[TISR] _count = 0-2000000
@@ -755,7 +614,7 @@ The following is the sample terminal output when running example [SwitchDebounce
755614

756615
```
757616
Starting SwitchDebounce on RASPBERRY_PI_PICO
758-
RPi_Pico_TimerInterrupt v1.2.0
617+
RPi_Pico_TimerInterrupt v1.3.0
759618
CPU Frequency = 125 MHz
760619
[TISR] _timerNo = 1, Clock (Hz) = 1000000.00, _fre (Hz) = 50.00
761620
[TISR] _count = 0-20000
@@ -780,7 +639,7 @@ The following is the sample terminal output when running example [ISR_Timers_Arr
780639

781640
```
782641
Starting ISR_Timers_Array_Simple on RASPBERRY_PI_PICO
783-
RPi_Pico_TimerInterrupt v1.2.0
642+
RPi_Pico_TimerInterrupt v1.3.0
784643
CPU Frequency = 125 MHz
785644
[TISR] _timerNo = 1, Clock (Hz) = 1000000.00, _fre (Hz) = 1000.00
786645
[TISR] _count = 0-1000
@@ -803,7 +662,7 @@ The following is the sample terminal output when running example [ISR_16_Timers_
803662

804663
```
805664
Starting ISR_16_Timers_Array_Complex on RASPBERRY_PI_PICO
806-
RPi_Pico_TimerInterrupt v1.2.0
665+
RPi_Pico_TimerInterrupt v1.3.0
807666
CPU Frequency = 125 MHz
808667
[TISR] _timerNo = 1, Clock (Hz) = 1000000.00, _fre (Hz) = 100.00
809668
[TISR] _count = 0-10000
@@ -999,7 +858,7 @@ Submit issues to: [RPI_PICO_TimerInterrupt issues](https://github.com/khoih-prog
999858
6. Add support to new boards (**ADAFRUIT_ITSYBITSY_RP2040, ADAFRUIT_QTPY_RP2040, ADAFRUIT_STEMMAFRIEND_RP2040, ADAFRUIT_TRINKEYQT_RP2040, ADAFRUIT_MACROPAD_RP2040, SPARKFUN_PROMICRO_RP2040, Nano_RP2040_Connect, etc.**) using the arduino-pico core
1000859
7. Fix `multiple-definitions` linker error
1001860
8. Optimize library code by using `reference-passing` instead of `value-passing`
1002-
861+
9. Fix severe bug affecting time between the starts. Check [Enable fixed timing between timer calls (vs fixed time btw. end of timer call and next call as implemented) #3](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt/issues/3)
1003862

1004863
---
1005864
---
@@ -1008,6 +867,14 @@ Submit issues to: [RPI_PICO_TimerInterrupt issues](https://github.com/khoih-prog
1008867

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

870+
1. [AndreasOKircher](https://github.com/AndreasOKircher) to report issue [Enable fixed timing between timer calls (vs fixed time btw. end of timer call and next call as implemented) #3](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt/issues/3) leading to version v1.3.0 to fix `severe bug` affecting time between the starts
871+
872+
<table>
873+
<tr>
874+
<td align="center"><a href="https://github.com/AndreasOKircher"><img src="https://github.com/AndreasOKircher.png" width="100px;" alt="AndreasOKircher"/><br /><sub><b>AndreasOKircher</b></sub></a><br /></td>
875+
</tr>
876+
</table>
877+
1011878

1012879
---
1013880

@@ -1024,7 +891,7 @@ If you want to contribute to this project:
1024891

1025892
### License
1026893

1027-
- The library is licensed under [MIT](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt/blob/master/LICENSE)
894+
- The library is licensed under [MIT](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt/blob/main/LICENSE)
1028895

1029896
---
1030897

changelog.md

+6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
## Table of Contents
1313

1414
* [Changelog](#changelog)
15+
* [Releases v1.3.0](#releases-v130)
1516
* [Releases v1.2.0](#releases-v120)
1617
* [Releases v1.1.1](#releases-v111)
1718
* [Releases v1.1.0](#releases-v110)
@@ -24,6 +25,11 @@
2425

2526
## Changelog
2627

28+
### Releases v1.3.0
29+
30+
1. Fix severe bug affecting time between the starts. Check [Enable fixed timing between timer calls (vs fixed time btw. end of timer call and next call as implemented) #3](https://github.com/khoih-prog/RPI_PICO_TimerInterrupt/issues/3)
31+
32+
2733
### Releases v1.2.0
2834

2935
1. Fix `multiple-definitions` linker error. Drop `src_cpp` and `src_h` directories

examples/Argument_None/Argument_None.ino

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
#include "RPi_Pico_TimerInterrupt.h"
4444

4545
#ifndef LED_BUILTIN
46-
#define LED_BUILTIN 25 // Pin LED_BUILTIN mapped to pin GPIO25 of RPI_PICO, control on-board LED
46+
#define LED_BUILTIN 25
4747
#endif
4848

4949
#define PIN_D1 1 // Pin D1 mapped to pin GPIO1 of RPI_PICO

examples/Change_Interval/Change_Interval.ino

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
#include "RPi_Pico_TimerInterrupt.h"
4343

4444
#ifndef LED_BUILTIN
45-
#define LED_BUILTIN 25 // Pin D2 mapped to pin GPIO2/ADC12 of ESP32, control on-board LED
45+
#define LED_BUILTIN 25
4646
#endif
4747

4848
#define PIN_D1 1 // Pin D1 mapped to pin GPIO1 of RPI_PICO

examples/TimerInterruptTest/TimerInterruptTest.ino

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
#include "RPi_Pico_TimerInterrupt.h"
4242

4343
#ifndef LED_BUILTIN
44-
#define LED_BUILTIN 25 // Pin D2 mapped to pin GPIO2/ADC12 of ESP32, control on-board LED
44+
#define LED_BUILTIN 25
4545
#endif
4646

4747
#define PIN_D1 1 // Pin D1 mapped to pin GPIO1 of RPI_PICO

library.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "RPI_PICO_TimerInterrupt",
3-
"version": "1.2.0",
4-
"keywords": "timing, device, control, timer, interrupt, hardware, isr, isr-based, hardware-timer, mission-critical, accuracy, precise, non-blocking, raspberry-pico, rpi-pico, pico, rp2040, arduino-pico",
3+
"version": "1.3.0",
4+
"keywords": "timing, device, control, timer, interrupt, hardware, isr, isr-based, hardware-timer, mission-critical, accuracy, non-blocking, raspberry-pico, rpi-pico, pico, rp2040, arduino-pico, rp2040w, raspberry-pico-w, pico-w",
55
"description": "This library enables you to use Interrupt from Hardware Timers on RP2040-based boards such as 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":
77
{

library.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=RPI_PICO_TimerInterrupt
2-
version=1.2.0
2+
version=1.3.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 RASPBERRY_PI_PICO

0 commit comments

Comments
 (0)