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

BUG REPORT: 4.114

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



Joined: 30 Dec 2010
Posts: 4

View user's profile Send private message

BUG REPORT: 4.114
PostPosted: Thu Dec 30, 2010 9:42 pm     Reply with quote

Compiling for the 24fj256da210 (with or without debug set), will generate configuration words in the wrong locations (reversed order).

Way to reproduce:
Compile simple 'hello world' with various fuses set. Import this hex file into MPLAB and under the 'Configure' -> Configuration bits, you can clearly see that the fuses are set incorrectly.

A workaround is to edit the table of the device (editing of table only works when NODEBUG fuse set).
Config words should be reorganized in this order:
1->4
2->3
3->2
4->1

Not sure if this is fixed with latest 4.116. Table 27-1 in device datasheet shows correct config address locations.

EDIT: There could be more bugs, this is just the first one I found trying to get this part working. Currently I'm not even able to output anything on the UART, but I can toggle a pin.
FvM



Joined: 27 Aug 2008
Posts: 2337
Location: Germany

View user's profile Send private message

PostPosted: Fri Dec 31, 2010 2:47 am     Reply with quote

Sorry for confusing the discussion. The below statement is wrong. The bug is in PCD, and it's fixed in V4.116.

I briefly checked the issue. Assuming the present PIC24FJ256DA210 datasheet is correct, then the bug is in MPLAB, not in CCS C. I use MPLAB V8.53.

I guess, you noticed that the addresses are reversed related to the configuration word numbering. Basically, 24FJ256DA210 uses the same configuration word layout as other PIC24 chips I'm using, e.g. PIC24FJ256GA110. I see, that the configuration is correctly set in the *.hex file. If I read the DA210 *.cof file to a GA110 configuration in MPLAB, the configuration words are assigned correctly. If I select DA210, they are wrong. May be a newer MPLAB version fixes the problem.

I'm not using the new PIC24 chip and don't feel a need to investigate further on this issue now. In any case, you should contact CCS.
59seconds



Joined: 30 Dec 2010
Posts: 4

View user's profile Send private message

PostPosted: Fri Dec 31, 2010 9:33 am     Reply with quote

Thanks for verifying it. Do you know if 4.116 also fixes the UART? It's broke to high-heaven in 4.114. (with the da210 chip anyways).
FvM



Joined: 27 Aug 2008
Posts: 2337
Location: Germany

View user's profile Send private message

PostPosted: Sat Jan 01, 2011 4:35 am     Reply with quote

I'm using V4.112 for my active projects, but it misses correct support of 24fj256da210. I didn't yet notice UART issues with V4.114 or V4.116. Can you post an example code that produces the problem?
59seconds



Joined: 30 Dec 2010
Posts: 4

View user's profile Send private message

PostPosted: Mon Jan 03, 2011 10:29 am     Reply with quote

Well Gosh dog it... it's working now, but I promise something funny was going on last week. After I solved the config word problem, I started on the Uart problem, and over the weekend I told myself to check that 0x8400 being written to the U1MODE (The '4' is a non-location, or perhaps even reserved). I also noticed you have to use UART1A in the #use rs232(*) or else it'll not use Uart1.

I've got some more boards to bring up. I see if I can reproduce the error.
59seconds



Joined: 30 Dec 2010
Posts: 4

View user's profile Send private message

PostPosted: Mon Jan 03, 2011 11:36 am     Reply with quote

O.k., I figured out what is breaking the UART. Whenever a delay is used, it never gets past the delay.
Code:

#include <24FJ256DA210.h>

#FUSES NOWRT
#FUSES noDEBUG                  // Debug mode for ICD
#FUSES ICSP3                    //ICD uses PGC3/PGD3
#FUSES pr
#FUSES xt
#FUSES NOCKSNOFSM //CKSNOFSM
#FUSES NOIESO
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=8000000)

#include <string.h>

#pin_select u1tx=PIN_f4
#pin_select u1rx=PIN_d15

#use rs232(uart1a,baud=9600,parity=N,bits=8)


void main()
{

         
            delay_ms(50); //<<--  Uses a delay in any place in the code causes UART to break.
                       
            while(1)
            {
            printf("b");  //never gets here
            }

}
FvM



Joined: 27 Aug 2008
Posts: 2337
Location: Germany

View user's profile Send private message

PostPosted: Mon Jan 03, 2011 4:35 pm     Reply with quote

MPLAB SIM executes the code correctly, when compiled with V4.116. If it's not working in the real hardware, you should trace the execution with a debugger.
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