DIISWAG / Mbed 2 deprecated CAN_Database

Dependencies:   mbed mbed-rtos

Committer:
dedounet
Date:
Tue May 23 08:01:06 2017 +0000
Revision:
4:4051a72a22f7
Parent:
3:35151308f847
Parent:
2:654aafc318bf
Child:
6:2c713a0187dd
merged

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dedounet 0:bcbc14441ee8 1 #include "mbed.h"
Taliarte 1:6f8bf5bdc70f 2 #include "rtos.h"
Taliarte 1:6f8bf5bdc70f 3
Taliarte 1:6f8bf5bdc70f 4 #define SIG_RX_CAN 0x01
Taliarte 1:6f8bf5bdc70f 5
Taliarte 1:6f8bf5bdc70f 6
Taliarte 1:6f8bf5bdc70f 7 DigitalOut led1(LED1);
Taliarte 1:6f8bf5bdc70f 8 DigitalOut led2(LED2);
dedounet 0:bcbc14441ee8 9
Taliarte 1:6f8bf5bdc70f 10 Thread threadA;
Taliarte 1:6f8bf5bdc70f 11 Thread threadB;
dedounet 3:35151308f847 12 Thread threadC;
Taliarte 1:6f8bf5bdc70f 13
Taliarte 1:6f8bf5bdc70f 14
Taliarte 1:6f8bf5bdc70f 15 CAN CanPort(p30, p29);
Taliarte 1:6f8bf5bdc70f 16 CANMessage MessageRx;
Taliarte 1:6f8bf5bdc70f 17 CANMessage MessageTx;
Taliarte 1:6f8bf5bdc70f 18
Taliarte 2:654aafc318bf 19 CANMessage MessageBuzzer;
Taliarte 2:654aafc318bf 20
Taliarte 2:654aafc318bf 21 bool Send_Buzz=false; // Envoyer tramme au buzzer
Taliarte 2:654aafc318bf 22
Taliarte 1:6f8bf5bdc70f 23 unsigned int Id;
Taliarte 1:6f8bf5bdc70f 24
Taliarte 1:6f8bf5bdc70f 25 void canReader(void)
Taliarte 1:6f8bf5bdc70f 26 {
Taliarte 1:6f8bf5bdc70f 27
Taliarte 1:6f8bf5bdc70f 28
Taliarte 1:6f8bf5bdc70f 29 if (CanPort.read(MessageRx))
Taliarte 1:6f8bf5bdc70f 30 {
Taliarte 1:6f8bf5bdc70f 31 led1 = !led1;
dedounet 3:35151308f847 32 switch(MessageRx.id){
dedounet 3:35151308f847 33 case 0x111 :
dedounet 3:35151308f847 34 threadA.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 35 break;
dedounet 3:35151308f847 36
dedounet 3:35151308f847 37 case 0x221 :
dedounet 3:35151308f847 38 threadC.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 39 break;
dedounet 3:35151308f847 40
dedounet 3:35151308f847 41 case 0x222 :
dedounet 3:35151308f847 42 threadC.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 43 break;
dedounet 3:35151308f847 44
dedounet 3:35151308f847 45 case 0x333 :
dedounet 3:35151308f847 46
dedounet 3:35151308f847 47 break;
dedounet 3:35151308f847 48 default:
dedounet 3:35151308f847 49 printf("Id error = %X\n\r",MessageRx.id) ;
dedounet 3:35151308f847 50 }
dedounet 3:35151308f847 51
Taliarte 1:6f8bf5bdc70f 52 }
Taliarte 1:6f8bf5bdc70f 53
Taliarte 1:6f8bf5bdc70f 54 }
Taliarte 1:6f8bf5bdc70f 55
dedounet 3:35151308f847 56 void traitRFID()
Taliarte 1:6f8bf5bdc70f 57 {
dedounet 3:35151308f847 58 int i=0;
dedounet 3:35151308f847 59
Taliarte 1:6f8bf5bdc70f 60 while(true)
Taliarte 1:6f8bf5bdc70f 61 {
Taliarte 1:6f8bf5bdc70f 62 Thread::signal_wait(SIG_RX_CAN);
Taliarte 1:6f8bf5bdc70f 63 led2 = !led2;
dedounet 3:35151308f847 64 for(i=0; i<8;i++){
dedounet 3:35151308f847 65 printf("Numero de carte = %X\n\r",MessageRx.data[i]);
dedounet 3:35151308f847 66 }
Taliarte 1:6f8bf5bdc70f 67
dedounet 0:bcbc14441ee8 68 }
dedounet 0:bcbc14441ee8 69 }
dedounet 3:35151308f847 70
dedounet 3:35151308f847 71 void thA()
dedounet 3:35151308f847 72 {
dedounet 3:35151308f847 73 int i=0;
dedounet 3:35151308f847 74 while(true)
dedounet 3:35151308f847 75 {
dedounet 3:35151308f847 76 Thread::signal_wait(SIG_RX_CAN);
dedounet 3:35151308f847 77 led2 = !led2;
dedounet 3:35151308f847 78 if(MessageRx.data[0]==0x01){
dedounet 3:35151308f847 79 printf("RX ID = %X \t\n\r",MessageRx.id);
dedounet 3:35151308f847 80 for (i=0;i<8;i++){
dedounet 3:35151308f847 81 printf(" DATA = %X \n\r",MessageRx.data[i]);
dedounet 3:35151308f847 82 }
dedounet 3:35151308f847 83 }
dedounet 3:35151308f847 84 }
dedounet 3:35151308f847 85 }
Taliarte 1:6f8bf5bdc70f 86
Taliarte 1:6f8bf5bdc70f 87 void thB()
Taliarte 1:6f8bf5bdc70f 88 {
Taliarte 2:654aafc318bf 89 while(true)
Taliarte 1:6f8bf5bdc70f 90 {
Taliarte 1:6f8bf5bdc70f 91 led1 = !led1;
Taliarte 1:6f8bf5bdc70f 92 printf("TIC3s\n\r");
Taliarte 2:654aafc318bf 93 MessageBuzzer.id=Id;
Taliarte 2:654aafc318bf 94 CanPort.write(MessageBuzzer);
Taliarte 2:654aafc318bf 95 /*if (Id < 0x3FF) Id++;
Taliarte 2:654aafc318bf 96 else Id = 0x000;*/
Taliarte 1:6f8bf5bdc70f 97
Taliarte 1:6f8bf5bdc70f 98 wait(3);
Taliarte 1:6f8bf5bdc70f 99 }
Taliarte 1:6f8bf5bdc70f 100 }
Taliarte 1:6f8bf5bdc70f 101
Taliarte 1:6f8bf5bdc70f 102 int main()
Taliarte 1:6f8bf5bdc70f 103 {
Taliarte 2:654aafc318bf 104
Taliarte 2:654aafc318bf 105
Taliarte 1:6f8bf5bdc70f 106 CanPort.frequency(20000);
Taliarte 1:6f8bf5bdc70f 107
Taliarte 2:654aafc318bf 108 Id = 0x222;
Taliarte 2:654aafc318bf 109 MessageBuzzer.len=1;
Taliarte 2:654aafc318bf 110 MessageBuzzer.data[0] = 0x01;
Taliarte 2:654aafc318bf 111 //MessageTx.data[1] = 0xAA;
Taliarte 1:6f8bf5bdc70f 112
Taliarte 1:6f8bf5bdc70f 113 MessageTx.format = CANStandard;
Taliarte 1:6f8bf5bdc70f 114 //MessageTx.format = CANExtended;
Taliarte 1:6f8bf5bdc70f 115
Taliarte 1:6f8bf5bdc70f 116 MessageTx.type = CANData;
Taliarte 1:6f8bf5bdc70f 117 //MessageTx.type = CANRemote;
Taliarte 1:6f8bf5bdc70f 118
Taliarte 1:6f8bf5bdc70f 119 CanPort.attach(canReader,CAN::RxIrq);
Taliarte 1:6f8bf5bdc70f 120
Taliarte 1:6f8bf5bdc70f 121 threadA.start(thA);
Taliarte 1:6f8bf5bdc70f 122 threadB.start(thB);
dedounet 3:35151308f847 123 threadC.start(traitRFID);
Taliarte 1:6f8bf5bdc70f 124
Taliarte 1:6f8bf5bdc70f 125 led1 = 0;
dedounet 3:35151308f847 126 led2 =0 ;
Taliarte 1:6f8bf5bdc70f 127 printf("Start OK\n\r");
dedounet 4:4051a72a22f7 128
Taliarte 1:6f8bf5bdc70f 129
dedounet 4:4051a72a22f7 130
Taliarte 1:6f8bf5bdc70f 131 while (true)
Taliarte 1:6f8bf5bdc70f 132 {
Taliarte 1:6f8bf5bdc70f 133
Taliarte 1:6f8bf5bdc70f 134 }
Taliarte 1:6f8bf5bdc70f 135 }