summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2016-01-31 18:55:17 +0100
committerDaniel Friesel <derf@finalrewind.org>2016-01-31 18:55:17 +0100
commite0bc7fae75b59324764abf4680a065caddcc70c2 (patch)
tree15b68e2cf554c59336b5a1c24c4be6d8978f9de4
parent49d24d31aebe97a56bb9cb4f1657edbb897ae64b (diff)
add rocket.initialize() function for initial MCU and peripheral setup
-rw-r--r--src/main.cc19
-rw-r--r--src/system.cc19
-rw-r--r--src/system.h12
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.
*