$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?
Soll laut BASCOM aber mit Pind.6 = 1 erledigt sein. Der zieht gegen Masse
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
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
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?
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
@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 ...
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.