Schönes neues Jahre an alle. Irgend jemand soll anfangen, und ich fändt doch an. als Anfänger versuch ich der Tutorial Tasten nach zu machen, und ich stoss auf ein menge fehler. ich habe das erste programm versucht aber wir erwartet reagiert mein Taten nicht so wie es sein sollt. ich comme auf die Enprellung mit abfrage, aber blinken die LED an dauer ohne das ich etwas machen kann. obtisch prüfung meiner Code schein in Ordnung sein. kann mann mich noch helfen? ich benüzt der STK 500 und AmelStudio 6.2 Vielen Danke für euer hilfe Claude
Claude44 schrieb: > obtisch prüfung meiner Code schein in Ordnung sein. kann mann mich noch > helfen? Nein.
Prüfe, ob "m8def.inc" zu deinem Board passt. Was sagt der Assembler, welche Fehlercodes gibt er aus? Gruss Robert
Danke für dein Antwort Der m8def.inf pass zu mein Board, und ich habe kein fehler meldung, nur das beim starten des Programms, alle LED blinken, sollen aber nicht (ausser 6 und 7 aus) und die Tasten bleiben ohne effect. Claude
Das ist der Lik," https://www.mikrocontroller.net/articles/AVR-Tutorial:_Tasten" Mein Quellcode /* * Tasten_1.asm Das folgende Programm soll bei jedem Tastendruck eines Tasters am Port D (egal welcher Pin) eine LED am Port B0 in den jeweils anderen Zustand umschalten: ************************************************* Nun kann es natürlich sein, dass ein neuer Taster zunächst überhaupt nicht prellt. Ist der Taster vom Hersteller nicht explizit als 'prellfreier Taster' verkauft worden, besteht aber kein Grund zur Freude. Auch wenn der Taster heute noch nicht prellt, irgendwann wird er es tun. Dann nämlich, wenn die Kontaktfeder ein wenig ihrer Spannung verliert und ausleiert, bzw. wenn sich die Kontaktflächen durch häufige Benutzung abgewetzt haben. **************************************************** Entprellung Aus diesem Grund müssen Tasten entprellt werden. Im Prinzip kann eine Entprellung sehr einfach durchgeführt werden. Ein 'Tastendruck' wird nicht bei der Erkennung der ersten Flanke akzeptiert, sondern es wird noch eine zeitlang gewartet. Ist nach Ablauf dieser Zeitdauer die Taste immer noch gedrückt, dann wird diese Flanke als Tastendruck akzeptiert und ausgewertet. */ ;************************************ ; Include datei ;************************************ .Include "m8def.inc" ;************************************ ; Definition ;************************************ .def key_old = r3 .def key_now = r4 .def temp1 = r17 .def temp2 = r18 .equ key_pin = PIND .equ key_port = PORTD .equ key_ddr = DDRD .equ led_port = PORTB .equ led_ddr = DDRB .equ LED = 0 ;************************************ ; I)nitialiesierung ;************************************ ldi temp1, 1<<LED out led_ddr, temp1 ; Port B als Ausgang ldi temp1, $00 ; Port D auf Eingaenge out key_ddr, temp1 ldi temp1, $FF ; die pull up einschalten out key_port, temp1 mov key_old, temp1 ; war kein taster gedruckt ;************************************* ; Programmstart ;************************************* Start: in key_now, key_pin ; Zustand der Taster holen mov temp1, key_now ; ud in temp1 sichern eor key_now, Key_old ; vorhergehenden Zustand XOR mov key_old, temp1 ; jetzign Zustand für den nächsten ; Schleifendurchlauf als alten Zustand merken breq Start ; ldi temp1, $FF ; ein bisschen warten wait1: ldi temp2, $FF wait2: dec temp2 brne wait2 dec temp1 brne wait1 ; nachsehen ob die Tast noch steht in temp1, key_pin and temp1, key_now brne Start in temp1, led_port ; der Zustande der LED umdrehen com temp1 out led_port,temp1 rjmp Start
Du hast das Programm assembliert. Mit welchem Ergebnis? Weleche Meldungen hat der Assembler ausgegeben, welche sonstigen Meldungen gibt es?
Und: welche Hardware? Wie sind die Tasten angeschlossen? Claude44 schrieb: > alle LED blinken, ... und die Tasten > bleiben ohne effect. Was sagt der Simulator zu dem Code?
:
Bearbeitet durch Moderator
mit der simulation ist es auch ein sach, ich muss über 500 zyclen warten, die initialiesierung schein OK zu sein. aber als anfänger, ich kann nicht beurteilen ob die interrupt richtig reagiere, und der rest auch nicht
Wie schon erklärt, ich habe kein Fehlermeldung, der SDK 500 ist OK, wie die Tasten angeschlossen sind, ich muss der Shaltplan der SDK nach sehen, Ich habe gerade probiert die Tastenverbindungen zu trennen, und blinkt immer weiter, ich denk an ein Fehler in die Software Claude
Claude44 schrieb: > ich kann nicht beurteilen ob die interrupt richtig reagiere Ich sehe im Programm keinen Interrupt. Gruß Dietrich
diag schrieb: > Claude44 schrieb: >> obtisch prüfung meiner Code schein in Ordnung sein. kann mann mich noch >> helfen? > > Nein. Hast du rechts Claude
Dietrich L. schrieb: > Ich sehe im Programm keinen Interrupt. Sorry, ich habe verwechsel von ein Andere Programm. aber es funktioniere trotzdem nicht, und es binkt immer weiter
Ich würde die Entprellung und Flankenauswertung erstmal nur für eine Taste programmieren und testen. Und wenn das zuverlässig funktioniert kann man es auf 2 Tasten erweitern.
Peter D. schrieb: > Ich würde die Entprellung und Flankenauswertung erstmal nur für eine > Taste programmieren und testen. Vielen Dank für dein Antwort, leider für mich ist es so, dass ich dieser Programm angegeben habe, ich möchte wissen warum es nicht functioniert, une für einzeltaste ist aufwindiger, da ich einzeln taste ansprechen muss. Ich habe andere programmen probiert, und alle funktionieren einwandfrei Claude
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.