Die Funktion gibt dir einen Wert zwischen 0 und 1023 zurück, was du
ändern solltes ist:
1 | //falsch
|
2 | ADMUX |= (1<<REFS1) | (1<<REFS0);
|
3 | // richtig
|
4 | ADMUX |= (1<<REFS0);
|
Sonst hast du die internen 2,ungradV als Referenzspannung und keine 5
Volt.
1 | uint16_t wert;
|
2 | wert = ReadChannel(4); // PC4 als Channel ausgewählt
|
3 | wert = wert / (1023 / 350); // 1023/350 ist 2,922... Problem!!
|
Wenn du deinen Wert durch 3 teilst, dann bekommst du 0-341, durch 2
0-511...
Ziemlich nahe würdest du hiermit an deine 350 kommen ( 0-355 ):
1 | uint16_t wert;
|
2 | wert = ReadChannel(4);
|
3 | wert *= 8;
|
4 | wert /= 23;
|
Bzw.: du teilst result am ende von ReadChannel() nicht durch 4, sondern
nimmst result mal 2, spart zeit :-)