Direkter Zugriff auf Arduino Port-Pins möglich?

Hallo Leute,

ist es möglich auf die Ardunio Port-Pins der PORT bzw. PIN Register direkt zuzugreifen? Ich bin kein Fan von digitalWrite()- digitalRead()- Funktionen, auch wenn es Vorteile gibt.

Ein 8bit-Port lässt sich ja z.B. mit PORTB = B00000001; ansprechen.

Allerdings bekomme ich bei Zugriff auf die Port-Pins mit z.B. PORTB.0 = 1; von der Arduino-IDE immer Fehlermeldungen. Maskierung wollte ich in diesem Fall eigentlich vermeiden.

Danke im Voraus!

Maskierung wollte ich in diesem Fall eigentlich vermeiden.

Geht nicht anders. Diese Syntax wie es sie in manchen Assemblern gibt geht nicht

Bits werden mit einem Oder gesetzt:

PORTB |= B00000001

Und mit einem negierten Und gelöscht:

PORTB &= ~B00000001

Wenn man die Bit-Nummer verwenden will geht es mit Schieben:

PORTB |= (1 << 5);
PORTB &= ~(1 << 5);

Für das Schieben gibt es die Makros _BV() (bit value) oder bit().

Dafür kann man sich Makros schreiben. Die gibt es auch fertig von der IDE. bitSet(), bitClear() und bitWrite(). Und bitRead() für das Lesen. Wobei die mit 32 Bit arbeiten. Wenn man es selbst macht geht es also etwas effizienter.

Allerdings bekomme ich bei Zugriff auf die Port-Pins mit z.B. PORTB.0 = 1; von der Arduino-IDE immer Fehlermeldungen.

C++ bietet schon die Möglichkeit Bitfelder zu definieren, und auch dann so anzusprechen.
Aber nicht einfach so mit Bordmitteln.
Das will geschrieben werden.

Alternativ:
Vielleicht ist das ja was für dich: [Projekt] Schnelle Digital Eingabe/Ausgabe