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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.