Forum: Mikrocontroller und Digitale Elektronik Unterschiedliche Pins bei AD Abfrage


von Draco (Gast)


Lesenswert?

So... ich tu mir also mein A/D Port wählen, funktioniert auch tadellos. 
Nur wie bekomme ich nun einen zweiten Port zum laufen? Kann mir jemand 
auf die Sprünge helfen?!

Hier die init mit Port Nr 6.:

1
void adcinit (void)
2
{
3
        ADMUX = 0x06;
4
        ADCSRA = ((1<<ADEN) | (1<<ADSC)| (1<<ADATE)) +7;
5
}

Hier die Messung.:
1
void messung (void)
2
{
3
 unsigned lowByte;
4
 unsigned highByte;
5
6
 ADCSRA |= ADIF;
7
 lowByte = ADCL;
8
 highByte = ADCH;
9
 result = highByte * 256 + lowByte;
10
}

von Flo (Gast)


Lesenswert?

nachdem du den ersten ADC abgefragt hast, musst du halt den zweiten 
ADC-Eingang einstellen (über ADMUX) und neu messen lassen.

von ADC (Gast)


Lesenswert?

wie wärs einfach damit:
1
void adcinit (uinnt8_t channel)
2
{
3
        ADMUX = channel;
4
        ADCSRA = ((1<<ADEN) | (1<<ADSC)| (1<<ADATE)) +7;
5
}

von Draco (Gast)


Lesenswert?

Achso... also gleichzeitig zwei oder mehrere Pins abfragen geht nicht. 
Gut gut, weiß ich bescheid.

Danke :D

von ADC (Gast)


Lesenswert?

Ach so, und in der messung() fehlt dir der Rückgabewert. Da solltest du 
schon uint16_t messung(void) oder so ähnlich schreiben.

von ADC (Gast)


Lesenswert?

unsigned lowByte;
 unsigned highByte;
????
da fehlt der Datentyp, bestimmt uint8_t dann kannst auch das unsigned 
wegnehmen (das u von uint8_t bedeutet schon unsigned)

von Jean (Gast)


Lesenswert?

ADC schrieb:
> unsigned lowByte;
>  unsigned highByte;
> ????
> da fehlt der Datentyp, bestimmt uint8_t dann kannst auch das unsigned
> wegnehmen (das u von uint8_t bedeutet schon unsigned)

Nö ist ein unsigned int.

Gruß

von Draco (Gast)


Lesenswert?

Ja ich programmiere sowieso in MicroC da gibt es den Datentyp uint8_t 
garnicht ;) MicroC interpretiert "unsigned" als normales 2 byte Integer 
ins positive (0 .. 65535) wobei in MicroC int als 2byte (-32768 .. 
32767) gewertet wird. In MicroC wäre demnach uint8_t das gleiche wie 
"unsigned short int"

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.