Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <time.h>
- #define TIMER_ANZAHL 5
- #define T5sec (5)
- using namespace std;
- //EVENTS
- volatile uint16_t eventkette = 0;
- void setEvent(uint16_t ev) {
- eventkette |= ev;
- }
- uint8_t eventIsSet(uint16_t ev) {
- uint8_t temp = ev & eventkette;
- if (temp)
- return 1;
- return 0;
- }
- void clearEvent(uint16_t ev) {
- uint16_t nev = ~ev;
- eventkette &= nev;
- }
- void printevent(){
- cout << eventkette << endl;
- }
- //TIMER
- typedef struct {
- volatile int m_time;
- volatile int m_startTime;
- volatile uint16_t m_ev;
- volatile uint8_t m_start;
- } timer_struct;
- volatile timer_struct timer[TIMER_ANZAHL] = { 0 };
- void setTimer(uint8_t timernumber, int time, uint16_t ev) {
- timer[timernumber].m_time = time;
- timer[timernumber].m_ev = ev;
- timer[timernumber].m_start = 0;
- cout << "Timer is set for event " << ev << " time: " << time << endl;
- }
- void startTimer(uint16_t timernumber) {
- timer[timernumber].m_start = 1;
- time_t now = time(0);
- timer[timernumber].m_startTime = now;
- cout << "Timer " << timernumber << " has been started" << endl;
- }
- void cancelTimer(uint16_t timernumber) {
- timer[timernumber].m_start = 0;
- cout << "Timer " << timernumber << " has been stopped!" << endl;
- }
- void TaskTimer() {
- //getsystime
- time_t now;
- cout << "Systime = " << now << endl;
- while (1) {
- for (uint8_t i = 0; i < TIMER_ANZAHL; i++) {
- if (timer[i].m_start == 1) {
- cout << "erstes If in TaskTimer" << endl;
- if (timer[i].m_startTime + timer[i].m_time <= (now = time(0))) {
- cout << "Systime = " << now << endl;
- timer[i].m_start = 0;
- setEvent(timer[i].m_ev);
- cout << "zweites If in TaskTimer" << endl;
- }
- }
- }
- }
- }
- int main(){
- setEvent(4);
- printevent();
- clearEvent(4);
- printevent();
- int eventtest = 0;
- setEvent(4);
- eventtest = eventIsSet(4);
- cout << "event is set: " << eventtest << endl;
- clearEvent(4);
- eventtest = eventIsSet(4);
- cout << "event is set: " << eventtest << endl;
- setTimer(1,T5sec,1); //Timer für event 1
- startTimer(1); //Start timer für event 1
- //cancelTimer(1); //Cancel timer für event 1
- //Timer while 1
- TaskTimer();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement