From 443a5efbeac57baa56b0d56ee7a2bc5727a7ff8d Mon Sep 17 00:00:00 2001 From: Oliver Hahm Date: Fri, 17 Dec 2010 13:38:03 +0100 Subject: [PATCH] [board/chronos] * introduced battery driver --- board/chronos/drivers/Jamfile | 1 + board/chronos/drivers/battery.c | 13 +++++++++++++ board/chronos/drivers/include/battery.h | 6 ++++++ 3 files changed, 20 insertions(+) create mode 100644 board/chronos/drivers/battery.c create mode 100644 board/chronos/drivers/include/battery.h diff --git a/board/chronos/drivers/Jamfile b/board/chronos/drivers/Jamfile index 54d2fb4e7b..286616c5d9 100644 --- a/board/chronos/drivers/Jamfile +++ b/board/chronos/drivers/Jamfile @@ -5,5 +5,6 @@ HDRS += $(TOP)/board/$(CPU)/drivers/include ; Module board_display : display.c display1.c ; Module board_cc110x : cc430-cc110x.c : cc110x_cc430 ; Module board_buzzer : buzzer.c : hwtimer ; +Module battery : battery.c : adc hwtimer ; Module display_putchar : display_putchar.c : board_display ; diff --git a/board/chronos/drivers/battery.c b/board/chronos/drivers/battery.c new file mode 100644 index 0000000000..69553fc451 --- /dev/null +++ b/board/chronos/drivers/battery.c @@ -0,0 +1,13 @@ +#include +#include +#include + +uint16_t battery_get_voltate(void) { + uint16_t voltage; + voltage = adc12_single_conversion(REFVSEL_1, ADC12SHT0_10, ADC12INCH_11); + + /* Ideally we have A11=0->AVCC=0V ... A11=4095(2^12-1)->AVCC=4V + * --> (A11/4095)*4V=AVCC --> AVCC=(A11*4)/4095 */ + voltage = (voltage * 2 * 2 * 1000) / 4095; + return voltage; +} diff --git a/board/chronos/drivers/include/battery.h b/board/chronos/drivers/include/battery.h new file mode 100644 index 0000000000..6b206c6eca --- /dev/null +++ b/board/chronos/drivers/include/battery.h @@ -0,0 +1,6 @@ +#ifndef BATTERY_H +#define BATTERY_H + +uint16_t battery_get_voltate(void); + +#endif /* BATTERY_H */