Arduino Taster Entprellung

Entprellung eines Tasters mit den Zeitoptionen Mindeste Druckzeit, Entprellzeit, Abtastrate (indirekte Entprellung).

 

MCP23017 Deustch

MCP 23017 Kurz und Bündig.
Allgemeine Register.

IODIR
Direction Register, bestimmt ob ein Pin Input oder Output ist.
1=Input, 0=Output

IPOL
Polaritätsregister, bestimmt die Polarität/Invertierung eines Pins
1=Invertiert, 0=nicht Invertiert

GPIO
InputOutput Register,
LESEN: Eingänge einlesen.
SCHREIBEN: wird ans OLAT Output Register weitergeleitet.
0=LOW, 1=HIGH

OLAT
Output Latch Register,
SCHREIBEN: Setzt die Ausgänge der als Ausgang definierten Pins.
LESEN: Gibt den zuletzt gesetzten Wert zurück.
0=LOW, 1=HIGH

GPPU
Pullup Register, aktiviert den Pullup am Pin.
1=HIGH, 0=LOW

Interrupt Register Konfiguration

Kleine Falle:
Die Interruptverwendung beinhaltet 3 Register. GPINTVEN, DEFVAL, INTCON welche alle 3 gesetzt werden müssen.
Wenn der Interrupt für einen Pin mit GPINTVEN aktiviert wird, entscheidet INTCON die Datenquelle des Signalvergleichs.
Wenn INTCON 0 ist, wird der Pin mit dem in DEFVAL gesetzten Signal 0/1 verglichen,
sollte INTCON 1 sein wird auf den letzten Pin Status verglichen.

INTERRUPT LOGIK:

Wenn ein Interrupt generiert wird werden die aktuellen Pin Werte in das INTCAP Register gesichert. Der Interrupt wird gelöscht wenn das LSB Byte beim Lesen der Register GPIO oder INTCAP übertragen wurde.

GPINTEN
InterruptOnChange Event Register, Aktiviert den Interrupt für einen Pin.
1=Aktiv, 0=Inaktiv

INTCON
Interrupt Control Register, bestimmt die Quelle der Interrupt On Change Quelle
1= Vergleich auf das DEFVAL Register,0= Letzten Status des Pins

DEFVAL
Default Value Register, bestimmt den Standard Vergleichswert des Pins wenn INTCON=1
1= HIGH, 0=LOW

Interrupt Register Status/Information

INTF
Interrupt Flag Register, beinhaltet den Status der Interruptauslösung.
1=Interrupt ausgelöst, 0=Kein Interrupt vorhanden

INTCAP
Interrupt Capt Register, Speichert den Wert des letzten Pin Status bei Interrupt Auslösung.
1=HIGH, 0=LOW

Allgemeine Konfiguration

IOCON
Zwischen Port A und B geteiltes Konfigurationsregister

Bit7: BANK, entscheidet die Sortierung der IO Register,
1=Zuerst alle A Register, danach alle B register
0= Beispiel, GPIOA,GPIOB,IPOLA,IPOLB

Bit6: MIRROR,
1=A und B teilen sich beide Interrupt Pins INTA und INTB
0=INTA ist für A und INTB für B

Bit5: SEQOP, Sequentielles Lesen/Schreiben
1= Deaktiviert
0=Aktiviert

Bit4: DISSLW, i2C Slew Rate Clock Stretching Ein/Ausschalten
1=Deaktiviert
0=Aktiviert

Bit3: HAEN: Address Pins aktivieren/Deaktivieren
1=Aktiviert0=Deaktiviert

Bit2: ODR Konfiguration INTA, INTB Open-Drain Option
1=Open-Drain
0=Aktiver Treiber

Bit1: INTPOL Interrupt PIN Polarität, Invertiert die Interrupt Pins.

Bit0: Nicht benutzt.