Forum: Mikrocontroller und Digitale Elektronik Attiny ADC DoppelKartoffelPuffer? Und ADC-Clock vs SR..


von Arthur Ingo ^-1 (Gast)


Lesenswert?

Hallo,
ich bin gerade dabei mich mit dem ADC des attiny85 zu beschäftigen..
Dabei habe ich mich gefragt, was wohl passiert, wenn ich das 
ADC-Register lese, bevor der ADC fertig ist? Ist es so, dass das 
komplette Register erst aktualisiert wird, wenn der ADC fertig ist, oder 
wird jedes Bit nach und nach geschrieben?

Ich meine es dauert 13 Zyklen, bis der ADC fertig ist, aber kann mir 
jemand sagen, warum sich das auf die ADC-Clock bezieht und nicht auf die 
CPU-Clock?

Außerdem frage ich mich, warum es wohl 13 sind?! 10 kann ich mir noch 
erklären (10 bit ADC) und mit Doublebuffer kommt evtl. noch der eine 
oder andere hinzu. ..Weshalb ich auch mal vom Doublebuffer ausgehe, aber 
wer weiß..

Nochmal zur ADC-Clock: Ich denke, der Frequenzbereich ist begrenzt durch 
den S/H, aber warum wird die berechnung nicht mit CPU-Clock 
durchgeführt? So hab ich es zumidest verstanden, wenn man die im 
Datenblatt empfohlenen f_ADC_max = 200 kHz und f_Samplerate = 15kHz 
beachtet: f_ADC_max / 13 ~=~ f_Samplerate..

Ich verstehe nicht, warum man nicht lieber alle t_Samplerate 13 mal 
t_CPU was zu tun hat, statt 13 mal alle t_Samplerate quasi 1 t_CPU zutun 
hat.
Ist doch sogar schlecht für den S/H..
Aber sonst verstehe ich nicht was die 200kHz mit den 15kHz zu tun haben.

Vielleicht weiß da ja jemand was genaueres?!?

Mfg
Arthur Ingo ^-1

von Einer K. (Gast)


Lesenswert?

Tipp:
Baue mal selber einen ADC aus diskreten Bauteilen.
Und versuche ihn dann auf Speed zu optimieren.

Ich bin mir sicher, auf dem Wege werden alle deine Fragen beantwortet 
werden.

von c-hater (Gast)


Lesenswert?

Arthur Ingo ^-1 schrieb:

> ich bin gerade dabei mich mit dem ADC des attiny85 zu beschäftigen..

Dann solltest du einfach den den ADC-Abschnitt des Datenblattes so lange 
lesen, bis du ihn vollständig verstanden hast.

Darin sind nämlich, wer hätte das gedacht, die Antworten auf alle deine 
Fragen enthalten, sogar die Tatsache, warum sogar eine deiner Fragen 
schon falsch gestellt ist, wird erklärt. Die haben sich da richtig Mühe 
gegeben...

Und überfordern wird dich die Lektüre von nur 16 Seiten ja wohl auch 
nicht...

von Arthur Ingo ^-1 (Gast)


Lesenswert?

Naja beides nicht sehr hilfreich.. Die Funktionsweise in Theorie würde 
mir schon reichen, außer du hast zufällig die entsprechenden Bauteile in 
diskret da..
Da stellt sich gleich die nächste Frage: Kann jemand c-haters Rätsel um 
die eine, schon falsch gestellte, Frage lüften?...
Im Datenblatt steht schon einiges drin, aber verständlich für mich, ist 
anders. Sonst wär ich nicht hier..

Was ich mich noch gefragt habe:
Ziehen wir es mal von hinten auf: Was passiert denn, wenn den ADC mit 
z.B. 4MHz betreibe? Was genau macht da wohl nicht mehr mit? Bzw. wodurch 
wird der Präzisionsverlust verursacht?

Und noch etwas zum Timer: Macht der Komparator eigentlich ein "==" oder 
ein ">=" ? Wenn ich jetzt also habe:
(Counter, CmpValue): (0,3) (1,3) (2,3) (3,2) (4,2) ..,
löst der Komparator dann aus, oder nicht? Ein analoger würde das ja 
tun..

Und habe ich das richtig verstanden, dass ich Timer1 mit bis zu 64/256 
MHz-Periode betreiben kann, Timer0 nur mit bis zu 16/256 MHz-Periode?

Welchen Timer nimmt man denn nun als "DAC" ?

von Jakob (Gast)


Lesenswert?

Warum glaubst du, als Anfänger mit NULL Ahnung mehr aus dem
ADC des Tiny-85 geliefert zu bekommen, als Normal-Benutzer?

Die Spezifikation ist:
- 10 Bit Auflösung bei einem ADC-Takt von <= 200 kHz
- das Ergebnis liegt nach 13 ADC-Takten vor und wird vom
  Wechsel des ADSC-Bits von 1 auf 0 angezeigt.

Damit funktioniert es.

Wie und warum das so abläuft, wird im Datenblatt beschrieben
und wenn du es nicht glaubst, probier deine "Verbesserungen"
einfach unter definierten Bedingungen an 25 Exemplaren aus
25 Fertigungs-Chargen bei Temperaturen von ... bis aus.

Ist aber schnulli, weil du wahrscheinlich auch reproduzierbare
Ergebnisse haben willst.

Sonst nimm lieber einen Zufallszahlengenerator...

von c-hater (Gast)


Lesenswert?

Arthur Ingo ^-1 schrieb:

> Ziehen wir es mal von hinten auf: Was passiert denn, wenn den ADC mit
> z.B. 4MHz betreibe? Was genau macht da wohl nicht mehr mit? Bzw. wodurch
> wird der Präzisionsverlust verursacht?

Durch die begrenzte Bandbreite des Komparators natürlich. So wie das bei 
absolut jedem SA-DAC der Fall ist...

> Und noch etwas zum Timer: Macht der Komparator eigentlich ein "==" oder
> ein ">=" ?

OMG, hier werden analoge Größen verglichen. Ein "==" kann es da 
höchstens zufällig geben, in unserer Makrowelt eigentlich garnicht. Wie 
sollte ein SA-DAC im regulären Betrieb funktionieren, wenn er auf so 
einen extremen Zufall angewiesen wäre? Ein wenig logisches Denken bitte!

> Und habe ich das richtig verstanden, dass ich Timer1 mit bis zu 64/256
> MHz-Periode betreiben kann, Timer0 nur mit bis zu 16/256 MHz-Periode?

Was hat irgendein Timer mit dem DAC zu tun? Direkt sicher garnix und 
indirekt auch höchstens als Trigger für einen Wandlungsvorgang. Auf die 
eigentliche Wandlung hat er dann aber exakt keinerlei Einfluss mehr. 
Wenn du fauler Hund endlich mal dieses verfickte Kapitel in diesem 
verfickten DB lesen würdest, wäre dir das sofort klar, denn im 
Prinzipschema des DAC tauchen keinerlei Timer auf...

> Welchen Timer nimmt man denn nun als "DAC" ?

Normalerweise überhaupt keinen. Und wenn doch, dann höchstens als 
Trigger, um z.B. eine Samplerate exakt zu erreichen, die allein mit den 
Mitteln des ADC eben nicht exakt erreichbar ist oder auch, um periodisch 
eine Größe an (zeitlich) definierter Stelle zu messen, die direkt von 
Aktivitäten eines Timers abhängig ist. Typisches Anwendungsbeispiel: 
Feedback-Zweig für einen µC-gesteuerter Schaltregler mit Timer-PWM als 
Aktor.

von Arthur Ingo ^-1 (Gast)


Lesenswert?

> Warum glaubst du, als Anfänger mit NULL Ahnung mehr aus dem ADC des Tiny-85 
geliefert zu bekommen, als Normal-Benutzer?
Wie kommst du denn darauf? ..Außer du meinst mit 'Normal-Benutzer' die 
Arduinoleute, die nicht mal Ahnung von einem NPN haben..
Die normalsten Nutzer nutzen den (alleine) eh als Radiosender..

> Wie und warum das so abläuft, wird im Datenblatt beschrieben ...
Gerade das Warum eher nicht so wirklich, oder? Und das Wie leider auch 
nur bis zu einem, durch schwarze Striche begrenzten, Kasten mit ein paar 
Pfeilen rein und raus...

> Sonst nimm lieber einen Zufallszahlengenerator...
Oh, hat sich eigentlich mal jemand am circuit-bending von µC versucht?!?



> Durch die begrenzte Bandbreite des Komparators natürlich. So wie das bei
absolut jedem SA-DAC der Fall ist...
Hatte ihn auch schon im Auge, 200kHz sind aber nicht viel für so einen 
natürlichen Komparator. Und warum sich das dann nur auf die Präzision 
der LSB auswirken soll, erschließt sich mir auch nicht.


> OMG, hier werden analoge Größen verglichen.
Also hier nicht.. Erleuchtet? ich rede vom..
>> Timer
..

> Ein wenig logisches Denken bitte!
Das macht dann 2,50€ ! Aber nur weil du's bist.


> Was hat irgendein Timer mit dem DAC zu tun? Direkt sicher garnix ...
Für dich anscheinend schon.. Und das von einem, der meinem verfickten 
Beitrag nicht richtig liest..

> Normalerweise überhaupt keinen.
Das ist aber schlecht.. Dann halt entsprechende Bits setzen.
> ... mit Timer-PWM als Aktor.
Timer0, oder Timer1?



Und noch eine Frage (..hat nichts mit dem ADC zu tun!..): Hat jemand 
zufällig ein ges. Blockschaltbild? Dann würde man evtl besser verstehen, 
was mit wem verknüpft ist, statt es über verschiedene Paragraphen 
verteilt lesen zu müssen (auch wenn man dann nen großen Bildschirm 
braucht)?!

von c-hater (Gast)


Lesenswert?

Arthur Ingo ^-1 schrieb:

> Hatte ihn auch schon im Auge, 200kHz sind aber nicht viel für so einen
> natürlichen Komparator.

Wer hat denn behauptet, dass die Bandbreite des Komparators auf 200kHz 
limitiert wäre?

Er muß natürlich eine wesentlich höhere Bandbreite haben, um bei 200kHz 
Messungen mit 10 Bit Genauigkeit realisieren zu können...

Bau' doch einfach mal selber einen 10Bit-SA-DAC auf (das wurde dir ja 
bereits "ufuf" vorgeschlagen), dann erkennst du, wo die Knackpunkte sind 
und wie sich das mit der Fehlerfortpflanzung über die Stufen der 
Approximation verhält...

> Und warum sich das dann nur auf die Präzision
> der LSB auswirken soll, erschließt sich mir auch nicht.

Auch das kannst du dann verstehen...

> ich rede vom..
>>> Timer

Ja, bloß wie paßt das zum Thema des Threads? Das ist doch ein ganz 
anderes Thema, also machst du einfach besser einen neuen Thread dafür 
auf. Oder liest einfach das DB...

>> ... mit Timer-PWM als Aktor.
> Timer0, oder Timer1?

Beim Tiny85 kann von den beiden vorhandene Timern nur Timer0 direkt als 
Trigger für die AD-Wandlung dienen Auch das steht im DB. Lies' es doch 
einfach endlich mal...

Mit einem Trick kann man allerdings auch Timer1 dafür hernehmen. Mit dem 
Umweg über den Pin-Change, denn auch der kann beim Tiny85 als Trigger 
für die ADC dienen und er läßt sich wiederum auch durch die 
OC1A/B-Ausgabe auslösen. Der Nachteil ist dann halt nur, dass damit der 
PCINT für andere Anwendungen praktisch unbrauchbar wird.

von Arthur Ingo^-1 (Gast)


Lesenswert?

>Wer hat denn behauptet, dass die Bandbreite des Komparators auf 200kHz
>limitiert wäre?
>
>Er muß natürlich eine wesentlich höhere Bandbreite haben, um bei 200kHz
>Messungen mit 10 Bit Genauigkeit realisieren zu können...
Also wie man bei einem analogen Komparator von einer Genauigkeit von 
mehreren Bits sprechen kann, musst du mir mal sehr gerne erklären..
Oder anders: Wenn ich jetzt mit 20kHz messe, habe ich dann magischer 
Weise z.B. 100Bit Genauigkeit?!?


>der Fehlerfortpflanzung über die Stufen der
>Approximation verhält...
Fehlerfortpflanzung im Digitalen ist immer sonne Sache, ne?!
Du glaubst nicht wirklich, dass man identisches Verhalten erhält, baut 
man dieses IC diskret nach?! Wenn du das glaubst, hast du noch nie mit 
"hf" gearbeitet.

>Auch das kannst du dann verstehen...
Soll ich dir dann sagen, woran es liegt..? Jeder Messvorgang einzelner 
Bits unterscheidet sich nicht vom nächsten, außer, dass die 
Sprungspannung sogar noch abnimmt. Wäre deine Annahme richtig, müsste 
sich nicht allmählich ein Fehler in den LSB bemerkbar machen, sondern 
gleich alles zusammenbrechen.

Weißt du überhaupt genau, wie ein SA-DAC, und auch dessen einzelne 
Komponenten funktionieren?? Macht irgendwie nicht den Eindruck.


>Ja, bloß wie paßt das zum Thema des Threads? Das ist doch ein ganz
>anderes Thema, also machst du einfach besser einen neuen Thread dafür
>auf. Oder liest einfach das DB...
Och möönsch. Hätt ich gewusst, dass dich das so verwirrt, für dich hätt 
ichs getan.
..Wozu 2 Threads, ohne interessante Antworten?!

>Beim Tiny85 kann von den beiden vorhandene Timern nur Timer0 direkt als
>Trigger für die AD-Wandlung dienen Auch das steht im DB. Lies' es doch
>einfach endlich mal...
Nur war das nicht die Frage. Ich wollte mich nur vergewissern, ob man 
die Timer1-PWM wirklich, ohne Probleme, mit 64MHz-Schritten takten kann. 
Nur zur Sicherheit, ADC =/= DAC...

von c-hater (Gast)


Lesenswert?

Arthur Ingo^-1 schrieb:

> Nur war das nicht die Frage. Ich wollte mich nur vergewissern, ob man
> die Timer1-PWM wirklich, ohne Probleme, mit 64MHz-Schritten takten kann.

Nein, kann man nicht. Der asynchrone Betrieb via PLL führt natürlich 
etliche Probleme ein, die man im Normalbetrieb des Timers nicht hat. 
Welche genau, das steht (wer hätte das gedacht), ausführlichst in DB 
beschrieben...

Du musst es eben einfach nur mal lesen...

von c-hater (Gast)


Lesenswert?

Arthur Ingo^-1 schrieb:

> Jeder Messvorgang einzelner
> Bits unterscheidet sich nicht vom nächsten

Genau das stimmt eben im Falle der SA-Wandler nicht. Wo hast du diesen 
völligen Schwachsinn her? Jeder Schritt hat natürlich den (nur 
entsprechend der Zeitkonstante abgeklungenen) Restfehler aller vorigen 
Schritte als Fehlersumme mit im Sack...

Bedenke: die Bandbreite des Komparators bezieht sich nicht auf's Signal 
(denn das ist durch die S&H-Stufe über die Messzeit näherungsweise 
konstant), sondern auf die Referenz, die wiederum aus dem Ergebnis der 
vorigen Stufe resultiert...

Mathematisch ist das im Prinzip ein IIR Filter. Und genau mit den 
Formel, mit denen man einen solchen beschreiben kann, kann man auch eine 
SA-DAC beschreiben.

> Weißt du überhaupt genau, wie ein SA-DAC, und auch dessen einzelne
> Komponenten funktionieren?? Macht irgendwie nicht den Eindruck.

Ich lach' mich tot. Mir scheint eher, du willst dir von mir erklären 
lassen, wie die Sache funktioniert. Du hättest einfach besser in der 
Vorlesung aufpassen sollen. Dann würdest du vielleicht wenigstens an der 
einen oder anderen Stelle meiner Ausführungen das Gefühl gehabt haben: 
"Moment mal, das kommt mir jetzt doch irgendwie bekannt vor".

Nö, du hast in der entsprechenden Vorlesung entweder erst garnicht 
teilgenommen (weil vom GV oder vom Drogenkonsum entkräftet verpennt) 
oder das Gehirn statt mit der blöden Wissenschaft damit beschäftigt, wie 
du es Gretchen Modermöse tonight besorgen kannst. Oder woher du deinen 
nächsten Joint kriegst oder was auch immer...

Mein Gott, ich will auch noch mal 20 und so strunzdumm sein. ;o)

von Arthur Ingo^-1 (Gast)


Lesenswert?

>Nein, kann man nicht. Der asynchrone Betrieb via PLL führt natürlich
>etliche Probleme ein, die man im Normalbetrieb des Timers nicht hat.
>Welche genau, das steht (wer hätte das gedacht), ausführlichst in DB
>beschrieben...

Und was ist mit dem synchronen - ist ja immerhin nen PLL..?! Ich 
beschränke mich erstmal darauf. 'Etliche Probleme' können sicher nur von 
einem Profi, wie dir bewältigt werden..
Meine Kristallkugel meint, im Datenblatt steht was vom max. ~85MHz. An 
anderer Stelle jedoch was von max. 25MHz.. Also 85>64 - soviel steht 
fest.


>Du musst es eben einfach nur mal lesen...

Du kommst auf Ideen... Also bislang habe ich alles in meiner 
Kristallkugel gesehen - und dafür wars doch gar nicht so schlecht..


>Genau das stimmt eben im Falle der SA-Wandler nicht. Wo hast du diesen
>völligen Schwachsinn her? Jeder Schritt hat natürlich den (nur
>entsprechend der Zeitkonstante abgeklungenen) Restfehler aller vorigen
>Schritte als Fehlersumme mit im Sack...
>
>Bedenke: die Bandbreite des Komparators bezieht sich nicht auf's Signal
>(denn das ist durch die S&H-Stufe über die Messzeit näherungsweise
>konstant), sondern auf die Referenz, die wiederum aus dem Ergebnis der
>vorigen Stufe resultiert...

Nur zur Sicherheit: Du meinst aber schon "successive approximation ADC", 
oder?
1. Bandbreite beim Komparator - ist doch kein OPAmp...
2. Auf die Referenz?! Die ist ebenso konstant wie das S/H-Signal. Du 
meinst wohl eher das "-"/DAC-Signal.. Aber das hat gerade den Takt der 
ADC! Und das sind nach wie vor die "max" 200kHz.
3. vorige Stufe? Ich sehe da nur eine Stufe. Wenn du den vorigen Schritt 
meinst: Das ist es ja gerade - der "Fehler" des vorigen Schritts ist 
wesentlich signifikanter als der des folgenden. Das kann also eig nicht 
die Ursache für den leichten Päzisionsverlust einiger LSB sein.


>Mathematisch ist das im Prinzip ein IIR Filter. Und genau mit den
>Formel, mit denen man einen solchen beschreiben kann, kann man auch eine
>SA-DAC beschreiben.

*SA-ADC ;)
Also DAS will ich sehen!! Erklär mir mal, auf welche weise ein ADC, 
genauer der Messvorgang eines Samples, den Namen Filter verdient hat?! 
Und dann noch IIR - nur weil da was rückgekoppelt wird...wohl kaum?


>Ich lach' mich tot. Mir scheint eher, du willst dir von mir erklären
>lassen, wie die Sache funktioniert. Du hättest einfach besser in der
>Vorlesung aufpassen sollen. Dann würdest du vielleicht wenigstens an der
>einen oder anderen Stelle meiner Ausführungen das Gefühl gehabt haben:
>"Moment mal, das kommt mir jetzt doch irgendwie bekannt vor".

Oh ich glaube, das hätte ich nicht einmal gedacht, gäbe es eine 
Vorlesung, die ich hätte verpassen können.


>Nö, du hast in der entsprechenden Vorlesung entweder erst garnicht
>teilgenommen (weil vom GV oder vom Drogenkonsum entkräftet verpennt)
>oder das Gehirn statt mit der blöden Wissenschaft damit beschäftigt, wie
>du es Gretchen Modermöse tonight besorgen kannst. Oder woher du deinen
>nächsten Joint kriegst oder was auch immer...

Ich weiß zwar nicht, wer das ist, aber will dir, dem Namen nach, 
bestimmt keiner streitig machen.. Klingt eher so, als wärst du auf 
Entzug..


>Mein Gott, ich will auch noch mal 20 und so strunzdumm sein. ;o)

Ich ..teilweise.. auch. 20 ist schon etwas viel. Und jetzt bist du - 21 
3/4, oder was willst du hier mitteilen?!
Bei dem, was du so schreibst, hat man eher das gefühl du warst nie 
'20'..

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.