ADC Kanal umschalten ATMEGA8

Gast #3699024
Hallo,
ich habe folgendes Problem der µC schaltet mir nicht die Kanäle um.
Ich habe auch jeden Pin einzeln getestet, dann funktioniert alles.
Im Moment bekomme ich den selben Wert von ADC0 auch für ADC1 angezeigt.

Zu Testzwecken wird im "main" nur temperatur_regeln(); aufgerufen

1
void temperatur_regeln (void)
2
{
3

4

5
lcd_clrscr();
6

7
char zulauf_bin_c[17];
8
char ablauf_bin_c[17];
9

10
uint16_t zulauf_bin= 0  ;  
11
uint16_t ablauf_bin = 0  ;
12

13

14

15
zulauf_bin= adc_lesen(0);  
16
_delay_ms(50);
17
ablauf_bin= adc_lesen(1);
18

19

20
itoa(zulauf_bin,zulauf_bin_c,10);
21
itoa(ablauf_bin,ablauf_bin_c,10);
22

23
lcd_gotoxy(0,0);
24
lcd_puts(ablauf_bin_c);
25
lcd_gotoxy(0,1);
26
lcd_puts(zulauf_bin_c);
27

28

29
lcd_gotoxy(6,1);
30
lcd_puts("ADC0");
31
lcd_gotoxy(6,0);
32
lcd_puts("ADC1");
33
};

Einmal wird bei Start des ganzem Programmes der ADC konfiguriert. Der 
Atmega8 hängt an einem 16Mhz Quarz.
1
ADCSRA |= (1<<ADEN) | (1<<ADPS0)|(1<<ADPS1) |(1<<ADPS2);// ADC Konfigurieren
2
ADMUX |= (1<<REFS0);
1
uint16_t adc_lesen (uint8_t mux)// liest adc aus 10b mux kann gewählt werden
2
{
3
uint16_t adc_bin = 0;  
4

5

6
  
7
if (mux==0) // adc 0
8
  {
9
  ADMUX |= (0<<MUX0);   // Auf ADC-Pin0 stellen (1<<ADLAR)
10
  };
11

12
if (mux==1)
13
  {
14
  
15
  ADMUX |= (1<<MUX0);   // Auf ADC-Pin0 stellen (1<<ADLAR)  
16
  };
17
  
18

19
ADCSRA |=(1<<ADSC); // Adc starten
20
while ((ADCSRA & (1<<ADSC) )) {       }  // auf Abschluss der Konvertierung warten
21

22

23

24
  
25

26
adc_bin = ADCW;
27

28

29

30
return(adc_bin)  ;
31
  
32
};


Was mach ich falsch? Ich überlege mir schon lange ob ich mir einen Jtag 
debugger holen soll, speziell den ICE3 von Atmel. Ist der was?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.