summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2025-08-17 10:07:43 +0800
committerSadeep Madurange <sadeep@asciimx.com>2025-08-17 10:07:43 +0800
commitf32244351f8c95ef30f5c889cf859aa4f15b9b64 (patch)
tree50439e6f65a5d3a0436e9913a739e4a139079bd0
parentf421d44c1898cdf1c7a8c1eab2414738b2543fad (diff)
downloadfpm-door-lock-f32244351f8c95ef30f5c889cf859aa4f15b9b64.tar.gz
Define function to measure battery level.
-rw-r--r--main.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/main.c b/main.c
index beeb87a..a16101d 100644
--- a/main.c
+++ b/main.c
@@ -100,6 +100,28 @@ static inline void flash_led(void)
}
}
+static inline uint16_t get_bat_volt(void)
+{
+ uint16_t vbg;
+
+ ADMUX |= (1 << REFS0);
+ ADCSRA |= (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1); /* clk: 50-200 kHz */
+
+ // https://www.sciencetronics.com/greenphotons/?p=1521
+ _delay_us(500);
+
+ ADCSRA |= (1 << ADSC);
+ while (ADCSRA & (1 << ADSC))
+ ;
+
+ ADCSRA &= ~(1 << ADEN);
+ vbg = 3300UL / 1024 * ADC
+
+ ADCSRA &= ~(1 << ADEN);
+
+ return vbg * 3;
+}
+
int main(void)
{
uint16_t id;
@@ -124,7 +146,7 @@ int main(void)
TCCR1A |= (1 << COM1A1);
SERVO_DDR |= (1 << SERVO_PIN);
- /* battery check */
+ /* bat check */
LED_DDR |= (1 << LED_PIN);
LED_PORT &= ~(1 << LED_PIN);