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
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.
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...
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" ?
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...
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.
> 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)?!
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.
>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...
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...
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)
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.