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