PORTB has no analog functions on the 16F87.
Have you disabled the WDT?
PORTB has no analog functions on the 16F87.
Have you disabled the WDT?
No I did not disable the WDT. Is that necessary?
Last edited by BobK; - 11th July 2022 at 15:50.
If you don't disable it you'll be getting resets when the wdt times out.
That'll set the pins as inputs, so they'll be floating instead of low.
For trouble shooting purposes, sure try disabling it but I'd be very surprised if has any impact on the issue.
Generally speaking, you don't need to disable the WDT. Unless you're code includes the line DEFINE NO_CLRWDT 1 PBP adds code to reset it periodically so it should not time out during execution.
If the WDT does time out and resets the PIC then yes, the TRIS bits gets set back to 1 but the code starts to execute from the beginning where one usually has it's initialization code to, for example, clear TRIS. In that case, yes, the pins does float but only until the the uC executes the TRISB = 0 again.
As have been suggested, disconnect the load from the I/O pin and measure the voltage on the pin and on whatever connects to the pin (which is now floating).
Post a schematic of the circuit and the shortest piece of code you can come up with that still shows the issue.
I had a similar experience with some PIC18F45K22 dip-40 parts I had laying around for many years. I couldn't get clean digital outputs to the point where things didn't work properly. After spending way too much time trying different things, I swapped in a K40 part and it worked perfectly. I therefore concluded that the K22 parts were defective. Now, were they defective when I bought them about a decade ago, or did they "rust" sitting in a drawer that long?
Bookmarks