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
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
@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
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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.