added clock class

This commit is contained in:
Hendrik Schutter 2018-11-22 11:50:11 +01:00
parent 2769d52fc9
commit e5d96c0e84
4 changed files with 117 additions and 22 deletions

69
Software/src/clock.cpp Normal file
View File

@ -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) {
}

31
Software/src/clock.h Normal file
View File

@ -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_ */

View File

@ -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) {

View File

@ -5,12 +5,13 @@
#include <avr/interrupt.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* project header */
#include "ioController.h"
#include "multiplexer.h"
#include "charger.h"
#include "clock.h"
/* Pins */
#define WS2812B PD2