Problem bei ADC mit ATMega2560 und Codevision

Gast #1583604
Steh grad mal wieder auf dem Schlauch :-/
Möchte 4 Analogkanäle folgendermaßen auslesen...
1
AK[3] = read_adc(3);
2
AK[4] = read_adc(4);
3
AK[5] = read_adc(5);
4
AK[6] = read_adc(6);
Wenn ich das so mache und dann den...
AK3 Wert verstelle wird der Wert von AK[4] verändert
AK4 Wert verstelle wird der Wert von AK[5] verändert
AK5 Wert verstelle wird der Wert von AK[6] verändert
AK6 Wert verstelle wird der Wert von AK[3] verändert

Die Codevision Funktion ist folgendermaßen...
1
// Read the 8 most significant bits
2
// of the AD conversion result
3
unsigned char read_adc(unsigned char adc_input)
4
{
5
ADMUX=(adc_input & 0x07) | (ADC_VREF_TYPE & 0xff);
6
if (adc_input & 0x08) ADCSRB |= 0x08;
7
else ADCSRB &= 0xf7;
8
// Delay needed for the stabilization of the ADC input voltage
9
delay_us(10);
10
// Start the AD conversion
11
ADCSRA|=0x40;
12
// Wait for the AD conversion to complete
13
while ((ADCSRA & 0x10)==0);
14
ADCSRA|=0x10;
15
return ADCH;
16
}

Denke mal die wird stimmen.

Wo ist mein Fehler?
#1583628
ersetze BITTE die Hex-Zahlen durch die Schreibweise

   (1<<ADEN)

sodass man nicht suchen muss, welche Bits

ADCSRA|=0x40;

hier überhaupt gesetzt werden.

auf welches Bit, wird hier
while ((ADCSRA & 0x10)==0);
gewartet?

(Jetzt bin ich mal zu faul, im Datenblatt zu suchen)
Gast #1583711
Ich sagte doch das ich den Code nicht geschrieben hatte.
Der ist von Codevision und der generiert ihn halt so.

Ist es nicht ADIF? Was soll es denn dann sein?
#1583717
Peter schrieb:
> Ich sagte doch das ich den Code nicht geschrieben hatte.
> Der ist von Codevision und der generiert ihn halt so.
>
> Ist es nicht ADIF? Was soll es denn dann sein?

War mein Fehler. Hab die Nibble durcheinandergeschmissen.
Es ist ADIF
(Ich werde mein Lebtag nicht verstehen, warum man da auf ADIF wartet 
anstat auf ADSC. Ist doch viel einfacher zu merken: Ich setze ADSC um 
die Wandlung zu starten und wenn sie fertig ist, fällt ADSC wieder auf 0 
zurück.


OK. Die Wandelfunktion sieht so nicht so schlecht aus (auch wenn ich den 
delay da drinnen nicht mag, aber der soll jetzt erst mal nicht das 
Problem sein)

Hilft wohl nichts. Da musst du mehr von deinem restlichen Programm 
zeigen.

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.