Calculate PWM_CYCLE_TOP from F_CPU

This commit is contained in:
2024-09-03 01:02:24 +02:00
parent 0110c22455
commit bee711c9ff

View File

@@ -14,12 +14,13 @@
#define FAN02 PD5 // Fan Peltier Cold Side Speed #define FAN02 PD5 // Fan Peltier Cold Side Speed
#define HOT01 PD7 // Heating Temperature #define HOT01 PD7 // Heating Temperature
#define FAN01_MIN_DUTY (320 * 0.2f) // 20% #define PWM_CYCLE_TOP (F_CPU / 25000) // 25 KHz
#define FAN02_MIN_DUTY (320 * 0.2f) // 20% #define FAN01_MIN_DUTY (PWM_CYCLE_TOP * 0.2f)
#define FAN02_MIN_DUTY (PWM_CYCLE_TOP * 0.2f)
#define HOT01_MIN_DUTY 0 #define HOT01_MIN_DUTY 0
static void SetPinDefaults(void); static void SetPinDefaults(void);
static void SetTWIChannel(int channel); static void SetTwiChannel(int channel);
static void SetMosState(int port, bool state); static void SetMosState(int port, bool state);
static void SetPwmValue(int port, int value); static void SetPwmValue(int port, int value);
@@ -50,7 +51,7 @@ int main(void)
SetPwmValue(FAN02, 50); SetPwmValue(FAN02, 50);
SetPwmValue(HOT01, 0); SetPwmValue(HOT01, 0);
SetTWIChannel(0); // I2C Mux SetTwiChannel(0); // I2C Mux
Info("Running idle loop..."); Info("Running idle loop...");
@@ -92,14 +93,14 @@ static void SetPinDefaults(void)
TCCR1A = BIT(WGM11) | BIT(COM1A1) | BIT(COM1B1); TCCR1A = BIT(WGM11) | BIT(COM1A1) | BIT(COM1B1);
TCCR1B = BIT(WGM12) | BIT(WGM13) | BIT(CS10); TCCR1B = BIT(WGM12) | BIT(WGM13) | BIT(CS10);
TCCR2 = BIT(WGM20) | BIT(WGM21) | BIT(COM21) | BIT(CS20); TCCR2 = BIT(WGM20) | BIT(WGM21) | BIT(COM21) | BIT(CS20);
ICR1 = 320; // 8000 MHz / 25000 KHz ICR1 = PWM_CYCLE_TOP; // 8000 MHz / 25000 KHz
OCR1A = FAN01_MIN_DUTY; OCR1A = FAN01_MIN_DUTY;
OCR1B = FAN02_MIN_DUTY; OCR1B = FAN02_MIN_DUTY;
OCR2 = HOT01_MIN_DUTY; OCR2 = HOT01_MIN_DUTY;
} }
static void SetTWIChannel(int channel) static void SetTwiChannel(int channel)
{ {
unsigned char crb; unsigned char crb;
@@ -175,7 +176,7 @@ static void SetPwmValue(int port, int value)
if (port != PD4 && port != PD5 && port != PD7) if (port != PD4 && port != PD5 && port != PD7)
return; // Invalid port return; // Invalid port
n = CLAMP(value, 100, 0) * 3.6f; n = CLAMP(value, 100, 0) * (PWM_CYCLE_TOP / 100.0f);
Info("Setting PWM value to %d...", n); Info("Setting PWM value to %d...", n);
switch (port) { switch (port) {