Hallo Leute Ich würd gern eine bitstream erzeugen mit Daten die ich im Speicher hinterlege. Eine Datenrate von 10kHz erreichen soll erreicht werden. Meine Idee bisher ist: Eine Timer erzeugen der all 0.1 ms einen Interrupt erzeugt. In der Interruptroutine wollte ich einen Vektor auf die Daten hochzählen und die bits einzeln maskieren und an die GPIO ausgeben. Ist wahrscheinlich eine Lösung bei der sich vielen hier die Nackenhaare aufstellen. Wie würdet ihr so was Lösen? Grüße Martin
Wenns nicht unbedingt genau so sein muss die UART verwenden - ist auch nen bitstream. Vllt. Kann man auch startbit und stoppbit irgendwie ausschalten. Sonst nach softwarenuart suchen und Start und Stoppbit einfach weglassen. Moritz
Martin1234 schrieb: > Eine Timer erzeugen der all 0.1 ms einen Interrupt erzeugt. > In der Interruptroutine wollte ich einen Vektor auf die Daten > hochzählen und die bits einzeln maskieren und an die GPIO ausgeben. Hallo Martin, das geht auch mir der DMA ganz gut. Brauchst eine Timer der zyklich abläuft, den DMA anstößt und der kopiert das bit ins Portregister. Geeineten Port vorausgesetzt (da kannst Du ja nur 8 bit reinpacken). Geht dann völlig in HW ohne SW. rgds
Danke für die schnelle Antwort, Ich hab mir mal die DMA sache näher angeschaut und find das ganz ansrechend. Hatte da noch ein Beispiel rumliegen und gleich ausprobiert. Geht einwandfrei nur eine Sache stört mich. Wenn ich mit dem DMA auf den Port schreibe, wie im angehängten Beispiel gezeigt benötige ich ein byte um nur 1 oder 0 zu schreiben. Kann ich den DMA auch Bitweise hochzählen lassen.(finde nur optionen für) -DMA_PeripheralDataSize_Byte -DMA_PeripheralDataSize_HalfWord -DMA_PeripheralDataSize_Word Wenn ich meinen Bitmuster speichern will mit dem Beispiel benötige ich 8x mehr Speicherplatz(alles aber nicht schön) Grüße Martin
Danke für den Tip, hat ein bisschen gedauert aber jetzt gehts muss nur noch die Frequenz richtig hin bekommen. Sollte es jemand mal mit Coocox und dem STM32F4 nachmachen wollen hab ich es angehängt Gruß Martin
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.