Einfacher Scheduler und Timer in C++ für ATMega

Gast #837989
Lesenswert?

Hallo,

auf dem Speiseplan steht eine Implementierung eines Schedulers (um 
automatisch mehrere Zweige aus der main-loop verarbeiten zu lassen) und 
ein Timer. Das ganze ist objektorientiert gehalten und in C++ 
geschrieben.
Das ganze ist so angelegt dass es leicht in ein Projekt eingebunden 
kann.

Hier ein Beispiel:
1
#include "scheduler.h"
2
#include "timer.h"
3

4
class Task1: public SchedulerItem
5
{
6
  private:
7
    Timer timer; //this expands our scheduleritem to a timer
8
    
9
  protected:
10
    void Execute(void); //this method is called from the mainloop (indirectly)
11
  
12
  public:
13
    Task1(void);
14
};
15

16
Task1::Task1(void)
17
{
18
  //Constructor...
19
  DDRB |= 1<<PB7; //just for debugging...
20
  timer.SetTime(1000); //flag timer in 1000 ms
21
}
22

23
void Task1::Execute(void)
24
{
25
  if (timer.IsFlagged())
26
  {
27
    PORTB ^= 1<<PB7; //just for debugging...
28
    timer.SetTime(1000); //flag the timer in 1000 ms
29
  }
30
  //...other things to do within this task...
31
}
32

33
Task1 task1;

Das angehängt Testprogramm lässt einen Pin jede Sekunde auf einem Mega64 
umschalten.

Schönen Gruß
Stefan
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren