Atmel32 mit mehreren ADC Channels

OP #1583425
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
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
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

Eine eigene Frage? Dieser Thread ist über 16 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.