This is an old revision of the document!
Pins Bibliothek ist ein einfacher weg um mit den AVR digitalen input-output pins zu operieren. Der Benutzer kann eine Pin-zugehörige Variable erstellen und mit dieser Variable alle Pin Operationen machen. Damit benötigt man keine Registernamen und Bitindizes, wie es in der Direct-Register-Access-Methode vorkommt. Der Pin-Port und Index müssen nur einmal spezifiziert werden, daher sind Änderungen einfach zu vollziehen.
Um das effizienteste Programm zu bekommen sollten pin Variablen konstant sein und sollten zu Beginn des Programms initialisiert werden. Das Initialisieren kan mit der Makrofunktion PIN gemacht werden, wobei der erste Parameter der Port ist (großes A, B, C, etc) und der Andere der Pin Index (0 bis 7).Nur existierende Pins und Ports können genutzt werden.
Konfiguriert Pin als Output. Parameter:
Konfiguriert Pin als Input ohne Pull-up Widerstand. Parameter:
Konfiguriert Pin als Input mit Pull-up Widerstand. Parameter:
Setzt Output Pin high. Parameter:
Setzt Output Pin low. Parameter:
Invertiert Output pin state. Parameter:
Setzt Output Pin zum gewünschten Zustand. Parameter:
Holt Pinwert. Parameter:
Liest den Pinwert durch den Switch-Debounce-Filter. das Filtern benötigt mind. 8 ms und kann bis zu 100 ms benötigen, jenachdem wann das Bouncing endet. Falls es nicht endet gibt es false aus. Funktionen nutzen Softwareverzögerung. Parameter:
Beispiel um einen Pinwert zu erhalten und zu setzen. Pin PC0 Wert wird invertiert und an Pin PC3 angeschlossen.
#include <homelab/pin.h> pin output_pin = PIN(C, 3); pin input_pin = PIN(C, 0); int main(void) { bool value; // Konfiguriert Pin als Output-Pin pin_setup_output(output_pin); // Konfiguriert Pin als Input Pin mit Pull-up pin_setup_input_with_pullup(input_pin); // Endlosschleife while (true) { // Getting an input pin value value = pin_get_value(input_pin); // Setting an output pin value pin_set_to(output_pin, !value); } }