www.mikrocontroller.net

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


Autor: Eric Schrön (ottili86)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Eric Schrön (ottili86)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Eric Schrön (ottili86)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.