103 lines
1.7 KiB
C++
103 lines
1.7 KiB
C++
/*
|
|
* clock.cpp
|
|
*
|
|
* Created on: 22.11.2018
|
|
* Author: Hendrik Schutter
|
|
*/
|
|
|
|
#include "openChargeMicro.h"
|
|
|
|
unsigned long int systemTime; // 0 to 4294967295 sec
|
|
|
|
/* Only call once */
|
|
clock::clock() {
|
|
//TODO Singleton
|
|
systemTime = 0;
|
|
clock_init();
|
|
#ifdef DEBUG
|
|
serialSend("init clock\r\n");
|
|
#endif
|
|
}
|
|
|
|
clock::~clock() {
|
|
|
|
}
|
|
|
|
void clock::clock_init() {
|
|
OCR1A = 0x3D08; // --> 1 sec
|
|
|
|
//OCR1A = 0x7A11; // --> 2 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();
|
|
//enable interrupts
|
|
}
|
|
/* get seconds since boot*/
|
|
unsigned long int clock::getTime() {
|
|
return systemTime;
|
|
}
|
|
|
|
/* get time struct since time stamp */
|
|
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 = ret.diffSecond - 60;
|
|
ret.diffMinute++;
|
|
}
|
|
|
|
while (ret.diffMinute > 59) {
|
|
ret.diffMinute = ret.diffMinute - 60;
|
|
ret.diffHour++;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/* get time struct as time stamp */
|
|
struct time_t clock::getTimeStamp() {
|
|
struct time_t ret;
|
|
|
|
ret.seconds = getTime();
|
|
ret.diffSecond = ret.seconds;
|
|
ret.diffMinute = 0;
|
|
ret.diffHour = 0;
|
|
|
|
while (ret.diffSecond > 59) {
|
|
ret.diffSecond = ret.diffSecond - 60;
|
|
ret.diffMinute++;
|
|
}
|
|
|
|
while (ret.diffMinute > 59) {
|
|
ret.diffMinute = ret.diffMinute - 60;
|
|
ret.diffHour++;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
ISR (TIMER1_COMPA_vect) {
|
|
// action to be done every 1 sec
|
|
systemTime++; //increase system time
|
|
updateChargers();
|
|
}
|
|
|
|
|
|
|
|
ISR(__vector_default) {
|
|
|
|
}
|
|
|
|
|