Hilfe zum Timer0 beim Atmega32

Gast #235738
Lesenswert?

Hi,
ich bin totaler AVR Anfänger und habe mir ein Test-Board mit Atmega32
zugelegt. Mit Assembler kenne ich mich ein wenig aus, jedoch bekomme
ich keinen Timer Interrupt zum Laufen. Ich benutze den Timer0 und
bekomme ihn auch zum zählen, jedoch wird beim Überlauf nicht zur
Adresse für den  Timer überlauf gesprungen.
Vielleicht kann mir ja jemand weiterhelfen und mir Vielleicht die
erforderlichen Befehle schreiben. Irgendwo muss ich ja etwas vergessen
haben.
Vielen Dank im Vorraus,

die Hupe
Gast #235739
Lesenswert?

Zeig doch einfach mal deinen Code, dann wird dir bestimmt einer sagen
können, was nicht stimmt. Keine Sorge, auslachen wird dich hier keiner,
wenn der Code nicht allzu professionell aussieht.
Gast #235741
Lesenswert?

> Allerdings kenne ich mich mit den Fuse Bits nicht so
> gut (oder eher gar nicht) aus, was muss ich denn bei denen
> beachten?

Ich wüßte jetzt nichts, hab aber mit dem Mega32 noch nicht gearbeitet.

Was den Code betrifft: Dein Setup stellt den Timer0 ein, aber dein
Interrupt-Handler wird bei Timer1-Overflow aufgerufen.
Gast #235744
Lesenswert?

> Wie ist das denn mit den fuse und lockbits?

Die kannst du am besten erstmal so lassen, wie sie ab Werk sind.
Höchstens mal JTAGEN abstellen, da sonst ein paar I/O-Ports vom
JTAG-Interface belegt sind, soweit ich weiß.
#235745
Lesenswert?

Die Interrupt-Vektoren des Mega32 sind nicht im Wortabstand (16 Bit)
sondern im Doppelwortabstand (32 Bit). Du musst also statt rjmp jmp
verwenden. Und statt reti zwei Befehle, um das zweite Wort zu füllen.

Nachzulesen im Datenblatt des Mega32 unter Interrupt sources (oder
ähnlich)...

...
Gast #235746
Lesenswert?

wenns aber so gemacht ist wie hier, spielt das keine Rolle.

.org $002 reti           ; IRQ0 Handler
.org $004 reti           ; IRQ1 Handler
.org $006 reti           ; IRQ2 Handler

usw.
Beachten muss man das von dir angesprochene, wenn man alle nur mit nur
einer .org-Anweisung schreibt.

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