CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

Leaving Pins Unassigned- Current Drawn?

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
arrow



Joined: 17 May 2005
Posts: 213

View user's profile Send private message

Leaving Pins Unassigned- Current Drawn?
PostPosted: Thu Sep 07, 2006 12:30 am     Reply with quote

Hi

I read somewhere (cant remember now where), that if the unused pins are left unassigned, there might be extra current drawn.
Is this true?

If yes, can someone please tell me how to assign pins of whole ports?
What about unused A/D pins?

Thank you
a.
ckielstra



Joined: 18 Mar 2004
Posts: 3680
Location: The Netherlands

View user's profile Send private message

Re: Leaving Pins Unassigned- Current Drawn?
PostPosted: Thu Sep 07, 2006 2:39 am     Reply with quote

arrow wrote:
I read somewhere (cant remember now where), that if the unused pins are left unassigned, there might be extra current drawn.
Is this true?
The problem is not in unassigned but in unconnected pins. Searching this forum I found a thread discussing this problem: http://www.ccsinfo.com/forum/viewtopic.php?t=23734&highlight=pin+unconnected
Note that the thread was started by you.... Wink

And another thread on the same topic: http://www.ccsinfo.com/forum/viewtopic.php?t=22293
Ttelmah
Guest







PostPosted: Thu Sep 07, 2006 2:50 am     Reply with quote

This applies basically to all logic families. In general, the gate connected to an input pin, can draw slghtly extra current, if it is sitting in an 'indeterminate' state. You get transistors biased 'half on', and sometimes can get oscillation. On outputs, depending on the logic family, normally there is slightly less power drawn with the output driven in one direction (often high).
Now on some older families (TTL for example), the input structure of the gate, itself tends to pull the input in one direction (for TTL, high), and this helps to prevent the problem. However it does mean that extra current is drawn when you want to drive the input 'low', and for the best behaviour, you are still advised to tie the inputs 'high' with a resistor. The assymetry of the behaviour for this family, can be seen in the Iih, and Iil figures (currents needed to draw an input high/low), which differ typically by over 100:1.
On the PIC, these currents are normally the same, so you can pull a pin high or low. Now you should use a resistor (rather than 'hard wiring' the pin to a supply rail), since this can prevent two seperate problems. The first is if your code accidentally programs the pin as an output, this limits the current being drawn, and the second is that if there is any time lags on the sequencing of power inside the circuit, this prevents driving the input into latch up (used to be a big problem on CMOS circuits, but most are now protected against this). On the PIC, you can also simply turn on the output driver, and provided nothing is connected to the pin, this will serve to pull the pin towards one rail.
Analog pins, have massively less of a problem in this regard, but will still tend to have slight variations in current, if they are allowed to float. in general though, there is no reason to ever have an unused analog input pin. Simply set the pin as an output, and this then overrides the peripheral, and drives the pin.
Generally, having high impedance pins floating, is something that should be avoided in all circumstances for good reliability, as well as power consumption.

Best Wishes
arrow



Joined: 17 May 2005
Posts: 213

View user's profile Send private message

PostPosted: Thu Sep 07, 2006 3:08 am     Reply with quote

Hi Ckielstra and Ttelmah

Thank you for your responses!
I knew I saw it before!! Embarassed

Is there any way to set all the pins on a port to output with one command?
And is there a way to assign all the pins to "L" with one command?

If I subsequently use some of these output pins as input, do I have to reassing them, or can I go ahead and use the "input(PIN_XX)" command?

Regards
a.
Ttelmah
Guest







PostPosted: Thu Sep 07, 2006 3:55 am     Reply with quote

All pins. Easy, look at the 'OUTPUT_X' commands (where 'X' is the port name). So 'OUTPUT_B(0)', will set all the pins of port B low.
A lot depends on the 'IO mode' you are using. Assuming you are using 'standard_IO' (the default), this will set the TRIS for the port to 0, and the code will automatically change an individual bit of this if you subsequently perform an input on an individual pin. If you are using one of the 'manual' tris modes, then you will have to control this yourself.

Best Wishes
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group