ADC Atmega8L - Unterschiede Atmega8?

OP #649300
Lesenswert?

Hallo,

ich betreibe einen M8L@3.3V mit dem Quellcode eines M8 der bei 5V läuft. 
Dabei fällt mir auf, dass der ADC bei 0-1650mV Werte von 0-777 liefert, 
und bei 1650-3300mV Werte von 1000-1777.
Ist das normal? Ich hätte schon erwartet, dass der Bereich 777-1000 auch 
ausgefüllt wird.
Oder mach ich irgendwo einen Fehler?

Eine weitere Sache die mir nicht ganz einleuchtet. Bei 10 Bit hab ich 
einen Bereich von 0-1023. Der ADC geht aber bis 1777. Warum?

Danke.
#649320
Lesenswert?

@ L. R. (badinode)

>ich betreibe einen M8L@3.3V mit dem Quellcode eines M8 der bei 5V läuft.
>Dabei fällt mir auf, dass der ADC bei 0-1650mV Werte von 0-777 liefert,
>und bei 1650-3300mV Werte von 1000-1777.
>Ist das normal?

Der ADC liefert sicher keine 1777. Denn der macht bestenfalls 10 Bit, 
sprich 1023 ist das Maximum.

>Oder mach ich irgendwo einen Fehler?

Wahscheinlich liefert deine Funktion schon ein in mV umgerechnetes 
Ergbnis. Und wenn der Code für 5V Betriebs-und Referenzspannung 
ausgelegt ist, dann klappt das mit 3.3V eben nicht.

>einen Bereich von 0-1023. Der ADC geht aber bis 1777. Warum?

Siehe oben.

Festkommaarithmetik

MfG
Falk
OP #649331
Lesenswert?

1
void adc_init(void) {
2
      ADMUX = 0b01000000;
3
      ADCSRA |= 0x80;
4
}
5

6
uint16_t readadchan(char n) {
7

8
      ADMUX = n;
9
      ADMUX |= 0x40;
10
      ADCSRA |= 0x44;
11

12
      while((ADCSRA & 0x40) !=0){};
13

14
      ADCSRA &= ~(0x44);
15
      return ADCW;
16
}

Das ist der Code. readadchan() wird öfters aufgerufen um zu mitteln.
Es findet keine Umrechnung in Spannungen oder sonstws statt. Ich gebe 
direkt den ADC-Wert aus.
OP #649365
Lesenswert?

Okay, nun nochmal für diejenigen, denen das vielleicht auch mal 
passieren sollte.

Der Fehler lag im
1
itoa(a, buf, 8);
. Hatte irrtümlicherweise angenommen, die 8 stünde für die Bufferlänge. 
Dabei steht sie für Octal. Also muss da eine 10 draus werden und gut is.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren