|
|
View previous topic :: View next topic |
Author |
Message |
delesan
Joined: 23 Jun 2010 Posts: 19
|
12LF1822 POWER TEST |
Posted: Wed Feb 16, 2011 10:10 am |
|
|
Hi everyone,
The following code was run on the 12LF1822 to test its power consumption rating:
Code: |
#include <12LF1822.h>
#fuses INTRC_IO, NOWDT,NOPROTECT,NOMCLR,NOBROWNOUT,NOPUT,NOIESO,NOFCMEN,NOCPD
#use delay(clock=62KHZ)
#rom 0x8007 = {0b00100110100101}
#byte TXSTA = 0x21e
#byte RCSTA = 0x21d
void main()
{
TXSTA = 0x02;
RCSTA = 0x08;
output_float(PIN_A0);
output_float(PIN_A1);
//output_float(PIN_A2);
output_float(PIN_A3);
output_float(PIN_A4);
output_float(PIN_A5);
DISABLE_INTERRUPTS(GLOBAL);
setup_SPI(SPI_SS_DISABLED);
setup_DAC(DAC_OFF);
SETUP_CCP1(CCP_OFF);
setup_comparator(NC_NC);
SETUP_ADC(ADC_OFF);
SETUP_TIMER_1( T1_DISABLED );
SETUP_TIMER_2( T2_DISABLED,0,1 );
output_high(PIN_A2);
while(1){
output_toggle(PIN_A2);
delay_ms(500);
}
}
|
I am using MPLAB IDE version 8.50 and CCS C-compiler version 4.106.
The PIC has been set to ECL oscillator mode (last three least significant bit of Configuration Word 1 @ memory location 0x8007). External input clock pulse to PIN_A5 is 1V, 62KHz and supply to the PIC is 2 VDC. Output on PIN_A2 is a 155Hz pulse despite setting a 500ms delay.
Compiler kept giving an error with the EC_IO fuse. Additionally, to disable EUSART, we had to change the register settings as the compiler gave an error when using the setup_uart(0) with #use rs233.
Appreciate your comments and suggestions.
delesan |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Wed Feb 16, 2011 12:48 pm |
|
|
Quote: | output_float(PIN_A0);
output_float(PIN_A1);
//output_float(PIN_A2);
output_float(PIN_A3);
output_float(PIN_A4);
output_float(PIN_A5);
|
Don't set CMOS pins as floating input pins. Set them to be outputs and
set them low. Read this T.I. appnote on floating CMOS inputs:
http://focus.ti.com/lit/an/scba004c/scba004c.pdf
Read this section on page 5:
Quote: |
Characteristics of Slow or Floating CMOS Inputs
|
Also note the graph in Figure 2 on page 6. When the input voltage floats
into the 1 to 2v range, the current goes way up.
Quote: |
TXSTA = 0x02;
RCSTA = 0x08;
DISABLE_INTERRUPTS(GLOBAL);
setup_SPI(SPI_SS_DISABLED);
setup_DAC(DAC_OFF);
SETUP_CCP1(CCP_OFF);
setup_comparator(NC_NC);
SETUP_ADC(ADC_OFF);
SETUP_TIMER_1( T1_DISABLED );
SETUP_TIMER_2( T2_DISABLED,0,1 );
|
All these modules are disabled upon power-on reset. You don't need to
do it again. But the setup_spi() line is in fact enabling the SPI
module. If you want to turn it off, use FALSE as the parameter. |
|
|
delesan
Joined: 23 Jun 2010 Posts: 19
|
12LF1822 power test |
Posted: Thu Feb 17, 2011 1:38 am |
|
|
PCM programmer wrote: | Quote: | output_float(PIN_A0);
output_float(PIN_A1);
//output_float(PIN_A2);
output_float(PIN_A3);
output_float(PIN_A4);
output_float(PIN_A5);
|
Don't set CMOS pins as floating input pins. Set them to be outputs and
set them low. Read this T.I. appnote on floating CMOS inputs:
http://focus.ti.com/lit/an/scba004c/scba004c.pdf
Read this section on page 5:
Quote: |
Characteristics of Slow or Floating CMOS Inputs
|
Also note the graph in Figure 2 on page 6. When the input voltage floats
into the 1 to 2v range, the current goes way up.
Quote: |
TXSTA = 0x02;
RCSTA = 0x08;
DISABLE_INTERRUPTS(GLOBAL);
setup_SPI(SPI_SS_DISABLED);
setup_DAC(DAC_OFF);
SETUP_CCP1(CCP_OFF);
setup_comparator(NC_NC);
SETUP_ADC(ADC_OFF);
SETUP_TIMER_1( T1_DISABLED );
SETUP_TIMER_2( T2_DISABLED,0,1 );
|
All these modules are disabled upon power-on reset. You don't need to
do it again. But the setup_spi() line is in fact enabling the SPI
module. If you want to turn it off, use FALSE as the parameter. |
Many thanks PCM Programmer. Will implement your suggestions. Meanwhile, there is still the issue about why the output on PIN_A2 is much faster than what was coded (delay_ms(500)).
Removing INTOC_IO fuse and replacing with EC_IO generates a compiler error.
Appreciate your comments and suggestions.
delesan |
|
|
Beenabout
Joined: 19 Jan 2010 Posts: 7
|
|
Posted: Thu Feb 17, 2011 3:16 am |
|
|
I think what the querrant wanted to know was:
1. Why is the EC_IO fuse, specified in the device .h file, not accepted by the compiler?
2. Why does setup_uart(0) not work?
3. Why, despite specifying a #clock of 62KHZ and therafter applying an external clock of that frequency, does the delay statement used not give the delay expected? |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19499
|
|
Posted: Thu Feb 17, 2011 5:59 am |
|
|
I think there is probably a number of 'parts' to this.
First, number3, the frequency. A search here will find a thread a few weeks ago, about a problem with delays and these chips. I'm sure the compiler version involved was around this one, and can confirm that an a quick test, the delay code is faulty, giving completely the wrong delay.
On the UART, I think the compiler only understands the primary UART pins. If I use:
Code: |
#use RS232(XMIT=PIN_A0,RCV=PIN_A1,BAUD=300,ERRORS)
//Then in main,
setup_UART(FALSE);
|
It all happily works. I was able to use the secondary pins, by doing this, then just manually selecting the pin move.
SETUP_UART, only works if the hardware UART is being used, and the compiler at this point, does not know about the relocatable pins. If you try to use the secondary locations, it does not work.
EC_IO, isn't complained about, but sets up the oscillator to use an external RC oscillator. This just appears to be somebody translating a new chip 'wrong', since these have three different EC modes, and none without 'IO'.
Basically, these chips are very new, and the settings for 4.106, are just plain 'wrong'. Moan to CCS particularly about the fuse, and the timings, and hopefully they will fix these and do an upgrade.
The fuses are fixed a couple of compiler versions latter, with ECM, ECL, and ECH modes, and no EC_IO.
However support for the secondary UART pins still seems to be absent.
Best Wishes |
|
|
Beenabout
Joined: 19 Jan 2010 Posts: 7
|
|
Posted: Fri Feb 18, 2011 2:47 am |
|
|
Thanks for your reply, Ttelmah. It is clear that it is a compiler issue now and I hope CCS move on fixing their latest version to work well with the 1822 and 1827 chips as these are very versatile PICs. Besides, we want to use them in our Embedded Systems 3rd Year course next year and it would be a shame to have to rewrite the course to use another, more functional, compiler.
From our end I can confirm that we have had the 16F1822 operating at just 1V VDD (producing a 155HZ output on an IO pin) whilst consuming just 2uA, driven by an external clock at 62kHZ. That is a total of 2uW consumption for a maximum of around 15000 instructions per second.
Kind regards. |
|
|
Beenabout
Joined: 19 Jan 2010 Posts: 7
|
|
Posted: Fri Feb 18, 2011 6:43 am |
|
|
Sorry that should be a 12F1822. Not had a chance to test the 16F1827 for power consumption yet, although I do know that the capacitive touch routines do not work on it and that it requires a 16MHz clock for the software RS232 routines to run properly (most others I have tried run well at 8MHz). |
|
|
Plater
Joined: 21 Feb 2013 Posts: 8
|
|
Posted: Thu Feb 21, 2013 4:14 pm |
|
|
Was this ever resolved?
I am using the same chip (Well 12LF1822) with the internal oscillator at 31kHz. I cannot get below about 90uA when in sleep mode. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Thu Feb 21, 2013 4:56 pm |
|
|
This is an old thread with an old verion. Best to leave it closed.
Start a new thread, post your low-power test program. Make it be a
short program. And post your full compiler version. Example of versions:
http://www.ccsinfo.com/devices.php?page=versioninfo
Post all other test conditions too, such as the Vdd voltage of the PIC, and
a list of manufacturers and part numbers of external circuit components,
especially the voltage regulator. Post a link to a schematic of your
board, if you can. |
|
|
|
|
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
|