PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eingang auf 0V oder +5V abfragen



Healther
28.05.2008, 10:27
Hallo PIC-Gemeinde,

ich bin relativ neu im PIC-Bereich und habe schon das erste Problem:
Ich habe einen PIC 16F887 (auf dem PICkit2 44-Pin Demo Board) und möchte damit den RB3 abfragen. Und zwar hab ich es so gedacht:

Ich lege +VDD über einen Widerstand auf den RB3 (über einen Taster).
Solange der Taster nicht gedrückt ist soll die LED leuchten. Wird der Taster gedrückt soll sie ausgehen, und wieder angehen sobald ich ihn loslasse usw.
Die LED zum Leuchten bringen schaffe ich 8-) allerdings hab ich ein Problem mit der Abfrage des RB3 Eingangs. Hier ist mein Code aus dem MPLab:


#include <p16F887.inc>

org 0

;Ausgang bei RD
bsf STATUS,RP0
bcf TRISD,0
bcf STATUS,RP0

goto MAIN_LOOP


LED_ON:
;LED anschalten
bsf PORTD,0
goto MAIN_LOOP


LED_OFF:
;LED ausschalten
bcf PORTD,0
goto MAIN_LOOP


MAIN_LOOP:
;Hauptschleife, hier kommt die Abfrage
BTFSC PORTB,3
goto LED_OFF
goto LED_ON



goto $

end

Kann mir jemand sagen wo der Fehler liegt?

Vielen Dank für Hilfe,
Healther

kante23
28.05.2008, 18:09
Hey, was ist denn genau dein problem? Würd auf den aller ersten blick sagen, du solltest dich ma um prellfreiheit deines tasters bemühen (such mal nach prellen + taster). Entweder software oder hardwareseitig. Ob das jetzt aber dein problem behebt (was ich ja leider nicht herrauslesen kann) weis ich nich
lg

Lif79
28.05.2008, 20:57
Hast du denn den Pic passend konfiguriert?

Der Code ist soweit ich das sehe ok, ein entprellen des tasters ist nicht nötig für diese schaltung...

Ich würde allerding dem pin noch einen pulldownwiderstand verpassen um den sicher auf 0 zu zihen.

ohne das ich das datenblatt genau gelesen habe, aber wenn ich sehe was der port alles kann:

3.4.4.4 RB3/AN9/PGM/C12IN2-
Figure 3-9 shows the diagram for this pin. This pin is
configurable to function as one of the following:
• a general purpose I/O
• an analog input for the ADC
• Low-voltage In-Circuit Serial Programming enable
pin
• an analog input to Comparator C1 or C2

Healther
28.05.2008, 23:51
Hallo ihr beiden,
vielen Dank für eure Ansätze. Das eigentliche Problem war dass der Eingang nicht auf 0V bzw. 5V reagierte, er hatte mehr oder weniger einen undefinierten Zustand. Wie ich heraus fand (in der Zwischenzeit) lag es daran, dass ich den Pin nicht als digitalen Input definiert habe. Habe es jetzt kurzfristig von RB3 auf einen der RD Pins gelegt (die sind als digitaler Input/Output definiert) um die Funktion zu testen, und der Code funktioniert dann auch. Also hab ich einfach nur den Fehler am falschen Ort gesucht.... ;)

Trotzdem nochmal vielen Dank.
Andreas