58 lines
1.8 KiB
C
58 lines
1.8 KiB
C
#include "pwm.h"
|
|
|
|
float pwm_frequency = 1.0;
|
|
uint8_t pwm_duty_cycle = 50;
|
|
|
|
volatile uint8_t pwm_enabled = 0;
|
|
volatile uint8_t pwm_changed = 0;
|
|
|
|
void pwm_enable() {
|
|
pwm_enabled = 1;
|
|
pwm_changed = 1;
|
|
}
|
|
|
|
void pwm_disable() {
|
|
pwm_enabled = 0;
|
|
pwm_changed = 1;
|
|
}
|
|
|
|
void setPWMFrequency(float frequency) {
|
|
if (frequency < 0 || frequency > 50000.0) {
|
|
return; // Недопустимая частота
|
|
}
|
|
pwm_frequency = frequency;
|
|
pwm_changed = 1;
|
|
}
|
|
|
|
void setPWMDutyCycle(float duty_cycle) {
|
|
if (duty_cycle < 1 || duty_cycle > 100) {
|
|
return; // Недопустимый коэффициент заполнения
|
|
}
|
|
pwm_duty_cycle = duty_cycle;
|
|
pwm_changed = 1;
|
|
}
|
|
|
|
void pwm_check_state() {
|
|
if (pwm_enabled) {
|
|
// Включаем пин ШИМ - реализация зависит от аппаратной платформы
|
|
Serial.print("PWM enabled. Frequency: ");
|
|
Serial.print(pwm_frequency);
|
|
Serial.print(" Hz, duty cycle: ");
|
|
Serial.println(pwm_duty_cycle);
|
|
} else {
|
|
// Выключаем пин ШИМ - реализация зависит от аппаратной платформы
|
|
Serial.println("PWM disabled");
|
|
}
|
|
}
|
|
|
|
void pwm_set_frequency(float frequency) {
|
|
// Устанавливаем частоту ШИМ - реализация зависит от аппаратной платформы
|
|
Serial.print("Setting PWM frequency to: ");
|
|
Serial.println(frequency);
|
|
}
|
|
|
|
void pwm_set_duty_cycle(float duty_cycle) {
|
|
// Устанавливаем коэффициент заполнения ШИМ - реализация зависит от аппаратной платформы
|
|
Serial.print("Setting PWM duty cycle to: ");
|
|
Serial.println(duty_cycle);
|
|
} |