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 CCS Technical Support

Circuit doesn't give proper output when ICD is attached!

 
Post new topic   Reply to topic    CCS Forum Index -> CCS ICD / Mach X / Load-n-Go
View previous topic :: View next topic  
Author Message
blak3r



Joined: 11 Jan 2004
Posts: 45

View user's profile Send private message Visit poster's website

Circuit doesn't give proper output when ICD is attached!
PostPosted: Sat Oct 02, 2004 3:13 pm     Reply with quote

In my program the first thing i do is initialize an LCD and then print
"Firmware Rev. #xxx"

When the ICD is attached i will get various outputs on the LCD. Most of the time the first five letters of firmware get cut off and the rest of it is fine so it looks like "are Rev. #xxx". If i don't have the ICD attached i don't have this problem.

I have the PUT enabled and i've put large delays after lcd initialization and even before i attempt to initialize the lcd.

My VDD w/o the ICD is 4.75V and my voltage w/ is 4.61. I'm using a benchtop power supply which is capable of supplying enough power to my circuit. I also measured the current being drawn to be 130mA w/o ICD and 226mA w/ ICD. That seems like a lot of current for the ICD to be drawing in an idle state.

The circuit i've been working on was pretty reliable a month ago. I had to put the project aside for about a month. So, if anything i believe a component possibly is defective. Any ideas as to what this might be? I figured i'd ask before i dismantled my circuit. (I have to remove the lcd assembly and a few other things to get to the PIC)

Thanks for any insights...
~blake
_________________
"Everything should be made as simple as possible, but not one bit simpler" -- Albert Einstein

http://www.blakerobertson.com
Mark



Joined: 07 Sep 2003
Posts: 2838
Location: Atlanta, GA

View user's profile Send private message Send e-mail

PostPosted: Sat Oct 02, 2004 4:52 pm     Reply with quote

Your circuit doesn't use RB6 or RB7 does it? (the ICD connections)
blak3r



Joined: 11 Jan 2004
Posts: 45

View user's profile Send private message Visit poster's website

PostPosted: Sun Oct 03, 2004 12:13 pm     Reply with quote

yes it does for the lcd. hmmm.... but i'm not trying to use the debugger. I'm loading the program with the ICD just as an ICSP.

~blake
_________________
"Everything should be made as simple as possible, but not one bit simpler" -- Albert Einstein

http://www.blakerobertson.com
Haplo



Joined: 06 Sep 2003
Posts: 659
Location: Sydney, Australia

View user's profile Send private message

PostPosted: Sun Oct 03, 2004 4:48 pm     Reply with quote

Do you have any code located at the last 400 bytes of the flash memory?
Mark



Joined: 07 Sep 2003
Posts: 2838
Location: Atlanta, GA

View user's profile Send private message Send e-mail

PostPosted: Sun Oct 03, 2004 7:13 pm     Reply with quote

Quote:

yes it does for the lcd. hmmm.... but i'm not trying to use the debugger. I'm loading the program with the ICD just as an ICSP.


Then you should unplug it when you are done programming Very Happy
Haplo



Joined: 06 Sep 2003
Posts: 659
Location: Sydney, Australia

View user's profile Send private message

PostPosted: Sun Oct 03, 2004 7:17 pm     Reply with quote

Mark wrote:
Quote:

yes it does for the lcd. hmmm.... but i'm not trying to use the debugger. I'm loading the program with the ICD just as an ICSP.


Then you should unplug it when you are done programming Very Happy


But according to his first post it seems he programs the circuit with the ICD and then hits RUN. This sould be ok.

He may have some code at the end of the memory which maybe overwritten by the ICD debugging code.

And also, what ICD are you using? Your ICD seems to me drawing way too much current.
Mark



Joined: 07 Sep 2003
Posts: 2838
Location: Atlanta, GA

View user's profile Send private message Send e-mail

PostPosted: Sun Oct 03, 2004 8:45 pm     Reply with quote

Quote:

But according to his first post it seems he programs the circuit with the ICD and then hits RUN


Quote:

but i'm not trying to use the debugger. I'm loading the program with the ICD just as an ICSP
Haplo



Joined: 06 Sep 2003
Posts: 659
Location: Sydney, Australia

View user's profile Send private message

Re: Circuit doesn't give proper output when ICD is attached!
PostPosted: Mon Oct 04, 2004 2:00 am     Reply with quote

blak3r wrote:
In my program the first thing i do is initialize an LCD and then print "Firmware Rev. #xxx"

When the ICD is attached i will get various outputs on the LCD. Most of the time the first five letters of firmware get cut off and the rest of it is fine so it looks like "are Rev. #xxx". If i don't have the ICD attached i don't have this problem.


This shows that he is indeed running the code under ICD. Otherwise nothing would appear on the LCD.

I think by "but i'm not trying to use the debugger. I'm loading the program with the ICD just as an ICSP " he means he is not setting any breakpoints/stopping the code and debugging it. He is just hitting run and watching it go.
blak3r



Joined: 11 Jan 2004
Posts: 45

View user's profile Send private message Visit poster's website

PostPosted: Mon Oct 04, 2004 3:30 am     Reply with quote

Haplo is correct. Using the ICD as a debugger sure would be nice but i gave up on it a while ago as it's been really unstable.

I don't think i'm using any code in the last 400 bytes of flash. Why would it matter? Here's the statistics:


ROM used: 2644 (32%)
2048 (25%) including unused fragments

1 Average locations per line
3 Average locations per statement

RAM used: 120 (69%) at main() level
162 (93%) worst case

Lines Stmts % Files
----- ----- --- -----
212 42 5 C:\main.c
235 0 0 C:\Program Files\PICC\devices\16F876.h
115 0 0 C:\Alertus_Globals.h
243 74 8 U:\PIC\myDrivers\LCD420_portb_except_enable.c
170 18 2 C:\rdsGroup.c
185 0 0 C:\RTMessageProtocol.c
71 10 1 U:\PIC\myDrivers\BitArray.c
200 0 0 C:\I2C_EEPROM.c
121 0 0 C:\adc.c
287 59 6 C:\SAA6588.c
659 141 13 C:\TEA5768HL.c
164 0 0 U:\PIC\myDrivers\TerminalHelper.c
28 0 0 C:\Program Files\PICC\drivers\ctype.h
749 317 26 C:\Program Files\PICC\drivers\stdlib.h
28 0 0 C:\Program Files\PICC\drivers\stddef.h
423 127 8 C:\Program Files\PICC\drivers\string.h
87 11 1 C:\alarm.c
60 8 0 C:\battery.c
152 45 3 C:\alertuslcd.c
166 36 2 C:\interupts.c
----- -----
8710 1776 Total

Page ROM % RAM Functions:
---- --- --- --- ----------
0 21 1 1 @delay_ms1
0 18 1 1 @I2C_WRITEU_1_59_60
0 15 1 1 @I2C_READU_1_59_60
0 8 0 0 @const57
0 24 1 1 lcd_send_nibble
0 96 4 3 lcd_send_byte
0 65 2 2 lcd_init
0 50 2 3 lcd_gotoxy
0 58 2 1 lcd_putc
0 11 0 0 lcd_clear
0 13 0 0 initSerialEEPROM
0 331 13 1 processRDSGroupBuffer
0 36 1 1 isSAA6588Ready
0 120 5 0 initRDSChip
0 217 8 9 writeRadioSettings
0 102 4 0 readRadioSettings
0 12 0 1 getRadioADC
0 60 2 6 getCurrStationFreq
0 41 2 8 setStationWithHighSideInjection
0 10 0 1 setSWPort2
0 24 1 0 @const12011
0 14 1 0 @const12019
0 14 1 0 @const12026
0 7 0 0 stopCharging
0 9 0 0 stopwatch_isr
0 31 1 0 lcdPaging_isr
0 24 1 1 isr_timer2
0 11 0 0 @const12327
0 212 8 11 EXT_isr
1 814 31 12 main
0 13 0 0 @const12369
0 24 1 0 @const12374
0 26 1 0 @const12379
0 13 0 0 @const12384
0 10 0 0 @const12389
0 14 1 0 @const12394

Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-0004B 72 0
0004C-007FF 1754 218
00800-00FFF 814 1234
01000-017FF 0 2048
01800-01FFF 0 2048
_________________
"Everything should be made as simple as possible, but not one bit simpler" -- Albert Einstein

http://www.blakerobertson.com
Mark



Joined: 07 Sep 2003
Posts: 2838
Location: Atlanta, GA

View user's profile Send private message Send e-mail

PostPosted: Mon Oct 04, 2004 3:36 am     Reply with quote

Post the first part of the program up to your main().

If you are using the ICD to "run" then you might have problems.
blak3r



Joined: 11 Jan 2004
Posts: 45

View user's profile Send private message Visit poster's website

PostPosted: Mon Oct 04, 2004 1:43 pm     Reply with quote

#include <16F876.h>
//#device ICD=TRUE
#device ADC=10 *=16
#use delay(clock=3580000)
#fuses NOWDT,XT, PUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#opt 9


//-=-=-=-=-=-=-==-[ Include Files aka Driver Files ]-=-=-=-=-=-=-=-=-=-=-//

#use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3,force_hw)
#use rs232(baud=38400, xmit=PIN_C6, rcv=PIN_C7, ERRORS)//changed


#include "./Alertus_Globals.h" // contains most of the defines and global variables of the programs
#include <LCD420_portb_except_enable.c> // lcd driver file for lcd being on port b except the enable pin



// *************** INTERRUPTS ARE IN Interupts.c ************************** //
#include "interupts.c" // <-- include file which contains interupt routines
main()
{
// ---------------[ Local Variables ]--------------------------------------//
int i, ctr;
int initStateIteration = -1;
long theStation;


//-=-=-=-=-=-=-=-=[ Setup PIC Hardware ]=-=-=-=-=-=-=-=-=-=-=-=-=-//

setup_adc_ports(RA0_RA1_RA3_ANALOG); // sets pins A0, A1 & A3 to analog inputs
setup_adc(ADC_CLOCK_INTERNAL);
setup_counters(RTCC_INTERNAL,RTCC_DIV_256);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
setup_timer_2(T2_DIV_BY_16,255,16); // creates a freq
setup_ccp2(CCP_OFF); // sets PWM frequency for the backlight of the LCD
setup_ccp1(CCP_OFF); // sets PWM frequency for the piezo speaker. Disable until called.
ext_int_edge( H_TO_L );
disable_interrupts(global);


//-----[ Initialization ]-----------------------------------------//

delay_ms(50);

lcd_init(); // initializes LCD
initSerialEEPROM(); // initializes i2c eeprom
initRadio(); // initializes Radio Chip
initRdsChip(); // initializes RDS Chip
stopCharging(); // makes sure battery charge i/o pin is initially low.

// todo: make internal/external antenna selection intelligent
setSWPort1(0);
theStation = 939;
setStationAndAntenna( theStation );

// Initial State
_state = STATE_WAITING;

printf("Starting");

// Prints an initial program screen with program info
firmwareVersionPage();
_________________
"Everything should be made as simple as possible, but not one bit simpler" -- Albert Einstein

http://www.blakerobertson.com
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Mon Oct 04, 2004 2:08 pm     Reply with quote

Quote:
My VDD w/o the ICD is 4.75V and my voltage w/ is 4.61

I would fix this before anything else. I assume your circuit is supposed
to be running at a nominal 5v. What if your LCD is spec'ed at +/- 5%
for Vdd ? Then you're either right at the lower bound, or you've
violated spec (based on the two voltages given above).
I would look at the LCD's data sheet to verify the proper operating
range for its Vdd.

I would get a better bench power supply, with more current.

Or, if your power supply has a knob which controls the amount
of current, then set it to the maximum position.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> CCS ICD / Mach X / Load-n-Go 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