Welchen Vor/Nachteil hat GetSample ur fortlaufdenden Messung mit dem ADC des Controllers? Ist Getsample genauer/stabiler?
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
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.
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
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.
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.
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.
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
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.
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
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."
'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.
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.
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.
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
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
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 ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.