Hi
Hi, da musst du mir jetzt etwas weiter auf die Sprünge helfen. Verstehe grad nicht ganz was du meinst?
Du hast in Deinem Code
const boolean muxChannel[16][4] = {
{0, 0, 0, 0}, //channel 0
{1, 0, 0, 0}, //channel 1
{0, 1, 0, 0}, //channel 2
{1, 1, 0, 0}, //channel 3
{0, 0, 1, 0}, //channel 4
{1, 0, 1, 0}, //channel 5
{0, 1, 1, 0}, //channel 6
{1, 1, 1, 0}, //channel 7
{0, 0, 0, 1}, //channel 8
{1, 0, 0, 1}, //channel 9
{0, 1, 0, 1}, //channel 10
{1, 1, 0, 1}, //channel 11
{0, 0, 1, 1}, //channel 12
{1, 0, 1, 1}, //channel 13
{0, 1, 1, 1}, //channel 14
{1, 1, 1, 1} //channel 15
};
Darin sind für die Channel 0 bis 15 vier Zaheln eingetragen, Die wohl den Muxer entsprechend ansteuern sollen.
Wenn man diese Zahlen umdreht (also statt 1000 -> 0001), sind Das die binären Zahlen des entsprechenden Channel.
0000 = 0
0001 = 1 (nur Bit 0 gesetzt)
0010 = 2
0011 = 3
...
1101 = 13 (8 + 4 + 1)
1110 = 14 (Bit 1 bis 3 gesetzt)
1111 = 15
Bisher habe ich selber nicht viel mit analogen Inputs gemacht, meine damaligen Blicke zeigten aber, daß die entsprechenden Bits in den Registern ebenfalls 'zusammen hängen' (zumindest im ATtiny45, Register ADMUX (0x07), Bits 0...3).
Somit kannst Du dieses Register mit der Channel-Nummer 'ver-ODER-n' und ver-UND-en (setzen der fehlenden Bits, löschen der überzähligen Bits).
MfG