mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt beim ARM


Autor: botro (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,
bezug nehmend auf meinen letzte Frage habe ich mir das BlinkyIRQ
Programm angeschaut und für den lpc2148 den ich verwende umgebastelt.
Leider will es aber nicht so wie ich, und ich habe auch keine Ideen
mehr woran es liegen könnte. Ich habe den Code mal dazugelegt, sollte
die Startup.S noch benötigt werden, die kann ich nachreichen. Ich habe
da aber eine vorgefertigte verwendet.
Mein Problem ist, das der Code ordentlich compiliert wird, und auch
ausgeführt. Aber scheinbar wird die ISR nur einmal aufgerufen und dann
passiert nix mehr. Leider habe ich keinen (noch nicht) Debugger, ich
kann das Problem also nicht weiter spezifizieren. Wenn jemanden ein
Fehler im Code auffällt, er eine Idee hat, die mir weiterhilft, oder
ein funktionierendes Bsp-Programm, ich bin für jede Hilfe dankbar.

botro

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Häng doch bitte mal die Startup.s auch noch dran

Chrstian

Autor: botro (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
bitteschön

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die von mir modifizierte Startup.S nutzt einen "Assembler-Wrapper"
fuer die Interrupts. Das Attribute fuer ISR ist nicht erforderlich, da
es keine wirkliche ISR mehr ist, sondern vom "Wrapper" gerufen wird.
Diese Methode vermeidet einige moegliche Probleme mit dem arm-elf-gcc
und hat die Portierung des Philips-Codes von "Keil" nach "GNU"
erleichtert. Assembler-Wrapper und Attribute zusammen duerften Probleme
bereiten. Attribute IRQ und thumb-interwork koennen ebenfalls Ursache
fuer Fehlfunktion sein. Im zip-Archiv aus dem die gezeigte Startup.S
herauskopiert ist finden sich auch Beispiele fuer Timer und diverse
andere Interrupts (GNU-Portierung des Philips-Codes auf
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...
)

Martin Thomas

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@botro:

Das Blinky IRQ Beispiel gilt für das Keil MCB2100 Board mit LPC2129,
funktioniert unter µVision3 mit GCC oder Keil Toolchain. Womöglich mußt
du da noch die eine oder andere Anpassung zum LPC2148 und dessen
Hardware (anderes Board) in der Demo-Software vornehmen.

Übrigens, die Startup-Dateien von Keil unterscheiden sich im Grunde nur
in der Syntax zwischen GCC und Keil, jedoch nicht im Code.

@Martin:

"Assembler-Wrapper", ist doch kein Echtzeit-Interrupt mehr, oder???

Für die Philips LPC gibt es mittlerweile mindestens 5-10 Toolchains,
alleine bei Keil schon 3 (erst GCC, dann Keil, jetzt RealView von ARM
übernommen). Da entsteht bei Fragen und Erklärungen anscheinend ein
echtes Problem.

Gruß

Dietmar

Autor: botro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, ich habe mir jetzt nochmal das Beispiel für die Timer angeschaut,
es ein wenig umgeschrieben für meine Hardware, und siehe da, es geht.
Ach verwende jetzt die vorgefertigten Funktionen aus irq.c (geringfügig
geändert) und timer.c und inzwischen verstehe ich auch was dort gemacht
wird. Irgendwann stehe ich im Code soweit drin, dass ich auch
vollständig kapiere was in der Startup alles gemacht wird und dann kann
ich ja mein obiges vorhaben nochmal starten.
Vielen Dank erstmal und meine nächste Frage kommt bestimmt.

botro

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@botro:

Hurraaaaahhhhh!

Gut Ding braucht Weile, beim LPC manchmal ein bißchen mehr, aber es
geht.

Gruß

Dietmar

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.