Forum: Mikrocontroller und Digitale Elektronik Vor/Nachteil Getsample und fortlaufende ADC Messung


von Max M. (Gast)


Lesenswert?

Welchen Vor/Nachteil hat GetSample ur fortlaufdenden Messung mit dem ADC 
des Controllers?
Ist Getsample genauer/stabiler?

von Gustl B. (gustl_b)


Lesenswert?

Max M. schrieb:
> des Controllers

Ja welcher denn? Was sagt das Datenblatt?

von Max M. (Gast)


Lesenswert?

Atmega oder aktuell STM32F103
Macht das einen Unterschied?
Die meisten Controller haben doch diese Option, also fortlaufende 
Messung und GetSample.
Daher hatte ich das nicht weiter spezifiziert

von Gustl B. (gustl_b)


Lesenswert?

Hängt vermutlich vom verbauten ADC und dessen Referenz ab. Und je nach 
ADC Typ auch von der externen Beschaltung ob die beim kontinuierlichen 
Abtasten genug Strom für den Sample Kondensator liefert.

von Sebastian W. (wangnick)


Lesenswert?

Max M. schrieb:
> Welchen Vor/Nachteil hat GetSample ur fortlaufdenden Messung mit dem ADC
> des Controllers?

Beim Atmega328P dauert eine ADC-Messung 13 ADC-Clockcycles. Fortlaufende 
Messungen werden ohne Pause zwischen den Messungen ausgeführt, man 
erhält also alle 13 ADC-Clockcycles einen Messwert. Bei einer Sequenz 
von Einzelmessungen muss im Programm das Ende jeder Messung erkannt und 
eine neue Messung ausgelöst werden. Dazu werden einige zusätzliche Takte 
benötigt. Der Abstand der Messungen voneinander ist dabei also etwas 
größer als 13 ADC-Clockcycles.

LG, Sebastian

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Max M. schrieb:
> Welchen Vor/Nachteil hat GetSample ur fortlaufdenden Messung mit dem ADC
> des Controllers?

Das kommt auf deinen Anwendungsfall an. Bei manchen ist wichtig, dass 
die Samples in regelmäßigen Intervallen ohne Zeitversatz (Jitter) 
stattfinden. Das geht freilaufend an einfachsten.

Aus dem Bauch heraus schätze ich, dass die beiden Methoden keinen 
nennenswerten Unterschied auf die Genauigkeit der erfassten Spannung 
haben. Sonst wäre das im Datenblatt geschrieben.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Max M. schrieb:

> Atmega oder aktuell STM32F103
> Macht das einen Unterschied?
> Die meisten Controller haben doch diese Option, also fortlaufende
> Messung

Ja, aber es kommt auch darauf an, inwiefern das "free running" 
konfigurierbar ist. Beim ATmega328P z.B. ist das nur sehr begrenzt 
möglich. Die Wandlung dauert im "free running" immer 13 ADC-Takte. Und 
wie lange ein ADC-Takt dauert, ist leider nur in sehr groben Schritten 
einstellbar.

Will/muss man eine bestimmte Samplerate erreichen, dann verbietet sich 
deshalb oft das "free running". Allerdings ist das Teil wenigstens in 
der Lage, auch ohne MCU-Intervention mittels eines Timers Samplevorgänge 
in regelmäßigen Abständen auszulösen. Kostet aber natürlich einen Timer, 
der dann höchstens noch eingeschränkt für andere Aufgaben verfügbar ist.

von Axel S. (a-za-z0-9)


Lesenswert?

Max M. schrieb:
> Welchen Vor/Nachteil hat GetSample ur fortlaufdenden Messung mit dem ADC
> des Controllers?
> Ist Getsample genauer/stabiler?

Oh weh!

GetSample ist wohl der Name einer Funktion. Was die macht, weiß außer 
dir kein Mensch. Vermutlich löst sie eine ADC-Messung aus. Aber was 
noch? Die fortlaufende ADC-Messung ist vergleichsweise exakt definiert. 
Nach den Ende einer Konversion wird direkt die nächste ausgelöst. Aber 
auch da gibt es Unterschiede. Z.B. ob immer derselbe ADC-Kanal gewandelt 
wird oder bestimmte Kanäle nacheinander.

Du verlangst also von uns, einen unbekannten Apfel mit einem Korb Birnen 
zu vergleichen. Genausogut hättest du fragen können, ob ein PKW einen 
Vorteil vor einem VW Golf hat.

Versuch einer Antwort: Klar, weil er grün ist.

von Rainer W. (rawi)


Lesenswert?

Max M. schrieb:
> Ist Getsample genauer/stabiler?

Das kommt darauf an, wie wichtig für dich die Anzahl der effektiven Bits 
des ADC ist und wie die abzutastenden Signale spektral aussehen.

: Bearbeitet durch User
von Max M. (Gast)


Lesenswert?

Oh weh!
Die ganze wird hier freundlich miteinander geschrieben und da kommt dann
Das "Oh weh! hättest du dir auch klemmen können und einen weiteren 
Teil...


Aha, du meinst also, das ist gar keine extra Funktion von Controllern 
sondern eine Besonderheit meines Tools, mit ich arbeite.
Ah ok, das müsst ich natürlich noch mal überprüfen.
Ich meinte sowas auch irgendwo im Reference Manual gesehen zu haben, 
daher diese Täuschung.
Vermutlich habe ich das mit dem Trigger Modus verwechseln, da der auch 
zwischen Trigger und Freerunning unterschieden wird beim Atmega Mmanual 
z.b.
Kann man aber auch anders als mit "Oh weh!" einleiten...

Ich hatte bis eben den Eindruck, dass sich das Umgangsklima hier 
deutlich gebessert hat.
Ich hoffe einfach mal das sich der positive Trend in diesem Forum 
dennoch fortsetzt.
Einzelne Querschläger wird es wohl immer geben


wieder einer wie du.
ja sachlich geantwortet und Axel S. schrieb:
> Max M. schrieb:
>> Welchen Vor/Nachteil hat GetSample ur fortlaufdenden Messung mit dem ADC
>> des Controllers?
>> Ist Getsample genauer/stabiler?
>
> Oh weh!
>
> GetSample ist wohl der Name einer Funktion. Was die macht, weiß außer
> dir kein Mensch. Vermutlich löst sie eine ADC-Messung aus. Aber was
> noch? Die fortlaufende ADC-Messung ist vergleichsweise exakt definiert.
> Nach den Ende einer Konversion wird direkt die nächste ausgelöst. Aber
> auch da gibt es Unterschiede. Z.B. ob immer derselbe ADC-Kanal gewandelt
> wird oder bestimmte Kanäle nacheinander.
>
> Du verlangst also von uns, einen unbekannten Apfel mit einem Korb Birnen
> zu vergleichen. Genausogut hättest du fragen können, ob ein PKW einen
> Vorteil vor einem VW Golf hat.
>
> Versuch einer Antwort: Klar, weil er grün ist.

von Rolf M. (rmagnus)


Lesenswert?

Max M. schrieb:
> Aha, du meinst also, das ist gar keine extra Funktion von Controllern
> sondern eine Besonderheit meines Tools, mit ich arbeite.

Es gibt zumindest keinen controllerübergreifend allgemeingültig 
definierten Begriff "GetSample". Es muss also wohl zum von dir 
verwendeten Tool gehören, das aber außer dir keiner hier kennt.

> Vermutlich habe ich das mit dem Trigger Modus verwechseln, da der auch
> zwischen Trigger und Freerunning unterschieden wird beim Atmega Mmanual
> z.b.
> Kann man aber auch anders als mit "Oh weh!" einleiten...

Nunja, als Fragesteller kann man sich aber auch etwas mehr Mühe geben 
und gleich von Anfang an ein paar essenzielle Informationen mitliefern, 
statt sie sich erst aus der Nase ziehen zu lassen. Dass nicht alle ADCs 
auf der Welt exakt gleich funktionieren, sollte ja eigentlich klar sein.

: Bearbeitet durch User
von Max M. (Gast)


Lesenswert?

Ich meine es bei ARM und AVR gesehen zu haben(vermutlich durch meine IDE 
bedingt) also gehe ich davon aus das es bei allen gängigen so ist, doch!
Und nein es ist nicht klar, für jemanden der es nicht besser weiß!

Aber ist ja auch völlig, egal, nun habe ich es ergründen können und der 
Thread musss nicht in eine Richtung laufen wie es für dieses Forum in 
der Vergangenheit üblich war...
Wäre schön, wenn sich der Umgang wirklich in eine Richtung verschiebt, 
wie der Faden oben begonnen.
Danke soweit.

"Dass nicht alle ADCs
auf der Welt exakt gleich funktionieren, sollte ja eigentlich klar 
sein."

von J. S. (jojos)


Lesenswert?

'Deine' IDE ist ja die Mikroe, die wohl ein eigenes SDK für die 
Controller mitbringt. Das ist keiner Weise allgemeingültig oder mit 
anderen kompatibel. Von daher ist nur Rätsel raten. Was die Funktion 
macht sollte dokumentiert sein und dann muss man entscheiden ob die in 
sein Programm passt oder nicht.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Max M. schrieb:
> Wäre schön, wenn sich der Umgang wirklich in eine Richtung verschiebt,
> wie der Faden oben begonnen.

Hier muss ich sagen, dass der Thread richtig scheiße begonnen hat. Du 
kannst also froh sein, nicht sofort geköpft worden zu sein.

Vergleich:
> Was ist besser, Schoko- oder Erdbeereis?
Ohne Randbedingungen/Kontext, eine recht doofe Frage, mit erheblich 
potential sich die Köpfe einzuschlagen.
Bei einer solchen Frage geht es doch zuerst um KO Kriterien!
Barbara hat eine Erdbeerallergie, und bekommt sofort Pickel davon.
Heinrich muss nach einem winzigen Happen Schoko 1 Woche lang Steine 
kacken.
Waltrud und Willi, habe es mit der Laktose, sagen so zu beidem: Nein!

Und dann, wenn die KO Kriterien umschifft sind, dreht es sich um 
Geschmacksvorlieben. Ein perfektes Streitthema.

von Gustl B. (gustl_b)


Lesenswert?

Max M. schrieb:
> Ich meine es bei ARM und AVR gesehen zu haben(vermutlich durch meine IDE
> bedingt) also gehe ich davon aus das es bei allen gängigen so ist, doch!

Was meinst du mit "es"? Deine Funktion GetSample()?

Die macht zwar für den Anwender das Gleiche, eben einen Abtastwert 
zurückliefern, aber wie diese Funktion implementiert ist bleibt völlig 
unklar. Der Baustein selber hat keine solche Funktion, der hat nur 
Register und so Zeug. Die Funktion stellt bestimmte Funktionalität vom 
Baustein in einer Hochsprache wie C zur Verfügung. Dazu muss abstrahiert 
werden. Wie diese Funktion also für die einzelnen Bausteine 
implementiert ist kann und wird sich stark unterscheiden, aber das 
Schöne ist eben, dass das dem Anwender, dir, egal sein kann weil sie 
jedes Mal trotz unterschiedlicher Implementierung und unterschiedlichen 
Bausteinen das macht was sie soll - einen Abtastwert zurückliefern.
Wenn du willen willst was die Funktion intern macht, wie die den ADC 
verwendet um zu diesem Abtastwert zu kommen, da musst du dir die 
Implementierung der Funktion angucken.

von Peter D. (peda)


Lesenswert?

Ob S. schrieb:
> Beim ATmega328P z.B. ist das nur sehr begrenzt
> möglich.

Wie kommst Du darauf?
Im ADCSRB kannst Du T0 oder T1 als Auto Trigger Source auswählen und 
somit zyklusgenau das Intervall bestimmen.

P.S.:
Sehe gerade, das hast Du ja schon beschrieben.
Ich sehe aber nicht, daß dadurch der Timer blockiert wäre, die Timer 
haben ja mehrere Interruptvektoren.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Max M. schrieb:
> Die meisten Controller haben doch diese Option, also fortlaufende
> Messung und GetSample.
Vielleicht die meisten, die du kennst. Ich kenne diese "Option" nicht 
aus irgendeiner Hardwarebeschreibung im Datenblatt oder als Register. 
Vermutlich ist das also ein Stück Software.

Max M. schrieb:
> Ich meine es bei ARM und AVR gesehen zu haben(vermutlich durch meine IDE
> bedingt)
Was der AVR hat und was der ARM als reale Hardware hat, das steht im 
Datenblatt. Was ein Programmierer daraus gemacht hat, steht im Software 
Manual zur entsprechenden Lib.

> Und nein es ist nicht klar, für jemanden der es nicht besser weiß!
Jetzt weißt du es ja besser und kannst di mal im Datenblatt deines µC 
einlesen. Da steht dann auch ganz genau drin, was die Hardware des µC 
kann.

> Aber ist ja auch völlig, egal, nun habe ich es ergründen können und der
> Thread musss nicht in eine Richtung laufen wie es für dieses Forum in
> der Vergangenheit üblich war...
Meine Erfahrung: ganz oft hat der TO selber die Zügel für die 
Marschrichtung in der Hand.

: Bearbeitet durch Moderator
von Axel S. (a-za-z0-9)


Lesenswert?

Max M. schrieb:
> Ich meine es bei ARM und AVR gesehen zu haben(vermutlich durch meine IDE
> bedingt) also gehe ich davon aus das es bei allen gängigen so ist, doch!

Das mag schon sein. Aber keiner von uns weiß, um welchen µC es dir geht. 
Oder welche IDE du nutzt. Und welche Lib zur Hardware-Abstraktion.

Und zwar nach wie vor nicht!

> Aber ist ja auch völlig, egal, nun habe ich es ergründen können und der
> Thread musss nicht in eine Richtung laufen wie es für dieses Forum in
> der Vergangenheit üblich war...

Das liegt ganz an dir. Deine ursprüngliche Frage ist auf jeden Fall 
unsinnig. Und was du zwischenzeitlich hast "ergründen können", ist auch 
nicht klar ...

von Peter D. (peda)


Lesenswert?

Ich benutze in meinen Projekten immer Round-Robin. Wenn z.B. 5 
ADC-Eingänge benutzt werden, dann liest der ADC-Interrupt das Ergebnis 
aus, schaltet den MUX weiter und startet die nächste Messung. Damit hat 
die Mainloop immer den aktuellsten Wert im RAM verfügbar und muß auf 
nichts warten.
Bei Bedarf macht der ADC-Interrupt auch die Mittelwertbildung, z.B. 
speichert intern die Summe über je 64 Wandlungen.

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.