1 /* $Id: main.c,v 1.3 2010/06/27 22:19:15 simimeie Exp $
2 * Main file for the HaWo moodlight.
3 * This is the main file that glues it all together. It also contains all
4 * functionality that is too small to require an extra file.
5 * (C) Michael "Fox" Meier 2010
9 #include <avr/interrupt.h>
11 #include <avr/eeprom.h>
12 #include <avr/power.h>
13 #include <avr/sleep.h>
16 #include <util/delay.h>
20 #include "ircontrol.h"
22 /* #include "eepromdata.h" */
24 uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
26 /* This is needed to recover from a watchdog reset, as the watchdog
27 * stays active after the reset.
28 * The variable is just to make the reason of the last reset accessible
30 void get_mcusr(void) __attribute__((naked)) __attribute__((section(".init3")));
31 void get_mcusr(void) {
41 /* Load settings from EEPROM */
43 something = eeprom_read_byte(&ee_something);
44 #endif /* LEDMODULE */
46 /* Initialize stuff */
54 /* Prepare sleep mode */
55 //set_sleep_mode(SLEEP_MODE_IDLE);
58 /* All set up, enable interrupts and go. */
61 if (mcusr_mirror & _BV(WDRF)) {
62 console_printpgm_P(PSTR("NOTE: last reset was from Watchdog Timer."));
64 if (mcusr_mirror & _BV(BORF)) {
65 console_printpgm_P(PSTR("NOTE: last reset was from Brownout."));
68 while (1) { /* We should never exit */
72 ledpwm_setled(LEDPWM_REDLED, i);
73 ledpwm_setled(LEDPWM_GREENLED, i+128);
74 ledpwm_setled(LEDPWM_BLUELED, 255-i);