Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR reagiert nicht auf Tastendruck
Hallo
Ich habe das Problem dass mein AVR den Tastendruck vollkommen kalt lässt...
Die Taster sind zwischen Masse und AVR Eingang geschalten.
Hier der Code
Declare Sub t_0
Declare Sub t_1
Portd.4 = 1
Portd.5 = 1
Do
Debounce Pind.4 , 0 , t_0 , Sub
Debounce Pind.5 , 0 , t_1 , Sub
Loop
End
Sub t_0
Waitms 2000
End Sub
Sub t_1
Waitms 4000
End Sub
Klaus_0168
12.06.2005, 00:45
Hi quad,
abgesehen vom entprellen und warten macht Dein Programm nichts.
Welche Reaktion hast Du erwartet ?
Zu den Tastern fällt mir das Thema Pull-Up-Widerstände ein. Die wurden vor kurzem hier ausreichend diskutiert.
Port d.4 und d.5 sind definiert, werden aber nicht weiter verwendet. Welche Funktion sollten diese Pin's ausführen ??
Gruß Klaus
Ich habe die Aktionen die der AVR machen sollte absichtlich durch Waitms xxxx ersetzt. Spielt ja keine Rolle und das ist übersichtlicher als wenn ich nun 10 Zeilen Code einsetze.
PC4 und PC5 sind meine Eingänge für die 2 Taster
Klaus_0168
12.06.2005, 01:30
Hi quad,
sorry wegen der Pins, da war ich wohl von Blindheit erschlagen.
Das Beispielprogramm DEBOUN.BAS ist folgendermasen aufgebaut.
'-----------------------------------------------------
' DEBOUN.BAS
' Demonstrates DEBOUNCE
'-----------------------------------------------------
Config Debounce = 30 'when the config statement is not used a default of 25mS will be used
'Debounce Pind.0 , 1 , Pr 'try this for branching when high(1)
Debounce Pind.0 , 0 , Pr , Sub
Debounce Pind.0 , 0 , Pr , Sub
'When Pind.0 goes low jump to subroutine Pr
'Pind.0 must go high again before it jumps again
'to the label Pr when Pind.0 is low
Debounce Pind.0 , 1 , Pr 'no branch
Debounce Pind.0 , 1 , Pr 'will result in a return without gosub
End
Pr:
Print "PIND.0 was/is low"
Return
Demnach liegt Dein Problem in der Definition der Subroutine.
Der Anfang der Subroutine beginnt mit einer Markendefinition und endet mit einem Return.
mit :
Declare Sub t_0
Declare Sub t_1
Portd.4 = 1
Portd.5 = 1
Do
Debounce Pind.4 , 0 , t_0 , Sub
Debounce Pind.5 , 0 , t_1 , Sub
Loop
End
t_0 :
Waitms 2000
Return
t_1 :
Waitms 4000
Return
müsste es funktionieren.
Gruß Klaus
Mein Programm sieht nun so aus aber es geht immer noch nicht?!
Sag was du willst, aber es muß was mit den Tastenanschlüssen auf sich haben. Das Programm kann da nichts dafür.
Wenn die Pins nicht wenigstens EINMAL auf High stehen, tut der debounce nix.
Wie meinst du das?
Also wie gesagt, ich bin Anfänger in der Sache ich kenne mich da noch nicht so super aus.
Die Taster sind an den richtigen Pins angeschlossen und hängen, ich sags nochmal kurz, auf Masse.
Oder muss ich die an 5V hängen?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.