Hallo zusammen,
ich habe mir gerade eine Matrixtastatur 3x4 zusammengebaut. Ich möchte
mit dieser einen Atmega32 Controller ansteuern.
Ich habe folgendes Problem. Als Schalter habe ich Schließer verwendet.
Jeder Schalter ist mit VCC und 2 Ports verbunden.
Ich habe nur nicht bedacht, sobald ein Schalter gedrückt ist, dass sich
die Spannung in der kompletten Schaltung fortpflanzt.
Code:
#include <avr/io.h>
#include <avr/delay.h>
int main (void) {
DDRC = 0xff;
PORTC = 0x00;
while(1) {
/* Fuehre Aktion aus, wenn Bit Nr. 1 (das "zweite" Bit) in PINC
gesetzt (1) ist */
if (( PINC & (1<<PINC1)) && (PINC & (1<<PINC3)) ) {
/* Aktion */
PORTA = 0xff;
_delay_ms(262);
} else { PORTA = 0x00; }
}
return 0;
}
Wie das Problem entsteht weiss ich, wie ich es lösen kann jedoch nicht.
Könnt ihr mir dabei helfen?
Vielen Dank und Gruß,
Stefan
Gast
#1206285
http://www.fernando-heitor.de/index.php?option=com_smf&Itemid=121&topic=3941.msg20089#msg20089 Das Problem ist ohne Entkopplung der Taster nicht lösbar.
Wenn ich das also richtig sehe, dann kann ich die Schaltung über Software zum Funktionieren bringen?
Gast
#1206805
Mit Vcc und zwei Ports verbunden???? Was denn nun, diskrete Schalter oder Matrix?
Gast
#1206810
Hallo, ja, mein Fehler. Ich weiss wo der Fehler ist und kenne nun auch die Lösung. PIN 0..2 als Ausgang schalten PIN 3..6 als Eingang schalten wobei Pegel im Ruhezustand auf 5V log. 1 Zur Überprüfung dann die Ausgänge nach und nach auf 0 setzen, wenn ein Schalter gedrückt wurde, dann hat ein Eingang eine 0 stehen. Ich denke so müsste es funktionieren. Oder? Gruß Stefan
Gast
#1206819
Zu dem Thema Matrix-Tastatur gibt es eine (oder sogar zwei) Application Notes von Atmel. Suchen und angucken! Den einen Port (z.B. Spalten) schaltet man auf GND und am anderen (Zeilen) die Pull-Ups ein und als Eingang. Die Eingänge sind log.1 wenn keine Taste gedrückt wird. Das Spiel muss man dann noch in die andere Richtung treiben (Zeilen und Spalten vertauschen) und kann dann die Postition der gedrückten Taste sehr leicht erkennen. Probleme gibt es nur bei der Auswertung, wenn mehr als eine Taste gedrückt wird.
Vielen Dank, mal sehen ob ich die Matrix-Tastatur zum Laufen bringe ;-)) Gruß Stefan
Gast
#1206838
Wer ist Laufen? Kennt der sich damit aus?
Sorry, mein Fehler. Den Herr Laufen kenne ich noch nicht. Aber, da ich ein Anfänger bin, entschuldigt bitte die Wortwahl. Ich meinte gehen ;-)) wie es geht! Außerdem, bein uns im Schwabenland, sind das gängige Bezeichnungen ;-)) Gruß Stefan
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.