François .
/
PASSERELLE
main.cpp
- Committer:
- bouguereau
- Date:
- 2011-08-24
- Revision:
- 0:615f7fbcd604
File content as of revision 0:615f7fbcd604:
#include "mbed.h" #include "CAN.h" Ticker ticker; DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); LocalFileSystem local("local"); // CAN_RS pin at Philips PCA82C250 can bus controller. // activate transceiver by pulling this pin to GND. // (Rise and fall slope controlled by resistor R_s) // (+5V result in tranceiver standby mode) // For further information see datasheet page 4 DigitalOut can_Pca82c250SlopePin(p28); // second can controller on these pins. Not used here. CAN can2(p9, p10); // We use can on mbed pins 29(CAN_TXD) and 30(CAN_RXD). CAN can1(p30, p29); /* void send1() { static char counter1 = 0; if (can1.write(CANMessage(0x200, &counter1, 1))) { printf("CanTx--> id: 0x200 dlc: 1 data: %x\n\r", counter1); counter1++; } // toggle led1 after every transmission led1 = !led1; }*/ /* void send2() { static char counter2 = 0; if (can2.write(CANMessage(0x300, &counter2, 1))) { printf("CanTx--> id: 0x300 dlc: 2 data: %x\n\r", counter2); counter2++; } // toggle led2 after every transmission led2 = !led2; }*/ void send() { static char counter = 0; if (can2.write(CANMessage(0x300, &counter, 1))) { printf("CanTx--> id: 0x300 dlc: 2 data: %x\n\r", counter); counter++; } if (can1.write(CANMessage(0x200, &counter, 2))) { printf("CanTx--> id: 0x300 dlc: 2 data: %x\n\r", counter); counter++; } // toggle led2 after every transmission led2 = !led2; } int main() { FILE *test1 = fopen("/local/test1.txt", "w"); FILE *test2 = fopen("/local/test2.txt","w"); bool flag1 = false; bool flag2 = false; int i =0 ; // 500kbit/s can1.frequency(500000); can2.frequency(500000); // activate external can transceiver can_Pca82c250SlopePin = 0; // every 500ms ticker.attach(&send, 0.5); // create message object for message reception // CANMessage can_MsgRx; CANMessage can_MsgRx1; CANMessage can_MsgRx2; //------------------------RECEPTION--------------------------------------\\ while(i<10) { while (flag1!=true) // send received messages to the pc via serial line (9k6, 8n1) if (can1.read(can_MsgRx1)) { led3 = !led3; flag1 = true; } while ( flag2!=true ) if (can2.read(can_MsgRx2)) { led4 = !led4; flag2 = true; } fprintf(test1,"%d-%d-%c%c%c%c%c%c%c%c\r",can_MsgRx1.len,can_MsgRx1.id,can_MsgRx1.data[0],can_MsgRx1.data[1],can_MsgRx1.data[2],can_MsgRx1.data[3],can_MsgRx1.data[4],can_MsgRx1.data[5],can_MsgRx1.data[6],can_MsgRx1.data[7]); fprintf(test2,"%d-%d-%c%c%c%c%c%c%c%c\r",can_MsgRx2.len,can_MsgRx2.id,can_MsgRx2.data[0],can_MsgRx2.data[1],can_MsgRx2.data[2],can_MsgRx2.data[3],can_MsgRx2.data[4],can_MsgRx2.data[5],can_MsgRx2.data[6],can_MsgRx2.data[7]); flag1 = false ; flag2 = false ; i++; } fclose(test1); fclose(test2); }