Hallo µC- community, ich hab das Forum schonmal durchsucht, aber nicht`s zu meinem Problem gefunden, darum eröffne ich nen neuen thread. Ich hab mir ein Evolution Board (LPC-2132) gebaut, und das ganze mit einem Seriellen-Kabel an den Rechner angeschlossen. (bis jetzt keine Problem) Nun hab ich den Flasher von Philips gestartet und die ID ausgelesen, blank- check und hex-file überspielt. (immer noch kein Problem) Aber nun wollt ich den Flash vergleichen (compare), kommt aber eine Fehlermeldung (nicht erfolgreich), und auf dem Board blink auch keine LED. :( Hat jemand ne Idee ???
Hi Jens, funktioniert dein Programm denn im Simulator? Wenn du die Device-ID auslesen kannst und das Flashen auch zu klappt, scheint dein Board ja aus Sicht der Hardware zu funktionieren. Christian.
Hallo, @Christian: Ich hab µVision3 und hab da irgendwie keine ordentliche Simulation zu stande bekommen. Mein Quelltext is auch nicht gerade sehr kompliziert. ------------------------------------------------ #include "LPC213x.h" int main (void) { IODIR0 = 0x00000001b; // P0.27 als output IOCLR0 |= 0x0000001b; // LED on } ------------------------------------------------ die header datei hab ich von der keil Seite runtergeladen. Ich denk mal der Code ist in ordnung, oder? Den Startcode hab ich auch erzeugt, und die hex datei erstellen lassen. Gibt`s vielleicht noch ein bequemeres Programm? Ich hab mal WinARM ausprobiert, komm ich aber (ganz ehrlich) nicht mit zurecht. Jens
Jens , ich weiss nicht ob das dir hilft. Ich hatte anfangs ein ähnliches Problem mit dem ISP Tool. Flashen war ok, aber Verify ging nicht. In einem LPC21xx Forum habe ich auf meine Nachfrage folgende Antwort bekommen und das half bei mir: >> In the flash buffer screen download your HEX file, perform a >> vector calc, and save the hex file back. It should then verify OK.
Also, dein Code macht im Augenblick folgendes: -setzte Portpins 0,1,3 und 4 als Ausgang -setzte eben diese Pins auf 0 Wenn deine LED per Widerstand auf +3.3V liegt, sollte was leuchten, wenn sie gegen Masse geht, leuchtet natürlich nichts. Das ist aber wahrscheinlich in beiden Fällen nicht das, was du willst. Versuchs mal mit: #include "LPC213x.h" int main (void) { IODIR0 = 0x08000000; // P0.27 als output IOSET0 = 0x08000000; // Pin geht auf 1 } Die IODIR Register repräsentieren mit jedem Bit einen Portpin, wobei das MSB, also Bit31, links steht und das LSB Bit0 rechts. Schreib 0x08000000 mal binär mit MSB links, dann wirds klar. Die Register IOSET/IOCLR funktionieren genauso, wobei das eine Register immer für das Setzen eines Pins und das andere fürs Löschen zuständig ist. Das mit dem Verodern kannst du dir dort also sparen. Verodern müsstest du nur wenn du direkt ins jeweilige IOPIN Register schreibst (die Details kannst du sehr gut im LPC213x User Manual nachlesen). Der Simulator vom uV3 ist gar nicht so schwer zu bedienen, vor allem hilft er dir zu kontrollieren, ob dein Programm überhaupt über den Startup-Code hinauskommt. Vorausgesetzt, daß du des Englischen ausreichend mächtig bist, kann ich dir nur folgendes Tutorial empfehlen: "The Insider's Guide To The Philips ARM7-Based Microcontrollers" http://www.hitex.co.uk/arm/ Das Ding ist wirklich gut, angefangen bei den nötigen Details über den Prozessor, bis zur Anleitung, wie die Keil Entwicklungsumgebung einzurichten und zu bedienen ist, was im Startup Code und den Linkerscripts steht und vieles mehr. Ich habe dir mal ein Binary des Blinky-Examples hier angehängt. Das macht auf P0.16..23 ein Lauflicht. Läuft bei mir einwandfrei im Simulator (LPC2132 Target) und genauso auf dem Evalboard (LPC2138). Die Source sollte bei dir unter <DRV:>\keil\arm\examples\Blinky stehen. Viel Spaß, Christian.
Falls das: #include "LPC213x.h" int main (void) { IODIR0 = 0x08000000; // P0.27 als output IOSET0 = 0x08000000; // Pin geht auf 1 } der ganze Source ist, sehe ich sowieso ein Problem, denn es werden die beiden Instruktionen ausgeführt und dann - dann läuft der Instruction pointer weiter, aus dem main raus ins Niemandsland. Sollte zumindest so sein: #include "LPC213x.h" int main (void) { IODIR0 = 0x08000000; // P0.27 als output IOSET0 = 0x08000000; // Pin geht auf 1 while(1); }
Womit du natürlich vollkommen recht hast, wenn das der ganze Code wäre und der Compiler das nicht abfängt.
JUHU es blinkt wie wild auf meinem Board. Danke Jungs, für die Starthilfe. Ich hab zwar schon den Guide von hitex runtergeladen, aber nur mal kurz überflogen. Werd mich jetzt mal intensiver damit zu beschäftigen. Nochmal danke für all eure Beiträge. Schöne Grüße aus einem dunklen (aber grün blinkendem) Zimmer in Jena. Jens
Hallo, ich habe jetzt auch ein Problem mit meinem LPC2138. Folgendes: Es treten immer wieder Probleme beim Betrieb auf, die nicht immer nachvollziehbar sind. Daraufhin habe ich auch ein file-compare ausprobiert. Habe es genauso gemacht, wie es roty beschrieben hat. Ergebnis aber immer compare failed. Habe dann ein File vergleich gemacht und gesehen, dass immer der gleiche Unterschied besteht, wie im Bild zu sehen ist. Das sich die erste Zeile unterscheidet, will ich mal so glauben. Aber der Unterschied in der 2. bzw. 3. Zeile (letztes Zeichen) macht mich stutzig. Sonst sind die Dateien absolut gleich. Weiss zufällig jemand was das sein kann ? oder ob das nicht wirklich ein Unterschied ist ??? Noch was zu meiner Hardware: ich verwende den gnu compiler und die Philips download software vers. 2.2.1 Ich habe alle Baudraten versucht. Es liegt immer der selbe Unterschied vor. Mattias
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.