Forum: Mikrocontroller und Digitale Elektronik Gleichzeitiger Start aller ADCs (STM32H750) nicht synchron!


von Gerrit G. (Gast)


Angehängte Dateien:

Lesenswert?

Mahlzeit...

Der H750 hat 3 ADCs und diese möchte ich zeitgleich über einen Timer 
triggern. Scheint auch (soweit) gut zu funktionieren.

Problem: Zwischen ADC1, 2 und 3 liegen etwa 8 µs Versatz. Von ADC1 und 
ADC3 sommit 16 µs Versatz. Starten also doch nicht gleichzeitig?

Ist das einfach so? Erwarte ich etwa zu viel von dem Chip? Oder hab ich 
doch was übersehen?

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Moin,

Das funktioniert. Ich frage mich eher wie misst du deine 8us?

Deine Config sieht auch erstmal gut aus. Du musst bedenken dass der DMA 
auch etwas Zeit braucht. Auf dem internen Bus ist auch was los. Und die 
End of conversion Interrupts kommen auch nicht gleichzeitig sondern je 
nach Prio hinter einander weg. Wann er genau den Sample Kondensator 
anzieht ist schwer zu sagen.

gruß

Tec

von Michael W. (miks)


Angehängte Dateien:

Lesenswert?

Was ist an obigem Bild eigentlich soo schwer zu verstehen...?

von Obelix X. (obelix)


Lesenswert?

Gerrit G. schrieb:
> Oder hab ich
> doch was übersehen?

Die Lösung ist hier zu finden :

https://www.mikrocontroller.net/articles/Netiquette

von Gerrit G. (Gast)


Angehängte Dateien:

Lesenswert?

Die Application note AN3116 beschreibt unter Punkt 2, dass man nur ADC1 
und ADC2 in dual mode laufen lassen kann. ADC3 läuft immer unabhängig. 
Daher habe ich halt alle auf indipendet gestellt und gleichzeitig 
getriggert.

Für den Test gebe auf alle drei ADCs ein 10kHz Sinus. Schreibe die Daten 
mit DMA weg und plotte das ganze (siehe Anhang).

Mhhh... vielleicht liegts auch an DMA oder am Ram? Habs mit 
unterschiedlichen DMAs probiert, Ergebnis war identisch.

Im Netz hab ich nur gelesen, dass ein Delay bekannt sei (nicht 
offiziell). Allerdings keine Infos darüber, woher dieses Delay kommt.

von Ali K. (teddy50)


Lesenswert?

Vielleicht nur eine Idee.
Verwendest du den selben DMA Controller für die drei ADCs?
Vielleicht kann er nur eine Kopievorgang machen, dh. für die drei muss 
er es nacheinander machen.

Versuch Mal, für jede ADC einen individuellen DMA Controller zu 
verwenden.

von Gerrit G. (Gast)


Lesenswert?

Michael W. schrieb:
> Was ist an obigem Bild eigentlich soo schwer zu verstehen...?

dann bitte mal die [code] funktion automatisch begrenzen oder mal ne 
zeilenzahl nennen, ab wann etwas zu lang ist. ich finde es nicht zu 
lang. so ist es ja wohl eine sehr schwammige Regel

von Obelix X. (obelix)


Lesenswert?

Gerrit G. schrieb:
> ab wann etwas zu lang ist

Wenn man für den Code scrollen muss. Ist aber hier allgemein bekannt.

Siehe :

https://www.mikrocontroller.net/articles/Netiquette

: Bearbeitet durch User
von Gerrit G. (Gast)


Lesenswert?

Ali K. schrieb:

> Versuch Mal, für jede ADC einen individuellen DMA Controller zu
> verwenden.

hab ich. Hab alles mit einer DMA oder mit zwei DMA (gemischt) probiert. 
Delay bleibt immer gleich.

von Norbert (der_norbert)


Lesenswert?

Gerrit G. schrieb:
> dann bitte mal die [code] funktion automatisch begrenzen oder mal ne
> zeilenzahl nennen, ab wann etwas zu lang ist. ich finde es nicht zu
> lang. so ist es ja wohl eine sehr schwammige Regel

Erstens und zweitens ist es nicht »code« sondern »c«

Und wenn das Ergebnis sowieso schon aussieht wie ausgekotzte 
Buchstabensuppe, dann wird's durch mehr Länge nicht besser.

: Bearbeitet durch User
von Wastl (hartundweichware)


Lesenswert?

Gerrit G. schrieb:
> so ist es ja wohl eine sehr schwammige Regel

Das ist so oft besprochen worden dass du das mit deiner 10-jährigen
Zugehörigkeit zum Forum eigentlich wissen solltest. Ich nehme an
dass auch dein Bildschirm nicht so gross ist dass deine Source
im Ganzen zu sehen ist. Ausserdem wird die Source ungünstig
dargestellt. Muss man das alles erst in Worte fassen?

Unglaublich wie sinnlos hier durch gedankenloses Posting Resourcen
verschwendet und heisse Luft (Leerzeilen) produziert wird.

von Wastl (hartundweichware)


Lesenswert?

Gerrit G. schrieb:
> Daher habe ich halt alle auf indipendet gestellt

Nein! Sondern:

Du hast halt alle auf "independent" gestellt.

von Gerrit G. (Gast)


Lesenswert?

Wastl schrieb:
> Gerrit G. schrieb:
>> Daher habe ich halt alle auf indipendet gestellt
>
> Nein! Sondern:
>
> Du hast halt alle auf "independent" gestellt.

ok, es reicht... dieses forum verkommt so langsam.

spart euch jede weitere antwort. ich muss hier mittlerweile nämlich 
durch ziemlich viele nutzlose kommentare scrollen. da komm ich leider 
nicht mehr mit...

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Gerrit G. schrieb:
> Delay bleibt immer gleich.

Und? Kannste damit nicht leben? Wenns immer gleich bleibt, wirst du's ja 
auch kennen, und dann kannste ja deine Daten entsprechend filtern, dass 
sie danach synchron (genug) sind. Oder nicht?

Gruss
WK

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Gerrit G. schrieb:
> Die Application note AN3116 beschreibt unter Punkt 2, dass man nur ADC1
> und ADC2 in dual mode laufen lassen kann. ADC3 läuft immer unabhängig.
> Daher habe ich halt alle auf indipendet gestellt und gleichzeitig
> getriggert.
>
> Für den Test gebe auf alle drei ADCs ein 10kHz Sinus. Schreibe die Daten
> mit DMA weg und plotte das ganze (siehe Anhang).
>
> Mhhh... vielleicht liegts auch an DMA oder am Ram? Habs mit
> unterschiedlichen DMAs probiert, Ergebnis war identisch.
>
> Im Netz hab ich nur gelesen, dass ein Delay bekannt sei (nicht
> offiziell). Allerdings keine Infos darüber, woher dieses Delay kommt.

Benutze mal bitte die injected conversion ohne DMA und Plotte das. An 
deiner Methodik sehe ich jetzt keinen Fehler ich habe hier aber einen 
f730 der das problemlos kann ohne für mich messbaren Versatz und 8us 
sind für mich da ein riesiger Versatz alles über 1us würde bei meiner 
Anwendung sofort auffallen.

von Rainer W. (rawi)


Lesenswert?

Gerrit G. schrieb:
> Für den Test gebe auf alle drei ADCs ein 10kHz Sinus. Schreibe die Daten
> mit DMA weg und plotte das ganze (siehe Anhang).

Der (interpolierende) Plot nützt nicht so wirklich viel. Interessant ist 
die Lage der einzelnen Abtastpunkte.
Ob die Daten verzögert ankommen, sollte doch bei vernünftiger Pufferung 
nicht die große Rolle spielen. Entscheidend ist, wann abgetastet wurde, 
d.h. liegen die Abtastpunkte der drei Kanäle im steilen Teil des Signals 
auf gleicher Höhe oder sind sie gestaffelt.

Bevor diese Frage nicht beantwortet ist, lohnt es nicht, im Code 
rumzustochern.

: Bearbeitet durch User
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.