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

Commit 447f629

Browse files
authored
v1.2.1 to replace double with float
### Releases v1.2.1 1. Use `float` for `DutyCycle` and `Freq`, `uint32_t` for `period`. 2. Optimize code by not calculation in ISR
1 parent de7814b commit 447f629

File tree

2 files changed

+49
-49
lines changed

2 files changed

+49
-49
lines changed

README.md

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ void setup()
443443
#define LED_RED 3
444444
#endif
445445
446-
#define HW_TIMER_INTERVAL_US 30L
446+
#define HW_TIMER_INTERVAL_US 20L
447447
448448
uint64_t startMicros = 0;
449449
@@ -1024,57 +1024,57 @@ The following is the sample terminal output when running example [ISR_16_PWMs_Ar
10241024
```
10251025
Starting ISR_16_PWMs_Array_Complex on ITSYBITSY_M4
10261026
SAMD_Slow_PWM v1.2.1
1027-
Starting ITimer OK, micros() = 2970191
1028-
Channel : 0 Period : 1000000 OnTime : 50000 Start_Time : 2970476
1029-
Channel : 1 Period : 500000 OnTime : 50000 Start_Time : 2970897
1030-
Channel : 2 Period : 333333 OnTime : 66666 Start_Time : 2971268
1031-
Channel : 3 Period : 250000 OnTime : 75000 Start_Time : 2971697
1032-
Channel : 4 Period : 200000 OnTime : 80000 Start_Time : 2972068
1033-
Channel : 5 Period : 166666 OnTime : 74999 Start_Time : 2972445
1034-
Channel : 6 Period : 142857 OnTime : 71428 Start_Time : 2972868
1035-
Channel : 7 Period : 125000 OnTime : 68750 Start_Time : 2973239
1036-
Channel : 8 Period : 111111 OnTime : 66666 Start_Time : 2973659
1037-
Channel : 9 Period : 100000 OnTime : 65000 Start_Time : 2974039
1038-
Channel : 10 Period : 66666 OnTime : 46666 Start_Time : 2974410
1039-
Channel : 11 Period : 50000 OnTime : 37500 Start_Time : 2974836
1040-
Channel : 12 Period : 40000 OnTime : 32000 Start_Time : 2975210
1041-
Channel : 13 Period : 33333 OnTime : 28333 Start_Time : 2975630
1042-
Channel : 14 Period : 25000 OnTime : 22500 Start_Time : 2976007
1043-
Channel : 15 Period : 20000 OnTime : 19000 Start_Time : 2976381
1044-
SimpleTimer (ms): 2000, us : 12976808, Dus : 10006390
1045-
PWM Channel : 0, programmed Period (us): 1000000.00, actual : 1000020, programmed DutyCycle : 5.00, actual : 5.00
1046-
PWM Channel : 1, programmed Period (us): 500000.00, actual : 500010, programmed DutyCycle : 10.00, actual : 10.00
1047-
PWM Channel : 2, programmed Period (us): 333333.34, actual : 333360, programmed DutyCycle : 20.00, actual : 20.00
1048-
PWM Channel : 3, programmed Period (us): 250000.00, actual : 250020, programmed DutyCycle : 30.00, actual : 30.00
1049-
PWM Channel : 4, programmed Period (us): 200000.00, actual : 200010, programmed DutyCycle : 40.00, actual : 39.99
1027+
Starting ITimer OK, micros() = 3830244
1028+
Channel : 0 Period : 1000000 OnTime : 50000 Start_Time : 3830538
1029+
Channel : 1 Period : 500000 OnTime : 50000 Start_Time : 3830903
1030+
Channel : 2 Period : 333333 OnTime : 66666 Start_Time : 3831277
1031+
Channel : 3 Period : 250000 OnTime : 75000 Start_Time : 3831708
1032+
Channel : 4 Period : 200000 OnTime : 80000 Start_Time : 3832077
1033+
Channel : 5 Period : 166666 OnTime : 74999 Start_Time : 3832451
1034+
Channel : 6 Period : 142857 OnTime : 71428 Start_Time : 3832874
1035+
Channel : 7 Period : 125000 OnTime : 68750 Start_Time : 3833251
1036+
Channel : 8 Period : 111111 OnTime : 66666 Start_Time : 3833671
1037+
Channel : 9 Period : 100000 OnTime : 65000 Start_Time : 3834049
1038+
Channel : 10 Period : 66666 OnTime : 46666 Start_Time : 3834419
1039+
Channel : 11 Period : 50000 OnTime : 37500 Start_Time : 3834849
1040+
Channel : 12 Period : 40000 OnTime : 32000 Start_Time : 3835219
1041+
Channel : 13 Period : 33333 OnTime : 28333 Start_Time : 3835639
1042+
Channel : 14 Period : 25000 OnTime : 22500 Start_Time : 3836016
1043+
Channel : 15 Period : 20000 OnTime : 19000 Start_Time : 3836393
1044+
SimpleTimer (ms): 2000, us : 13836817, Dus : 10006340
1045+
PWM Channel : 0, programmed Period (us): 1000000.00, actual : 1000000, programmed DutyCycle : 5.00, actual : 5.00
1046+
PWM Channel : 1, programmed Period (us): 500000.00, actual : 500000, programmed DutyCycle : 10.00, actual : 10.00
1047+
PWM Channel : 2, programmed Period (us): 333333.34, actual : 333340, programmed DutyCycle : 20.00, actual : 20.00
1048+
PWM Channel : 3, programmed Period (us): 250000.00, actual : 250000, programmed DutyCycle : 30.00, actual : 30.00
1049+
PWM Channel : 4, programmed Period (us): 200000.00, actual : 200000, programmed DutyCycle : 40.00, actual : 40.00
10501050
PWM Channel : 5, programmed Period (us): 166666.67, actual : 166679, programmed DutyCycle : 45.00, actual : 44.98
1051-
PWM Channel : 6, programmed Period (us): 142857.14, actual : 142860, programmed DutyCycle : 50.00, actual : 49.98
1052-
PWM Channel : 7, programmed Period (us): 125000.00, actual : 125010, programmed DutyCycle : 55.00, actual : 54.98
1051+
PWM Channel : 6, programmed Period (us): 142857.14, actual : 142860, programmed DutyCycle : 50.00, actual : 49.99
1052+
PWM Channel : 7, programmed Period (us): 125000.00, actual : 125000, programmed DutyCycle : 55.00, actual : 54.99
10531053
PWM Channel : 8, programmed Period (us): 111111.11, actual : 111120, programmed DutyCycle : 60.00, actual : 59.99
1054-
PWM Channel : 9, programmed Period (us): 100000.00, actual : 100019, programmed DutyCycle : 65.00, actual : 64.97
1055-
PWM Channel : 10, programmed Period (us): 66666.66, actual : 66690, programmed DutyCycle : 70.00, actual : 69.95
1056-
PWM Channel : 11, programmed Period (us): 50000.00, actual : 50010, programmed DutyCycle : 75.00, actual : 74.99
1057-
PWM Channel : 12, programmed Period (us): 40000.00, actual : 40019, programmed DutyCycle : 80.00, actual : 79.91
1058-
PWM Channel : 13, programmed Period (us): 33333.33, actual : 33359, programmed DutyCycle : 85.00, actual : 84.89
1059-
PWM Channel : 14, programmed Period (us): 25000.00, actual : 25020, programmed DutyCycle : 90.00, actual : 89.93
1060-
PWM Channel : 15, programmed Period (us): 20000.00, actual : 20010, programmed DutyCycle : 95.00, actual : 94.90
1061-
SimpleTimer (ms): 2000, us : 22988101, Dus : 10011293
1062-
PWM Channel : 0, programmed Period (us): 1000000.00, actual : 1000020, programmed DutyCycle : 5.00, actual : 5.00
1063-
PWM Channel : 1, programmed Period (us): 500000.00, actual : 500010, programmed DutyCycle : 10.00, actual : 10.00
1064-
PWM Channel : 2, programmed Period (us): 333333.34, actual : 333360, programmed DutyCycle : 20.00, actual : 20.00
1065-
PWM Channel : 3, programmed Period (us): 250000.00, actual : 250020, programmed DutyCycle : 30.00, actual : 30.00
1066-
PWM Channel : 4, programmed Period (us): 200000.00, actual : 200010, programmed DutyCycle : 40.00, actual : 39.99
1054+
PWM Channel : 9, programmed Period (us): 100000.00, actual : 99999, programmed DutyCycle : 65.00, actual : 65.00
1055+
PWM Channel : 10, programmed Period (us): 66666.66, actual : 66679, programmed DutyCycle : 70.00, actual : 69.98
1056+
PWM Channel : 11, programmed Period (us): 50000.00, actual : 50000, programmed DutyCycle : 75.00, actual : 75.00
1057+
PWM Channel : 12, programmed Period (us): 40000.00, actual : 40000, programmed DutyCycle : 80.00, actual : 80.00
1058+
PWM Channel : 13, programmed Period (us): 33333.33, actual : 33339, programmed DutyCycle : 85.00, actual : 84.95
1059+
PWM Channel : 14, programmed Period (us): 25000.00, actual : 24999, programmed DutyCycle : 90.00, actual : 90.00
1060+
PWM Channel : 15, programmed Period (us): 20000.00, actual : 19999, programmed DutyCycle : 95.00, actual : 95.00
1061+
SimpleTimer (ms): 2000, us : 23848190, Dus : 10011373
1062+
PWM Channel : 0, programmed Period (us): 1000000.00, actual : 1000000, programmed DutyCycle : 5.00, actual : 5.00
1063+
PWM Channel : 1, programmed Period (us): 500000.00, actual : 500000, programmed DutyCycle : 10.00, actual : 10.00
1064+
PWM Channel : 2, programmed Period (us): 333333.34, actual : 333340, programmed DutyCycle : 20.00, actual : 20.00
1065+
PWM Channel : 3, programmed Period (us): 250000.00, actual : 250000, programmed DutyCycle : 30.00, actual : 30.00
1066+
PWM Channel : 4, programmed Period (us): 200000.00, actual : 200000, programmed DutyCycle : 40.00, actual : 40.00
10671067
PWM Channel : 5, programmed Period (us): 166666.67, actual : 166679, programmed DutyCycle : 45.00, actual : 44.98
1068-
PWM Channel : 6, programmed Period (us): 142857.14, actual : 142861, programmed DutyCycle : 50.00, actual : 49.98
1069-
PWM Channel : 7, programmed Period (us): 125000.00, actual : 125010, programmed DutyCycle : 55.00, actual : 54.98
1068+
PWM Channel : 6, programmed Period (us): 142857.14, actual : 142860, programmed DutyCycle : 50.00, actual : 49.99
1069+
PWM Channel : 7, programmed Period (us): 125000.00, actual : 125000, programmed DutyCycle : 55.00, actual : 54.99
10701070
PWM Channel : 8, programmed Period (us): 111111.11, actual : 111120, programmed DutyCycle : 60.00, actual : 59.99
1071-
PWM Channel : 9, programmed Period (us): 100000.00, actual : 100019, programmed DutyCycle : 65.00, actual : 64.97
1072-
PWM Channel : 10, programmed Period (us): 66666.66, actual : 66689, programmed DutyCycle : 70.00, actual : 69.95
1073-
PWM Channel : 11, programmed Period (us): 50000.00, actual : 50010, programmed DutyCycle : 75.00, actual : 74.99
1074-
PWM Channel : 12, programmed Period (us): 40000.00, actual : 40019, programmed DutyCycle : 80.00, actual : 79.91
1075-
PWM Channel : 13, programmed Period (us): 33333.33, actual : 33360, programmed DutyCycle : 85.00, actual : 84.89
1076-
PWM Channel : 14, programmed Period (us): 25000.00, actual : 25020, programmed DutyCycle : 90.00, actual : 89.93
1077-
PWM Channel : 15, programmed Period (us): 20000.00, actual : 20009, programmed DutyCycle : 95.00, actual : 94.90
1071+
PWM Channel : 9, programmed Period (us): 100000.00, actual : 99999, programmed DutyCycle : 65.00, actual : 65.00
1072+
PWM Channel : 10, programmed Period (us): 66666.66, actual : 66679, programmed DutyCycle : 70.00, actual : 69.98
1073+
PWM Channel : 11, programmed Period (us): 50000.00, actual : 50000, programmed DutyCycle : 75.00, actual : 75.00
1074+
PWM Channel : 12, programmed Period (us): 40000.00, actual : 40000, programmed DutyCycle : 80.00, actual : 80.00
1075+
PWM Channel : 13, programmed Period (us): 33333.33, actual : 33339, programmed DutyCycle : 85.00, actual : 84.94
1076+
PWM Channel : 14, programmed Period (us): 25000.00, actual : 24999, programmed DutyCycle : 90.00, actual : 90.01
1077+
PWM Channel : 15, programmed Period (us): 20000.00, actual : 20000, programmed DutyCycle : 95.00, actual : 95.00
10781078
```
10791079

10801080
---

examples/SAMD51/ISR_16_PWMs_Array_Complex/ISR_16_PWMs_Array_Complex.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
#define LED_RED 3
5252
#endif
5353

54-
#define HW_TIMER_INTERVAL_US 30L
54+
#define HW_TIMER_INTERVAL_US 20L
5555

5656
uint64_t startMicros = 0;
5757

0 commit comments

Comments
 (0)