Okay... ich erkläre es dir, aber ich sehe hier ein großes Wissensdefizit im Bereich Progammierung von Microcontroller in der Sprache C bzw. C++!
(Und ja... ich bin auch nicht der super Programmierer)
sei(); gibt hier die Interrupt global frei. Soll heißen, dass du den Controller erlaubst auf Interrupt zu reagieren. cli(); ist dem entsprechen die Sperrung von Interrupt.
Deine Endloschleife (oder auch Arbeitsschleife genannt) sollte in der Main Funktion sein (hinter der Initialisierung).
Interrupts sollten immer so kurz und knapp programmiert werden wie möglich, um die Unterbrechung vom Programm möglichst kurz zu halten (ist aber in deinem Fall egal).
von daher würde ich dein Code so strukuieren:
Code:
- Einbinden von Headerdatein
- Funktionen und Interruproutinen
-Hauptfunktion
+ Portrichtung konfigurieren
+ Timer initialisieren
+ Interrups global freigeben
+ Arbeitsschleife
Sry, dass ich meine Antwort möglichs oberflächlich halte. Aber ich lese aus deinem ersten Post herraus, dass du den Auftrag hast den Code zu entwickeln bzw. dir Gedanken dazu zu machen sollst. Wir sind alle bereit dir zu helfen, aber ich werde dir keinen fertigen Code anbieten.
Darf man hier fragen, wer dich dazu verdammt hat?
Lesezeichen