DIISWAG / Mbed 2 deprecated CAN_Database

Dependencies:   mbed mbed-rtos

Committer:
dedounet
Date:
Tue May 23 07:57:18 2017 +0000
Revision:
3:35151308f847
Parent:
1:6f8bf5bdc70f
Child:
4:4051a72a22f7
ajout thread message RFID et filtre d'ID

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 1:6f8bf5bdc70f 19 unsigned int Id;
Taliarte 1:6f8bf5bdc70f 20
Taliarte 1:6f8bf5bdc70f 21 void canReader(void)
Taliarte 1:6f8bf5bdc70f 22 {
Taliarte 1:6f8bf5bdc70f 23
Taliarte 1:6f8bf5bdc70f 24
Taliarte 1:6f8bf5bdc70f 25 if (CanPort.read(MessageRx))
Taliarte 1:6f8bf5bdc70f 26 {
Taliarte 1:6f8bf5bdc70f 27 led1 = !led1;
dedounet 3:35151308f847 28 switch(MessageRx.id){
dedounet 3:35151308f847 29 case 0x111 :
dedounet 3:35151308f847 30 threadA.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 31 break;
dedounet 3:35151308f847 32
dedounet 3:35151308f847 33 case 0x221 :
dedounet 3:35151308f847 34 threadC.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 35 break;
dedounet 3:35151308f847 36
dedounet 3:35151308f847 37 case 0x222 :
dedounet 3:35151308f847 38 threadC.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 39 break;
dedounet 3:35151308f847 40
dedounet 3:35151308f847 41 case 0x333 :
dedounet 3:35151308f847 42
dedounet 3:35151308f847 43 break;
dedounet 3:35151308f847 44 default:
dedounet 3:35151308f847 45 printf("Id error = %X\n\r",MessageRx.id) ;
dedounet 3:35151308f847 46 }
dedounet 3:35151308f847 47
Taliarte 1:6f8bf5bdc70f 48 }
Taliarte 1:6f8bf5bdc70f 49
Taliarte 1:6f8bf5bdc70f 50 }
Taliarte 1:6f8bf5bdc70f 51
dedounet 3:35151308f847 52 void traitRFID()
Taliarte 1:6f8bf5bdc70f 53 {
dedounet 3:35151308f847 54 int i=0;
dedounet 3:35151308f847 55
Taliarte 1:6f8bf5bdc70f 56 while(true)
Taliarte 1:6f8bf5bdc70f 57 {
Taliarte 1:6f8bf5bdc70f 58 Thread::signal_wait(SIG_RX_CAN);
Taliarte 1:6f8bf5bdc70f 59 led2 = !led2;
dedounet 3:35151308f847 60 for(i=0; i<8;i++){
dedounet 3:35151308f847 61 printf("Numero de carte = %X\n\r",MessageRx.data[i]);
dedounet 3:35151308f847 62 }
Taliarte 1:6f8bf5bdc70f 63
dedounet 0:bcbc14441ee8 64 }
dedounet 0:bcbc14441ee8 65 }
dedounet 3:35151308f847 66
dedounet 3:35151308f847 67 void thA()
dedounet 3:35151308f847 68 {
dedounet 3:35151308f847 69 int i=0;
dedounet 3:35151308f847 70 while(true)
dedounet 3:35151308f847 71 {
dedounet 3:35151308f847 72 Thread::signal_wait(SIG_RX_CAN);
dedounet 3:35151308f847 73 led2 = !led2;
dedounet 3:35151308f847 74 if(MessageRx.data[0]==0x01){
dedounet 3:35151308f847 75 printf("RX ID = %X \t\n\r",MessageRx.id);
dedounet 3:35151308f847 76 for (i=0;i<8;i++){
dedounet 3:35151308f847 77 printf(" DATA = %X \n\r",MessageRx.data[i]);
dedounet 3:35151308f847 78 }
dedounet 3:35151308f847 79 }
dedounet 3:35151308f847 80 }
dedounet 3:35151308f847 81 }
Taliarte 1:6f8bf5bdc70f 82
Taliarte 1:6f8bf5bdc70f 83 void thB()
Taliarte 1:6f8bf5bdc70f 84 {
Taliarte 1:6f8bf5bdc70f 85 while (true)
Taliarte 1:6f8bf5bdc70f 86 {
Taliarte 1:6f8bf5bdc70f 87 led1 = !led1;
Taliarte 1:6f8bf5bdc70f 88 printf("TIC3s\n\r");
Taliarte 1:6f8bf5bdc70f 89 MessageTx.id=Id;
Taliarte 1:6f8bf5bdc70f 90 CanPort.write(MessageTx);
Taliarte 1:6f8bf5bdc70f 91
Taliarte 1:6f8bf5bdc70f 92 if (Id < 0x3FF) Id++;
Taliarte 1:6f8bf5bdc70f 93 else Id = 0x000;
Taliarte 1:6f8bf5bdc70f 94
Taliarte 1:6f8bf5bdc70f 95 wait(3);
Taliarte 1:6f8bf5bdc70f 96 }
Taliarte 1:6f8bf5bdc70f 97 }
Taliarte 1:6f8bf5bdc70f 98
Taliarte 1:6f8bf5bdc70f 99
Taliarte 1:6f8bf5bdc70f 100
Taliarte 1:6f8bf5bdc70f 101 int main()
Taliarte 1:6f8bf5bdc70f 102 {
Taliarte 1:6f8bf5bdc70f 103 CanPort.frequency(20000);
Taliarte 1:6f8bf5bdc70f 104
Taliarte 1:6f8bf5bdc70f 105 Id = 0x1A5;
Taliarte 1:6f8bf5bdc70f 106 MessageTx.len=2;
Taliarte 1:6f8bf5bdc70f 107 MessageTx.data[0] = 0x55;
Taliarte 1:6f8bf5bdc70f 108 MessageTx.data[1] = 0xAA;
Taliarte 1:6f8bf5bdc70f 109
Taliarte 1:6f8bf5bdc70f 110 MessageTx.format = CANStandard;
Taliarte 1:6f8bf5bdc70f 111 //MessageTx.format = CANExtended;
Taliarte 1:6f8bf5bdc70f 112
Taliarte 1:6f8bf5bdc70f 113 MessageTx.type = CANData;
Taliarte 1:6f8bf5bdc70f 114 //MessageTx.type = CANRemote;
Taliarte 1:6f8bf5bdc70f 115
Taliarte 1:6f8bf5bdc70f 116 CanPort.attach(canReader,CAN::RxIrq);
Taliarte 1:6f8bf5bdc70f 117
Taliarte 1:6f8bf5bdc70f 118 threadA.start(thA);
Taliarte 1:6f8bf5bdc70f 119 threadB.start(thB);
dedounet 3:35151308f847 120 threadC.start(traitRFID);
Taliarte 1:6f8bf5bdc70f 121
Taliarte 1:6f8bf5bdc70f 122 led1 = 0;
dedounet 3:35151308f847 123 led2 =0 ;
Taliarte 1:6f8bf5bdc70f 124 printf("Start OK\n\r");
Taliarte 1:6f8bf5bdc70f 125 LocalFileSystem local("local");
Taliarte 1:6f8bf5bdc70f 126 FILE *fp = fopen("/local/out.txt", "w"); // Open "out.txt" on the local file system for writing
Taliarte 1:6f8bf5bdc70f 127 fprintf(fp, "Hello World!");
Taliarte 1:6f8bf5bdc70f 128 fclose(fp);
Taliarte 1:6f8bf5bdc70f 129
Taliarte 1:6f8bf5bdc70f 130 while (true)
Taliarte 1:6f8bf5bdc70f 131 {
Taliarte 1:6f8bf5bdc70f 132
Taliarte 1:6f8bf5bdc70f 133 }
Taliarte 1:6f8bf5bdc70f 134 }