Atmega328P - Timer0 Interrupt klappt nicht so

Gast #4991301
Lesenswert?

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
Angehängte Dateien:
Gast #4991334
Lesenswert?

> 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?
#4991394
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren