Hey Sternts, danke und :

Zitat Zitat von sternst
Wenn du mehrere Pins an einem Port auf einen bestimmten Wert setzen willst, ohne die anderen Pins zu beeinflussen, dann sieht das z.B. so aus
(Bit 0 und 1 von var an Pin 2 und 3 von PORTD ausgeben):
Code:
PORTD = (PORTD & 0b11110011) | ((var<<2) & 0b00001100);
Aber Achtung: wenn diese "anderen Pins" in einem Interrupt verändert werden, dann muss die Zeile natürlich atomar gekapselt werden.
wie sollte die zuweisung aussehen für uint16_t var?:
(Bit 0 und 1 von var an Pin 2 und 3 von PORTD ausgeben):

PORTD = (PORTD & 0b11110011) | (uint8_t ((var<<2) & 0b00001100));
PORTD = (PORTD & 0b11110011) | (uint8_t(var<<2) & 0b00001100);
PORTD = (PORTD & 0b11110011) | ((var<<2) & 0b0000000000001100);//oder &0x000C;


Danke