PDA

View Full Version : 16f877 Unused Pins



DavyJones
- 8th April 2009, 18:43
Hello all, I am working on a project and have a couple of questions. I am using theADC on port A to read a pressure sensor and....
I've read that I should be tieing all unused pins on my 16F877 port a to ground with 10k ohm resistors. So far I am using RA0 as my ADC in and have set up RA1 and RA2 as output to trip my TTL relays. This is working well on my proto type board. I plan on adding on push button off of RB0 again this is working. I believe I set porta up correctly to accomplish this since the ADC is working and my relays are tripping as designed/planned. I set up ADCON1 below and in do I not have to set TRISA as well to be able to use RA1 and RA2 as output? I didn't misunderstand the datasheet did I?
ADCON1 = %10001110
TRISA = %00000001

Secondaly since I am only using RB0 as an input should I make all the others input as well and tie them to ground as well with 10k resistors orjust leave them not connected to anything. I did tie RB0 with a pull up 10k resistor, that too is correct right?

Not that those questions were novice enough I get worse. I am not planning on doing anything with any other pins so do I even care about setting or tieing portC and portd to anything at all?

Thanks for your assitance.

P.S. Normally I would just carry on my way experimenting on my own reading the data sheet but I've already fried 2 16F877's and don't want to fry anymore haha

David

mister_e
- 8th April 2009, 18:59
There's different school of thought on that, but usually what I do is to set all unused pin to input, and tie them directly to gnd. If I feel that I may need those i/o later, I may use resistors or jumpers to tie them to gnd.

Some will set unused I/o as output, assign a level and let them float. In conjunction with a nice ground plane this might work.

DavyJones
- 8th April 2009, 20:45
There's different school of thought on that, but usually what I do is to set all unused pin to input, and tie them directly to gnd. If I feel that I may need those i/o later, I may use resistors or jumpers to tie them to gnd.

Some will set unused I/o as output, assign a level and let them float. In conjunction with a nice ground plane this might work.

Mister e, Thanks. I tend to not like to have loose ends. I like the idea of tieing unused pins to ground. It's a little more design work but like you mentioned if you need it in the future it's much cleaner removing a resistor then trying to drill down into the board were no pad exists.
Thanks
David

Archangel
- 9th April 2009, 00:39
Some will set unused I/o as output, assign a level and let them float. In conjunction with a nice ground plane this might work.
I make them outputs and tie them to ground through 10k. Inputs if somehow allowed to float make great antennas for noise / outputs on the other hand if somehow get switched on, increase your power consumption. Bottom line is tie them the way that works best for your application, but do not let them float.

DavyJones
- 9th April 2009, 01:22
I make them outputs and tie them to ground through 10k. Inputs if somehow allowed to float make great antennas for noise / outputs on the other hand if somehow get switched on, increase your power consumption. Bottom line is tie them the way that works best for your application, but do not let them float.

It's sounds like the common denominator so far is tieing them to ground with a 10k. After that I can control via software if they are output or input. Which would work best for my application can be determined later.

Thanks all

David

mister_e
- 9th April 2009, 02:52
having some resistor to pull them down have it's own advantage in case the software goes crazy, if you alter the TRIS setting by inadvertence, or while developing/debugging. Kinda bullet proof ;)

hvacrtech
- 24th September 2009, 19:13
I use LCDOUT with DB4-DB7 on PORTB.0-PORTB.3, RS on PORTC.1, Ebit on PORTC.0 on 16F886. Starting BIT is set to 0. Will setting TRISB and TRISC even not set correctly can damage the LCD as well the PIC itself?

example TRISB=00000000 and TRISC=00001111 as used before, works fine till I noticed something that TRISC shows last four inputs and I changed it to TRISC=00000000, the result is damaged. all are set for DIGITAL Modes (ANSEL).

Does it have to have TRIS set correctly for use with LCD?

I have about ten units running fine with TRISB=00000000 and TRISC=00001111 working fine, then the two units failed with modified TRIS's TRISC=00000000. Maybe the TRISB needs to be 11110000 and TRISC set to 00000011?

hvacrtech
- 24th September 2009, 23:27
I use LCDOUT with DB4-DB7 on PORTB.0-PORTB.3, RS on PORTC.1, Ebit on PORTC.0 on 16F886. Starting BIT is set to 0. Will setting TRISB and TRISC even not set correctly can damage the LCD as well the PIC itself?

example TRISB=00000000 and TRISC=00001111 as used before, works fine till I noticed something that TRISC shows last four inputs and I changed it to TRISC=00000000, the result is damaged. all are set for DIGITAL Modes (ANSEL).

Does it have to have TRIS set correctly for use with LCD?

I have about ten units running fine with TRISB=00000000 and TRISC=00001111 working fine, then the two units failed with modified TRIS's TRISC=00000000. Maybe the TRISB needs to be 11110000 and TRISC set to 00000011?

AFter reading other forum, I put default for the programmer U2 and the problem solved! Now that my completed unit is back to life! The TRIS has to do nothing with for using with LCD but the unused pins information is excellent source for terminating unused pins via pullup or pulldown. I ususally set TRIS outputs for unused pins.

Archangel
- 25th September 2009, 04:12
The TRIS has to do nothing with for using with LCD but the unused pins information . . .
I imagine . . . LCDOUT sets the tris like the HIGH and LOW functions do. Dig through the library if you are really curious to find out.