@@ -123,6 +123,7 @@ The catch is **your function is now part of an ISR (Interrupt Service Routine),
123
123
124
124
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 )
125
125
2 . [ ` ESP8266 Core 3.0.2+ ` ] ( https://github.com/esp8266/Arduino ) for ESP8266-based boards. [ ![ Latest release] ( https://img.shields.io/github/release/esp8266/Arduino.svg )] ( https://github.com/esp8266/Arduino/releases/latest/ )
126
+
126
127
3 . [ ` SimpleTimer library ` ] ( https://github.com/jfturcot/SimpleTimer ) to use with some examples.
127
128
128
129
@@ -237,6 +238,9 @@ You'll see blynkTimer Software is blocked while system is connecting to WiFi / I
237
238
238
239
#define USING_MICROS_RESOLUTION true //false
239
240
241
+ // Default is true, uncomment to false
242
+ //#define CHANGING_PWM_END_OF_CYCLE false
243
+
240
244
// Select a Timer Clock
241
245
#define USING_TIM_DIV1 true // for shortest and most accurate timer
242
246
#define USING_TIM_DIV16 false // for medium time and medium accurate timer
@@ -695,37 +699,46 @@ The following is the sample terminal output when running example [ISR_16_PWMs_Ar
695
699
696
700
```
697
701
Starting ISR_16_PWMs_Array_Complex on ESP8266_NODEMCU_ESP12E
698
- ESP8266_PWM v1.2.1
702
+ ESP8266_PWM v1.2.2
699
703
CPU Frequency = 160 MHz
700
704
[PWM] ESP8266TimerInterrupt: Timer Clock fre = 80000000
701
705
[PWM] Timer fre = 50000.00 , _count = 1600
702
- Starting ITimer OK, micros() = 2069892
703
- Channel : 0 Period : 1000000.00 OnTime : 50000 Start_Time : 2073467
704
- Channel : 1 Period : 500000.00 OnTime : 50000 Start_Time : 2079470
705
- Channel : 2 Period : 333333.33 OnTime : 66666 Start_Time : 2085429
706
- Channel : 3 Period : 250000.00 OnTime : 75000 Start_Time : 2091414
707
- Channel : 4 Period : 200000.00 OnTime : 80000 Start_Time : 2097400
708
- Channel : 5 Period : 166666.67 OnTime : 75000 Start_Time : 2103391
709
- Channel : 6 Period : 142857.14 OnTime : 71428 Start_Time : 2109374
710
- Channel : 7 Period : 125000.00 OnTime : 68750 Start_Time : 2115359
711
- SimpleTimer (ms): 2000, ms : 12121418 , Dms : 10048065
706
+ Starting ITimer OK, micros() = 2073701
707
+ Channel : 0 Period : 1000000.00 OnTime : 50000 Start_Time : 2077293
708
+ Channel : 1 Period : 500000.00 OnTime : 50000 Start_Time : 2083632
709
+ Channel : 2 Period : 333333.33 OnTime : 66666 Start_Time : 2089938
710
+ Channel : 3 Period : 250000.00 OnTime : 75000 Start_Time : 2096269
711
+ Channel : 4 Period : 200000.00 OnTime : 80000 Start_Time : 2102599
712
+ Channel : 5 Period : 166666.67 OnTime : 75000 Start_Time : 2108940
713
+ Channel : 6 Period : 142857.14 OnTime : 71428 Start_Time : 2115272
714
+ Channel : 7 Period : 125000.00 OnTime : 68750 Start_Time : 2121602
715
+ SimpleTimer (ms): 2000, ms : 12128012 , Dms : 10050844
712
716
PWM Channel : 0, programmed Period (us): 1000000.00, actual : 1000005, programmed DutyCycle : 5.00, actual : 5.00
713
- PWM Channel : 1, programmed Period (us): 500000.00, actual : 500012 , programmed DutyCycle : 10.00, actual : 10.00
717
+ PWM Channel : 1, programmed Period (us): 500000.00, actual : 500011 , programmed DutyCycle : 10.00, actual : 10.00
714
718
PWM Channel : 2, programmed Period (us): 333333.33, actual : 333348, programmed DutyCycle : 20.00, actual : 20.00
715
719
PWM Channel : 3, programmed Period (us): 250000.00, actual : 250015, programmed DutyCycle : 30.00, actual : 29.99
716
- PWM Channel : 4, programmed Period (us): 200000.00, actual : 200003 , programmed DutyCycle : 40.00, actual : 39.99
717
- PWM Channel : 5, programmed Period (us): 166666.67, actual : 166683 , programmed DutyCycle : 45.00, actual : 44.99
720
+ PWM Channel : 4, programmed Period (us): 200000.00, actual : 200004 , programmed DutyCycle : 40.00, actual : 39.99
721
+ PWM Channel : 5, programmed Period (us): 166666.67, actual : 166682 , programmed DutyCycle : 45.00, actual : 44.99
718
722
PWM Channel : 6, programmed Period (us): 142857.14, actual : 142867, programmed DutyCycle : 50.00, actual : 50.00
719
723
PWM Channel : 7, programmed Period (us): 125000.00, actual : 125016, programmed DutyCycle : 55.00, actual : 54.99
720
- SimpleTimer (ms): 2000, ms : 22194962 , Dms : 10073544
724
+ SimpleTimer (ms): 2000, ms : 22201565 , Dms : 10073553
721
725
PWM Channel : 0, programmed Period (us): 1000000.00, actual : 1000005, programmed DutyCycle : 5.00, actual : 5.00
722
726
PWM Channel : 1, programmed Period (us): 500000.00, actual : 500012, programmed DutyCycle : 10.00, actual : 10.00
723
727
PWM Channel : 2, programmed Period (us): 333333.33, actual : 333347, programmed DutyCycle : 20.00, actual : 20.00
724
- PWM Channel : 3, programmed Period (us): 250000.00, actual : 250015 , programmed DutyCycle : 30.00, actual : 29.99
728
+ PWM Channel : 3, programmed Period (us): 250000.00, actual : 250014 , programmed DutyCycle : 30.00, actual : 29.99
725
729
PWM Channel : 4, programmed Period (us): 200000.00, actual : 200003, programmed DutyCycle : 40.00, actual : 40.00
726
730
PWM Channel : 5, programmed Period (us): 166666.67, actual : 166682, programmed DutyCycle : 45.00, actual : 44.99
727
- PWM Channel : 6, programmed Period (us): 142857.14, actual : 142867 , programmed DutyCycle : 50.00, actual : 49.99
731
+ PWM Channel : 6, programmed Period (us): 142857.14, actual : 142872 , programmed DutyCycle : 50.00, actual : 49.99
728
732
PWM Channel : 7, programmed Period (us): 125000.00, actual : 125021, programmed DutyCycle : 55.00, actual : 54.99
733
+ SimpleTimer (ms): 2000, ms : 32275077, Dms : 10073512
734
+ PWM Channel : 0, programmed Period (us): 1000000.00, actual : 1000005, programmed DutyCycle : 5.00, actual : 5.00
735
+ PWM Channel : 1, programmed Period (us): 500000.00, actual : 500012, programmed DutyCycle : 10.00, actual : 10.00
736
+ PWM Channel : 2, programmed Period (us): 333333.33, actual : 333347, programmed DutyCycle : 20.00, actual : 20.00
737
+ PWM Channel : 3, programmed Period (us): 250000.00, actual : 250015, programmed DutyCycle : 30.00, actual : 29.99
738
+ PWM Channel : 4, programmed Period (us): 200000.00, actual : 200007, programmed DutyCycle : 40.00, actual : 40.00
739
+ PWM Channel : 5, programmed Period (us): 166666.67, actual : 166687, programmed DutyCycle : 45.00, actual : 44.99
740
+ PWM Channel : 6, programmed Period (us): 142857.14, actual : 142872, programmed DutyCycle : 50.00, actual : 49.99
741
+ PWM Channel : 7, programmed Period (us): 125000.00, actual : 125021, programmed DutyCycle : 55.00, actual : 54.98
729
742
```
730
743
731
744
---
@@ -736,19 +749,19 @@ The following is the sample terminal output when running example [ISR_16_PWMs_Ar
736
749
737
750
```
738
751
Starting ISR_16_PWMs_Array on ESP8266_NODEMCU_ESP12E
739
- ESP8266_PWM v1.2.1
752
+ ESP8266_PWM v1.2.2
740
753
CPU Frequency = 160 MHz
741
754
[PWM] ESP8266TimerInterrupt: Timer Clock fre = 80000000
742
755
[PWM] Timer fre = 50000.00 , _count = 1600
743
- Starting ITimer OK, micros() = 2069036
744
- Channel : 0 Period : 1000000.00 OnTime : 50000 Start_Time : 2072604
745
- Channel : 1 Period : 500000.00 OnTime : 50000 Start_Time : 2078587
746
- Channel : 2 Period : 333333.33 OnTime : 66666 Start_Time : 2084574
747
- Channel : 3 Period : 250000.00 OnTime : 75000 Start_Time : 2090559
748
- Channel : 4 Period : 200000.00 OnTime : 80000 Start_Time : 2096545
749
- Channel : 5 Period : 166666.67 OnTime : 75000 Start_Time : 2102540
750
- Channel : 6 Period : 142857.14 OnTime : 71428 Start_Time : 2108521
751
- Channel : 7 Period : 125000.00 OnTime : 68750 Start_Time : 2114504
756
+ Starting ITimer OK, micros() = 2072589
757
+ Channel : 0 Period : 1000000.00 OnTime : 50000 Start_Time : 2076168
758
+ Channel : 1 Period : 500000.00 OnTime : 50000 Start_Time : 2082485
759
+ Channel : 2 Period : 333333.33 OnTime : 66666 Start_Time : 2088818
760
+ Channel : 3 Period : 250000.00 OnTime : 75000 Start_Time : 2095149
761
+ Channel : 4 Period : 200000.00 OnTime : 80000 Start_Time : 2101479
762
+ Channel : 5 Period : 166666.67 OnTime : 75000 Start_Time : 2107820
763
+ Channel : 6 Period : 142857.14 OnTime : 71428 Start_Time : 2114152
764
+ Channel : 7 Period : 125000.00 OnTime : 68750 Start_Time : 2120482
752
765
```
753
766
754
767
---
@@ -760,19 +773,19 @@ The following is the sample terminal output when running example [ISR_16_PWMs_Ar
760
773
761
774
```
762
775
Starting ISR_16_PWMs_Array_Simple on ESP8266_NODEMCU_ESP12E
763
- ESP8266_PWM v1.2.1
776
+ ESP8266_PWM v1.2.2
764
777
CPU Frequency = 160 MHz
765
778
[PWM] ESP8266TimerInterrupt: Timer Clock fre = 80000000
766
779
[PWM] Timer fre = 50000.00 , _count = 1600
767
- Starting ITimer OK, micros() = 2068076
768
- Channel : 0 Period : 1000000.00 OnTime : 50000 Start_Time : 2071644
769
- Channel : 1 Period : 500000.00 OnTime : 50000 Start_Time : 2077622
770
- Channel : 2 Period : 333333.33 OnTime : 66666 Start_Time : 2083610
771
- Channel : 3 Period : 250000.00 OnTime : 75000 Start_Time : 2089595
772
- Channel : 4 Period : 200000.00 OnTime : 80000 Start_Time : 2095581
773
- Channel : 5 Period : 166666.67 OnTime : 75000 Start_Time : 2101575
774
- Channel : 6 Period : 142857.14 OnTime : 71428 Start_Time : 2107557
775
- Channel : 7 Period : 125000.00 OnTime : 68750 Start_Time : 2113540
780
+ Starting ITimer OK, micros() = 2073472
781
+ Channel : 0 Period : 1000000.00 OnTime : 50000 Start_Time : 2077055
782
+ Channel : 1 Period : 500000.00 OnTime : 50000 Start_Time : 2083379
783
+ Channel : 2 Period : 333333.33 OnTime : 66666 Start_Time : 2089704
784
+ Channel : 3 Period : 250000.00 OnTime : 75000 Start_Time : 2096036
785
+ Channel : 4 Period : 200000.00 OnTime : 80000 Start_Time : 2102366
786
+ Channel : 5 Period : 166666.67 OnTime : 75000 Start_Time : 2108707
787
+ Channel : 6 Period : 142857.14 OnTime : 71428 Start_Time : 2115038
788
+ Channel : 7 Period : 125000.00 OnTime : 68750 Start_Time : 2121369
776
789
```
777
790
778
791
---
@@ -783,18 +796,21 @@ The following is the sample terminal output when running example [ISR_Modify_PWM
783
796
784
797
```
785
798
Starting ISR_Modify_PWM on ESP8266_NODEMCU_ESP12E
786
- ESP8266_PWM v1.2.1
799
+ ESP8266_PWM v1.2.2
787
800
CPU Frequency = 160 MHz
788
801
[PWM] ESP8266TimerInterrupt: Timer Clock fre = 80000000
789
802
[PWM] Timer fre = 50000.00 , _count = 1600
790
- Starting ITimer OK, micros() = 2073776
803
+ Starting ITimer OK, micros() = 2073766
791
804
Using PWM Freq = 1.00, PWM DutyCycle = 10.00
792
- Channel : 0 Period : 1000000.00 OnTime : 100000 Start_Time : 2081329
793
- Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 12088080
794
- Channel : 0 Period : 1000000.00 OnTime : 100000 Start_Time : 22089021
795
- Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 32090020
796
- Channel : 0 Period : 1000000.00 OnTime : 100000 Start_Time : 42091024
797
- Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 52092019
805
+ Channel : 0 Period : 1000000.00 OnTime : 100000 Start_Time : 2081326
806
+ Channel : 0 New Period : 500000.00 OnTime : 450000.00 Start_Time : 12081374
807
+ Channel : 0 New Period : 1000000.00 OnTime : 100000.00 Start_Time : 22081600
808
+ Channel : 0 New Period : 500000.00 OnTime : 450000.00 Start_Time : 31581654
809
+ Channel : 0 New Period : 1000000.00 OnTime : 100000.00 Start_Time : 42081893
810
+ Channel : 0 New Period : 500000.00 OnTime : 450000.00 Start_Time : 51581947
811
+ Channel : 0 New Period : 1000000.00 OnTime : 100000.00 Start_Time : 62082185
812
+ Channel : 0 New Period : 500000.00 OnTime : 450000.00 Start_Time : 71582239
813
+ Channel : 0 New Period : 1000000.00 OnTime : 100000.00 Start_Time : 82082477
798
814
```
799
815
800
816
---
@@ -805,19 +821,33 @@ The following is the sample terminal output when running example [ISR_Changing_P
805
821
806
822
```
807
823
Starting ISR_Changing_PWM on ESP8266_NODEMCU_ESP12E
808
- ESP8266_PWM v1.2.1
824
+ ESP8266_PWM v1.2.2
809
825
CPU Frequency = 160 MHz
810
826
[PWM] ESP8266TimerInterrupt: Timer Clock fre = 80000000
811
827
[PWM] Timer fre = 50000.00 , _count = 1600
812
- Starting ITimer OK, micros() = 2067311
828
+ Starting ITimer OK, micros() = 2073309
829
+ Using PWM Freq = 1.00, PWM DutyCycle = 50.00
830
+ Channel : 0 Period : 1000000.00 OnTime : 500000 Start_Time : 2080902
831
+ Using PWM Freq = 2.00, PWM DutyCycle = 90.00
832
+ Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 12087445
833
+ Using PWM Freq = 1.00, PWM DutyCycle = 50.00
834
+ Channel : 0 Period : 1000000.00 OnTime : 500000 Start_Time : 22087762
835
+ Using PWM Freq = 2.00, PWM DutyCycle = 90.00
836
+ Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 32088065
837
+ Using PWM Freq = 1.00, PWM DutyCycle = 50.00
838
+ Channel : 0 Period : 1000000.00 OnTime : 500000 Start_Time : 42088370
839
+ Using PWM Freq = 2.00, PWM DutyCycle = 90.00
840
+ Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 52088673
813
841
Using PWM Freq = 1.00, PWM DutyCycle = 50.00
814
- Channel : 0 Period : 1000000.00 OnTime : 500000 Start_Time : 2074888
842
+ Channel : 0 Period : 1000000.00 OnTime : 500000 Start_Time : 62088982
815
843
Using PWM Freq = 2.00, PWM DutyCycle = 90.00
816
- Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 12081088
844
+ Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 72089285
817
845
Using PWM Freq = 1.00, PWM DutyCycle = 50.00
818
- Channel : 0 Period : 1000000.00 OnTime : 500000 Start_Time : 22081402
846
+ Channel : 0 Period : 1000000.00 OnTime : 500000 Start_Time : 82089593
819
847
Using PWM Freq = 2.00, PWM DutyCycle = 90.00
820
- Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 32081701
848
+ Channel : 0 Period : 500000.00 OnTime : 450000 Start_Time : 92089898
849
+ Using PWM Freq = 1.00, PWM DutyCycle = 50.00
850
+ Channel : 0 Period : 1000000.00 OnTime : 500000 Start_Time : 102090204
821
851
```
822
852
823
853
---
@@ -869,7 +899,7 @@ Submit issues to: [ESP8266_PWM issues](https://github.com/khoih-prog/ESP8266_PWM
869
899
4 . Add functions to modify PWM settings on-the-fly
870
900
5 . Improve accuracy by using ` double ` , instead of ` uint32_t ` for ` dutycycle ` , ` period `
871
901
6 . Optimize library code by using ` reference-passing ` instead of ` value-passing `
872
-
902
+ 7 . DutyCycle to be optionally updated at the end current PWM period instead of immediately.
873
903
874
904
---
875
905
---
@@ -882,9 +912,13 @@ Many thanks for everyone for bug reporting, new feature suggesting, testing and
882
912
883
913
- [ Change Duty Cycle #1 ] ( https://github.com/khoih-prog/ESP8266_PWM/issues/1 ) leading to v1.1.0
884
914
885
- 2 . Thanks to [ ggmichael] ( https://github.com/ggmichael ) to request better PWM resolution in
915
+ 2 . Thanks to [ ggmichael] ( https://github.com/ggmichael ) to request better PWM resolution, leading to v1.2.0, in
916
+
917
+ - [ Change Duty Cycle #1 ] ( https://github.com/khoih-prog/ESP8266_PWM/issues/1#issuecomment-1024969658 )
886
918
887
- - [ Change Duty Cycle #1 ] ( https://github.com/khoih-prog/ESP8266_PWM/issues/1#issuecomment-1024969658 ) leading to v1.2.0
919
+ and enhancement request as well as testing to verify, leading to v1.2.2, in
920
+
921
+ - [ DutyCycle to be updated at the end current PWM period #2 ] ( https://github.com/khoih-prog/ESP8266_PWM/issues/2 )
888
922
889
923
890
924
<table >
@@ -899,6 +933,7 @@ Many thanks for everyone for bug reporting, new feature suggesting, testing and
899
933
## Contributing
900
934
901
935
If you want to contribute to this project:
936
+
902
937
- Report bugs and errors
903
938
- Ask for enhancements
904
939
- Create issues and pull requests
0 commit comments