pwm: add analogWriteResolution

This commit is contained in:
Daniel Fekete 2017-06-20 06:38:11 +02:00
parent f551dd732b
commit d6efe6df86
2 changed files with 7 additions and 1 deletions

View File

@ -108,6 +108,7 @@ int analogRead(uint8_t);
void analogReadResolution(int resolution);
void analogReference(uint8_t mode);
void analogWrite(uint8_t, int);
void analogWriteResolution(int bits);
//unsigned long millis(void);
//unsigned long micros(void);

View File

@ -26,6 +26,7 @@ TIM_HandleTypeDef *handle;
static uint32_t counter;
static uint32_t waitCycles;
static uint8_t analogWriteResolutionBits = 8;
const uint32_t TIMER_MAX_CYCLES = UINT16_MAX;
@ -52,6 +53,10 @@ static stm32_pwm_type pwm_config[sizeof(variant_pin_list) / sizeof(variant_pin_l
void stm32_pwm_disable(GPIO_TypeDef *port, uint32_t pin);
void analogWriteResolution(int bits) {
analogWriteResolutionBits = bits;
}
void analogWrite(uint8_t pin, int value) {
static TIM_HandleTypeDef staticHandle;
@ -98,7 +103,7 @@ void analogWrite(uint8_t pin, int value) {
pwm_config[i].port = variant_pin_list[pin].port;
pwm_config[i].pin_mask = variant_pin_list[pin].pin_mask;
pwm_config[i].frequency = HAL_RCC_GetPCLK2Freq() / PWM_FREQUENCY_HZ;
pwm_config[i].duty_cycle = pwm_config[i].frequency * value / 256;
pwm_config[i].duty_cycle = pwm_config[i].frequency * value / (1 << analogWriteResolutionBits);
break;
}
}