ik schrieb:
> kann man in c den 10 bit ADC-Wert in eine 16 bit variable lesen ohne hin
> und her zu verschieben?
C kennt keine 10-Bit Variablen. Das ADC-Ergebnis liegt in 2 Registern,
also in zwei Bytes, bildet also einen 16-Bit Wert (bei dem Werte über
1023 nicht vorkommen). Du musst also nur die beiden Bytes zu einem Int
zusammensetzen. Da wird nix verschoben, jedenfalls nicht bitweise über
die CPU.
Aber frag' doch mal die Doku zu AVRGCC, ich halte es für sehr
wahrscheinlich, dass der Compiler das selbst macht, wenn Du einen (in C
vereinbarten) Namen für den ADC (als Alias-16-Bit-Register) angibst.
Beim Timer1 ist das statt TCNT1H und TCNT1L TCNT1, beim ADC geht das
glaube nicht so einfach, da ADC ein Schlüsselword in ASM ist.
...