EmbeddedRelated.com
Forums

dsPIC30F6003 CAN Interface

Started by Nagaraj L October 13, 2004
I am working on device marked dsPIC30F6003. I am facing some problem
during CAN interface.

1. I am getting linker problem if I access C1TX0DLC, C1RX0DLC
registers.
2. If I send a message from CAN test tool, dsPIC30F6003 sends ACK even
if the standard identifier is different. I checked for Mask bits and
the configuration settings are all bits will be checked.
3. After ACK is sent, no standard identifier or data is received in
the registers.
4. I have checked for the signals at Controller pins and signals are
correct for the data transmitted.
Nagaraj L <NagarajL@tataelxsi.co.in> wrote:

> 1. I am getting linker problem if I access C1TX0DLC, C1RX0DLC > registers.
That's for your compiler/toolchain vendor to solve. Ask them.
> 2. If I send a message from CAN test tool, dsPIC30F6003 sends ACK even > if the standard identifier is different. I checked for Mask bits and > the configuration settings are all bits will be checked.
You're misunderstanding how CAN works. Sending ACK has nothing to do with identifier selection or masking --- ACK is a generic feature of CAN protocol, whereas identifier masks are internal to your particular device. They have essentially nothing to do with CAN communication itself. In particular, your dsPIC sending the ACK bit by no means implies that it thought this CAN frame was addressed to itself --- it just indicates that as far as CAN frames go, this one seemed to be correct. In a correctly configured CAN bus, *all* nodes on the network except the one sending a given message will ACKnowledge it, regardless of its content. -- Hans-Bernhard Broeker (broeker@physik.rwth-aachen.de) Even if all the snow were burnt, ashes would remain.
> > 1. I am getting linker problem if I access C1TX0DLC, C1RX0DLC > > registers. > > That's for your compiler/toolchain vendor to solve. Ask them. > > > 2. If I send a message from CAN test tool, dsPIC30F6003 sends ACK even > > if the standard identifier is different. I checked for Mask bits and > > the configuration settings are all bits will be checked. > > You're misunderstanding how CAN works. Sending ACK has nothing to do > with identifier selection or masking --- ACK is a generic feature of > CAN protocol, whereas identifier masks are internal to your particular > device. They have essentially nothing to do with CAN communication > itself. > > In particular, your dsPIC sending the ACK bit by no means implies that > it thought this CAN frame was addressed to itself --- it just > indicates that as far as CAN frames go, this one seemed to be correct. > In a correctly configured CAN bus, *all* nodes on the network except > the one sending a given message will ACKnowledge it, regardless of its > content.
Even when the mask bits are all 0, data or SID does not come in to Receive buffer registers. I checked giving the same SID also. I got some inputs saying there were some changes to CAN module of dsPIC30F6003 which was a prototype device, before it was upgraded and released as dsPIC30F6010. Can any of you provide me the device erata sheet for dsPIC30F6003 when it was released? There is no information regarding this on dsPIC30F6003 on Microchip / dsPIC site.