Die Pins-Bibliothek erleichtert die Arbeit mit digitalen AVR In- und Output-Pins. Der Nutzer kann eine zu einem Pin gehörige Variable erstellen und mit dieser sämtliche Pin-Operationen vornehmen. Auf diese Weise entfällt die Verwendung von Registernamen oder Bit-Indizes, wie es beim Programmieren mit direktem Zugriff auf das Register nötig ist. Port und Index des Pins müssen nur einmalig festgelegt werden, sodass Änderungen leicht implementiert werden können.
Konfiguriert einen Pin als Output. Parameter:
Konfiguriert einen Pin als Input ohne Pull-up Widerstand. Parameter:
Konfiguriert einen Pin als Input mit Pull-up Widerstand. Parameter:
Setzt einen Output-Pin high. Parameter:
Setzt einen Output-Pin low. Parameter:
Invertiert den Status eines Output-Pins. Parameter:
Setzt einen Output-Pin in den gewünschten Zustand. Parameter:
Holt Pin-Wert. Parameter:
Liest den Pinwert durch den Switch-Debounce-Filter. Das Filtern benötigt mindestens 8 ms und kann bis zu 100 ms benötigen, je nachdem wann das Bouncing endet. Falls es nicht endet wird false ausgegeben. Funktionen nutzen Softwareverzögerung. Parameter:
Beispiel um einen Pin-Wert 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 Widerstand pin_setup_input_with_pullup(input_pin); // Endlosschleife while (true) { // Wert eines Input-Pins erhalten value = pin_get_value(input_pin); // Wert für den Output-Pin setzen pin_set_to(output_pin, !value); } }