aboutsummaryrefslogtreecommitdiff
path: root/altimeter.c
diff options
context:
space:
mode:
authorDavid Phillips <david@yeah.nah.nz>2021-02-13 22:35:13 +1300
committerDavid Phillips <david@yeah.nah.nz>2021-02-13 22:35:13 +1300
commit801bbca9298a2059f60f34140c22a219435cd0ef (patch)
treee02bd092c258041ef23a939b6eb600c200a5594d /altimeter.c
parent4710921284adbf5005421515fbab5dd1aa38e9aa (diff)
downloadaltimeter-801bbca9298a2059f60f34140c22a219435cd0ef.tar.xz
Add dep files to Makefile
Also includes WIP data manager code.
Diffstat (limited to 'altimeter.c')
-rw-r--r--altimeter.c62
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);