Atmega168PA ADC6/ADC7

Gast #4556226
Lesenswert?
• ▲
▼
Hallo,

ich habe hier eine Platine mit mega168PA TQFP, auf der ADC6 und ADC7 zum 
messen der Versorgungsspannung und des Stroms verwendet wird.

Nun versuche ich dafür selber Code zu schreiben und bekomme immer 0x3ff 
heraus.

Die UART-Debug-Ausgabe und alles weitere läuft.
1
uint16_t adc_read() {
2
  ADMUX |= (1<<MUX1)|(1<<MUX2); // ADC6
3
  ADCSRA |= (1<<ADSC);
4
  while (ADCSRA & (1<<ADSC) ) {
5
    asm("nop");
6
  }
7
  return ADCW;
8
}
9

10

11
void adc_init() {  
12
   ADMUX = 0;  // external reference
13
   ADCSRA = 0;     // no prescaler
14
  ADCSRA |= (1<<ADEN);
15
  
16
  ADCSRA |= (1<<ADSC);  // dumy read
17
  while(ADCSRA & (1<<ADSC)) {
18
    asm("nop");
19
  }
20
  uint8_t temp =  ADCW;
21
}

Die Referenz ist 1,235V (extern). Wenn ich nun 1.1V (Vbg) (MUX1,2,3=1) 
versuche zu bekommen, dann kommt da auch 0x3ff heraus.

Ich hoffe, mir kann jemand einen Tipp geben, was ich falsch mache...
Gast #4556262
Lesenswert?
• ▲
▼
Ein Blick ins Datenblatt und du siehst dass 0x3FF kein zufälliger Wert 
ist:
The reference voltage for the ADC (VREF) indicates the conversion range 
for the ADC. Single ended channels
that exceed VREF will result in codes close to 0x3FF.

Wie oft wandelst du denn? Der Erste Wert nach dem Umstellen der 
Referenzspannung soll verworfen werden:
The first ADC conversion
result after switching reference voltage source may be inaccurate, and 
the user is advised to discard this result.
Gast #4556277
Lesenswert?
• ▲
▼
ante schrieb:
>    ADCSRA = 0;     // no prescaler

Absicht? Mit welchem Takt läuft der µC? Außerdem schon wieder so ein 
unvollständiges Programm. Man kürzt das eventuell zu lange Programm so 
weit, daß der Fehler gerade noch auftaucht und fragt dann mit einem 
kompilierbaren Code nach Hilfe. Alles andere empfinde ich als Faulheit 
und man mag gar nicht antworten.

"By default, the successive approximation circuitry requires an input 
clock frequency between 50kHz and 200kHz to
get maximum resolution. If a lower resolution than 10 bits is needed, 
the input clock frequency to the ADC can be
higher than 200kHz to get a higher sample rate."

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.