Forum: Mikrocontroller und Digitale Elektronik LPC2468 Debug SFR und Interrupt Problem


von Eric S. (ottili86)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich arbeite mit dem LPC2468 auf einem Eval Board von Embedded Artists 
und habe folgende zwei Fragen.

1. Frage: Ich debugge mit Eclipce+OpenOCD+gdb. Da möchte ich mir den 
Speicherbereich der Special Function Register (0xE000 0000 - 0xFFFF 
FFFF) anschauen. Aber das funktioniert nicht. Wenn ich darauf zugreifen 
will, spielt der Debugger verrückt und stürzt ab. Wenn ich meinen Stack 
anschauen will (so um Adresse 0x4000 0000) funktioniert das problemlos. 
Ansosnsten ist mit dem Debugger auch alles supi. Kann es eventuell sein, 
dass der JTAG Controller nicht drauf zugreifen darf? Gibt es irgendeine 
Möglichkeit dass ich mir die SFRs anschauen kann, ohne sie in Variablen 
zu speichern?

2. Frage: Und die ist eigentlich viel interessanter! Ich möchte einen 
UART Interrupt verwenden. Ich habe alles nach den Codebeispielen von 
Keil eingerichtet. Außerdem habe ich selbstverständlich Funktionsaufrufe 
und ein paar einfache Anweisungen in meiner main-Endlosschleife. Nun zum 
Phänomen der Sache:
Egal wann der Interrupt physikalisch eintritt, wird die ISR erst beim 
nächsten Funktionaufruf aufgerufen. Das habe ich mit Hilfe meines 
Debugegrs heraus bekommen.
Wenn ich die Funktionsaufrufe herausnehme, muss erst zweimal ein 
Interrupt auftreten, bevor die ISR bedient wird. Die folgenden 
Interrupts werden dann einfach ignoriert.

Wie bekomme ich die Interruptbehandlung sicher aaufgebaut? Fehlt 
eventuell noch was im StartUp Script (liegt im Anhang) oder welche 
Register müssen beschrieben werden?

Vielen Dank schon mal für eure Hilfe im voraus
Eric

von Eric S. (ottili86)


Lesenswert?

Hallo nochmal,

sieht ja etwas mau aus!

Ich gebe mal noch ne kleine Hilfestellung. Ich habe mittlerweile 
herausgefunden, warum beim zweiten Interrupt nichts passiert. Und zwar 
wird beim Einsprung in die ISR das Global Interrupt disable Flag 
gesetzt, was auch soweit in Ordnung ist. Allerdings wird es beim 
verlassen nicht wieder gelöscht, so dass keine weiteren Interrupts 
auftreten können.

Wie kann ich dass beeinflussen? Wo muss ich was hin schreiben, damit 
dieses Flag wieder gelöscht wird???

Eric

von Eric S. (ottili86)


Lesenswert?

Da mir niemand helfen konnte, habe ich mir selber geholfen. Der Fehler 
lag tatsächlich im Startup Script am fehlenden / unkorrekten IRQ 
Handler.

Eric

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.