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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.