From 6ae438b035029d59d4885cc1dd1707560f7044b3 Mon Sep 17 00:00:00 2001 From: John Doe Date: Tue, 2 Jun 2015 01:11:08 +0300 Subject: [PATCH] add PWM Range control setting freq to 50, range to 20000 and writing between 700 and 2200 gives servo control for example --- cores/esp8266/Arduino.h | 1 + cores/esp8266/core_esp8266_wiring_pwm.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/cores/esp8266/Arduino.h b/cores/esp8266/Arduino.h index 3f67fdaea..138aea96b 100644 --- a/cores/esp8266/Arduino.h +++ b/cores/esp8266/Arduino.h @@ -188,6 +188,7 @@ int analogRead(uint8_t); void analogReference(uint8_t mode); void analogWrite(uint8_t, int); void analogWriteFreq(uint32_t freq); +void analogWriteRange(uint32_t range); unsigned long millis(void); unsigned long micros(void); diff --git a/cores/esp8266/core_esp8266_wiring_pwm.c b/cores/esp8266/core_esp8266_wiring_pwm.c index 7a70f5d27..d102f93d6 100644 --- a/cores/esp8266/core_esp8266_wiring_pwm.c +++ b/cores/esp8266/core_esp8266_wiring_pwm.c @@ -27,6 +27,7 @@ uint32_t pwm_mask = 0; uint16_t pwm_values[17] = {0,}; uint32_t pwm_freq = 1000; +uint32_t pwm_range = PWMRANGE; uint32_t pwm_multiplier = 0; uint16_t pwm_steps[17]; @@ -71,7 +72,7 @@ void prep_pwm_steps(){ for(i=0; i<17; i++){ if((pwm_mask & (1 << i)) != 0 && pwm_values[i] != 0) pwm_temp_steps[pwm_temp_steps_len++] = pwm_values[i]; } - pwm_temp_steps[pwm_temp_steps_len++] = PWMRANGE; + pwm_temp_steps[pwm_temp_steps_len++] = pwm_range; pwm_temp_steps_len = pwm_sort_array(pwm_temp_steps, pwm_temp_steps_len) - 1; for(i=0; i