Committer:
bouguereau
Date:
Wed Aug 24 09:47:21 2011 +0000
Revision:
0:331ddba1e888

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bouguereau 0:331ddba1e888 1 #include "mbed.h"
bouguereau 0:331ddba1e888 2 #include "CAN.h"
bouguereau 0:331ddba1e888 3
bouguereau 0:331ddba1e888 4 Ticker ticker;
bouguereau 0:331ddba1e888 5
bouguereau 0:331ddba1e888 6 DigitalOut led1(LED1);
bouguereau 0:331ddba1e888 7 DigitalOut led2(LED2);
bouguereau 0:331ddba1e888 8
bouguereau 0:331ddba1e888 9 LocalFileSystem local("local");
bouguereau 0:331ddba1e888 10
bouguereau 0:331ddba1e888 11 // CAN_RS pin at Philips PCA82C250 can bus controller.
bouguereau 0:331ddba1e888 12 // activate transceiver by pulling this pin to GND.
bouguereau 0:331ddba1e888 13 // (Rise and fall slope controlled by resistor R_s)
bouguereau 0:331ddba1e888 14 // (+5V result in tranceiver standby mode)
bouguereau 0:331ddba1e888 15 // For further information see datasheet page 4
bouguereau 0:331ddba1e888 16 DigitalOut can_Pca82c250SlopePin(p28);
bouguereau 0:331ddba1e888 17
bouguereau 0:331ddba1e888 18 // second can controller on these pins. Not used here.
bouguereau 0:331ddba1e888 19 // CAN can1(p9, p10);
bouguereau 0:331ddba1e888 20
bouguereau 0:331ddba1e888 21 // We use can on mbed pins 29(CAN_TXD) and 30(CAN_RXD).
bouguereau 0:331ddba1e888 22 CAN can2(p30, p29);
bouguereau 0:331ddba1e888 23
bouguereau 0:331ddba1e888 24 char trames[250];
bouguereau 0:331ddba1e888 25 //int j = 0;
bouguereau 0:331ddba1e888 26
bouguereau 0:331ddba1e888 27 void send() {
bouguereau 0:331ddba1e888 28 static char counter = 0;
bouguereau 0:331ddba1e888 29 if (can2.write(CANMessage(0x300, &counter, 1))) {
bouguereau 0:331ddba1e888 30 printf("CanTx--> id: 0x200 dlc: 1 data: %x\n\r", counter);
bouguereau 0:331ddba1e888 31 counter++;
bouguereau 0:331ddba1e888 32 }
bouguereau 0:331ddba1e888 33 // toggle led1 after every transmission
bouguereau 0:331ddba1e888 34 led1 = !led1;
bouguereau 0:331ddba1e888 35 }
bouguereau 0:331ddba1e888 36
bouguereau 0:331ddba1e888 37 int main() {
bouguereau 0:331ddba1e888 38
bouguereau 0:331ddba1e888 39 FILE *test1 = fopen("/local/test.txt", "w");
bouguereau 0:331ddba1e888 40
bouguereau 0:331ddba1e888 41 bool flag = false;
bouguereau 0:331ddba1e888 42
bouguereau 0:331ddba1e888 43 // 500kbit/s
bouguereau 0:331ddba1e888 44 can2.frequency(500000);
bouguereau 0:331ddba1e888 45 // activate external can transceiver
bouguereau 0:331ddba1e888 46 can_Pca82c250SlopePin = 0;
bouguereau 0:331ddba1e888 47 // every 500ms
bouguereau 0:331ddba1e888 48 ticker.attach(&send, 0.5);
bouguereau 0:331ddba1e888 49 /// create message object for message reception
bouguereau 0:331ddba1e888 50 CANMessage can_MsgRx;
bouguereau 0:331ddba1e888 51
bouguereau 0:331ddba1e888 52 while (flag!=true)
bouguereau 0:331ddba1e888 53 {
bouguereau 0:331ddba1e888 54 // send received messages to the pc via serial line (9k6, 8n1)
bouguereau 0:331ddba1e888 55 if (can2.read(can_MsgRx))
bouguereau 0:331ddba1e888 56 {
bouguereau 0:331ddba1e888 57 led2 = !led2;
bouguereau 0:331ddba1e888 58 flag = true;
bouguereau 0:331ddba1e888 59 }
bouguereau 0:331ddba1e888 60
bouguereau 0:331ddba1e888 61
bouguereau 0:331ddba1e888 62 }
bouguereau 0:331ddba1e888 63
bouguereau 0:331ddba1e888 64 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]);
bouguereau 0:331ddba1e888 65 fclose(test1);
bouguereau 0:331ddba1e888 66 }