Forum: Mikrocontroller und Digitale Elektronik AVR C ADC 10 bit auslesen Funktion


von Martin F. (martin_f70)


Lesenswert?

Hallo!
Ich habe mir eine (wie es beim Arduino gibt) analogRead Funktion gebaut. 
Vorher muss man analogSetup. Hier mein Code:
1
void analogSetup(uint8_t pin){
2
    ADMUX = 0x00;
3
    ADCSRA = (1<<ADEN)|(1<<ADPS2);
4
    ADMUX = (1<<REFS0)|(1<<ADLAR);
5
    ADMUX |= pin;
6
}
7
uint8_t analogRead(uint9_t pin){
8
    ADCSRA |= (1<<ADSC);
9
    while(ADCSRA&(1<<ADSC));
10
    return ADCH;
11
}

WIe kann ich das ändern damit es in 10bit ließt?

von Georg G. (df2au)


Lesenswert?

uint16_t analogRead(uint9_t pin){
     ADCSRA |= (1<<ADSC);
     while(ADCSRA&(1<<ADSC));
     return ADC;
 }

Der Compiler ist schlau genug, dann HI und LO in der richtigen 
Reihenfolge zu lesen.

von Martin F. (martin_f70)


Lesenswert?

und dann gibt er mir zahlen bis 1024 aus? Super, und was ist noch beim 
Setup mit ADLAR? Muss das auf 0 sein oder habe ich da was falsches 
gelesen?

>>Der Compiler ist schlau genug, dann HI und LO in der richtigen
Reihenfolge zu lesen.

Ja, ok^^

: Bearbeitet durch User
von Georg G. (df2au)


Lesenswert?

Das darfst du setzen, wie du möchtest. Wenn dich nur die oberen 8 Bit 
interessieren, ist linksbündig besser, sonst eben rechtsbündig.
Du musst selbst wissen, wie du deine Zahlen repräsentieren möchtest.

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.