communication CAN avec affichage sur console

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

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