Forum: Mikrocontroller und Digitale Elektronik Matrix 3x7 Auswerten / AtMega 8515


von Daniel (Gast)


Lesenswert?

Hallo,

Ich habe hier ein 7x3 Tasten-Matrix die ich gerne über meinen AtMega 
auswerten lassen will.

Das Prinzip der Tasten-Matrix ist mir klar, die 7 Zeilen mit je 3 Tasten 
sind über 10K an VCC verbunden und sitzen an PC0-7

Die 3 Spalten sitzen an PB0 - PB2 und ziehen jeweils den Pegel auf "+5V" 
wenn eine der Tasten in der Spalte gedrückt wird.

Wie kann ich denn nun die Tastenmatrix bequem in C auswerten?

Hab bereits mit dem Code schon angefangen, aber komm leider nicht mehr 
weiter..

Soll ich mit einem Timer Arbeiten? Evtl. mit Interupts?

Danke!
1
#include <stdlib.h>
2
#include <avr/io.h>
3
#include "lcd_lib.h"
4
5
#define KEY_COL0 PORTB2
6
#define KEY_COL1 PORTB1
7
#define KEY_COL2 PORTB0
8
#define KEY_ROW0 PORTC0
9
#define KEY_ROW1 PORTC1
10
#define KEY_ROW2 PORTC2
11
#define KEY_ROW3 PORTC3
12
#define KEY_ROW4 PORTC4
13
#define KEY_ROW5 PORTC5
14
#define KEY_ROW6 PORTC6
15
#define KEY_ROW7 PORTC7
16
17
18
void init_keypad(void)
19
{
20
  // PC0 - 7 / Zeilen
21
  // PB0 - 2 / Reihen
22
23
  DDRC = 0xff; // PC0-7 Ausgänge
24
  DDRB &= ~ ( (1<<DDB0) | (1 << DDB1) | (1 << DDB2)); // PB 0 - 2 Als Eingänge setzen;
25
  PORTB |= (1<< PB0) | (1<< PB1) | (1<<PB2);
26
}

Ab hier komm ich leider nicht mehr weiter!

von Peter D. (peda)


Lesenswert?

Einfach ne 3x4 Lösung auf 3*7 pimpen, z.B. diese hier:

Beitrag "Re: Tastenmatrix 3x4 mittels Interrupt abfragen?"


Peter

von Daniel (Gast)


Lesenswert?

Hallo Peter,

Vielen dank, werd das auf jedenfall ausprobieren, ich denke mal aufgrund 
der Abläufe wird wohl eine Interupt Routine am einfachsten sein?

Daniel

von Peter D. (peda)


Lesenswert?

Daniel schrieb:
> Vielen dank, werd das auf jedenfall ausprobieren, ich denke mal aufgrund
> der Abläufe wird wohl eine Interupt Routine am einfachsten sein?

Stimmt, ein Timerinterrupt ist dafür der übliche Weg, da man ja noch 
entprellen will.


Peter

von Daniel (Gast)


Lesenswert?

Mir fehlts jetzt leider an dem Verständnis der Auswertung der Zeilen und 
Zahlen...

Kann mir das jemand genauer Erläutern?

Ich habe 3 Spalten mit 7 Zeilen..

Danke :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.