Forum: Mikrocontroller und Digitale Elektronik Interrupt beim ARM


von botro (Gast)


Angehängte Dateien:

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

von Christian (Gast)


Lesenswert?

Häng doch bitte mal die Startup.s auch noch dran

Chrstian

von botro (Gast)


Angehängte Dateien:

Lesenswert?

bitteschön

von Martin Thomas (Gast)


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_projects/lpc2k_bundle_port/
)

Martin Thomas

von Dietmar (Gast)


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

von botro (Gast)


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

von Dietmar (Gast)


Lesenswert?

@botro:

Hurraaaaahhhhh!

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

Gruß

Dietmar

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.