Forum: Mikrocontroller und Digitale Elektronik ATmega88 ADC prescaler Einstellungen


von Alexander S. (alexander_s58)


Lesenswert?

Hallo,

ich habe ein Verständniss Problem wie genau der prescaler anhand der 3 
BITs funktioniert

http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf
Seite 246 , bzw. "23.4 Prescaling and Conversion Timing"

Durch setzen von ADPS[0-2] in ADCSRA kann ich den prescaler einstellen.
Laut Bild im PDF kann ich 7 verschiedene prescaler einstellen

Mit folgendem C-Code setze ich den prescaler auf ck/8
1
ADCSRA = (1<<ADPS1) | (1<<ADPS0);

Nach meinem Verständniss müsste das allerdings ck/16 sein
1
ADPS2  ADPS1  ADPS0
2
0      0      0    ck/2
3
0      0      1    ck/4
4
0      1      0    ck/8
5
0      1      1    ck/16
6
1      0      0    ck/32
7
1      0      1    ck/64
8
1      1      1    ck/128

Könnte mir da wer auf die Sprünge helfen ?

mfg

Alex

von David M. (md2k7)


Lesenswert?

Alexander S. schrieb:
> Mit folgendem C-Code setze ich den prescaler auf ck/8
>
1
ADCSRA = (1<<ADPS1) | (1<<ADPS0);

Ja.

>
> Nach meinem Verständniss müsste das allerdings ck/16 sein

Nein. Schau dir die Tabelle nochmal an, zumindest in meinem Datenblatt 
schaut die so aus:
1
ADPS2  ADPS1  ADPS0
2
0      0      0    ck/2
3
0      0      1    ck/2
4
0      1      0    ck/4
5
0      1      1    ck/8
6
1      0      0    ck/16
7
1      0      1    ck/32
8
1      1      0    ck/64
9
1      1      1    ck/128

Nachtrag: das verlinkte Datenblatt stimmt mit meinem überein.

Gruß
David

von Alexander S. (alexander_s58)


Lesenswert?

Danke David,

da hab ich doch glatt 1 bit vergessen...

Ich geh jetzt in die Ecke mich schämen ;)

mfg

Alex

von Helfer (Gast)


Lesenswert?

Schu auf die Versionsnummer des Datenblatts.

In meiner lokalen Kopie (2545M–AVR–09/07) gilt:

1
ADPS2 ADPS1 ADPS0 Division Factor
2
0     1     1     8

also passend zu

1
ADCSRA = (1<<ADPS1) | (1<<ADPS0);

von Helfer (Gast)


Lesenswert?

1
s/Schu/Schau/

von Uhu U. (uhu)


Lesenswert?

David Madl schrieb:
> Nein. Schau dir die Tabelle nochmal an, zumindest in meinem Datenblatt
> schaut die so aus:
> ADPS2  ADPS1  ADPS0
> 0      0      0    ck/2
> 0      0      1    ck/2
> 0      1      0    ck/4
> 0      1      1    ck/8
> 1      0      0    ck/16
> 1      0      1    ck/32
> 1      1      0    ck/64
> 1      1      1    ck/128

Bei mir auch. Aber stimmt es tatsachlich, daß 0 und 1 beide den 
Prescaler auf 2 setzten, oder ist das ein Fehler im Datenblatt?

von Uhu U. (uhu)


Lesenswert?

Was dafür spricht, daß es kein Fehler ist:
1
By default, the successive approximation circuitry requires an input clock
2
frequency between 50 kHz and 200 kHz to get maximum resolution.
und
1
The ADC module contains a prescaler, which generates an acceptable ADC clock
2
frequency from any CPU frequency above 100 kHz.

Ein Prescaler 1 ist bei der Spezifikation nicht nötig.

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.