Hallo, ich bin im moment dabei den Timer Interrupt zu konfigurieren. Dabei bin ich euren Tut Schritt für Schritt gefolgt. https://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer Aber es will nicht funktionieren. Ich will lediglich, dass die LEDs jede Sekunde an und aus gehen. Im Interrupt Handler wird bis 61 gezählt, weil durch den Prescaler von 1024 und einen Takt von 16Mhz wird in 1 Sekunde 61 Overflows erzeugt, gemäß der Formel im Link oben. Lg
> Ich will lediglich, dass die LEDs jede Sekunde an und aus gehen. Ok, erste Hürde überwunden: Beschreibung des erwarteten Ergebnisses. > Aber es will nicht funktionieren. Was genau funktioniert nicht? Was funktioniert? Wass passiert anstelle des erwarteten Ergebnisses? Läuft der Timer überhaupt (das kannst du mit dem Simulator in AVR Studio ganz leicht prüfen)?
1 | ldi temp, 0x01 |
2 | sts TIMSK0, temp ;Interrupt aktivieren |
Muss es nicht "out TIMSK0, temp" heissen?
1 | .org 0x001C |
2 | rjmp Timer0_handler ; Timer0 Handler |
Falsche Adresse.
Also wenn sts richtig ist, dann ist das aber fragwürdig:
1 | ldi temp, 0b00000101 |
2 | out TCCR0B, temp ;Prescaler auf 1024 |
Auch nicht; fragwürdig ist nur, warum es nicht trotz des Adressfehlers läuft, ich dachte, dass die paar 0xFFs einfach so durchlaufen werden.
1 | > ldi temp, 0x01 |
2 | > sts TIMSK0, temp ;Interrupt aktivieren |
Damit wird der Overflow-Irq aktiviert. In der Irq-Sprungtabelle wird aber wie sternst schon schrieb
1 | > .org 0x001C |
2 | > rjmp Timer0_handler ; Timer0 Handler |
der Compare-Irq adressiert. Richtig:
1 | > .org 0x0020 |
2 | > rjmp Timer0_handler ; Timer0 Handler |
S. Landolt schrieb: > Auch nicht; fragwürdig ist nur, warum es nicht trotz des Adressfehlers > läuft, ich dachte, dass die paar 0xFFs einfach so durchlaufen werden. Welche 0xFFs? Die tatsächliche Adresse liegt hinter der angegebenen. Der Interrupt springt also irgendwo in main rein.
Autsch, falsch gedacht - OVF0addr liegt ja nach 0x001C.
Die Adresse war falsch. Direkt geändert und es lief sofort wie es sollte. Danke an euch. Ihr seid die besten :D
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.