Ich arbeite mich gerade in die Programmierung des DMA controllers auf dem LPC 1769 ein und benutzte dazu das entsprechende LPCXpresso board. Mein erster Versuch soll einfach ein paar Kilobytes Daten von A nach B im RAM kopieren was auch prima funktioniert. Was ich allerdings nicht verstehe ist, warum das Programm nicht funktioniert, wenn ich das board stromlos mache und wieder einschalte. Selbst nach manuellen Resets funktioniert es dann nicht. Wenn ich das board flashe bzw. das Programm im Debugger starte funktioniert es ohne Probleme (grüne LED leuchtet) und auch wiederholte Resets ändern nichts daran. Nur eben der power cycle. Tatsächlich ist es so, dass ein DMA transfer stattfindet, nur im power-on Fall der anschließende memory compare schief geht (und die rot/blaue LED leuchtet). Ich denke nicht, dass der DMA setup falsch ist, sondern dass ich irgendetwas am board / processor setup übersehen haben und wäre dankbar für einen Schubs in die richtige Richtung. Die Prozessor Errata weist keine diesbezüglichen Probleme aus und das von der CMSIS library vorgesehene clock/PLL setup erscheint mir auch korrekt (wenn auch nur 100MHz statt der möglichen 120MHz genutzt werden). Ich benutzte LPCXpresso v. 8.1.4 als IDE.
:
Bearbeitet durch User
Probiere mal, das NVIC_EnableIRQ(DMA_IRQn); ans Ende der Initialisierung des DMA zu setzen. Nicht das da irgendwo eins spurious Interrupt ausgelöst wird. The D. schrieb: > Die Prozessor Errata weist > keine diesbezüglichen Probleme aus und das von der CMSIS library > vorgesehene clock/PLL setup erscheint mir auch korrekt Setzt er dabei auch das Flash Timing Register hoch? Der braucht bei 100MHz ein paar Waitstates.
Jim M. schrieb: > Probiere mal, das NVIC_EnableIRQ(DMA_IRQn); ans Ende der > Initialisierung des DMA zu setzen. Nicht das da irgendwo eins spurious > Interrupt ausgelöst wird. > Danke, in die Richtung hatte ich auch einen Verdacht kurz nachdem ich diesen Thread eröffnet hatte. Werd es heute Abend mal ausprobieren und vor dem enable am besten noch gleich einen etwaigen pending interrupt löschen. > The D. schrieb: >> Die Prozessor Errata weist >> keine diesbezüglichen Probleme aus und das von der CMSIS library >> vorgesehene clock/PLL setup erscheint mir auch korrekt > > Setzt er dabei auch das Flash Timing Register hoch? Der braucht bei > 100MHz ein paar Waitstates. Die CMSIS setup Routine macht folgendes setup :
1 | #define FLASHCFG_Val 0x00004000
|
2 | ...
|
3 | LPC_SC->FLASHCFG = (LPC_SC->FLASHCFG & ~0x0000F000) | FLASHCFG_Val; |
was für den LPC1769 laut UM10360 Seite 71 angebracht scheint.
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.