Table of Contents

Pins

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.

Datentypen

Funktionen

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

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);
	}
}