From d757fde31ef78398ff5a2d07882b1b0e26e17812 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Thu, 19 Jun 2025 11:32:50 +0800 Subject: FET switches. --- main.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/main.c b/main.c index 9cd30d4..ddd4c18 100644 --- a/main.c +++ b/main.c @@ -20,6 +20,11 @@ #define LED_DDR DDRB #define LED_PORT PORTB +#define FET_FPM PC4 +#define FET_SERVO PC5 +#define FET_DDR DDRC +#define FET_PORT PORTC + #define FRONT_UNLOCK_PIN PD2 #define FRONT_LOCK_PIN PD3 #define ENROLL_PIN PD4 @@ -91,6 +96,16 @@ static inline void flash_led(void) } } +static inline void fet_on(void) +{ + FET_PORT |= (1 << FET_FPM) | (1 << FET_SERVO); +} + +static inline void fet_off(void) +{ + FET_PORT &= ~((1 << FET_FPM) | (1 << FET_SERVO)); +} + int main(void) { uint16_t id; @@ -102,6 +117,10 @@ int main(void) WDTCSR |= (1 << WDCE) | (1 << WDE); WDTCSR = 0x00; + /* power on peripherals */ + FET_DDR |= (1 << FET_FPM) | (1 << FET_SERVO); + + fet_on(); fpm_init(); /* servo */ @@ -171,7 +190,9 @@ int main(void) } cmd = NONE; + _delay_ms(50); + fet_off(); set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_bod_disable(); @@ -179,6 +200,7 @@ int main(void) sleep_cpu(); cli(); sleep_disable(); + fet_on(); } return 0; -- cgit v1.2.3