Arduino - Warum wird die Methode mehrmals ausgeführt?

OP #4616200
Lesenswert?

Hallo,

vielen Dank schon mal an alle, die sich mit der Frage auseinandersetzen. 
Folgendes Verhalten dieses kleinen Teilprogramms verstehe ich nicht.

Ich möchte den Timer2 innerhalb einer Klasse initialisieren und rufe die 
hierfür vorgesehene Methode aus der Setup-Funktion des Arduino Sketches 
auf, sodass die Initialisierung nach meinem Verständnis nur ein mal 
ausgehührt werden sollte.

Die zugehörige Ausgabe des Programms (Files im Anhang) ist:

Beginning initialization!
TCNT2: 101
OCR2A: 11001000
TCCR2A: 10
TCCR2B: 111
TIMSK2: 10
10
TIFR2: 101
SREG: 10
Initialization done!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!          Beginning initialization!
TCNT2: 101
OCR2A: 11001000
TCCR2A: 10
TCCR2B: 111
TIMSK2: 10
10
TIFR2: 101
SREG: 10
Initialization done!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping!
Looping

etc...

Der Code innerhalb der Initialisierungsmethode wird also mehrmals 
aufgerufen. Dies verstehe ich nicht. Außerdem verhält sich das Programm 
wie erwartet (Einmale Ausführung der Initialisierungsfunktion), wenn ich 
die Anweisung
1
TIMSK2 |= (1<<OCIE2A);
 entferne. Deshalb vermute ich, dass dieses Verhalten durch einen 
Interrupt verursacht wird, weshalb ich die sei() und cli() Anweisungen 
hinzugefügt habe.

Jedenfalls verstehe ich die mehrfache Ausführung der Anweisungen in der 
Initialisierungsmethode absolut nicht, und hoffe, dass mir hier jemand 
helfen kann dieses Verhalten nachzucollziehen.

Das Arduino Board ist der Arduino Uno, und der µC der Atmega328P.

Gruß
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