diff --git a/Software/src/clock.cpp b/Software/src/clock.cpp new file mode 100644 index 0000000..c8d243b --- /dev/null +++ b/Software/src/clock.cpp @@ -0,0 +1,69 @@ +/* + * clock.cpp + * + * Created on: 22.11.2018 + * Author: Hendrik Schutter + */ + +#include "openChargeMicro.h" + +uint32_t systemTime; + +clock::clock() { + systemTime = 0; + clock_init(); + serialSend("init clock\r\n"); +} + +clock::~clock() { + +} + +void clock::clock_init() { + OCR1A = 0x3D08; // --> 1 sec + + TCCR1B |= (1 << WGM12); + // Mode 4, CTC on OCR1A + + TIMSK1 |= (1 << OCIE1A); + //Set interrupt on compare match + + TCCR1B |= (1 << CS12) | (1 << CS10); + // set prescaler to 1024 and start the timer + + sei(); +} +uint32_t clock::getTime() { + + return systemTime; +} + +struct time_t clock::getTime(struct time_t pTime) { + + struct time_t ret; + + ret.seconds = getTime() - pTime.seconds; + ret.diffSecond = ret.seconds; + ret.diffMinute = 0; + ret.diffHour = 0; + + while (ret.diffSecond > 59) { + ret.diffSecond = -60; + ret.diffMinute++; + } + + while (ret.diffMinute > 59) { + ret.diffMinute = -60; + ret.diffHour++; + } + + return ret; +} + +ISR (TIMER1_COMPA_vect) { + // action to be done every 1 sec + systemTime++; +} + +ISR(__vector_default) { +} diff --git a/Software/src/clock.h b/Software/src/clock.h new file mode 100644 index 0000000..18b3c63 --- /dev/null +++ b/Software/src/clock.h @@ -0,0 +1,31 @@ +/* + * clock.h + * + * Created on: 22.11.2018 + * Author: Hendrik Schutter + */ + +#ifndef SRC_CLOCK_H_ +#define SRC_CLOCK_H_ + +struct time_t { + uint8_t diffHour; + uint8_t diffMinute; + uint8_t diffSecond; + uint32_t seconds; +}; + +class clock { + +private: + void clock_init(); + +public: + clock(); + ~clock(); + uint32_t getTime(); //time in sec since boot + struct time_t getTime(struct time_t pTime); //time in sec since time stamp + +}; + +#endif /* SRC_CLOCK_H_ */ diff --git a/Software/src/main.cpp b/Software/src/main.cpp index d420924..0d6a309 100644 --- a/Software/src/main.cpp +++ b/Software/src/main.cpp @@ -1,42 +1,38 @@ #include "openChargeMicro.h" +void test(); + int main(void) { serialSetup(); serialSend("Hello World\r\n"); + clock clk; ioController io; io.deactivateChargers(); - _delay_ms(1000); //Startup delay + //_delay_ms(1000); //Startup delay io.setActiveLED(true); io.activateChargers(); - time_t testStamp; - - time(&testStamp); - - char charTime[255]; - - dtostrf(testStamp, 4, 2, charTime); - serialSend("Time: "); - serialSend (charTime); - serialSend(" \r\n"); - - _delay_ms(1000); - time(&testStamp); + while (1) { + char charVal[10]; + dtostrf(clk.getTime(), 4, 2, charVal); + serialSend("Time - "); + serialSend(charVal); + serialSend(" sec\r\n"); + } - dtostrf(testStamp, 4, 2, charTime); - serialSend("Time: "); - serialSend (charTime); - serialSend(" \r\n"); + //void test(); - _delay_ms(1000); + return 0; +} +void test() { /* create charger */ s_charger charger_settings; @@ -112,8 +108,6 @@ int main(void) { _delay_ms(1000); } - - return 0; } void serialSetup(void) { diff --git a/Software/src/openChargeMicro.h b/Software/src/openChargeMicro.h index a1251b6..4199aec 100644 --- a/Software/src/openChargeMicro.h +++ b/Software/src/openChargeMicro.h @@ -5,12 +5,13 @@ #include #include #include -#include + /* project header */ #include "ioController.h" #include "multiplexer.h" #include "charger.h" +#include "clock.h" /* Pins */ #define WS2812B PD2