bei einem ATTiny13 möchte ich mit 8 Bit statt 10 Bit wandeln um eine höhere Rate zu erreichen. im Datenblatt steht: If a lower resolution than 10 bits is needed, the input clock frequency to the ADC can be higher than 200 kHz to get a higher sample rate. ja und welche Clock rate geht noch? wie kann ich das erreichen: 13 - µs Conversion Time und wo stelle ich eine geringere Auflösung ein? Vielleicht bin ich blind, aber im Datenblatt finde ich echt nix. Walter
Er hat immer 10 Bit Auflösung in den zwei Registern, doch die unteren zwei kannst du dann sicher wegschmeißen. Wieviele Clocks eine Wandlung braucht, kannst du nachlesen. Daraus kannst du auch schließen, wieviel kHz du einstellen musst, um 13µs zu erreichen.
eine komplette Wandlung dauert 13 Takte, das ist mir klar. Wenn ich also das Register schon früher auslese habe sind noch nicht alle Bits gewandelt, auch klar. Aber was hat das mit der Frequenz zu tun mit der diese 13 Takte laufen??
Diese 13 Takte werden mit der ADC clock frequency ausgeführt, bei 200kHz dauert eine Wandlung folglich 13*5=65µs. Für 2 Bit weniger (11 Takte) und 13µs bräuchte man demnach 846kHz, das ist wohl doch etwas zu viel. Fazit: der Tiny13 ist für diese Anwendung nicht schnell genug.
> ...Wenn ich also das Register schon früher auslese...
Du kannst das Register nicht früher auslesen. Das Ergebnis wird erst
nach Ablauf der Wandlung im Datenregister zur Verfügung gestellt. Wenn
Du eine geringere Auflösung haben willst, kannst Du den Takt über 200
kHz setzen. Lt. Datenblatt liegt die absolute Genauigkeit des ADC bei
einem Takt von 1 MHz bei 3 LSB. D.h. Du kannst die letzten beiden Bits
vergessen. Wenn Du also 8 Bit Auflösung brauchst, kannst Du den ADC mit
1 MHz (vermutlich auch noch ein Stück mehr) takten. Das ADLAR-Bit
solltest Du dann auch setzen, dann brauchst Du nur ADCH auszulesen.
Ich hab die erfahrung gemacht, dass man wenn der ADC höher getaktet ist als angegeben ein paar Spikes relativ zufällig verteilt hat, diese sind dann ca 1-3 lsb groß. Wenn die dir nichts ausmachen, oder du die gut rausfiltern kannst kannst du den ADC richtig hoch takten.
Ich würd's einfach ausprobieren! Aus 10 bit 8 zu machen ist einfach: das Ergebniss (19 bit) der Wandlung 2 bit nach rechts Schieben. Erg = Erg >>2;
Oder wie gesagt ADLAR setzen. Dann findest du im High-Byte die oberne 8bit und im Low-Byte die 2 LSB.
Viel scheint das Datenblatt nicht herzugeben. Bei 200kHz ADC-Takt ist die Abweichung 2 LSB, bei 1Mhz 3 LSB. 1Mhz ist wohl auch der maximale Takt, da die minimale Konvertierungszeit 13 Mikrosekunden sind und eine Konvertierung 13 Takte braucht.
Was willst Du mit den schnellen Ergebnissen anfangen ? Angenommen, alle 13µs hast Du einen neuen Wert, wo soll der bleiben ? Wie lange braucht der Tiny, um ihn sinnvoll zu verarbeiten ? Oder willst Du den Wert nur schnell woanders hin weiterleiten ? Vielleicht stellst Du auch fest, daß Du es garnicht so schnell brauchst.
@ johnny.m + ralf Vielen Dank für die Hilfe, jetzt habe ich die Tabelle im Datenblatt auch gefunden. Als Fehler stehen da aber 4,5 LSB, nicht 3. 4.5 sind ja ungefähr 2 Bit, d.h. das 8-Bit Ergebnis ist einigermaßen genau. oder ist da die Abweichung gemeint, also plus/minus 4.5 dann wärens ja nur 7Bit Genauigkeit @Michael ich bin nur am rumprobieren und habe gerade einen Tiny13 auf einer Testplatine. Später soll es ein Mega8 sein auf dem ich genug Platz habe um Werte zu speichern.
> jetzt habe ich die Tabelle im Datenblatt auch gefunden. > Als Fehler stehen da aber 4,5 LSB, nicht 3. Hast du vielleicht ein veraltetes Datenblatt? Auf Seite 122 von http://www.atmel.com/dyn/resources/prod_documents/doc2535.pdf sind jedenfalls 3 (bzw. 2,5 im "noise reduction mode") angegeben. > Später soll es ein Mega8 sein auf dem ich genug Platz habe > um Werte zu speichern. Der hat 1kB RAM. Bei 13 Mikrosekunden pro Wandlung passen also nur ca. 13 Millisekunden rein.
@Rolf >Hast du vielleicht ein veraltetes Datenblatt? Auf Seite 122 von >http://www.atmel.com/dyn/resources/prod_documents/... sind >jedenfalls 3 (bzw. 2,5 im "noise reduction mode") angegeben. na so was, im aktuellen Datenblatt (von 2004) steht tatsächlich 3, meins ist von 2003 und da sinds noch 4,5, alles wird gut ;-) >Der hat 1kB RAM. Bei 13 Mikrosekunden pro Wandlung passen also nur ca. >13 Millisekunden rein. ja, das reicht, ich möchte 2xzwei Halbwellen mit 200 Hz als niedrigster Frequenz messen, also insgesamt max 10 msec, zudem brauche ich die 13mikrosec (oder 77khz) gar nicht ganz, mir reichen auch 20mikrosec sprich 40kHz
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.