Forum: Mikrocontroller und Digitale Elektronik Receive Complete Interrupt an ATmega2561


von Stephan S. (scoty6v)


Lesenswert?

Hallo,
ich versuche gerade eine Interruptserviceroutine für das Empfangen 
serieller Daten an einem ATmega2561 zu benutzen.
Ich simuliere das programm gerade im AVR Studio. Mit Hilfe von hapsim 
sende ich Daten an die Simulation.
Das Programm funktioniert mit polling. In meiner tatsächlichen Anwendung 
wird polling zu langsam und es werden Daten verschluckt, darum bin ich 
auf den Interrupt angewiesen.
Zur Ausprobe benutze ich zwei Haltepunkte. Einen direkt nach Sei() und 
zu prüfen, ob alles richtig initialisiert wurde, einen zweiten in der 
ISR, in der ich zur Zeite nur einen Variable hochzähle.

Wird der Interrupt nun ausgelöst, wird die ISR nicht ausgeführt, statt 
dessen startet der Controler neu.
Das gleiche Problem habe ich, wenn ich die ISR komplett weglasse.
Ich vermute das das Programm zur falschen Adresse springt.

Meine ISR habe ich ISR(USART1_RX_vect) genannt.

Ich hoffe jemand hat eine Idee für mich.

von Stephan S. (scoty6v)


Lesenswert?

Ich habe eben erst die Meldung des Simulators gesehen:

AVR Simulator: Invalid opcode 0xffff at address 0x01f048

Weiß aber noch nicht, was das bedeutet.

von Stephan S. (scoty6v)


Lesenswert?

Nun habe ich herausgefunden, dass die Adresse 0x01f048 anscheinend die 
Adresse ist, an der die ISR stehen muss. Oder muss ich an der Stelle 
einen Strung an die ISR programmieren?
Wenn ja, wie mach ich das dann unter C?
Bei meinem ATmega32 brauchte ich das doch auch nicht machen ???

von Stephan S. (scoty6v)


Lesenswert?

Das Problem ist eine nicht richtig eingebundene Includedatei gewesen. 
Nachdem ich nun die ISR in die main.c genommen habe, läuft alles :-)

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.