27
27
uint32_t pwm_mask = 0 ;
28
28
uint16_t pwm_values [17 ] = {0 ,};
29
29
uint32_t pwm_freq = 1000 ;
30
+ uint32_t pwm_range = PWMRANGE ;
30
31
31
32
uint32_t pwm_multiplier = 0 ;
32
33
uint16_t pwm_steps [17 ];
@@ -71,7 +72,7 @@ void prep_pwm_steps(){
71
72
for (i = 0 ; i < 17 ; i ++ ){
72
73
if ((pwm_mask & (1 << i )) != 0 && pwm_values [i ] != 0 ) pwm_temp_steps [pwm_temp_steps_len ++ ] = pwm_values [i ];
73
74
}
74
- pwm_temp_steps [pwm_temp_steps_len ++ ] = PWMRANGE ;
75
+ pwm_temp_steps [pwm_temp_steps_len ++ ] = pwm_range ;
75
76
pwm_temp_steps_len = pwm_sort_array (pwm_temp_steps , pwm_temp_steps_len ) - 1 ;
76
77
for (i = 0 ; i < pwm_temp_steps_len ; i ++ ){
77
78
pwm_temp_masks [i ] = pwm_get_mask (pwm_temp_steps [i ]);
@@ -83,7 +84,7 @@ void prep_pwm_steps(){
83
84
pwm_steps_len = pwm_temp_steps_len ;
84
85
ets_memcpy (pwm_steps , pwm_temp_steps , (pwm_temp_steps_len + 1 ) * 2 );
85
86
ets_memcpy (pwm_steps_mask , pwm_temp_masks , pwm_temp_steps_len * 4 );
86
- pwm_multiplier = ESP8266_CLOCK /(PWMRANGE * pwm_freq );
87
+ pwm_multiplier = ESP8266_CLOCK /(pwm_range * pwm_freq );
87
88
ETS_FRC1_INTR_ENABLE ();
88
89
}
89
90
@@ -133,7 +134,7 @@ extern void __analogWrite(uint8_t pin, int value) {
133
134
pinMode (pin , OUTPUT );
134
135
digitalWrite (pin , LOW );
135
136
}
136
- pwm_values [pin ] = value % (PWMRANGE + 1 );
137
+ pwm_values [pin ] = value % (pwm_range + 1 );
137
138
prep_pwm_steps ();
138
139
if (start_timer ){
139
140
pwm_start_timer ();
@@ -145,5 +146,11 @@ extern void __analogWriteFreq(uint32_t freq){
145
146
prep_pwm_steps ();
146
147
}
147
148
149
+ extern void __analogWriteRange (uint32_t range ){
150
+ pwm_range = range ;
151
+ prep_pwm_steps ();
152
+ }
153
+
148
154
extern void analogWrite (uint8_t pin , int val ) __attribute__ ((weak , alias ("__analogWrite" )));
149
155
extern void analogWriteFreq (uint32_t freq ) __attribute__ ((weak , alias ("__analogWriteFreq" )));
156
+ extern void analogWriteRange (uint32_t range ) __attribute__ ((weak , alias ("__analogWriteRange" )));
0 commit comments