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.
### Releases v1.0.1
1. Add complicated example [ISR_16_Timers_Array](examples/ISR_16_Timers_Array) utilizing and demonstrating the full usage of 16 independent ISR Timers.
Copy file name to clipboardExpand all lines: README.md
+80-13Lines changed: 80 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -11,13 +11,15 @@
11
11
12
12
## Features
13
13
14
-
This library enables you to use Interrupt from Hardware Timers on an NRF52-based board.
14
+
This library enables you to use Interrupt from Hardware Timers on an nRF52-based board, such as AdaFruit Itsy-Bitsy nRF52840, Feather nRF52840 Express, etc.
15
+
16
+
As **Hardware Timers are rare, and very precious assets** of any board, this library now enables you to use up to **16 ISR-based Timers, while consuming only 1 Hardware Timer**. Timers' interval is very long (**ulong millisecs**).
15
17
16
18
### Why do we need this Hardware Timer Interrupt?
17
19
18
20
Imagine you have a system with a **mission-critical** function, measuring water level and control the sump pump or doing something much more important. You normally use a software timer to poll, or even place the function in loop(). But what if another function is **blocking** the loop() or setup().
19
21
20
-
So your function **might not be executed, and the result would be disastrous.**
22
+
So your function **might not be executed on-time or not at all, and the result would be disastrous.**
21
23
22
24
You'd prefer to have your function called, no matter what happening with other functions (busy loop, bug, etc.).
23
25
@@ -42,6 +44,10 @@ The catch is **your function is now part of an ISR (Interrupt Service Routine),
42
44
---
43
45
---
44
46
47
+
### Releases v1.0.1
48
+
49
+
1. Add complicated example [ISR_16_Timers_Array](examples/ISR_16_Timers_Array) utilizing and demonstrating the full usage of 16 independent ISR Timers.
50
+
45
51
### Releases v1.0.0
46
52
47
53
1. Permit up to 16 super-long-time, super-accurate ISR-based timers to avoid being blocked
@@ -67,7 +73,9 @@ The catch is **your function is now part of an ISR (Interrupt Service Routine),
67
73
-[`UIPEthernet library v2.0.9+`](https://github.com/UIPEthernet/UIPEthernet) for ENC28J60.
68
74
5.[`WiFiNINA_Generic library v1.7.1+`](https://github.com/khoih-prog/WiFiNINA_Generic) to use WiFiNINA modules/shields. To install. check [](https://www.ardu-badge.com/WiFiNINA_Generic) if using WiFiNINA for boards such as nRF52, etc.
69
75
6.[`Blynk_WiFiNINA_WM library 1.0.4+`](hhttps://github.com/khoih-prog/Blynk_WiFiNINA_WM) to use with Blynk-WiFiNINA-related example. To install. check [](https://www.ardu-badge.com/Blynk_WiFiNINA_WM)
70
-
76
+
7. To use with certain example
77
+
-[`SimpleTimer library`](https://github.com/schinken/SimpleTimer) for [ISR_16_Timers_Array example](examples/ISR_16_Timers_Array).
78
+
71
79
---
72
80
---
73
81
@@ -207,7 +215,7 @@ To re-use the **new h-only** way, just
207
215
Now with these new `16 ISR-based timers` (while consuming only **1 hardware timer**), the maximum interval is practically unlimited (limited only by unsigned long miliseconds). The accuracy is nearly perfect compared to software timers. The most important feature is they're ISR-based timers Therefore, their executions are not blocked by bad-behaving functions / tasks.
208
216
This important feature is absolutely necessary for mission-critical tasks.
209
217
210
-
The [**ISR_Timer_Complex_Ethernet**](examples/ISR_Timer_Complex_Ethernet) and [**ISR_Timer_Complex_WiFiNINA**](examples/ISR_Timer_Complex_WiFiNINA) examples will demonstrate the nearly perfect accuracy compared to software timers by printing the actual elapsed millisecs of each type of timers.
218
+
The [**ISR_16_Timers_Array**](examples/ISR_16_Timers_Array), [**ISR_Timer_Complex_Ethernet**](examples/ISR_Timer_Complex_Ethernet) and [**ISR_Timer_Complex_WiFiNINA**](examples/ISR_Timer_Complex_WiFiNINA) examples will demonstrate the nearly perfect accuracy compared to software timers by printing the actual elapsed millisecs of each type of timers.
211
219
Being ISR-based timers, their executions are not blocked by bad-behaving functions / tasks, such as connecting to WiFi, Internet and Blynk services. You can also have many `(up to 16)` timers to use.
212
220
This non-being-blocked important feature is absolutely necessary for mission-critical tasks.
213
221
You'll see blynkTimer Software is blocked while system is connecting to WiFi / Internet / Blynk, as well as by blocking task
4. The following is the sample terminal output when running example [ISR_16_Timers_Array](examples/ISR_16_Timers_Array) on **Adafruit NRF52840_ITSYBITSY** to demonstrate the accuracy of ISR Hardware Timer, **especially when system is very busy or blocked**. The 16 independent ISR timers are **programmed to be activated repetitively after certain intervals, is activated exactly after that programmed interval !!!**
846
+
847
+
While software timer, **programmed for 2s, is activated after 10.000s in loop()!!!**.
848
+
849
+
In this example, 16 independent ISR Timers are used, yet utilized just one Hardware Timer. The Timer Intervals and Function Pointers are stored in arrays to facilitate the code modification.
850
+
851
+
852
+
```
853
+
Starting ISR_16_Timers_Array on NRF52840_ITSYBITSY
1. Add complicated example [ISR_16_Timers_Array](examples/ISR_16_Timers_Array) utilizing and demonstrating the full usage of 16 independent ISR Timers.
899
+
838
900
### Releases v1.0.0
839
901
840
902
1. Permit up to 16 super-long-time, super-accurate ISR-based timers to avoid being blocked
@@ -860,8 +922,6 @@ Submit issues to: [NRF52_TimerInterrupt issues](https://github.com/khoih-prog/NR
860
922
861
923
## DONE
862
924
863
-
For current version v1.0.0
864
-
865
925
1. Basic hardware timers for NRF52832 and NRF52840.
866
926
2. More hardware-initiated software-enabled timers
867
927
3. Longer time interval
@@ -873,6 +933,13 @@ For current version v1.0.0
873
933
874
934
Many thanks for everyone for bug reporting, new feature suggesting, testing and contributing to the development of this library.
875
935
936
+
1. Thanks to good work of [Miguel Wisintainer](https://github.com/tcpipchip) for working with, developing, debugging and testing.
937
+
938
+
<table>
939
+
<tr>
940
+
<td align="center"><a href="https://github.com/tcpipchip"><img src="https://github.com/tcpipchip.png" width="100px;" alt="tcpipchip"/><br /><sub><b> Miguel Wisintainer</b></sub></a><br /></td>
0 commit comments