ADC Wandler ADCL

Gast #2027263
Lesenswert?

Hallo,

ich habe ein Problem mit meinem AD-Wandler. Ich wollte die 10 Bit 
auslesen und auf den Ports ausgeben. Also im unteren Code soll 
RegelspannungH ADCH ensprechen und RegelspannungL sollte ADCL 
entsprechen. Das Problem im ADCL steht nichts drin. Muss ich irgendwo 
bei der initialisierung auf 10 Bit stellen oder warum geht es nicht.

uint16_t adcval;
adcval = ReadChannel(2);
RegelspannungH = (uint8_t)(ADC>>8);
RegelspannungL = (uint8_t)(ADC<<8);

if ((RegelspannungL & 0x01)== 1)
PORTD |= (1<<6);
else
PORTD &= ~(1<<6);

if ((RegelspannungL & 0x02)== 1)
PORTD |= (1<<7);
else
PORTD &= ~(1<<7);

PORTC = RegelspannungH;
Gast #2027302
Lesenswert?

Das ist Quatsch. Du musst immer beide Register auslesen und zwar in der 
richtigen Reihenfolge.

Der Compiler macht's nicht anders, wenn Du den 16-Bit Wert ADC abfragst. 
Nur dass Du ihn dann halt umständlich wider in zwei 8-Bit Werte zerlegen 
musst.
Gast #2027313
Lesenswert?

Ich habe zum test ADCL auf PortC ausgeben, (ADCH auf PortC ging ohne 
Probleme) dann mit dem Oszi jeden Pin gemesen keine Änderungen alle 
bleiben auf 0.(ich habe natürlich die eingelesene Spannung verändert)

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