Simplify thinga a bit

This commit is contained in:
Henrik Ekblad
2015-03-13 15:39:05 +01:00
parent c1d5513578
commit d88e917544
+29 -38
View File
@@ -16,50 +16,24 @@ MyHwATMega328::MyHwATMega328() : MyHw()
} }
void MyHwATMega328::init() { inline void MyHwATMega328::init() {
Serial.begin(BAUD_RATE); Serial.begin(BAUD_RATE);
} }
void MyHwATMega328::watchdogReset() { inline void MyHwATMega328::watchdogReset() {
wdt_reset(); wdt_reset();
} }
void MyHwATMega328::reboot() { inline void MyHwATMega328::reboot() {
wdt_enable(WDTO_15MS); wdt_enable(WDTO_15MS);
for (;;); for (;;);
} }
unsigned long MyHwATMega328::millisec() { inline unsigned long MyHwATMega328::millisec() {
return millis(); return millis();
} }
#define bodOn(mode) \
do { \
set_sleep_mode(mode); \
cli(); \
sleep_enable(); \
sei(); \
sleep_cpu(); \
sleep_disable(); \
sei(); \
} while (0);
#if defined __AVR_ATmega328P__
#define bodOff(mode)\
do { \
set_sleep_mode(mode); \
cli(); \
sleep_enable(); \
sleep_bod_disable(); \
sei(); \
sleep_cpu(); \
sleep_disable(); \
sei(); \
} while (0);
#endif
void powerDown(period_t period) { void powerDown(period_t period) {
ADCSRA &= ~(1 << ADEN); ADCSRA &= ~(1 << ADEN);
@@ -70,15 +44,32 @@ void powerDown(period_t period) {
WDTCSR |= (1 << WDIE); WDTCSR |= (1 << WDIE);
} }
#if defined __AVR_ATmega328P__ #if defined __AVR_ATmega328P__
bodOff(SLEEP_MODE_PWR_DOWN); do {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
cli();
sleep_enable();
sleep_bod_disable();
sei();
sleep_cpu();
sleep_disable();
sei();
} while (0);
#else #else
bodOn(SLEEP_MODE_PWR_DOWN); do {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
cli();
sleep_enable();
sei();
sleep_cpu();
sleep_disable();
sei();
} while (0);
#endif #endif
ADCSRA |= (1 << ADEN); ADCSRA |= (1 << ADEN);
} }
void MyHwATMega328::sleep(unsigned long ms) { inline void MyHwATMega328::sleep(unsigned long ms) {
// Let serial prints finish (debug, log etc) // Let serial prints finish (debug, log etc)
Serial.flush(); Serial.flush();
pinIntTrigger = 0; pinIntTrigger = 0;
@@ -112,7 +103,7 @@ bool MyHwATMega328::sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
return pinTriggeredWakeup; return pinTriggeredWakeup;
} }
uint8_t MyHwATMega328::sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) { inline uint8_t MyHwATMega328::sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) {
int8_t retVal = 1; int8_t retVal = 1;
attachInterrupt(interrupt1, wakeUp, mode1); attachInterrupt(interrupt1, wakeUp, mode1);
attachInterrupt(interrupt2, wakeUp2, mode2); attachInterrupt(interrupt2, wakeUp2, mode2);
@@ -137,19 +128,19 @@ uint8_t MyHwATMega328::sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrup
return retVal; return retVal;
} }
uint8_t MyHwATMega328::readConfigByte(uint8_t pos) { inline uint8_t MyHwATMega328::readConfigByte(uint8_t pos) {
return eeprom_read_byte((uint8_t*)pos); return eeprom_read_byte((uint8_t*)pos);
} }
void MyHwATMega328::writeConfigByte(uint8_t pos, uint8_t value) { inline void MyHwATMega328::writeConfigByte(uint8_t pos, uint8_t value) {
eeprom_update_byte((uint8_t*)pos, value); eeprom_update_byte((uint8_t*)pos, value);
} }
void MyHwATMega328::readConfigBlock(void* buf, void * pos, size_t length) { inline void MyHwATMega328::readConfigBlock(void* buf, void * pos, size_t length) {
eeprom_read_block(buf, (void*)pos, length); eeprom_read_block(buf, (void*)pos, length);
} }
void MyHwATMega328::writeConfigBlock(void* pos, void* buf, size_t length) { inline void MyHwATMega328::writeConfigBlock(void* pos, void* buf, size_t length) {
eeprom_write_block((void*)pos, (void*)buf, length); eeprom_write_block((void*)pos, (void*)buf, length);
} }