Hallo ich möchte ein AT91SAM7X EK Board mit einem AT91SAM7X256 in Betieb nehmen. Habe bisher nur mit 8 Bit Controllern gearbeitet (STK 500). Will erstmal nur die LED's ansteuern und etwas über die USART rausschicken usw. Später muss ich dann über USB die SD-Speicherkarte beschreiben... Jetzt scheitert es schon bei der Ansteuerung der parallelen I/O Ports. Mein Problem: Ich kannte es bisher, dass man ein Datenrichtungsregister schreiben musste und dann konnte man die Ausgänge setzen. PDDRA=0xFF; PORTA=0xAB; Jetzt sind da gleich 18 Register die beschrieben werden wollen. Und mit den Erklärungen aus dem Datenblatt komme ich auch nicht so recht weiter. Habe mir jetzt erstmal eine Header und ein .c geschrieben um auf die Register zuzugreifen. #define START 0xFFFFF600 volatile int* MY_PIOB_PER = (volatile int*)(START+0x0000); volatile int* MY_PIOB_OER = (volatile int*)(START+0x0010); volatile int* MY_PIOB_SODR = (volatile int*)(START+0x0030); volatile int* MY_PIOB_ODSR = (volatile int*)(START+0x0038); volatile int* MY_PIOB_OWER = (volatile int*)(START+0x00A0); Dann habe ich folgende Register wie folgt gesetzt: // LED's PB19-PB22 *MY_PIOB_PER = 0xFFFFFFFF; // Alle enabled *MY_PIOB_OER = 0xFFFFFFFF; // Ausgang ??? *MY_PIOB_OWER = 0xFFFFFFFF; // Das ich die beschreiben kann ??? *MY_PIOB_SODR = 0x00300000; // Wert den ich ueber den Parallelport ausgeben moechte Im Debugger (C-Spy [IAR]) sehe ich, dass die Register "richtig" gesetzt werden. Aber wenn ich das Programm auf den Controller schreibe (SAM-BA 1.8) fangen die LED's leider nicht an zu leuchten. Es wäre super wenn mir jemand sagen könnte, welche Register ich wie zu beschreiben habe. Gruß Tobias
Hallo Tobias, warum willst Du das Rad neu erfinden? Die Header gibt es doch schon alle. Schau doch mal auf http://www.at91.com/ Da findest Du ein 'Getting Started' und diverse Beispielprojekte genau für Dein Board und IAR. Gruß, Nils
Kleiner Nachtrag: - Hast Du den Watchdog disabled? - Hast Du den Master Clock eingestellt? - Hast Du den Clock für PIOA eingestellt? Schau mal in das Kapitel 26 des Manual (Power Management Controller), PIO funktioniert nur, wenn es eingeschaltet ist. PIOA hat die Periphal ID 2: => PMC_PCER = 0x02; Nur so ein paar Gedanken. Nils
@Nils Erstmal Danke für Deine Antwort. Hatte in der Header erst nur so ein Strukt gesehen und wusste nicht, wie ich damit umzugehen hab. Habe jetzt auch die direkten zeiger auf die Register gefunden. Zu: - Hast Du den Watchdog disabled? - Hast Du den Master Clock eingestellt? - Hast Du den Clock für PIOA eingestellt? Nein, nein, nein. Wußte nicht das man dort so viel beachten und einstellen muss, wenn man nur ein Par Portausgänge setzen möchte. Okay dann schau ich jetzt nochmal in das Kapitel 26 und zu den Beispielprojekten. Vielen Dank für Deine Hilfe. Das ist alles doch schon ein wenig komplizierter als bei einem 8-Bit AVR-Controller... Gruß Tobias
Hatte jetzt diese ganzen Einstellungen vorgenommen und auch noch eine Cstartup.c mit eingebunden und es hat sich immer noch nichts getan. Dann habe ich einfach mal das .bin-file aus einem Beispiel (BasicIAR)mit SAM-BA auf den Controller geschrieben. In dem Beispiel sollen die LED's blinken. SAM-BA hat das .bin-file in den Flash geschrieben und wenn ich danach den Flash mit meinem .bin vergleichen lasse stimmen sie überein. Aber es Passiert immer noch nichts auf dem Board. Muss ich nach dem Programmieren noch etwas beachten? USB abziehen oder so??? Bin auch schon das getting started für SAM-BA und das Testprogramm durchgegangen. Bin der Meinung, dass ich das auch alles so gemacht habe. Vielen Dank für Eure Hilfe!!! Gruß Tobias
Hallo Tobias, soweit ich weiß, sind die Beispiele von IAR für das Board mit dem SAM7S64. Beim SAM7S256 ist der Flash anders organisiert (64: 512 pages á 128 bytes / 256: 1024 pages á 256 bytes). Ist nur eine Idee, aber vielleicht paßt deshalb das .bin-file nicht, das Du in den Flash geschrieben hast. Leider benutze ich nicht IAR, deshalb kann ich Dir da wenig Tipps geben. Aber versuche doch mal, den Beispielcode auf das wesentliche zu reduzieren und in ein neu erstelltes IAR 256er Projekt zu kopieren. Also wirklich nur die Routinen für: -Watchdog disablen -MCK einstellen -Periphal Clock einstellen -PIOA Ports setzen Kannst Du debuggen? Hast Du einen JTAG-Adapter? Ich habe den hier aus dem Shop, der läuft super mit Rowley Crossworks. Gruß, Nils
Habe leider keinen JTAG Adapter. Kann die Projecte in einem Debugger der bei IAR dabei ist debuggen (C-Spy). Habe hier vorgeschlagen, dass wir uns einen JTAG Emulator kaufen. Hatte im Internett einen von www.segger.com gefunden (J-Link ARM). Kannst Du mir sagen, wo der Vorteil bei diesen J-TAG Emulatoren (Kästen) zu den einfachen Verbindungskabeln zwischen Parallelport und ISP Schnittstelle liegen? Gruß, Tobias
Habe jetzt eine Anleitung bekommen (Anhang). Hatte vergessen das Fuse-Bit zu setzen, dass angiebt, dass der Controller aus dem Flash booten soll.
Danke für den Link. So, dass sollen jetzt auch hoffentlich die letzten Fragen sein... Kann mir jemand sagen, was hinter folgenden Funktionen aus der "lib_AT91SAM7X256.h" steckt. Machen die noch mehr außer den übegebenen Wert ins zugehörige Register schreiben? z.B. AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << 2 ) ; Ich weiß, warum das Rad neu erfinden... Aber ich verstehe einfach nicht, warum mein Programm nicht läuft, wenn ich den Wert direkt über einen Zeiger in das Register schreibe. Ich soll für dieses Projekt nämlich eigentlich auch keine "fremden" header benutzen. Ich will das Register wie folgt beschreiben. *MY_PMC_PCER = (1<<2); Und MY_PMC_PCER ist der Zeiger mit der Adresse von PCER. Siehe Deklaration: #define STARTPMC 0xFFFFFC00 volatile int* MY_PMC_PCER = (volatile int*)(STARTPMC+0x0010); Wenn ich mein Programm debugge, sehe ich auch, dass in das Register PCER der Wert 4 geschrieben wird. Aber auf dem Board leuchten die LED's nicht mehr. Was mach ich da denn falsch??? Vielen Dank für Eure Unterstützung Gruß Tobias
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.