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

PCD with dspic33: setup_spi function really does not work!

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



Joined: 28 Jun 2010
Posts: 5

View user's profile Send private message

PCD with dspic33: setup_spi function really does not work!
PostPosted: Wed Jun 30, 2010 5:58 am     Reply with quote

dear all,
I am currently writing code for a dsPIC33FJ128MC506. looking at the assembly generated by PCD I have to say that the SPI is not configured properly at all. here is why:
SPI1STAT @ 0x0240
SPI1CON1 @ 0x0242
SPI1CON2 @ 0x0244 control SPI1 operation (pls refer to datasheet)
the function:
setup_spi(SPI_MASTER|SPI_L_TO_H | SPI_CLK_DIV_16); generates:
0024C: BCLR.B 242.7
0024E: BCLR.B 240.6
00250: MOV #3D,W4
00252: MOV W4,242
00254: BSET.B 241.7

The spi clock speed is controlled by primary prescaler and secondary prescaler (SPRE and PRE). PCD leaves SPRE to 111 and only ajusts PRE... Knowing that SPI speed is dependant upon Fcy, that is pretty poor as the SPI speed you will get depends on your oscillator source and settings...
Also, looking at "BCLR.B 240.6", it tries to clear SPIROV bit (again, pls refer to datasheet) which is read only?
And, if that was not enough, there are no SPI_TRANSMIT_L_TO_H defines in the .h file.
IN SHORT, you'll be lucky to get SPI to work on this controller with PCD... The only way to set the registers properly is to use #word Register Address directive and assign the value yourself... Mister CCS, what's the point to provide fonctions which does not work?
dyeatman



Joined: 06 Sep 2003
Posts: 1934
Location: Norman, OK

View user's profile Send private message

PostPosted: Wed Jun 30, 2010 6:27 am     Reply with quote

Some points:
1. You did not say what VERSION you are using for any of us to test it.

2. This is NOT CCS support. It is a USER forum. If you want to address
your comments to CCS send an email to CCS Support as shown in the
upper right corner of this web page.

3. This topic has already been raised a couple of times before for earlier
versions and workarounds using direct register addressing was suggested. I
do not know if they still apply to the latest software version.

4. The person in this post seems to have SPI working on a dsPIC and his experiences might help.
http://www.ccsinfo.com/forum/viewtopic.php?t=42564
_________________
Google and Forum Search are some of your best tools!!!!
petiot



Joined: 28 Jun 2010
Posts: 5

View user's profile Send private message

thanks
PostPosted: Wed Jun 30, 2010 7:38 am     Reply with quote

dyeatman,
PCD version 4.078 bought a couple of years ago. as you know, you can only update for 30 days... Has this been fixed in newer versions?
I took your remarks onboard, and sorry if this is not the right place to post this as this was my first post.

Thanks for your Help. However, I do know how to get SPI working (exactly the same way as your link, by filling in registers myself). It's just that I would have expected this fonction to work. Otherwise, I might as well stick to a free compiler if I got to write everything myself and not use onboard fonctions because of bugs...

Regards

Serge
dyeatman



Joined: 06 Sep 2003
Posts: 1934
Location: Norman, OK

View user's profile Send private message

PostPosted: Wed Jun 30, 2010 8:34 am     Reply with quote

petiot,
Your comment:
Quote:
Mister CCS, what's the point to provide fonctions which does not work?

was addressed to CCS and I just wanted to be sure you understood they
don't monitor this forum on a regular basis.

Workarounds for some bad functions are common especially in the beta
versions. Since I don't have PCD (yet) I can't speak to whether it has been fixed
as of version 4.109, maybe someone here who has PCD and the dsPIC can?

Some users here, as a matter of course, explicitly do not use the CCS
functions and write their own for portability.
_________________
Google and Forum Search are some of your best tools!!!!
bkamen



Joined: 07 Jan 2004
Posts: 1615
Location: Central Illinois, USA

View user's profile Send private message

PostPosted: Wed Jun 30, 2010 1:14 pm     Reply with quote

I have PCD and SPI working -- and I remember having to do the direct register access too...

disable the MSSP, change the clock dividers, enable the MSSP and go.

As for CCS, they are providing functions to ease the pain. In the beginning, they tend to need a little re-adjustment.

Be glad you aren't using C30 where you'd have to do a LOT of things yourself anyway.

That's how I look at it and I seem to be keeping my remaining hair. Laughing

-Ben

p.s. if you find a bug in a current version of the compiler, you should email it to [email protected]
_________________
Dazed and confused? I don't think so. Just "plain lost" will do. :D
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