Forum: Mikrocontroller und Digitale Elektronik STM32F103 GPIO_DMA auf TIM_event aktualisieren


von WeP (Gast)


Lesenswert?

Moin, ich hab da gerne mal nen Problem...

ich verwende zur Zeit nen STM32F103 und will Werte aus dem Speicher auf 
2Ports ausgeben. Da sowas in Software immer sehr unschön und vor allem 
inperformant ist habe ich DMA verwenden. Nun gibt es aber noch ein 
zweites Problem die Ausgaben müssen exact getimet werden, daher benötige 
ich auch noch den timer. Nun könnte man über ne ISR die DMAs weiter 
schalten, was ich bisher auch mache. Die (teils unregelmäßigen) 
Wartezeiten werden dabei über einen zweiten DMA in den ARR geladen. Ist 
also alles schon nicht schlecht, aber ....

... das geht doch bestimmt noch schöner?!

Ich will also auch die DMAs automatisch aktualisierne evtl auf das 
timer-evnet direkt, hat jemand von euch Erfahrung damit, oder weiß, dass 
das garnicht geht ??? Über Hinweise auch welche Modus des TIM ich 
verwenden könnte wäre ich sehr dankbar.

Ich hatte auf jeden Fall schonmal was für einen parallele Dateneingang 
gelesen zB für CAMInterfaces aber für Ausgaben bin ich bisher nicht 
fündig geworden.

Grüße aus dem Norden

von 6A66 (Gast)


Lesenswert?

Hallo WeP,

ich hab das -ist schon ein paar Monate her - schon mal auf 'nem 
STM32F103 gemacht.
Du ziehts zwei DMAs auf die beide auf den selben Timerevent reagieren.
Der eine DMA schaufelt in den Timer ein nen Wert rein, der zweite die 
Werte in den Port. Geht aber nur wenn due an dem port nicht auch noch 
andere Ausgaben hast, es können also nur immer 8 bit gleichzeitig auf 
den Port geschaufelt werden. Dazu brauchst du zwei Arrays: Eines mit den 
Timerwerten und ein zweites mit den Portwerten.

Ergebnis: das Ganze ist stundenlang ohne signifikante Probleme 
durchgelaufen und hat mit an vier Pins zyklich eine Bitfolge ausgegeben.

Grüße

von WeP (Gast)


Lesenswert?

hast du noch ne Ahnung wie die Timer mit den DMAs verbunden werden bzw 
die events, oder läft das direkt über den timer-DMA event!

von 6A66 (Gast)


Lesenswert?

Timer-DMA event!

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
Noch kein Account? Hier anmelden.