Forum: Mikrocontroller und Digitale Elektronik Wie spricht man die ADC-Kanäle 8-13 an?


von Shark (Gast)


Lesenswert?

Hallo Leute,

Wie werden die ADC-Kanäle 8-13 bei einem ATmega16u4 angesprochen laut 
Datenblatt (Seite 309) soll 1<<ADLAR und die MUX bit 0 bis 4 z.B. für 
Kanal ADC13 00101.

Über UART kommt bei mir immer 0 raus, an dem uC-Pin liegt aber schon 
eine Spannung von ca. 2V!!!(nachgemessen) weisst jemand voran das liegen 
könnte?
1
/* ADC initialisieren */
2
void ADC_Init(void) {
3
 
4
  uint16_t result;
5
 
6
  // Referenzspannung fuer den ADC waehlen:
7
  ADMUX = (0<<REFS1) | (0<<REFS0) | (1<<ADLAR);
8
  
9
  // Bit ADFR ("free running") in ADCSRA steht beim Einschalten
10
  // schon auf 0, also single conversion
11
  ADCSRA =  (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);     // Frequenzvorteiler 
12
                                                      //16MHz Frequenz
13
  ADCSRA |= (1<<ADEN);                  // ADC aktivieren
14
 
15
 
16
  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung 
17
  while (ADCSRA & (1<<ADSC) ) {}        // auf Abschluss der Konvertierung warten
18
  /* ADCW muss einmal gelesen werden, sonst wird Ergebnis der naechsten
19
     Wandlung nicht uebernommen. */
20
  result = ADCW;
21
}
22
 
23
/* ADC Einzelmessung */
24
uint16_t ADC_Read(int8_t channel)
25
{
26
  // Kanal waehlen, ohne andere Bits zu beeinflussen
27
  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
28
  ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
29
  while (ADCSRA & (1<<ADSC) ) {}  // auf Abschluss der Konvertierung warten
30
  return ADCW;                    // ADC auslesen und zurueckgeben
31
}
32
33
34
...
35
36
37
int main()
38
{
39
  uint16_t adcval;
40
  InitUART(9600);
41
  ADC_Init();
42
43
44
  while(1){  
45
  
46
     adcval = ADC_Read(5);
47
48
...

von Karl H. (kbuchegg)


Lesenswert?

Shark schrieb:
> Hallo Leute,
>
> Wie werden die ADC-Kanäle 8-13 bei einem ATmega16u4 angesprochen laut
> Datenblatt (Seite 309) soll 1<<ADLAR und die MUX bit 0 bis 4 z.B. für
> Kanal ADC13 00101.

ADLAR, wieso ADLAR?

Die Fussnote unter der Tabelle (bzw. die Registerbeschreibungen) nicht 
gelesen?
MUX5 ist im Register ADCSRB!

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.