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

Commit 2a7a71a

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

File tree

2 files changed

+21
-20
lines changed

2 files changed

+21
-20
lines changed

README.md

+20-19
Original file line numberDiff line numberDiff line change
@@ -872,7 +872,7 @@ void simpleTimerDoingSomething2s()
872872
Serial.print(F(", programmed Period (uS): "));
873873
874874
#if USING_PWM_FREQUENCY
875-
Serial.print(1000000.0 / curISR_PWM_Data[i].PWM_Freq);
875+
Serial.print(1000000 / curISR_PWM_Data[i].PWM_Freq);
876876
#else
877877
Serial.print(curISR_PWM_Data[i].PWM_Period);
878878
#endif
@@ -1060,59 +1060,60 @@ PWM Channel : 15, programmed Period (uS): 20000, actual (uS) : 20000, programmed
10601060
The following is the sample terminal output when running example [ISR_16_PWMs_Array_Complex](examples/ISR_16_PWMs_Array_Complex) on **NUCLEO_F767ZI** to demonstrate how to use multiple PWM channels with complex callback functions, the accuracy of ISR Hardware PWM-channels, **especially when system is very busy**. The ISR PWM-channels is **running exactly according to corresponding programmed periods and duty-cycles**
10611061

10621062

1063-
```Starting ISR_16_PWMs_Array_Complex on NUCLEO_F767ZI
1063+
```
1064+
Starting ISR_16_PWMs_Array_Complex on NUCLEO_F767ZI
10641065
STM32_SLOW_PWM v1.2.2
10651066
[PWM] STM32TimerInterrupt: Timer Input Freq (Hz) = 216000000 , Timer Clock Frequency = 1000000.00
10661067
[PWM] Timer Frequency = 50000.00 , _count = 20
10671068
Starting ITimer OK, micros() = 2016555
1068-
Channel : 0 Period : 1000000 OnTime : 50000 Start_Time : 2022113
1069+
Channel : 0 Period : 1000000 OnTime : 50000 Start_Time : 2022112
10691070
Channel : 1 Period : 500000 OnTime : 50000 Start_Time : 2027666
1070-
Channel : 2 Period : 333333 OnTime : 66666 Start_Time : 2033232
1071-
Channel : 3 Period : 250000 OnTime : 75000 Start_Time : 2038796
1071+
Channel : 2 Period : 333333 OnTime : 66666 Start_Time : 2033231
1072+
Channel : 3 Period : 250000 OnTime : 75000 Start_Time : 2038795
10721073
Channel : 4 Period : 200000 OnTime : 80000 Start_Time : 2044365
10731074
Channel : 5 Period : 166666 OnTime : 74999 Start_Time : 2049930
10741075
Channel : 6 Period : 142857 OnTime : 71428 Start_Time : 2055495
10751076
Channel : 7 Period : 125000 OnTime : 68750 Start_Time : 2061063
1076-
Channel : 8 Period : 111111 OnTime : 66666 Start_Time : 2066629
1077+
Channel : 8 Period : 111111 OnTime : 66666 Start_Time : 2066628
10771078
Channel : 9 Period : 100000 OnTime : 65000 Start_Time : 2072361
1078-
Channel : 10 Period : 66666 OnTime : 46666 Start_Time : 2083314
1079+
Channel : 10 Period : 66666 OnTime : 46666 Start_Time : 2083313
10791080
Channel : 11 Period : 50000 OnTime : 37500 Start_Time : 2088886
10801081
Channel : 12 Period : 40000 OnTime : 32000 Start_Time : 2094451
1081-
Channel : 13 Period : 33333 OnTime : 28333 Start_Time : 2100014
1082-
Channel : 14 Period : 25000 OnTime : 22500 Start_Time : 2105585
1083-
Channel : 15 Period : 20000 OnTime : 19000 Start_Time : 2111151
1084-
SimpleTimer (ms): 2000, us : 12116002, Dus : 10093909
1082+
Channel : 13 Period : 33333 OnTime : 28333 Start_Time : 2100013
1083+
Channel : 14 Period : 25000 OnTime : 22500 Start_Time : 2105584
1084+
Channel : 15 Period : 20000 OnTime : 19000 Start_Time : 2111150
1085+
SimpleTimer (ms): 2000, us : 12116002, Dus : 10093908
10851086
PWM Channel : 0, programmed Period (uS): 1000000.00, actual (uS) : 1000000, programmed DutyCycle : 5.00, actual : 5.00
10861087
PWM Channel : 1, programmed Period (uS): 500000.00, actual (uS) : 500000, programmed DutyCycle : 10.00, actual : 10.00
1087-
PWM Channel : 2, programmed Period (uS): 333333.33, actual (uS) : 333339, programmed DutyCycle : 20.00, actual : 20.00
1088+
PWM Channel : 2, programmed Period (uS): 333333.34, actual (uS) : 333340, programmed DutyCycle : 20.00, actual : 20.00
10881089
PWM Channel : 3, programmed Period (uS): 250000.00, actual (uS) : 250000, programmed DutyCycle : 30.00, actual : 30.00
10891090
PWM Channel : 4, programmed Period (uS): 200000.00, actual (uS) : 200000, programmed DutyCycle : 40.00, actual : 40.00
10901091
PWM Channel : 5, programmed Period (uS): 166666.67, actual (uS) : 166680, programmed DutyCycle : 45.00, actual : 44.98
10911092
PWM Channel : 6, programmed Period (uS): 142857.14, actual (uS) : 142860, programmed DutyCycle : 50.00, actual : 49.99
10921093
PWM Channel : 7, programmed Period (uS): 125000.00, actual (uS) : 125001, programmed DutyCycle : 55.00, actual : 54.99
10931094
PWM Channel : 8, programmed Period (uS): 111111.11, actual (uS) : 111120, programmed DutyCycle : 60.00, actual : 59.99
10941095
PWM Channel : 9, programmed Period (uS): 100000.00, actual (uS) : 100000, programmed DutyCycle : 65.00, actual : 65.00
1095-
PWM Channel : 10, programmed Period (uS): 66666.67, actual (uS) : 66680, programmed DutyCycle : 70.00, actual : 69.98
1096+
PWM Channel : 10, programmed Period (uS): 66666.66, actual (uS) : 66680, programmed DutyCycle : 70.00, actual : 69.98
10961097
PWM Channel : 11, programmed Period (uS): 50000.00, actual (uS) : 50000, programmed DutyCycle : 75.00, actual : 75.00
10971098
PWM Channel : 12, programmed Period (uS): 40000.00, actual (uS) : 40000, programmed DutyCycle : 80.00, actual : 80.00
1098-
PWM Channel : 13, programmed Period (uS): 33333.33, actual (uS) : 33339, programmed DutyCycle : 85.00, actual : 84.95
1099-
PWM Channel : 14, programmed Period (uS): 25000.00, actual (uS) : 25001, programmed DutyCycle : 90.00, actual : 90.00
1099+
PWM Channel : 13, programmed Period (uS): 33333.33, actual (uS) : 33340, programmed DutyCycle : 85.00, actual : 84.94
1100+
PWM Channel : 14, programmed Period (uS): 25000.00, actual (uS) : 25000, programmed DutyCycle : 90.00, actual : 90.00
11001101
PWM Channel : 15, programmed Period (uS): 20000.00, actual (uS) : 20000, programmed DutyCycle : 95.00, actual : 95.00
11011102
SimpleTimer (ms): 2000, us : 22284001, Dus : 10167999
11021103
PWM Channel : 0, programmed Period (uS): 1000000.00, actual (uS) : 1000000, programmed DutyCycle : 5.00, actual : 5.00
1103-
PWM Channel : 1, programmed Period (uS): 500000.00, actual (uS) : 500001, programmed DutyCycle : 10.00, actual : 10.00
1104-
PWM Channel : 2, programmed Period (uS): 333333.33, actual (uS) : 333339, programmed DutyCycle : 20.00, actual : 20.00
1104+
PWM Channel : 1, programmed Period (uS): 500000.00, actual (uS) : 500000, programmed DutyCycle : 10.00, actual : 10.00
1105+
PWM Channel : 2, programmed Period (uS): 333333.34, actual (uS) : 333340, programmed DutyCycle : 20.00, actual : 20.00
11051106
PWM Channel : 3, programmed Period (uS): 250000.00, actual (uS) : 250000, programmed DutyCycle : 30.00, actual : 30.00
11061107
PWM Channel : 4, programmed Period (uS): 200000.00, actual (uS) : 200000, programmed DutyCycle : 40.00, actual : 40.00
11071108
PWM Channel : 5, programmed Period (uS): 166666.67, actual (uS) : 166680, programmed DutyCycle : 45.00, actual : 44.98
11081109
PWM Channel : 6, programmed Period (uS): 142857.14, actual (uS) : 142860, programmed DutyCycle : 50.00, actual : 49.99
11091110
PWM Channel : 7, programmed Period (uS): 125000.00, actual (uS) : 125000, programmed DutyCycle : 55.00, actual : 54.99
11101111
PWM Channel : 8, programmed Period (uS): 111111.11, actual (uS) : 111120, programmed DutyCycle : 60.00, actual : 59.99
11111112
PWM Channel : 9, programmed Period (uS): 100000.00, actual (uS) : 100000, programmed DutyCycle : 65.00, actual : 65.00
1112-
PWM Channel : 10, programmed Period (uS): 66666.67, actual (uS) : 66679, programmed DutyCycle : 70.00, actual : 69.98
1113+
PWM Channel : 10, programmed Period (uS): 66666.66, actual (uS) : 66679, programmed DutyCycle : 70.00, actual : 69.98
11131114
PWM Channel : 11, programmed Period (uS): 50000.00, actual (uS) : 50000, programmed DutyCycle : 75.00, actual : 75.00
11141115
PWM Channel : 12, programmed Period (uS): 40000.00, actual (uS) : 40000, programmed DutyCycle : 80.00, actual : 80.00
1115-
PWM Channel : 13, programmed Period (uS): 33333.33, actual (uS) : 33344, programmed DutyCycle : 85.00, actual : 84.94
1116+
PWM Channel : 13, programmed Period (uS): 33333.33, actual (uS) : 33341, programmed DutyCycle : 85.00, actual : 84.94
11161117
PWM Channel : 14, programmed Period (uS): 25000.00, actual (uS) : 25001, programmed DutyCycle : 90.00, actual : 90.00
11171118
PWM Channel : 15, programmed Period (uS): 20000.00, actual (uS) : 20000, programmed DutyCycle : 95.00, actual : 95.00
11181119
```

examples/ISR_16_PWMs_Array_Complex/ISR_16_PWMs_Array_Complex.ino

+1-1
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ void simpleTimerDoingSomething2s()
478478
Serial.print(F(", programmed Period (uS): "));
479479

480480
#if USING_PWM_FREQUENCY
481-
Serial.print(1000000.0 / curISR_PWM_Data[i].PWM_Freq);
481+
Serial.print(1000000 / curISR_PWM_Data[i].PWM_Freq);
482482
#else
483483
Serial.print(curISR_PWM_Data[i].PWM_Period);
484484
#endif

0 commit comments

Comments
 (0)