PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pin als Input funktioniert nicht



Geistesblitz
09.11.2011, 23:51
Hallo Community
Ich bin gerade dabei, mit Bascom weiter herum zu experimentieren. Hab gerade erst letztes Wochenende mal ein ordentliches Experimentierboard zusammengelötet und teste es jetzt auf seine Funktionsfähigkeit. Ports als Output verwenden funktioniert hervorragend, allerdings bekomm ich keinen Input-Pin richtig konfiguriert. Programm sieht wie folgt aus:


$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600


Config Portc.0 = Input
Config Portc.1 = Output

Portc.0 = 1 'internen Pull-Up einschalten

Do
If Portc.0 = 1 Then
Portc.1 = 1
Else
Portc.1 = 0
End If
Loop

End

An Portc.0 ist ein Taster, an Portc.1 eine Led mit Vorwiderstand.
Leider tut sich nichts. Hab auch schon den Pin gewechselt, externen Pull-up gesetzt, einen anderen Controller eingesetzt, den Pin mittels Litze direkt mit Vss bzw. Gnd verbunden, nichts hilft :(
Pins funktonieren als Output wie gesagt top, aber irgendwas mach ich beim Konfigurieren als Input wohl falsch...

Sauerbruch
10.11.2011, 00:05
Dieses Problem könnte man schon fast als "Klassiker" bezeichnen:

Eingänge müssen immer über das PIN-Register abgefragt werden!
(PORTC.0 ist und bleibt 1 - damit hast Du ja den PullUP-Widerstand aktiviert!)

Also etwa so:

If PINC.0 = 1 then
PORTC.1 = 1
Else
PORTC.1 = 0
End if

Gruß,

Daniel


P.S.:

aber irgendwas mach ich beim Konfigurieren als Input wohl falsch...
Alle "Pins" haben nach dem Einschalten des Controller die Funktion eines Eingangs (weil in den DDR-Registern zunächst mal überall eine 0 drinsteht). Eine spezielle Konfiguration ist daher gar nicht nötig, wenn´s denn ein Eingang bleiben soll. Nur wenn der PullUp-Widerstand aktiviert werden oder der Anschluss als Ausgang konfiguriert werden soll, muss man das dem Controller explizit mitteilen.

Geistesblitz
10.11.2011, 08:45
Ah, ok, vielen Dank
PinC statt PortC ... das lässt sich in Beispielen auch leicht übersehen.
Nagut, dann hab ich wohl meine Antwort