diff options
author | David Phillips <david@yeah.nah.nz> | 2021-02-13 22:35:13 +1300 |
---|---|---|
committer | David Phillips <david@yeah.nah.nz> | 2021-02-13 22:35:13 +1300 |
commit | 801bbca9298a2059f60f34140c22a219435cd0ef (patch) | |
tree | e02bd092c258041ef23a939b6eb600c200a5594d /altimeter.c | |
parent | 4710921284adbf5005421515fbab5dd1aa38e9aa (diff) | |
download | altimeter-801bbca9298a2059f60f34140c22a219435cd0ef.tar.xz |
Add dep files to Makefile
Also includes WIP data manager code.
Diffstat (limited to 'altimeter.c')
-rw-r--r-- | altimeter.c | 62 |
1 files changed, 6 insertions, 56 deletions
diff --git a/altimeter.c b/altimeter.c index 0aebbf7..d86bd23 100644 --- a/altimeter.c +++ b/altimeter.c @@ -7,9 +7,9 @@ #include <avr/interrupt.h> #include <avr/wdt.h> -#include "barometer.h" + +#include "data_manager.h" #include "display.h" -#include "util.h" #ifdef WDT_DISABLE # warning "WDT disabled in this build" @@ -33,64 +33,12 @@ #define DEBUG_MARK_4_CLEAR do{PORTB &= ~(1 << 6);}while(0) #define DEBUG_MARK_5_SET do{PORTB |= 1 << 5;}while(0) #define DEBUG_MARK_5_CLEAR do{PORTB &= ~(1 << 5);}while(0) -#define DEBUG_MARK_6_SET do{PORTB |= 1 << 4;}while(0) -#define DEBUG_MARK_6_CLEAR do{PORTB &= ~(1 << 4);}while(0) /* ISR for collecting and displaying pressure, altitude data etc */ ISR(TIMER1_COMPA_vect) { - DEBUG_MARK_SET_ALL; - static volatile float setting = 1040.21; /* FIXME volatile for gdb hacks */ - static float last_height = 0; - float pressure = 0; - float height_m = 0; - float rate_m_s; - char rate_sym; - DEBUG_MARK_1_CLEAR; - pressure = barometer_read(); - DEBUG_MARK_2_CLEAR; - height_m = pressure_to_metres_asl(pressure, setting); - DEBUG_MARK_3_CLEAR; - rate_m_s = height_m - last_height; - last_height = height_m; - DEBUG_MARK_4_CLEAR; - - if (rate_m_s < 0) { - rate_sym = C_DESC; - } else if (rate_m_s == 0) { - rate_sym = C_IDLE; - } else { - rate_sym = C_ASC; - } - DEBUG_MARK_5_CLEAR; - - char line[LCD_WIDTH+1]; - /* line 1 */ - snprintf(line, sizeof(line), "%.1f m %c%d m/s", height_m, rate_sym, abs(rate_m_s)); - blank_to_eol(line, sizeof(line)); - display_set_cursor(0, 0); - display_write(line); - - - /* line 2 */ - snprintf(line, sizeof(line), "%.2f hPa", pressure); - blank_to_eol(line, sizeof(line)); - display_set_cursor(0, 1); - display_write(line); - - /* line 3 */ - snprintf(line, sizeof(line), "SET %.2f hPa", setting); - blank_to_eol(line, sizeof(line)); - display_set_cursor(0, 2); - display_write(line); - - /* line 4 */ - snprintf(line, sizeof(line), "%.1f ""\xdf""C", 12.3f); - blank_to_eol(line, sizeof(line)); - display_set_cursor(0, 3); - display_write(line); - - DEBUG_MARK_6_CLEAR; + data_manager_tick(); + //ui_tick(); WDT_PAT_MAYBE(); } @@ -113,6 +61,8 @@ int main(void) * interrupt which we're not handling for now */ USBCON &= ~(1 << USBE); #endif + // FIXME measure current saving here if any + //ACSR |= (1 << ACD); /* main body should take no longer than 1 second to run */ WDT_SETUP_MAYBE(WDTO_2S); |