Hallo Gemeinde,
ich habe mich extra hier angemeldet, da mir dieses Form sehr fachlich erscheint und die Leute relativ human miteinander umgehen^^.
Ich hätte eine Frage zu den Timern - beim ATMega32 sollen es ja drei sein, falls ich richtig gelesen habe. Ich möchte jede Sekunde ein kleines Unterprogramm aufrufen - vereinfacht sagen wir mal ich möchte die Sekunden hochzählen. Getacktet wird mein µC mit 16Mhz (das Funktioniert auch bestens), aber wie genau muss ich die Timer (also den einen) einstellen, dass das Funktioniert und welchen der drei benötige ich überhaupt? Ich habe mich sehr viel eingelesen, verstehe die Technik, jedoch finde ich keinen nützlichen Code in C. Es wäre sehr toll, wenn mir jemand eine Seite nennen könnte, wo ich nicht nur den C-Code, sondern auch eine Erklärung zum Code finden würde - eine eigene Erklärung wäre mir jedoch am liebsten, so dass ich ggf. dazu Fragen stellen kann.
Was ich bis jetzt verstanden habe:
- Die Timer verlaufen parallel zum Code und unterbrechen die eigentlich ablaufende Schleife zur eingestellten Zeit, um ein Unterprogramm aufzurufen und kehren nach Abschluss dieses Programmes wirder zum Unterbrechungszustand zurück.
- Es gibt den sog. Prescaler (Vorteiler), der den Grundtakt - bei mir 16Mhz - aufteilt, um sinnvoll damit umgehen zu können (überlicherweise in Zweierpotenzen)
- üblicherweise Laufen Timer (falls man diese so einstellt) über und beginnen wieder bei Null, je nach Bitzahl (es gibt beim ATMega32 8- oder 16 Bit Timer) sind dies bei 8 Bit 256 Zählschritte und bei 16 Bit 65536 Zählschritte.
Bitte korrigiert mich, falls etwas nicht stimmt.
Wobei ich eure Hilfe benötige (bitte mit Erklärungen):
1. Wie initialisiere ich einen Timer für die "ein sekunden Zählaufgabe"
2. Wie rufe ich nach jeder Sekunde mein Unterprogramm auf?
3. Muss man den Timer stoppen?
Ich programmiere mit AVR Studio 4 und möchte kein externes Uhrenquarz mehr einbauen (Hardwarebedingt).
Vielen Dank für die Hilfe.
Lesezeichen