the datasheet does not state the Input High Current (minimum) required by the PIC to register a Logic 1. I tried with very 5V but a very low current and the pin does not register the input. I had to go through a 2n2222 transistor with at least 20mA for the pin to register a HIGH.
Anyone knows where I can get a resource on finding this pic electrical parameter?
thanks
the datasheet does not state the Input High Current (minimum) required by the PIC to register a Logic 1. I tried with very 5V but a very low current and the pin does not register the input. I had to go through a 2n2222 transistor with at least 20mA for the pin to register a HIGH.
Anyone knows where I can get a resource on finding this pic electrical parameter?
thanks
the datasheet does not state the Input High Current (minimum) required by the PIC to register a Logic 1. I tried with very 5V but a very low current and the pin does not register the input. I had to go through a 2n2222 transistor with at least 20mA for the pin to register a HIGH.
Anyone knows where I can get a resource on finding this pic electrical parameter?
thanks
hi,
Its CMOS technology, so the input impedance is very high.
To get the result you are stating suggests that you are doing something wrong in the test..
Make sure the pin is set as an input.
EDIT:
Nigel you beat me too it, those pills must be working.!
hi burt,
For the test result he found, the threshold voltage would not be a factor.
Even with 1meg from the input pin to +5V, the pin would pull up high. close to +5V.
thanks for the great replies. Indeed it was a TRIS overlook on my part. Thanks for catching it for me!=)
I am actually using my PIC to communicate with a Handphone. Everything's working okay and I'm adding a handshaking mechanism now. Attached is the connection diagram between the RTS pin of the handphone all the way to the PIC pin RB0.
I programmed RB0 to detect whenever the input goes LOW (modem gets disconnected) , that the RB0 interrupt would trigger , go to an ISR and at the ISR wait for RB0 to go high again before going back to the main program. At the point of disconnection in the ISR, an indicator ERROR LED lights up and goes off when RB0 goes high again.
The program works fine when I disconnect at point A, RB0 gets pulled down to GND and a good Logic 0 is detected. However, when I disconnect at point B (dislodging the phone from the cable head), the program does not work at all. I know for a fact that the RTS pin goes through the MAX3232 (internal to the cable) before going to RB0. If the RS232 input is left open (phone gets dislodged) , I probed the voltage and got approximately -1V.
Any ideas on how I can properly interface so that although I disconnect at point B, a good Logic '0' goes into RB0?
im attaching my ISR code just in case it's a software bug
Code:
IntServ:
btfss INTCON,INTF
goto notRB0
bcf PORTB,1 ;off CONNECTED LED
movwf old_w
swapf STATUS,w
movwf old_status
waitconnectback:
btfsc PORTB,0 ;wait for modem to connect again,else
goto connected_again ;on ERROR LED
bsf PORTB,2
goto waitconnectback
connected_again:
bsf PORTB,1 ;on CONNECTED LED again
bcf PORTB,2 ;ERROR LED cleared
exitISR:
swapf old_status,w
movfw STATUS
swapf old_w,f
swapf old_w,w
notRB0:
bcf INTCON,INTF
retfie
this is the ISR initialization
Code:
BANK1
bcf OPTION_REG, INTEDG ;Interrupt on falling edge of pin. (modem disconnected)
BANK0
bsf INTCON,GIE ;enable global interrupt
bsf INTCON,INTE ;enable RB0 interrupt