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
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
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?
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
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