diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2025-08-17 10:07:43 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2025-08-17 10:07:43 +0800 |
| commit | f32244351f8c95ef30f5c889cf859aa4f15b9b64 (patch) | |
| tree | 50439e6f65a5d3a0436e9913a739e4a139079bd0 | |
| parent | f421d44c1898cdf1c7a8c1eab2414738b2543fad (diff) | |
| download | fpm-door-lock-f32244351f8c95ef30f5c889cf859aa4f15b9b64.tar.gz | |
Define function to measure battery level.
| -rw-r--r-- | main.c | 24 |
1 files changed, 23 insertions, 1 deletions
@@ -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); |
