Last commit 24 Aug 2011
main.cpp
00001 #include "mbed.h" 00002 #include "CAN.h" 00003 00004 Ticker ticker; 00005 00006 DigitalOut led1(LED1); 00007 DigitalOut led2(LED2); 00008 00009 LocalFileSystem local("local"); 00010 00011 // CAN_RS pin at Philips PCA82C250 can bus controller. 00012 // activate transceiver by pulling this pin to GND. 00013 // (Rise and fall slope controlled by resistor R_s) 00014 // (+5V result in tranceiver standby mode) 00015 // For further information see datasheet page 4 00016 DigitalOut can_Pca82c250SlopePin(p28); 00017 00018 // second can controller on these pins. Not used here. 00019 // CAN can1(p9, p10); 00020 00021 // We use can on mbed pins 29(CAN_TXD) and 30(CAN_RXD). 00022 CAN can2(p30, p29); 00023 00024 char trames[250]; 00025 //int j = 0; 00026 00027 void send() { 00028 static char counter = 0; 00029 if (can2.write(CANMessage(0x300, &counter, 1))) { 00030 printf("CanTx--> id: 0x200 dlc: 1 data: %x\n\r", counter); 00031 counter++; 00032 } 00033 // toggle led1 after every transmission 00034 led1 = !led1; 00035 } 00036 00037 int main() { 00038 00039 FILE *test1 = fopen("/local/test.txt", "w"); 00040 00041 bool flag = false; 00042 00043 // 500kbit/s 00044 can2.frequency(500000); 00045 // activate external can transceiver 00046 can_Pca82c250SlopePin = 0; 00047 // every 500ms 00048 ticker.attach(&send, 0.5); 00049 /// create message object for message reception 00050 CANMessage can_MsgRx; 00051 00052 while (flag!=true) 00053 { 00054 // send received messages to the pc via serial line (9k6, 8n1) 00055 if (can2.read(can_MsgRx)) 00056 { 00057 led2 = !led2; 00058 flag = true; 00059 } 00060 00061 00062 } 00063 00064 fprintf(test1,"\n%d-%d-%c%c%c%c%c%c%c%c",can_MsgRx.len,can_MsgRx.id,can_MsgRx.data[0],can_MsgRx.data[1],can_MsgRx.data[2],can_MsgRx.data[3],can_MsgRx.data[4],can_MsgRx.data[5],can_MsgRx.data[6],can_MsgRx.data[7]); 00065 fclose(test1); 00066 }
