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