Hallo, ich hätte ein paar (vielleicht doofe) Fragen zu ARMs. Ich habe mir ein paar Beispiele angeschaut (z.B. http://www.mikrocontroller.net/articles/ARM-elf-GCC-Tutorial). Diese bezogen sich ja auf die LCP Reihe von NXP. Gekauft habe ich mir ein LPC1769 Board von LPCXpresso mit Entwicklungsentgebung von Code Red. Ich dachte für ARM Prozessoren gibt es nur einen Compiler. Wärend im Tutorial z.B. GPIO0_IODIR |= ( 1<<25 ); // Pin 25 auf Ausgang GPIO0_IOSET = ( 1<<25 ); // Pin 25 auf HIGH schalten verwendet wird sieht es in den mitgelieferten Beispielen so aus... LPC_GPIO0 -> FIODIR |= ( 1<<25 ); Warum? Wo kann ich diese ganzen Befehle nachschlagen??? Im Manual vom LPC1769 stehen nur Begriffe z.B. FIODIR etc drin. Z.b. hatte ich mir aus dem Datenblatt PINSELx rausgesucht. Durch die Beispiele habe ich gefunden, dass ich das Register durch BITCON->PINSELx ändern kann. Doch wo steht das geschrieben? Oder gibt es "nur" die Beispiele + zusammenreihmen? Danke. Grüße
Jeder ARM ist anders! Gemein ist allen nur der von ARM lizensierte Kern. Alles andere macht jeder wie er will. Bei NXP gibt es zwei Möglichkeiten, die GPIOs anzusteuern: eine langsame (kompatibel zu den allerersten LPCs) und eine neue über einen schnelleren Datenpfad. Nach einem Reset ist zunächst die alte, langsame Anbindung aktiv. Die schnellere Verbindung wird erst nach einer Umschaltung aktiv. Beide Datenpfade haben unterschiedliche Register. Das steht alles in der Dokumentation zu dem jeweiligen Prozessor drin. fchk
Die LPC21xx aus dem Tutorial unterscheiden sich ein wenig von den LPC17xx. Unterschiedlich ist zunächst schonmal der Kern. Die 21er haben einen ARM7 (die ich nach wie vor sehr schätze), während die 17er einen Cortex M3 haben. Dann ist auch die Peripherie doch etwas verschieden. Dein Compiler kann mit beiden Chips umgehen aber das bedeutet nicht das Software die für den LPC2124 gedacht ist auch auf einem 1769 läuft. Das liegt zunächst einmal daran das die Header Dateien anders aufgebaut sind. Früher war es bei den LPC üblich das die Register direkt über Makros angesprochen wurden. Inzwischen geht das über Strukturen. Könnte man auch anders machen, die fertigen Header sind jetzt aber nunmal so. Ich würde sagen das du das Tutorial hier für dein Board vergessen kannst. Die Unterschiede sind letztlich einfach zu groß, auch wenn es alles irgendwie ähnlich aussieht. Halte dich an den Beispielen die bei der CodeRed IDE dabei sind. > Wo kann ich diese ganzen Befehle nachschlagen??? Deine "Befehle" sind einfache Zuweisungen. Du mußt das Datenblatt mit dem Headerfile (LPC17xx.h) abgleichen. Dort findest du die beschriebenen Register wieder, nur halt in Strukturen verpackt. Aber wie man darauf zugreift hast du ja an den Beispielen schon gesehen. Es gibt noch eine Alternative zu den Registerzugriffen. Die sogenannte CMSIS Bibliothek bietet Funktionen für die gängigsten Zugriffe. Zumindest in einigen Beispielen müßte die verwendet werden. Anstelle einer Zuweisung an FIODIR wird dann z. B. GPIO_SetDir() aufgerufen. Das Datenblatt mußt du aber trotzdem lesen. CodeRed verwendet anscheinend eine abgespeckte Version dieser Bibliothek. Bei NXP gibt es eine vollständige Version (mit Beispielen) zum Download. Suche dort nach CMSIS. Es gibt mehrere! Du brauchst die für die LPC17xx Reihe. Darin enthalten ist auch eine .chm Datei (Windows helpfile) mit der Dokumentation. Frank K. schrieb: > Bei NXP gibt es zwei Möglichkeiten, die GPIOs anzusteuern: Nur bei den ARM7 Controllern. Die LPC17xx kennen nur noch fast-io. Bei den 11xx/12xx/13xx geht das nochmal anders.
Hallo zusammen, danke für die ausführlichen Erklärungen! Hat mir sehr geholfen! Nochmals vielen Dank! Grüße
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.