Can bus not sending ID
Vic <simranranee-/[email protected]>
| Newsgroups | gmane.comp.hardware.microcontrollers.tini |
|---|---|
| Message-ID | <[email protected]> |
Hi Folks
When trying to send a CAN frame from TINI to another
CAN node (HC12 microcontroller based board), the 8
byte message data goes through, however not the
message ID. The receieving can node is set to accept
all messages, both standard and extended format. When
I retrieve the message on the node, the data is
correct, however the ID is returned as 0. Any ideas?
Below is my test code that runs on TINI to simply pump
some CAN frames in a loop onto the bus.
import com.dalsemi.comm.*;
import com.dalsemi.system.*;
public class CanSendTest {
// We store our CAN messages is the data array
static CanBus cb;
static CanFrame myFrame1 = new CanFrame();
static int delay = 100;
static int n=0;
static byte canErrorCanWrongFrameSize [] =
{(byte)0xA0,(byte)0x01,0,0,0,0,0,2};
static int iBaudrateSelector = 0; // =3D307200
static int iFreeReceiverNumber = 2; //should come
from a file or commandline
static int iFreeSenderNumber = 3; //should
come from a file or commandline
static boolean bPassiveBusMode = false;
static int canHostId = 0x101;
static void main( String args[] )
{
System.out.println( "CAN SendTest at 500k For
Event Trigger" );
System.out.println("Opening Canbus");
try{
cb = new CanBus(CanBus.CANBUS0);
cb.resetController(); // force default state
cb.disableController();
cb.setBaudRatePrescaler(14);//prescaler[iBaudrateSelector]);
cb.setTSEG1(13); //tseg1[iBaudrateSelector]);
cb.setTSEG2(7); //tseg2[iBaudrateSelector]);
cb.setSampleRate(1);
cb.setSynchronizationJumpWidth(4);
cb.setReceiveQueueLimit(4);
cb.setTransmitQueueLimit(4);
if (bPassiveBusMode)//is set to false, so I can
also send!
{
cb.enableControllerPassive();
}
else
{
cb.enableController();
}
//System.out.println("Canbus open at " +
bps[iBaudrateSelector] + " bps");
//System.out.println("Canbus open at 500k bps");
// Init message center for receiving encoder
messages
//cb.setMessageCenterRXMode(iFreeReceiverNumber);
//cb.setMessageCenterMessageIDMaskEnable(iFreeReceiverNumber,false);
//cb.set11BitMessageCenterArbitrationID(iFreeReceiverNumber,canEthernetId);
//cb.enableMessageCenter(iFreeReceiverNumber);
//pre coded setup for all messages
System.out.println( "Enabling Message Center 1." );
cb.setMessageCenterRXMode( 1 );
cb.setMessageCenterRXMode( 2 );
cb.setMessageCenterRXMode( 3 );
cb.setMessageCenterRXMode( 4 );
//myCanBus.setMessageCenterRXMode( 15 );
//recieve only centre
// Look for all addresses
cb.set11BitGlobalIDMask(0xFFFF);
cb.set29BitGlobalIDMask(0xFFFFFFFF);
cb.set29BitMessageCenter15IDMask(0xFFFFFFFF);
System.out.println( "Setting up filtering.");
// filtering
cb.setMessageCenterMessageIDMaskEnable( 1,
true);
cb.setMessageCenterMessageIDMaskEnable( 2,
true );
cb.setMessageCenterMessageIDMaskEnable( 3,
true );
cb.setMessageCenterMessageIDMaskEnable( 4,
true );
cb.setMessageCenterMessageIDMaskEnable( 15,
true);
// need this so that MC1 will look for 29
bit addresses
//cb.set11BitMessageCenterArbitrationID(
1, 0x00 );
//cb.set11BitMessageCenterArbitrationID(
2, 0x00 );
//cb.set11BitMessageCenterArbitrationID(
3, 0x00 );
//cb.set11BitMessageCenterArbitrationID(
4, 0x00 );
// Enable Message Centers
cb.enableMessageCenter( 1 );
cb.enableMessageCenter( 2 );
cb.enableMessageCenter( 3 );
cb.enableMessageCenter( 4 );
cb.enableMessageCenter( 15 );
//end of precoded settings
// Init message center for sending messages
cb.setMessageCenterTXMode(iFreeSenderNumber);
cb.setMessageCenterMessageIDMaskEnable(iFreeSenderNumber,false);
//cb.set11BitMessageCenterArbitrationID(iFreeSenderNumber,canHostId);
cb.enableMessageCenter(iFreeSenderNumber);
}
catch(Exception e){ System.out.println( e ); }
// just some data for a frame to send
byte[] data=
{'A','B','C','D','E','F','G','H'};
for(n=0;n<=30;n++)
{
try {
System.out.println( " 1: sendDataFrame,
standard, ID 0x0101: " + data);
//data[0] = (byte) 0x01;
myFrame1.setID(0x125);
myFrame1.setData(data);
myFrame1.setExtendedID(false);
cb.sendFrame(myFrame1);
for(int i=0;i<=9999;i++); //simple lag
//cb.sendDataFrame(0x101, false, data );
//TINIOS.sleepProcess( delay );
}
catch( Exception e ) { System.out.println( e
); }
//TINIOS.sleepProcess( delay );
}
System.exit(0);
}
}
Thanks for your help
Jameel
__________________________________
Do you Yahoo!?
Yahoo! Finance: Get your refund fast by filing online.
http://taxes.yahoo.com/filing.html
_______________________________________________
TINI mailing list
TINI-6tN4nzCoH/[email protected]
To UNSUBSCRIBE, edit your profile, or see list archives:
http://lists.dalsemi.com/mailman/listinfo/tini