Publication TP CAN

Dependencies:   Dashboard_BUS_CAN Programme_BUS_CAN mbed

Committer:
KEG
Date:
Tue Jun 05 16:49:19 2018 +0000
Revision:
0:4eee0a42e29b
Pulication;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
KEG 0:4eee0a42e29b 1 #include "Dashboard.h"
KEG 0:4eee0a42e29b 2 #include "mbed.h"
KEG 0:4eee0a42e29b 3
KEG 0:4eee0a42e29b 4 #define SIG_RX_CAN 0x01
KEG 0:4eee0a42e29b 5 #define SIG_AFF 0x01
KEG 0:4eee0a42e29b 6
KEG 0:4eee0a42e29b 7 DigitalOut led1(LED1);
KEG 0:4eee0a42e29b 8 DigitalOut led2(LED2);
KEG 0:4eee0a42e29b 9 DigitalOut led3(LED3);
KEG 0:4eee0a42e29b 10
KEG 0:4eee0a42e29b 11 Thread threadA;
KEG 0:4eee0a42e29b 12 Thread threadB;
KEG 0:4eee0a42e29b 13
KEG 0:4eee0a42e29b 14 CAN CanPort(p30, p29);
KEG 0:4eee0a42e29b 15 CANMessage MessageRx;
KEG 0:4eee0a42e29b 16 Dashboard dshbd(p28, p27);
KEG 0:4eee0a42e29b 17
KEG 0:4eee0a42e29b 18 signed char dataToPrint[8];
KEG 0:4eee0a42e29b 19
KEG 0:4eee0a42e29b 20 void canReader(void)
KEG 0:4eee0a42e29b 21 {
KEG 0:4eee0a42e29b 22 if (CanPort.read(MessageRx))
KEG 0:4eee0a42e29b 23 {
KEG 0:4eee0a42e29b 24 led1 = !led1;
KEG 0:4eee0a42e29b 25 threadA.signal_set(SIG_RX_CAN);
KEG 0:4eee0a42e29b 26 }
KEG 0:4eee0a42e29b 27 }
KEG 0:4eee0a42e29b 28
KEG 0:4eee0a42e29b 29 void readFrame(CANMessage msg){
KEG 0:4eee0a42e29b 30 if(msg.id==2){
KEG 0:4eee0a42e29b 31 int i=0;
KEG 0:4eee0a42e29b 32 for(i=0;i<8;i++){
KEG 0:4eee0a42e29b 33 dataToPrint[i]=msg.data[i];
KEG 0:4eee0a42e29b 34 }
KEG 0:4eee0a42e29b 35 }
KEG 0:4eee0a42e29b 36 }
KEG 0:4eee0a42e29b 37
KEG 0:4eee0a42e29b 38 void thA()
KEG 0:4eee0a42e29b 39 {
KEG 0:4eee0a42e29b 40 while(true)
KEG 0:4eee0a42e29b 41 {
KEG 0:4eee0a42e29b 42 Thread::signal_wait(SIG_RX_CAN);
KEG 0:4eee0a42e29b 43 readFrame(MessageRx);
KEG 0:4eee0a42e29b 44 led2 = !led2;
KEG 0:4eee0a42e29b 45 threadB.signal_set(SIG_AFF);
KEG 0:4eee0a42e29b 46 //printf("RX FRAME ID = %X\n",MessageRx.id);
KEG 0:4eee0a42e29b 47 }
KEG 0:4eee0a42e29b 48 }
KEG 0:4eee0a42e29b 49
KEG 0:4eee0a42e29b 50 void thB()
KEG 0:4eee0a42e29b 51 {
KEG 0:4eee0a42e29b 52 //int i=0;
KEG 0:4eee0a42e29b 53 while(true){
KEG 0:4eee0a42e29b 54 Thread::signal_wait(SIG_AFF);
KEG 0:4eee0a42e29b 55 led3 = !led3;
KEG 0:4eee0a42e29b 56 dshbd.clear();
KEG 0:4eee0a42e29b 57 dshbd.printData(dataToPrint);
KEG 0:4eee0a42e29b 58 dshbd.changeColor(dataToPrint[0]);
KEG 0:4eee0a42e29b 59 //wait(5);
KEG 0:4eee0a42e29b 60 /*i++;
KEG 0:4eee0a42e29b 61 if(i>7){i=0;}*/
KEG 0:4eee0a42e29b 62 //printData();
KEG 0:4eee0a42e29b 63 }
KEG 0:4eee0a42e29b 64 }
KEG 0:4eee0a42e29b 65
KEG 0:4eee0a42e29b 66 int main()
KEG 0:4eee0a42e29b 67 {
KEG 0:4eee0a42e29b 68 //Init CAN
KEG 0:4eee0a42e29b 69 CanPort.frequency(20000);
KEG 0:4eee0a42e29b 70 //Init LCD
KEG 0:4eee0a42e29b 71 dshbd.setRGB(0xff, 0xff, 0xff); //set the color
KEG 0:4eee0a42e29b 72 dshbd.print("Init System !");
KEG 0:4eee0a42e29b 73 dshbd.locate(0,1);
KEG 0:4eee0a42e29b 74 wait(5);
KEG 0:4eee0a42e29b 75
KEG 0:4eee0a42e29b 76 CanPort.attach(canReader,CAN::RxIrq);
KEG 0:4eee0a42e29b 77
KEG 0:4eee0a42e29b 78 threadA.start(thA);
KEG 0:4eee0a42e29b 79 threadB.start(thB);
KEG 0:4eee0a42e29b 80
KEG 0:4eee0a42e29b 81 while(1)
KEG 0:4eee0a42e29b 82 {
KEG 0:4eee0a42e29b 83
KEG 0:4eee0a42e29b 84
KEG 0:4eee0a42e29b 85 }
KEG 0:4eee0a42e29b 86 }
KEG 0:4eee0a42e29b 87