Forum: Compiler & IDEs ATmega88, Timer0 Interrupt wird nicht ausgeührt


von Harry (Gast)


Lesenswert?

Hallo zusammen,

ich habe eine lauffähige Software, die vom ATmega8 auf den ATmega88 
portiert werden soll.

Mein großes Problem: der Timer0 Interrupt wird korrekt ausgelöst, aber 
der Simulator springt ins Nirwana. Verdammt noch mal, warum wird die 
Interruptroutine nicht angsprungen???

Ich habe hier im Forum gesucht und zwar gesehen, dass solche Probleme 
hier ab und zu angefragt werden, aber die Lösung habe ich nicht 
gefunden.

Aber nun habe ich sie, die Lösung:
Ich benutzte ebenso die externen Interrupts 0 und 1. Ihre Reaktionen auf 
Flanken werden im Register MCUCR im ATmega8 eingestellt. Beim ATmega88 
aber wird mit MCUCR z.B. die Startadresse für die Interruptvektoren 
verändert.

Gruß
Harry

von Justus S. (jussa)


Lesenswert?

Harry schrieb:

> Ich habe hier im Forum gesucht und zwar gesehen, dass solche Probleme
> hier ab und zu angefragt werden, aber die Lösung habe ich nicht
> gefunden.

und auf die Idee, einfach in die AppNote von Atmel für den Wechsel von 
Mega8 auf Mega88 bist du nicht gekommen? Dort wird fein säuberlich 
aufgelistet, welche Register und Bits sich geändert haben...

von Harry (Gast)


Lesenswert?

Nein, bin ich nicht.

Mein Kontakt zu Bootloadern war bisher so minimal, dass mir nicht 
bewusst war, dass die Interruptadressen sich verändern lassen. Also 
waren die Adressen für mich fix.

von Jens (Gast)


Lesenswert?

Schau mal im Simulator in der unteren Fensterzeile. Da mauss ATMEGA88 
stehen. Wenn du dein Projekt im Studio öffnest, musst du das mit dem 
neuen Controller tun. Also Projekt öffnen -> Next -> Controllertyp 
wählen ->... Sonst kennt der Simulator die Adressmap nicht und springt 
nach oder vor der Interruptroutine wieder zu reset. Hatte ein ähnliches 
Problem. Ich hoffe es hilft!

Gruß, Jens

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
Noch kein Account? Hier anmelden.