Gast
#2822033
Hallo,
Ich hab seit gestern die Beiträge in dem Thread "Tastatur Matrix
entprellen" zum Thema Entprellen einer Matrix verfolgt.
Heute hab ich gesehen ihr hab den Thread dicht gemacht.
Der Threaderöffner hat sich aber auch angestellt!
Aber egal, jedenfalls hab ich auch vor in nächster Zeit ein Projekt mit
einer Tastaturmatrix zu realisieren.
Und da könnte ich diese Routine auch gut gebrauchen!
Mir ist allerdings noch nicht so richtig klar, wie ich die Routine in
die Timer gesteuerte Entprellung von Peter einbringe.
Vielleicht stehe ich auch gerade aufm Schlauch aber vielleicht könnte
mir kurz jemand helfen.
Ich hoffe ihr habt die Nase nicht völlig voll vom Matrix Entprellen und
verstoßt mich nicht gleich!
Also besten Dank schon mal im Voraus und einen Schönen Abend!
#include <avr/io.h>
#define ROW0 (1<<PB0)
#define ROW1 (1<<PB2)
#define COL0 (1<<PB1)
#define COL1 (1<<PB3)
#define NOP() _asm_ volatile("nop"::)
uint8_t keyscan()
{
uint8_t val;
DDRB &= ~(ROW0 | ROW1 | COL0 | COL1); // Inputs
PORTB |= ROW0 | ROW1 | COL0 | COL1; // with pullup
PORTB &= ~COL0; // Low
DDRB |= COL0; // Output
NOP(); // load Input latch !
val = (PINB & (ROW0 | ROW1)) << 1; // Bit 1, 3
DDRB &= ~(ROW0 | ROW1 | COL0 | COL1); // Inputs
PORTB |= ROW0 | ROW1 | COL0 | COL1; // with pullup
PORTB &= ~COL1; // Low
DDRB |= COL1; // Output
NOP(); // load Input latch !
val |= PINB & (ROW0 | ROW1); // add Bit 0, 2
return val;
}