Hallo zusammmen , ich habe vor 3 Tagen erst mit dem Programmieren von AVR's in Assembler begonnen und nun suche ich Hilfe. Bei einem größeren Projekt ( Röhrenprüfgerät )möchte ich mit einem Mikrocontroller div. Mess. und Steuerungen durchführen .Da ich absoluter Neuling auf diesem Gebiet bin, habe ich die einzeln Aufgaben erst einmal auf einzelne Programme verteilt, die ich später wenn alle einzeln laufen zu einem Programm zusammen geführt werden sollen . So ist der große Plan ( Bernd hat einen Plan ) . Zur Zeit arbeite ich mit einem ATMega 16 und mySmartUSB MK2 als Programmer und AVR-Studio 4 Der Aufbau ist noch auf Lochraster-Platine. Einige Programmteile sind schon fertig und laufen prima , LCD-Anzeige 4*20 mit div. „Menu-Einträgen“ ; Steuerung div. Relais über Taster bzw. über Programm. Die Steuerung der Relais soll in einer nächsten Stufe über I2C erfolgen , da über 60 -65 Relais angesteuert werden müssen. Nun zu meinem Problem : Für die Eingabe verschiedener Werte möchte ich eine 4*3 Tasten-Matrix verwenden .Geht zu Zeit nur teilweise . Die Tastenreihen 1 , 4 , 7 , * und 2 , 5 , 8 , 0 funktionieren prima (zur Zeit noch ohne entprellen , kommt noch ).Bei der Reihe 3 , 6 , 9 , # wird ein Tastenanschlag festgestellt , aber ständig der Code A7 im Display angezeigt , egal was ich am Code ändere .Meine Frage : Was ist am Code falsch oder bin ich zu blöd ??? Wäre schön wenn jemand mal sich die Sache anschauen würde und mir meine Fehler zeigen würde.Wie schon geschrieben , ich bin erst 3 Tage dabei. Mit freundlichem Gruß Bernd
ist das so richtig: ldi temp4,0b00011111 ; PB4 = 0 out tasteOut,temp4 Otto
Danke für die schnellen Hinweise. Werde es gleich mal austesten und gebe dann wieder Antwort
Hallo , Travel Rec. leider hat das auch nicht geholfen.Es erscheint noch immer A7 in der Anzeige Otto , richtig,war ein Fehler von mir.Aber auch hier keine Änderung,in der Anzeige steht immer noch A7 Gruß Bernd
Hallo Otto , bei dem ersten Start bleibt das Feld leer bis die erste Taste (1,4,7,2,5,8 ) betätigt wird. Der richtige Code bleibt bis zur nächsten Tastenbetätigung im Display stehen. Wenn ich von zB von 2 auf 5 drücke,dann erscheint A7 wenn ich dann zB die 8 drücke erscheind die 8 und bleibt dort auch stehen bis eine andere Taste gedrückt wird. Gruß
Hallo Bernd, 1. räume Dein Programm ein wenig auf - dann ist der Fehler einfacher zu finden 2.ori temp4,0b11110000 ; obere Bits maskieren cpi temp4,0b11111111 ; ein Key in dieser Spalte? brne KeyRowFound ; Spalte gefunden ein OR maskiert keine Bits, sondern "odert" welche dazu kommt ein Bit hinzu, wird die Bedingung nie erfüllt Otto
Hallo zusammen, habe nach langen suchen den Fehler endlich gefunden.Die Spalte mit den Tasten 3,6,9,# konnte nie zur Anzeige kommen,da das durch einen Sprung-Befehl verhindert wurde. Kleiner Fehler,große Wirkung. Nun muß ich noch die Entprellung hinbekommen. Geht da eigentlich auch die "Bulletproof" Routine ???????????? Danke allen die mir geholfen haben. Auszug aus dem Programm : in temp4,tasteInp ; letzte Zeile lesen ori temp4,0b11110000 ; obere Bits maskieren cpi temp4,0b11111111 ; ein Key in dieser Spalte? ??? brne keinetaste ; nicht gefunden KeyRowFound: ; Spalte ist gefunden lsr temp4 ; schiebe Bit 0 in das Carry-Flag brcc KeyFound adiw ZL,1 ; zeige auf naechsten Tastencode rjmp KeyRowFound ; weiter schieben
Bernd Freytag wrote: > Nun muß ich noch die Entprellung hinbekommen. > Geht da eigentlich auch die "Bulletproof" Routine ???????????? Ja geht, wenn man jede Taste in ein Bit umwandelt: Beitrag "Tastenmatrix auslesen über nur 2 Leitungen" 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.