Forum: Mikrocontroller und Digitale Elektronik Atmel32 mit mehreren ADC Channels


von Willi W. (willi_woebsi)


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

von Stefan B. (stefan) Benutzerseite


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.

von Jean P. (fubu1000)


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ß

von Willi W. (willi_woebsi)


Lesenswert?

danke für die hilfe

hab zwei GP2D12 vonsharp
geile dinger...

habmal n kleines delay rein tanund schonfunkts :)

vielen dank!
lg

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.