Rocco L. schrieb:
> Habe es jetzt so gelöst, aber so richtig gefallen tut es mir nicht, da
> es zu lang ist:
> //B0 un B1 als Ausgänge, B2 und B3 als Eingänge:
> MOTOR_DDR = 0xFF //erst mal alles Ausgänge
> MOTOR_DDR &= ~((1 << DDB2) | (1 << DDB3));
Wenn MOTOR_DDR direkt dem entsprechenden Port entspricht, hast Du ein
Problem. Du schaltest alle Pins auf Ausgang und treibst damit auf den
Pins, die Du als Eingang haben willst, gegen die externe Beschaltung
(wenn auch für kurze Zeit).
Wenn es Dir 'nur' darum geht, zu dokumentieren das Du spezielle Pins als
Eingang beschaltest, dann würde ich Deine erste Variante vorziehen. Du
darfst an dieser Stelle halt nur eine echte Zuweisung haben (so wie Du
es auch geschrieben hast). Wenn Du nachträglich einzelne Bits setzen
oder löschen willst, dann mußt Du die Zuweisung mit "|=" zum Setzen von
Bits und mit "&=" zum Löschen von Bits verwenden.
In eine Zeile geht es natürlich auch, ist aber sehr unleserlich:
1 | MOTOR_DDR = (MOTOR_DDR | (1 << DDB0) | (1 << DDB1)) & ~( (1 << DDB2) | (1 << DDB3) );
|