PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TASTER



Björn
21.07.2005, 10:55
Moinsen! :D

Ich möchte einen Taster benutzen. Das eine Ende muss an einen freien PIN, das ist klar - das andere Ende an GND oder VCC?

Und welcher Source ist notwendig?
Ich hab noch sowas in Erinnerung:


...
Config PortA As Input

PortA.2 = 1

If PortA.2 = 1 Then....
...


Gruß, Björn

NRG
21.07.2005, 11:35
Hallo!!
Also du must an den taster GND anschließen!
Der Code zum Abfragen (beim mega8) wäre dann so:


$regfile = "m8def.dat"
$crystal = 1000000

Config porta =input

Do

If Pina.1 = 0 Then
......
usw.
loop
end


Hoffe ich konnte dir weiterhelfen! O:)

MFG

NRG

uwegw
21.07.2005, 13:07
und den pullup-widerstand solltest du noch aktivieren. nach dem config... noch porta.1 = 1

Björn
21.07.2005, 13:39
Jo das hab ich selbst noch rausgefunden :D

Geht jetzt...

Gruß, Björn

bubu0101
21.07.2005, 19:45
mit bascom 1.11.7.4 musste es
if pina.x=1 heissen

avatar
21.07.2005, 19:53
Taster haben leider die unangenehme Eigenschaft, dass sie gern prellen. Bei manchen Programmen kann das zum Problem werden :-k

Entprellen kannst du hardwaremäßig oder per Software :)

mx3
21.07.2005, 21:00
Hi


$regfile = "m8def.dat"
$crystal = 1000000

Config porta =input
porta.1 = 1

Do

If Pina.1 = 0 Then
Waitms 250 ' 1/4 Sek. Pause (genügt bei mir zum entprellen)
if Pina.1 = 0 Then ' mach was

......
usw.
loop
end

mfg,MX3

Memby
21.07.2005, 21:07
Ist doch eigendlich egal ob GND oder VCC. Hauptsache es sind eindeutige Signale! Wie du sie auswertest bleibt dir überlasssen.

NRG
19.02.2006, 15:22
hmmm weiß jemand wie ich das prog umschreiben muss, damit ich ein + signal auswerten kann?! also vcc?!
meins schaut so aus funzt aba nich!


$regfile = "m8def.dat"
$crystal = 8000000

Config Portc = Input
Portc.2 = 1
Config Portb = Output
Dim A As Integer
Do

If Pinc.2 = 1 Then
Set A
Else
Reset A
End If
If A = 1 Then
Portb.2 = 0
Portb.1 = 1
Else
Portb.1 = 0
Portb.2 = 1
End If

Loop
End

linux_80
19.02.2006, 16:30
Hallo,
ich würde mal überprüfen, was raus kommt wenn man ein Integer mit Set berarbeitet, ich denke mal da kommt nicht 1 raus.
Set ist normalerweise für Bitoperationen gedacht.

NRG
20.02.2006, 15:29
hmmm also selbst wenn ich es veränder funzt es net!!




$regfile = "m8def.dat"
$crystal = 8000000

Config Portc = Input
Portc.2 = 1
Config Portb = Output
Dim A As Integer
Do

If Pinc.2 = 1 Then
Portb.2 = 0
Portb.1 = 1
Else
Portb.2 = 0
Portb.1 = 1

End If

Loop
End



[glow=red:bb72ce7f22]
MFG

Nrgmc3[/glow:bb72ce7f22]

linux_80
20.02.2006, 21:15
So wie's ausschaut ist das Signal immer 1 wenn der Schalter nicht gedrückt ist, es wird also der Then-Teil ausgeführt.

Wie ist denn das alles verkabelt ?
Geht der Schalter gegen Masse wenn er gedrückt ist ?

chr-mt
20.02.2006, 21:29
Hi,
du machst in der Abfrage zweimal das gleiche.
...
Portb.2 = 0
Portb.1 = 1
Else
Portb.2 = 0
Portb.1 = 1
...

Da kann sich ja nix ändern ;)

Gruß
Christopher

NRG
21.02.2006, 13:08
upsi! ](*,)
doch selbst geändert geht es nich! ^^
@linux_80
"Geht der Schalter gegen Masse wenn er gedrückt ist ?"
Nein er soll ja gegen VCC gehen! des is ja grad des problem! ;)

MFG

Nrgmc3

T-Moe
21.02.2006, 14:34
Ganz einfach: ICs und Controler interpretieren kein Signal immer als 1. Wird der Schalter nicht gedrückt, existiert kein signal, da kein strom fließen kann, weil der Kreis einfach unterbrochen wird. Um 0 zu erhalten musst du Masse anlegen. D.h. dass er gegen Vcc geht ist nicht so einfach, wie es aussieht. Es sei denn, du benutzt ein IC zum negieren nach dem Schalter ;-)

chr-mt
21.02.2006, 14:46
Hi,
wenn du nach VCC schalten willst, solltest du den Pullup ausschalten und vom Pin einen Pulldown Widerstand gegen Masse machen.

Du setzt ja mit dem Pullup den Eingang High, da kann dann nix mehr mit VCC schalten, weil das ja auch High ist.
Muß also anders rum.

Gruß
christopher