Hallo, ich habe ein Problem.
Vor weg, was will ich machen ?
Habe ein Atmega32 der mit ein Display als Codeschloss funktioniert oder
andere Funktionen. Angeschlossen ist eine 3x4 Tastatur. Und einen
LED-Cube mit einem Atmega32.
Nun möchte ich dass, wenn ich auf meinen "Codeschloss" eine Auswahl
treffe das der Led-Cube das Muster abspielt....Was habe ich gemacht ?
Freien Pin vom "Codeschloss" Atmega32 mit dem Led_Cube verbunden (PD5).
Auch GND Verbunden.
Wenn ich nun wenn ich auf dem CS auswähle das der Cube Starten soll
passiert nix, die 5V High Signal liegt aber an...
Ich denke mal das ich einfach iwo ein Denk-Fehler drinnen habe.
Code :
in der Main:
1 | char test=PIND;
|
2 |
|
3 | for(int e=0;e<10000;e++)
|
4 | {
|
5 | if(test==0b00100000)
|
6 | {
|
7 | e=10000;
|
8 | }
|
9 | _delay_ms(4);
|
10 | }
|
so habe auch noch eine Tastatur Routine gestet aber auch mit wenig
Erfolg :
1 | void scan_key () {
|
2 |
|
3 |
|
4 | unsigned char key1,key2;
|
5 | key1 = PORTD;
|
6 | key1 ^= 0b11011111;
|
7 | key1 &= 0b11011111;
|
8 | if (key1 != 0){
|
9 | _delay_ms(4);
|
10 | key2 = PORTD;
|
11 | key2 ^=0b11011111;
|
12 | key2 &=0b11011111;
|
13 | if ((key1 == key2) & (key1 != lastkey)) {
|
14 | lastkey = key1;
|
15 | if (keybuf == 0){
|
16 | keybuf = key1;
|
17 | }
|
18 | }
|
19 | }
|
20 | else lastkey = 0;
|
21 | }
|
22 | /*---------------------------------------------------------------------------
|
23 | readkey(): Liefert den gelesenen Tastaturwert zurück
|
24 | ---------------------------------------------------------------------------*/
|
25 | char readkey()
|
26 | {
|
27 | char a;
|
28 | a = keybuf;
|
29 | if(a != 0)
|
30 | {
|
31 | keybuf = 0;
|
32 | return(a);
|
33 | }
|
34 | };
|
in der Main:
1 | for(int e=0;e<10000;e++)
|
2 | {
|
3 | if(readkey()==1)
|
4 | {
|
5 | e=10000;
|
6 | }
|
7 | _delay_ms(4);
|
8 | }
|
''Wenn der die Taste gedrückt wird soll er aus der Schleife
rausspringen..(Nur zum Test wecken eine for Schleife)