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

SPI problems with PIC 18F2525

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



Joined: 17 May 2006
Posts: 1

View user's profile Send private message

SPI problems with PIC 18F2525
PostPosted: Wed May 17, 2006 2:47 am     Reply with quote

I’m having problems working with the SPI module of the PIC18F2525 rev a4.
After exchanging some e-mails with CCS and Microchip , where I couldn’t get any final solution to my problem, only that
a) CCS claimed that if the code worked on the PIC18F252 , than it should work on the PIC18F2525, and there is no problem on their side
b) Microchip claimed that it might be a h/w bug but they can’t tell that for sure.

Here is a description of my problem

I’ve migrated a working code and environment from PIC18F252 to PIC18F2525.
I’m using PIC18F2525 revision A4 and PIC28F252 revision C0.
MPLAB IDE version V7.31
CCS compiler V3.249
SPI clk is 1 MHz, PIC frequency is 16 MHZ
Same code with the same environment works perfect with PIC18F252.

I’m getting a strange problem using the SPI, Where the PIC is used as a slave and a TI DSP is used as a master.
I’m working in the following scenario


*Master sends data - Slave sends dummy data
*Master sends dummy data - Slave sends data
The clock idle state is low '0'
Both master and slave change the data pin while clock change its state from low (idle) to high (active), so the other device samples the data when clk change its state from high to low - I've verified this using a scope.
What is very odd, is that when using the correct mode which is being used with the PIC252
SSPCON = 0x05;
SSPSTAT=0x00;
TRISC=0x98;
//TRISA = alllready cinfiguredl SS' is not used
SSPCON=0x25;
I’m not using the SS’, only SCK,SDI,SDO

The data is being sent/transmit via the #int_ssp ISR , and timer2 is used as a watch dog for the communication. , above setting achived by
setup_spi(SPI_SLAVE|SPI_L_TO_H|SPI_CLK_DIV_4|SPI_SS_DISABLED(;

Using the setting above data is received in most of the cases (but not in all of them) correctly at the master side (TI DSP), and while the master transmits the data correctly (verified that using a scope) , data is not received at all / or received with error at the slave side

When I'm doing something which is totally wrong, and that is configuring the port with
SSPSTAT.bit6 (CKE) to be 1 - which is wrong , and moreover configuring SSPSTAT.bit7 (SMP) to be 1 - which is wrong - "SMP must be cleared when SPI is used is Slave mode" section 17.3.1 in the data sheet
In this configuration - Data is received correctly at the slave side, and the slave sends garbage to the master. This setting achived by setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_CLK_DIV_4 | SPI_SAMPLE_AT_END | SPI_SS_DISABLED);
The response I got from microchip was
a) This may be a h/w bug and I should wait for rev B to come out
b) It could be a problem with the design and the TI DSP which did not show up for some reason with the PIC18F252 but has with the PIC18F2525. It is more likely though that it is something to do with the PIC18F2525 I think.

Any suggestions ?
Ttelmah
Guest







PostPosted: Wed May 17, 2006 3:17 am     Reply with quote

Seriously, there are a hell of a lot of faults in the SSP module on the 18F2525. If I remember correctly, something over 20 errata for this component!...
There are some that might apply. One in particular, is that the actual SDO line, can change state, at a point in the timing, that it is not meant to do!. This might explain why fiddling with the clock timings partially fixes the problem. As a seperate comment, are you sure that the DSP leaves enough time between clocking the first byte, and clocking to get the 'reply'?. The latter chips have extra registers that are saved in the interrupt handler, and the latency will therefore be slightly worse at a given clock rate.
I must admit, I have 'steered away' from the 2525, pending a version that has rather less visible faults in this area...

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