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

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