Hi, ich hab ein kleine Problem mit meinem Timer 1. Ich will einfach sekunden zählen lassen und diese über LEDs anzeigen. Im AVR-Studio-Simulator funktionierts, da zählt er die Sekunden hoch, aber im AVR nicht. Ich hab nen 8515er und wenn ichs mit dem Timer0 mache, dann funktionierts. Ich muss aber den Timer1 dazu nehmen, da ich später zwei unabhängige Timer brauche. Kann es sein, dass im AVR der Timer1 defekt ist und nur der TIM0 funktioniert? Oder hab ich im Code was vergessen, was das Studio ignoriert, der AVR aber nicht? thx für Antworten hundvdf
Dein Fehler steckt hier: loop1: in temp,TCNT1H Du mußt immer zuerst das lowbyte lesen und anschliessend das high byte, sonst liest du immer den gleichen alten Wert aus dem internen temporaeren Register. Richtig also: loop1: in temp,TCNT1L in temp,TCNT1H Dieses Verhalten kann der Simulator nicht nachstellen und simuliert die heile Welt, aber eben nicht das was im AVR wirklich passiert. Auszug aus dem Datenblatt: "TCNT1 Timer/Counter1 Read: When the CPU reads the low byte TCNT1L, the data of the low byte TCNT1L is sent to the CPU and the data of the high byte TCNT1H is placed in the TEMP register. When the CPU reads the data in the high byte TCNT1H, the CPU receives the data in the TEMP register. Consequently, the low byte TCNT1L must be accessed first for a full 16-bit register read operation." ciao Remo
Und dann solltest du in der ISR noch das SREG sichern und wiederherstellen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.