Zitat Zitat von Felix G
Also das musst du aber mal genauer erklären, denn irgendwie sehe ich da kein Problem !?

Wenn mir bei Port A die Bezeichnung PORTA nicht gefällt,
und ich der Meinung bin daß EIERSALAT viel besser passen würde,
dann reicht doch ein einfaches #define EIERSALAT PORTA

klar, wenn ich schon im ganzen Projekt überall mit PORTA gearbeitet habe ists ein bischen nervig,
dann muss man halt ein paar Sekunden Zeit investieren und replace drüberjagen.
...und dabei alle anderen PORTA überheinern, die nix damit zu tun haben. Niemand wird ernsthaft "PORTA" oder ähnliches direkt benutzen. Ein
#define EIERSALAT PORTA
reicht idR nicht aus. Wenn, dann ist angesagt
#define EIERSALAT_PORT PORTA
#define EIERSALAT_PIN PINA
#define EIERSALAT_DDR DDRA
#define EIERSALAT_BIT 5
// oder
#define EIERSALAT_MASK (1<<5)

EIERSALAT_PORT &= ~EIERSALAT_MASK;
EIERSALAT_PORT &= ~(1 << EIERSALAT_BIT);
if (bit_is_set (EIERSALAT_PIN, EIERSALAT_BIT)) {...}


Zitat Zitat von Felix G
Dein Makro-Konstrukt finde ich ehrlichgesagt ein bischen übertrieben...
das ganze geht nämlich genauso gut auch ohne[...]
Mir ist durchaus bewusst, daß man C programmieren kann ohne einen Präprozessor zu benutzen oder Makros zu definieren.
Meine Makros find ich auch recht fett. Das ist mir aber inzwischen egal, ich benutz die schon lange und auf verschiedenen AVRs und musste seither nix mehr dran ändern.
For allem dann ist's praktisch, wenn es viele Ports sind und ich mit Port-Expandern arbeite. Bei über 50 Ports wird's dann schnell unübersichtlich... Umstellen von einem physikalischen Port auf einen via Expander oder zurück ändert nix an der C-Quelle, sondern nur in der Zuweisung einer anderen Port-Konstanten
Gleichzeitig produzieren die Makros vorbildlich dichten Code.

Daß Programmierstil Geschmackssache ist, steht natürlich ausser Frage.
Zugegebenermassen würd mir so was wie
#define PORT_TASTER PORTD.3
PORT_TASTER.DDR = 0; // als IN
PORT_TASTER.PORT = 1; // mit Pullup
if (0 == PORT_TASTER.PIN) ...
, was der OP im Sinn hatte, auch nicht schlecht gefallen, und es war die Motivation, ähnliche Konstrukte zu realisieren.