François .
/
cantestSauvOK
Embed:
(wiki syntax)
Show/hide line numbers
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 can2(p9, p10); 00020 00021 // We use can on mbed pins 29(CAN_TXD) and 30(CAN_RXD). 00022 // CAN can2(p30, p29); 00023 00024 void send() { 00025 static char counter = 0; 00026 if (can2.write(CANMessage(0x300, &counter, 1))) { 00027 printf("CanTx--> id: 0x200 dlc: 1 data: %x\n\r", counter); 00028 counter++; 00029 } 00030 // toggle led1 after every transmission 00031 led1 = !led1; 00032 } 00033 00034 int main() { 00035 00036 FILE *test1 = fopen("/local/test.txt", "w"); 00037 00038 bool flag = false; 00039 int i =0 ; 00040 00041 // 500kbit/s 00042 can2.frequency(500000); 00043 // activate external can transceiver 00044 can_Pca82c250SlopePin = 0; 00045 // every 500ms 00046 ticker.attach(&send, 0.5); 00047 /// create message object for message reception 00048 CANMessage can_MsgRx; 00049 while(i<10) 00050 { 00051 while (flag!=true) 00052 { 00053 // send received messages to the pc via serial line (9k6, 8n1) 00054 if (can2.read(can_MsgRx)) 00055 { 00056 led2 = !led2; 00057 flag = true; 00058 } 00059 00060 00061 } 00062 00063 fprintf(test1,"%d-%d-%c%c%c%c%c%c%c%c\r",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]); 00064 flag = false ; 00065 i++; 00066 } 00067 fclose(test1); 00068 }
Generated on Sat Aug 6 2022 08:50:02 by 1.7.2