diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.cc | 19 | ||||
-rw-r--r-- | src/system.cc | 19 | ||||
-rw-r--r-- | src/system.h | 12 |
3 files changed, 28 insertions, 22 deletions
diff --git a/src/main.cc b/src/main.cc index 5fa0c0d..5afa6d7 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,7 +1,3 @@ -#include <avr/io.h> -#include <avr/interrupt.h> -#include <avr/wdt.h> -#include <util/delay.h> #include <stdlib.h> #include "display.h" @@ -27,23 +23,10 @@ int main (void) test.length = 2*8; test.data = anim_data; - // disable ADC to save power - PRR |= _BV(PRADC); - - // dito - wdt_disable(); - - // Enable pull-ups on PC3 and PC7 (button pins) - PORTC |= _BV(PC3) | _BV(PC7); + rocket.initialize(); display.show(&ohai); - display.enable(); - modem.enable(); - storage.enable(); - - sei(); - while (1) { // nothing to do here, go to idle to save power SMCR = _BV(SE); diff --git a/src/system.cc b/src/system.cc index 15ee0b9..a192b24 100644 --- a/src/system.cc +++ b/src/system.cc @@ -6,6 +6,7 @@ #include "display.h" #include "modem.h" +#include "storage.h" #include "system.h" #define SHUTDOWN_THRESHOLD 2048 @@ -16,6 +17,24 @@ extern animation_t ohai; uint8_t disp_buf[128]; +void System::initialize() +{ + // disable ADC to save power + PRR |= _BV(PRADC); + + // dito + wdt_disable(); + + // Enable pull-ups on PC3 and PC7 (button pins) + PORTC |= _BV(PC3) | _BV(PC7); + + display.enable(); + modem.enable(); + storage.enable(); + + sei(); +} + void System::loop() { static uint8_t i = 0; diff --git a/src/system.h b/src/system.h index b36e348..7c0ab80 100644 --- a/src/system.h +++ b/src/system.h @@ -1,7 +1,3 @@ -#include <avr/io.h> -#include <avr/interrupt.h> -#include <avr/wdt.h> -#include <util/delay.h> #include <stdlib.h> #define SHUTDOWN_THRESHOLD 2048 @@ -18,6 +14,14 @@ class System { System() { want_shutdown = 0; }; /** + * Initial MCU setup. Turns off unused peripherals to save power + * and configures the button pins. Also configures all other pins + * and peripherals using the enable function of their respective + * classes. Turns on interrupts once that's done. + */ + void initialize(void); + + /** * System idle loop. Checks for button presses, handles * standby/resume, reads data from the Modem and updates the Display. * |