Ich nutze DMA Transfer im circular mode um Werte vom AD-Wandler ins interne RAM zu schaffen. Nun wird sporadisch scheinbar ein DMA-Transfer nicht ausgelöst, so dass sich die gewandelten Kanäle im RAM um eine Position nach vorne verschieben. Ein Busfault Interrupt wird nicht ausgelöst, ebensowenig ist das Transfer Error Flag des DMA-Kanals gesetzt. Es treten in der Software auch Interrupts von Timer3 und USART2 auf. Deaktiviere ich diese, so scheint das Problem nicht mehr vorhanden zu sein. Hat irgendjemand eine Ahnung wo das Problem liegen könnte?
Nein, ich weiß nichts, habe aber dasselbe Problem. Bei mir habe ich aber den Eindruck, dass das bei dem Aufsetzen der DMA passiert. Im Programmlauf verschiebt sich an der falschen Zuordnung der Kanäle nichts mehr. Ist das bei Dir auch so? -Martin
Welchen DMA verwendest du? DMA2 hat glaub ich noch n Fehler, guck mal in die Errata. Ingo
Die Glaskugel sagt, beim Löschen der Interrupt Flags von Timer3 und USART2 machst du was falsch. Vermutlich read-modify-write statt Schreiben von 1er bits.
Oho, da hat jemand meinen Thread von vor 2 Jahren ausgegaben. Bei mir lag es damals daran, dass ich den ADC übertaktet hatte aus versehen. Das hab ich erst nach lamgem Suchen gefunden. Kannst ja mal gucken, ob das bei dir auch der Fall sein kann.
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.