Mercurial > templog
diff main.c @ 4:54d369e3d689
Fill out more main.c structure
Add onewire files
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 09 May 2012 00:22:28 +0800 |
parents | 888be1b234b6 |
children | 011160e5b1ce |
line wrap: on
line diff
--- a/main.c Tue May 08 22:51:38 2012 +0800 +++ b/main.c Wed May 09 00:22:28 2012 +0800 @@ -21,7 +21,9 @@ // 1 second. we have 1024 prescaler, 32768 crystal. #define SLEEP_COMPARE 32 -#define SECONDS_WAKE 60 +#define MEASURE_WAKE 60 + +#define COMMS_WAKE 3600 #define BAUD 9600 #define UBRR ((F_CPU)/16/(BAUD)-1) @@ -33,12 +35,18 @@ static uint8_t n_measurements; static uint8_t measurements[500]; +// boolean flags static uint8_t need_measurement; +static uint8_t need_comms; +static uint8_t comms_done; static uint8_t readpos; static char readbuf[30]; static uint8_t sec_count; +static uint16_t bt_count; + +static void deep_sleep(); static void uart_init(unsigned int ubrr) @@ -82,6 +90,7 @@ static void cmd_btoff() { + comms_done = 1; } static void @@ -127,12 +136,19 @@ ISR(TIMER2_COMPA_vect) { - sec_count ++; - if (sec_count == SECONDS_WAKE) + measure_count ++; + comms_count ++; + if (measure_count == MEASURE_WAKE) { - sec_count = 0; + measure_count = 0; need_measurement = 1; } + + if (comms_count == COMMS_WAKE) + { + comms_count = 0; + need_comms = 1; + } } DWORD get_fattime (void) @@ -152,11 +168,42 @@ } static void +idle_sleep() +{ + set_sleep_mode(SLEEP_MODE_IDLE); + sleep_mode(); +} + +static void do_measurement() { need_measurement = 0; } +static void +do_comms() +{ + need_comms = 0; + + // turn on bluetooth + // turn on serial (interrupts) + + // write sd card here? same 3.3v regulator... + + comms_done = 0; + for (;;) + { + if (comms_done) + { + break; + } + idle_sleep(); + } + + // turn off bluetooth + // turn off serial (interrupts) +} + int main(void) { uart_init(UBRR); @@ -177,7 +224,16 @@ if (need_measurement) { do_measurement(); + continue; } + + if (need_comms) + { + do_comms(); + continue; + } + + deep_sleep(); } return 0; /* never reached */ }