Forum: Compiler & IDEs 4x4 Tastenmatrix Problem


von Ysilon X. (newcomer_xy)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich wollte heute das Programm von Peter Dannegger, das von Marc L. für 
4x4 Tastaturen verändert wurde, ausprobieren, doch es hat nicht 
funktioniert.

Beim compilieren gab es keine Fehler doch die LEDs auf meinem 
Experimentierboard haben nicht geleuchtet.
Da ich mich nicht wirklich gut mit dem Programmieren auskenne, habe ich 
die Ausgabe an den LEDs vom ursprünglichen 3x4 Programm in mein Programm 
hineinkopiert.

Da ich mich, wie schon gesagt, nicht gut auskenne, weiß ich nicht ob das 
so funktionieren kann oder nicht.

Ich wäre sehr froh über Tipps, wie man dieses Programm zum laufen bringt 
(Anzeige an den LEDs, welche Taste gedrückt wurde).

Vielen Dank schon mal im Vorraus. :)

PS:
Ich verwende einen Atmega8

LEDs an den PORTC 0,1,3,4,5

Tastatur:
Zeilen auf PORTD 0-3
Spalten auf PORTD 4-7

von Erleuchteter (Gast)


Lesenswert?

Kanst du sicher ausschließen dass die Hardware nicht geht? Haben die 
LEDs in dieser Konstellation denn schon mal überhaupt geleuchtet?

von Avr (Gast)


Lesenswert?

Bring doch erst mal das original 3x4 zum Läufen!
Bis 4x4 ist es da nun ja nicht mehr weit.

von Ysilon X. (newcomer_xy)


Lesenswert?

Hallo nochmal!

Erst einmal Danke für die schnellen Antworten. Tut mir leid, dass ich 
erst jetzt zurückschreibe, aber ich kann nur Freitags weiterarbeiten.

Ich habe die Hardware mit einem einfachem Programm getestet, wo nur eine 
Led leuchten soll und da hat es funktioniert.
Das Keypad müsste auch richtig angeschlossen sein.

Habt ihr noch weiter Vorschläge, woran es liegen könnte?

Das Original 3x4 Programm habe ich leider nicht gefunden, ich hatte ja 
nur die veränderte Version von Marc L. Hat da vllt jemand einen Link für 
mich?

Nochmals danke!

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Dein Problem ist das hier:
1
#define KEY0      0    // Taste:
2
#define KEY1      1    // Taste:
3
#define KEY2      2    // Taste:
4
#define  KEY3      3    // Taste:
5
#define KEY4      4    // Taste:
6
#define KEY5      5    // Taste:
7
#define  KEY6      6    // Taste:
8
#define KEY7      7    // Taste:
9
#define KEY8      8    // Taste:
10
#define  KEY9      9    // Taste:
11
#define KEY10     10  // Taste:
12
#define KEY11     11  // Taste:
13
#define  KEY12     12  // Taste:
14
#define KEY13     13  // Taste:
15
#define KEY14     14  // Taste:
16
#define KEY15     15  // Taste:
Das sollte eher so aussehen:
1
#define KEY1            (1L << 12)
2
#define KEY2            (1L << 8)
3
#define KEY3            (1L << 4)
4
#define KEY4            (1L << 0)
5
...
Den Rest darfst Du dir selber zurechtdröseln. Dann hast Du auch das 
Programm verstanden.

mfg

von Peter D. (peda)


Lesenswert?

Um einen Fehler zu finden, teilt man das Programm auf und läßt sich 
Zwischenwerte anzeigen.
Z.B. gib mal der Wert von key_scan() über die UART oder ein LCD aus.
Und wenn das stimmt, geht man weiter.

Nicht immer ein Programm als unteilbares Atom ansehen, sonst findet man 
die Fehler nie.


Peter

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.