ARM-DMA Memory_Mapping

Gast #3870011
Lesenswert?
• ▲
▼
allo zusammen. Vorweg kurz mein Projekt und das dabei auftretende 
Problem:

Ich will mit einem atsam3x8e ein 4MHz PWM-Signal erzeugen. Dabei sollen 
nur eine bestimmte Anzahln an Pulse erzeugt werden, und danach sofort 
ein Ausgang (ein anderer Ausgang als die PWM-Ausgänge) geschaltet 
werden.
Für einen Interruptbetrieb oder Polling ist das Signal zu schnell. Also 
bin ich auf DMA umgestiegen. Einen DMA-Controller hat der Sam3x8e ja 
gleich mit dabei.

Kurz für die, die sich nicht mit DMA auskennen: Man übergibt dem 
DMA-Modul eine Sourceaddresse und eine Destinationaddresse. Das Modul 
schickt dann die Daten der Sourceaddresse entweder sofort oder 
Eventgesteuert von Source nach Destination.

Nun mein Problem: Das DMA-Modul unterstützt folgende Modi, entweder 
bleiben Source - und Destinationaddresse immer gleich, oder eine der 
beiden bzw. beider werden nach einem Transfer 
incrementiert/decrementiert.

Da ich ja nun mehrere Daten zu übergeben haben (PWM Periode, Dutycycle, 
Ausgang am Ende auf High), brauche ich also die Modi mit 
incrementieren/decrementieren.

So weit so gut, für eine Source/Destination funktioniert das ganze 
super. Also z.B

DMA->Source = &Senden;
DMA->Dest = &Empfangen;

Nur mal vereinfacht zum Verständnis.

Nun sind ja leider die Register für Periode, Dutycycle, Port nicht alle 
schön hintereinander.

Ich habe jetzt an eine Art Mapping gedacht, also i.wie ein Struct oder 
ein Array, in das ich die einzelnen Addressen von Port, Dutycycle usw 
schreibe (als Pointer vielleicht???) und dann die Addresse des 
Structs/Arrays an mein DMA übergebe.

Wäre das machbar oder hat jemand eine andere Idee??

Bin für jede Hilfe dankbar.

Mit freundlichen Grüßen

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.