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

can communication problem......

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



Joined: 24 Feb 2011
Posts: 3
Location: KERALA

View user's profile Send private message

can communication problem......
PostPosted: Thu Feb 24, 2011 1:52 am     Reply with quote

Hai..
I'm trying to get 2 PIC to communicate with each other via CAN.
The PIC I am using is P16F877A and the Transceiver ic is MCP2515.
Crystal frequency used is 4MHz.

I am getting output in loop back mode. But when I tried to send data to other node using normal mode I am facing some communication problem.

1,
TXB0CTRL.txreq bit is not clearing.

2,
Not getting transmit interrupt.
ie: I am getting CANINTF.tx0if = 0.

3,
TXB0CTRL.txerr =1;

4,
After setting TXB0CTRL.txreq the interrupt flag CANINTF.errif becomes one.

5,
I am still confused in configuring the Baud rate registers CNF1, CNF2 and CNF3.

I don't know how to debug this problem.
Pls help me.

Thanks
Suraj
collink



Joined: 08 Jan 2010
Posts: 137
Location: Michigan

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

PostPosted: Thu Feb 24, 2011 6:22 am     Reply with quote

All of your points lead to the same conclusion. One you even mentioned: You don't have your baud rate registers properly set up.

What are you currently using for settings? I'm not familiar with PIC16 chips but I'll help if I can. Hopefully the settings are similar to PIC18 chips with CAN hardware.
itzsurajg



Joined: 24 Feb 2011
Posts: 3
Location: KERALA

View user's profile Send private message

PostPosted: Fri Feb 25, 2011 1:46 am     Reply with quote

Thanks for your response...

The baud rate registers I had configured is
CNF1 = 0x01;
CNF2 = 0xBA;
CNF3 = 0x07;

Yesterday I included header files provided by ccs c compiler can-mcp2510.c and I tried to communicate by using the functions in that header file.

But still the result is same. the transmit buffer is not getting empty. ie it is not transmitting that data.

So is it because of any problem with my hardware. I am trying it by placing ICs in breadboard.

I am still getting accurate output in loop back mode so I think the connection between PIC and MCP2515 is correct.
The transceiver ic I am using is MCP2551.

In MCP2551
I am using 120 Ohm termination resistor and the
rs pin I connected to ground using 10k resistor.

I am an engineering student and am trying to debug this problem for the last one week. Next week I am having review also.

So shall I go for 18f458, having inbuilt can controller.

Looking for valuable advice.

Thanks,
Suraj
collink



Joined: 08 Jan 2010
Posts: 137
Location: Michigan

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

PostPosted: Fri Feb 25, 2011 6:44 am     Reply with quote

Are both sides using the same type of PIC chip and everything? Your baud rate settings are as follows:

Baud prescaler of 2 so 4Mhz / 2 / 2 = 1 million time quanta per second.

Seg 1 of 8 TQ, Seg2 of 8 TQ, propegation TQ of 3.

1 + 3 + 8 + 8 = 20 TQ.

1M / 20 = 50000 baud. That's a really weird and low baud rate but I don't see why it couldn't work. It divided nice so it ought to be OK so long as both sides are being set to 50k baud.

Do you have an oscilloscope? I would hope so... You could try to look at the CANH and CANL lines which run between the boards to see if you are seeing the expected signal shapes. The expected output on the lines should show CANH as being near 3-4V and CANL being near 1-2V or so at rest. On bus activity they should be square waves converging to near the same voltage on both CANH and CANL. If you are getting odd signal shapes or the signals are not configured like I said then you have bus link problems.

itzsurajg wrote:
Thanks for your response...

The baud rate registers I had configured is
CNF1 = 0x01;
CNF2 = 0xBA;
CNF3 = 0x07;

Yesterday I included header files provided by ccs c compiler can-mcp2510.c and I tried to communicate by using the functions in that header file.

But still the result is same. the transmit buffer is not getting empty. ie it is not transmitting that data.

So is it because of any problem with my hardware. I am trying it by placing ICs in breadboard.

I am still getting accurate output in loop back mode so I think the connection between PIC and MCP2515 is correct.
The transceiver ic I am using is MCP2551.

In MCP2551
I am using 120 Ohm termination resistor and the
rs pin I connected to ground using 10k resistor.

I am an engineering student and am trying to debug this problem for the last one week. Next week I am having review also.

So shall I go for 18f458, having inbuilt can controller.

Looking for valuable advice.

Thanks,
Suraj
itzsurajg



Joined: 24 Feb 2011
Posts: 3
Location: KERALA

View user's profile Send private message

PostPosted: Fri Feb 25, 2011 7:24 am     Reply with quote

thanks a lot...
i will try...
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