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
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.