summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2025-08-18 17:08:45 +0800
committerSadeep Madurange <sadeep@asciimx.com>2025-08-18 17:38:59 +0800
commite051246c659122f6b633b3c6fe93c8d4e5007662 (patch)
treed00fd091b34f9b320fd8c4b235216dbaae1cb966
parent333baedb7dc11521f4f57f2b8127dd9064e0c278 (diff)
downloadfpm-door-lock-e051246c659122f6b633b3c6fe93c8d4e5007662.tar.gz
Flash LED using CTC.
-rw-r--r--main.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/main.c b/main.c
index 94062ff..116fcc3 100644
--- a/main.c
+++ b/main.c
@@ -17,9 +17,9 @@
#define PWM_MAX 2550
#define PWM_TOP 19999
-#define LED_PIN PB5
-#define LED_DDR DDRB
-#define LED_PORT PORTB
+#define LED_PIN PD6
+#define LED_DDR DDRD
+#define LED_PORT PORTD
#define PWR_BAT PB2
#define PWR_SRVO PB3
@@ -105,12 +105,16 @@ static inline void unlock(void)
static inline void flash_led(void)
{
- for (int i = 0; i < 4; i++) {
- LED_PORT |= (1 << LED_PIN);
- _delay_ms(70);
- LED_PORT &= ~(1 << LED_PIN);
- _delay_ms(70);
- }
+ TCCR0A = (1 << COM0A0) | (1 << WGM01);
+ OCR0A = 255;
+ TCCR0B = (1 << CS02) | (1 << CS00);
+}
+
+static inline void stop_led(void)
+{
+ TCCR0B = 0;
+ TCCR0A = 0;
+ LED_PORT &= ~(1 << LED_PIN);
}
static void check_bat(void)
@@ -230,6 +234,8 @@ int main(void)
_delay_ms(500);
pwroff_fpm();
+ stop_led();
+
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_bod_disable();