Forum: Mikrocontroller und Digitale Elektronik BASCOM Taster und Relais


von Nette M. (nette-mann)


Lesenswert?

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

von Paul B. (paul_baumann)


Lesenswert?

Der Taster ist nicht enprellt.

MfG Paul

von Nette M. (nette-mann)


Lesenswert?

Soll laut BASCOM aber mit Pind.6 = 1 erledigt sein. Der zieht gegen 
Masse

von spess53 (Gast)


Lesenswert?

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

von Nette M. (nette-mann)


Lesenswert?

also 10k an den Taster oder wie

von spess53 (Gast)


Lesenswert?

Hi

>also 10k an den Taster oder wie

Ich habe geschrieben:  ...des internen Pull-Up-Widerstandes.

Und der liegt um die 50k.

MfG Spess

von Nette M. (nette-mann)


Lesenswert?

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

von AVRuser (Gast)


Lesenswert?

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?

von spess53 (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Nette M. (nette-mann)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von AVRuser (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.