Rejestry portów w Arduino
Porty rejestrów pozwalają na niskopoziomowe manipulowanie pinami I/O.
Arduino posiada 3 porty:
B (piny 8 – 13)
C (analogowe piny wejściowe)
D (piny 0 – 7)
Każdy port (B,C,D) jest kontrolowany przez 3 rejestry, x to znak portu (BCD)
DDRx – określa kierunek pinu INPUT [0] / OUTPUT [1] (może być odczytywany i nadpisywany)
PORTx – sygnał LOW / HIGH(może być odczytywany i nadpisywany)
PINx – zczytuje stan wejściowy INPUT (może być tylko odczytywany)
Tabela ustawień pinów na podstawie rejestrów DDR i PORT
DDRx | PORTx | I/O State | PULLUP |
0 | 0 | INPUT | NO |
0 | 1 | INPUT | YES |
1 | 0 | OUTPUT | NO |
1 | 1 | OUTPUT | YES |
DDRD = B11111100; // ustawia kierunek pinów dla portu D (0-7), pin 0 i 1 - INPUT, piny 2-7 OUTPUT
PORTD = B11100000; // ustawia sygnał dla pinów portu D, pin 0-4 LOW, pin 5-7 HIGH
W Arduino istnieje wiele stałych (lub makr), które odnoszą się do rejestrów, np:
DDB0 – to bit nr 0 w rejestrze DDRB (czyli pierwszy pin w sekcji B)
Manipulowanie pinami odpowiedzialnymi za komunikację (0,1) jest niewskazane.