Forum: Mikrocontroller und Digitale Elektronik AVR32, Interrupt Probleme


von Fritz (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Ich hab vor kurzem angefangen mit einem EVK1101 zu experimentieren. Das 
Board hat einen AT32UC3B0256. Da ich auf Ubuntu arbeite und das 
Atmel-Studio bei mir nicht zu laufen scheint verwende ich stattdessen 
ein makefile und habe mir die toolchain selbst aus den Fragmenten die 
man von ATMEL bekommt zusammengeschustert.

Vieles scheint auch schon ganz gut zu laufen, allerdings bei den 
Interrupts scheint es noch zu haken. Ich habe versucht das Problem auf 
ein Minimalbeispiel einzugrenzen (main.c im Anhang).

Ich verwende den USART-Interrupt um Zeichen vom PC zu empfangen und 
gleich wieder zurück zu senden. Das erste Zeichen wird auch empfangen 
und erfolgreich zurück gesendet, aber dann kein weiteres mehr. Außerdem 
scheint das Programm ab dann nicht mehr weiter zu laufen (das erkennt 
man daran, dass auch das LED-Blinken im Hauptprogramm nicht mehr 
funktioniert.)

Ich vermute daher, dass irgendetwas beim Rücksprung aus dem Interrupt 
nicht richtig funktioniert und die CPU sich irgendwo "verrennt" statt 
beim Hauptprogramm fortzusetzen. Dann hilft wohl nur mehr ein Reset.

Im Anhang noch das Makefile sowie die Dateien aus dem Ordner INTC, also 
aus der ATMEL-Bibliothek für den Interrupt-Controller.

Die exception.S musste ich etwas modifizieren, da sie bei mir sonst 
nicht kompilieren wollte, aber im Wesentlichen hab ich nur ein paar 
Makros durch ihre tatsächlichen Werte ersetzt.

Das Paradoxe ist, dass dieses Beispiel bei mir schon einmal funktioniert 
hat. Als ich dann ein größeres Projekt draus machen wollte funktionierte 
das aber nicht mehr und das Zurücksteigen auf das Minimalprogramm 
funktionierte dann auch nicht mehr. Ich weiß nicht was ich vorher anders 
gemacht habe...

Vielen Dank schon mal, mfg Fritz

von Michael (Gast)


Lesenswert?

Standard-Fragen schon durch? (Fuses richtig gesetzt, Watchdog ist auch 
brav usw.)

von Fritz (Gast)


Lesenswert?

Hmm an den Fuses hab ich nichts verändert. Soweit ich bis jetzt erkennen 
konnte haben die ja auch nichts mit den Interrupts zu tun.

Watchdog sollte auch ausgeschaltet sein. Hab ihn zumindest nicht 
eingeschaltet. Und normales LED Blinken geht ja, nur der Interrupt 
nicht.

von Fritz (Gast)


Lesenswert?

Könnte vielleicht mal jemand mit einem EVK1101 und AVR32-Studio den Code 
ausprobieren (main.c).

Dann wüsste ich ob es an meiner Toolchain liegt oder nur an der main.c

Vielen Dank, mfg Fritz

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.