Forum: Projekte & Code Einfacher Scheduler und Timer in C++ für ATMega


von S. Seegel (Gast)


Angehängte Dateien:

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.