test code for our MBED board

Dependencies:   mbed lwip

Committer:
lolpcc
Date:
Tue Jan 12 16:49:56 2010 +0000
Revision:
0:9edfcca7cd25
Child:
1:6877bb99aa17

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lolpcc 0:9edfcca7cd25 1 #include "mbed.h"
lolpcc 0:9edfcca7cd25 2 #include "diags.h"
lolpcc 0:9edfcca7cd25 3 #include "CAN.h"
lolpcc 0:9edfcca7cd25 4
lolpcc 0:9edfcca7cd25 5 Ticker ticker;
lolpcc 0:9edfcca7cd25 6
lolpcc 0:9edfcca7cd25 7 // CAN_RS pin at Philips PCA82C250 can bus controller.
lolpcc 0:9edfcca7cd25 8 // activate transceiver by pulling this pin to GND.
lolpcc 0:9edfcca7cd25 9 // (Rise and fall slope controlled by resistor R_s)
lolpcc 0:9edfcca7cd25 10 // (+5V result in tranceiver standby mode)
lolpcc 0:9edfcca7cd25 11 // For further information see datasheet page 4
lolpcc 0:9edfcca7cd25 12 DigitalOut can_Pca82c250SlopePin(p28);
lolpcc 0:9edfcca7cd25 13
lolpcc 0:9edfcca7cd25 14 // We use can on mbed pins 29(CAN_TXD) and 30(CAN_RXD).
lolpcc 0:9edfcca7cd25 15 CAN can(p30, p29);
lolpcc 0:9edfcca7cd25 16
lolpcc 0:9edfcca7cd25 17 int can_cnt=0;
lolpcc 0:9edfcca7cd25 18
lolpcc 0:9edfcca7cd25 19 /******************************************/
lolpcc 0:9edfcca7cd25 20 /* */
lolpcc 0:9edfcca7cd25 21 /* Can Bus Tests */
lolpcc 0:9edfcca7cd25 22 /* */
lolpcc 0:9edfcca7cd25 23 /* */
lolpcc 0:9edfcca7cd25 24 /* */
lolpcc 0:9edfcca7cd25 25 /* */
lolpcc 0:9edfcca7cd25 26 /******************************************/
lolpcc 0:9edfcca7cd25 27 void send() {
lolpcc 0:9edfcca7cd25 28 static char counter = 0;
lolpcc 0:9edfcca7cd25 29 if (can.write(CANMessage(0x200, &counter, 1))) {
lolpcc 0:9edfcca7cd25 30 printf("CanTx--> id: 0x200 dlc: 1 data: %x\n\r", counter);
lolpcc 0:9edfcca7cd25 31 counter++;
lolpcc 0:9edfcca7cd25 32 } else {
lolpcc 0:9edfcca7cd25 33 printf("CanTx--> id: 0x200 dlc: 1 data: %x ERROR\n\r", counter);
lolpcc 0:9edfcca7cd25 34 can.reset();
lolpcc 0:9edfcca7cd25 35 }
lolpcc 0:9edfcca7cd25 36 if(can_cnt==0){
lolpcc 0:9edfcca7cd25 37 led_on(3);
lolpcc 0:9edfcca7cd25 38 can_cnt=1;
lolpcc 0:9edfcca7cd25 39 } else {
lolpcc 0:9edfcca7cd25 40 led_off(3);
lolpcc 0:9edfcca7cd25 41 can_cnt=0;
lolpcc 0:9edfcca7cd25 42 }
lolpcc 0:9edfcca7cd25 43 // toggle led1 after every transmission
lolpcc 0:9edfcca7cd25 44 }
lolpcc 0:9edfcca7cd25 45 void test_can(int loop)
lolpcc 0:9edfcca7cd25 46 {
lolpcc 0:9edfcca7cd25 47 // 500kbit/s
lolpcc 0:9edfcca7cd25 48 can.frequency(500000);
lolpcc 0:9edfcca7cd25 49 // activate external can transceiver
lolpcc 0:9edfcca7cd25 50 can_Pca82c250SlopePin = 0;
lolpcc 0:9edfcca7cd25 51 can_cnt=loop;
lolpcc 0:9edfcca7cd25 52 // every 500ms
lolpcc 0:9edfcca7cd25 53 ticker.attach(&send, 0.5);
lolpcc 0:9edfcca7cd25 54
lolpcc 0:9edfcca7cd25 55 printf("CAN message ticker started\n\r");
lolpcc 0:9edfcca7cd25 56 }