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

  • pin Datentyp für Adressen von Pin-Registern und Bitmasken. Um das effizienteste Programm zu entwickeln, sollten pin Variablen konstant sein und am Anfang des Programmcodes initialisiert werden. Letzteres kann mit der Makrofunktion PIN durchgeführt werden, deren erster Parameter der Buchstabe des Ports ist (A, B, C, etc.) und zweiter Parameter der Pin-Index (0 – 7). Es können nur bestehende Ports und Pins verwendet werden.

Funktionen

  • void pin_setup_output(pin pin)

Konfiguriert einen Pin als Output. Parameter:

  • pin - Pin Variable.
  • void pin_setup_input(pin pin)

Konfiguriert einen Pin als Input ohne Pull-up Widerstand. Parameter:

  • pin - Pin Variable.
  • void pin_setup_input_with_pullup(pin pin)

Konfiguriert einen Pin als Input mit Pull-up Widerstand. Parameter:

  • pin - Pin Variable.
  • void pin_set(pin pin)

Setzt einen Output-Pin high. Parameter:

  • pin - Pin Variable.
  • void pin_clear(pin pin)

Setzt einen Output-Pin low. Parameter:

  • pin - Pin Variable.
  • void pin_toggle(pin pin)

Invertiert den Status eines Output-Pins. Parameter:

  • pin - Pin Variable.
  • void pin_set_to(pin pin, bool value)

Setzt einen Output-Pin in den gewünschten Zustand. Parameter:

  • pin - Pin Variable.
  • value - Gewünschter Status als Bool'scher Wert.
  • bool pin_get_value(pin pin)

Holt Pin-Wert. Parameter:

  • pin - Pin Variable.
  • Gibt Bool'schen Wert true wenn Pin high und false wenn Pin low ist aus.
  • bool pin_get_debounced_value(pin pin)

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:

  • pin - Pin Variable.
  • Gibt dem Pin den Bool'schen Wert true wenn der Pin high ist und false wenn der Pin low oder unbestimmt ist.

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);
	}
}
de/software/homelab/library/pin.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0