Forum: Mikrocontroller und Digitale Elektronik 8Bit statt 10Bit ADC bei ATTiny13


von Walter (Gast)


Lesenswert?

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

von D. W. (dave) Benutzerseite


Lesenswert?

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.

von Walter (Gast)


Lesenswert?

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??

von Dieter Werner (Gast)


Lesenswert?

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.

von johnny.m (Gast)


Lesenswert?

> ...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.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

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.

von Sonic (Gast)


Lesenswert?

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;

von D. W. (dave) Benutzerseite


Lesenswert?

Oder wie gesagt ADLAR setzen. Dann findest du im High-Byte die oberne 
8bit und im Low-Byte die 2 LSB.

von Rolf Magnus (Gast)


Lesenswert?

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.


von Michael (Gast)


Lesenswert?

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.

von Walter (Gast)


Lesenswert?

@ 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.

von Rolf Magnus (Gast)


Lesenswert?

> 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.

von Walter (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.