$regfile = "m8def.dat" 'ATmega8 $crystal = 4000000 '4 MHz $hwstack = 100 Config Pind.6 = Input Config Portb.0 = Output Pind.6 = 1 Dim An as Bit Do If Pind.6 = 0 Then An = 0 else An = 1 End If If An = 0 Then Portb.0 = 0 Else Portb.0 = 1 End If Loop an Portb.0 hängt ein Relais mit Transistor und einer Diode in Sperrrichtung an Pind.6 ein Taster Problem ist nun, das das Relais willkürlich schaltet und nicht nur dann wenn ich den Taster drücke. Woran hängts?
Der Taster ist nicht enprellt. MfG Paul
Soll laut BASCOM aber mit Pind.6 = 1 erledigt sein. Der zieht gegen Masse
Gast
#1704243
Hi >Soll laut BASCOM aber mit Pind.6 = 1 erledigt sein. Der zieht gegen >Masse Du kannst PIND keinen Wert zuweisen. Vermutlich verwechselst du das mit dem Einschalten des internen Pull-Up-Widerstandes. Das geht aber mit PortD.6 = 1. Aber mit Entprellen hat das nichts zu tun. MfG Spess
also 10k an den Taster oder wie
Gast
#1704249
Hi
>also 10k an den Taster oder wie
Ich habe geschrieben: ...des internen Pull-Up-Widerstandes.
Und der liegt um die 50k.
MfG Spess
Also Portd.6 = 1 oder wie jetzt weil laut http://mitchsoft.de/Elektronik/Projects/AVR/Tips/tip001.html stimmt das eig so wie ich es hab
Gast
#1704260
Hallo, wenn du die Zeile > Pind.6 = 1 änderst in >> Portd.6 = 1 so wird der interne Pull-Up eingeschaltet. > (Das Prellen) Soll laut BASCOM aber mit Pind.6 = 1 erledigt sein. Das halte ich für ein Gerücht; BASCOM hat spezielle Routinen zum Entprellen (Stichwort: Debounce). Was wird mit dem Relais denn geschaltet?
Gast
#1704264
Hi
>stimmt das eig so wie ich es hab
Das lese ich aber anders. Komplette Sätze incl. Groß- und
Kleinschreibung wären auch nicht schlecht.
MfG Spess
Nette Mann schrieb: > Soll laut BASCOM aber mit Pind.6 = 1 erledigt sein. Der zieht gegen > Masse Ach Quatsch, Blödsinn, Unfug, totaler Mumpitz. Entprellen ist das A und O jeder Realtime Programmierung. Man ist leider allseits von Geräten umgeben, deren Programmierer alle nur Hochstapler sind und ihr Handwerk grundsätzlich nicht beherrschen. Bascom machts Dir leicht und gibt Dir den Befehl "Debounce", funktioniert ähnlich meinem Beitrag "Entprellen für Anfänger" Solange Du nicht die Super-Duper Version (8 Tasten gleichzeitg, nix Warten) benutzt, nimm wenigstens den. Peter
If Pind.6 = 0 Then Toggle An End If If An = 0 Then Vcc = 0 Else Vcc = 1 End If If Vcc = 0 Then Portb.0 = 0 Else Portb.0 = 1 End If so funzt es auch mit Config Pind.6 = Input Portd.6 = 1
P.S.: Mag vielleicht hart klingen, aber ich habe mich gerade wieder mal furchtbar über die miese Software des Drehgebers meiner super teuren Kaffemaschine geärgert. Ich muß das Ding wohl zurückbringen, sonst lernen die Deppen das Programmieren ja nie. Peter
Gast
#1704285
@Nette Mann: Was soll daran nun besser sein? Der erste If-Block ist überflüssig; er hat keine zusätzliche Wirkung im Vergleich zu vorher (ausser CPU-Zeit zu vergeuden). Der zweite Block mit der Variable "An" statt "Vcc" reicht aus. Ausserdem fehlt immer noch die Entprellung des Tasters; das Toggeln des Bits "An" wird sonst mehrfach ausgeführt ...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.