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  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 }