Atmel32 mit mehreren ADC Channels

OP #1583425
Lesenswert?

Grüß euch,

ich habe folgendes Problem:

Ich programmiere im AVR Studio meinen Atmel Atmega32 und hab 2 Sensoren.
Die Spannung der beide Sensoren kann in verschiedenen Programmen 
digitalisiert werden. Problem ist das Digitalisieren hintereinander.

Der zweite Sensorwert wird nicht digitalisier. IM ADCH und ADCL ist noch 
immer das Ergebnis des ersten Sensors.

Ich lasse mir das Ergebnis des zweiten Sensors auf 8 LEDs anzeigen. 
Diese verändern sich aber nur wenn ich den Sensor 1 bearbeite.

erster sensor:
1
short int adc()
2
{
3
  ADMUX=0b01100001;  //ADC 1
4
  short int result;
5
  ADCSRA=0b11000000;  //Starten der digitalisierung
6

7
  _delay_us(10);
8
  while(ADCSRA>=192)
9
  {
10
  }  
11
  
12
  result=ADCH;
13
  return result;
14

15
}
zweiter sensor:
1
short int adc_vorne()
2
{
3
  ADMUX=0b01100100;  //ADC 4
4
  _delay_ms(150);
5
  short int result;
6
  ADCSRA=0b11000000;  //Starten der digitalisierung
7

8
  
9
  _delay_us(10);
10
  while(ADCSRA>=192)
11
  {
12
  }  
13
  
14
  result=ADCH;
15
  return result; //auf LEDs
16

17
}

Weiss wer warum das nicht hinhaut???

lg
willi
Persönliche Seite #1583474
Lesenswert?

Diese Woche ist anscheinend ADC Themenwoche :)

Das kann verschiedene Gründe haben u.a. sind bei der Kanalumschaltung 
Wartezeiten zu beachten, bis sich der ADC-Wert stabilisiert hat. Im 
AVR-GCC-Tutorial ist eine Routine zur Kanalumschaltung drin. Deine 
Initialisierung mit den Absolutwerten statt symbolischen Werten habe ich 
aus Bequemlichkeit nicht kontrolliert.
#1583523
Lesenswert?

Stefan B. schrieb:
> Grüß euch,
Dito.

> Ich programmiere im AVR Studio meinen Atmel Atmega32 und hab 2 Sensoren.
> Die Spannung der beide Sensoren kann in verschiedenen Programmen
> digitalisiert werden. Problem ist das Digitalisieren hintereinander.
Was für Sensoren denn ???

> Der zweite Sensorwert wird nicht digitalisier. IM ADCH und ADCL ist noch
> immer das Ergebnis des ersten Sensors.
Du liest in deinem Programm auch nur die oberen 2 bits aus, oder haste 
ADLAR gesetzt ???

> Ich lasse mir das Ergebnis des zweiten Sensors auf 8 LEDs anzeigen.
> Diese verändern sich aber nur wenn ich den Sensor 1 bearbeite.
Daher vermute ich mal du hast ADLAR gesetzt.
Vor der Kanal umschaltung würde ich das ADEN bit setzten um den ADC 
auszuschalten.

Gruß

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