SMART CLEO Uart IR

Committer:
SMART_CLEO
Date:
Thu Sep 28 03:34:43 2017 +0000
Revision:
0:867daeb1e2b2
Child:
1:f8749f23bfda
SMART_CLEO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SMART_CLEO 0:867daeb1e2b2 1 #include "mbed.h"
SMART_CLEO 0:867daeb1e2b2 2
SMART_CLEO 0:867daeb1e2b2 3 struct UART_buf
SMART_CLEO 0:867daeb1e2b2 4 {
SMART_CLEO 0:867daeb1e2b2 5 uint8_t STA;
SMART_CLEO 0:867daeb1e2b2 6 uint8_t MODE;
SMART_CLEO 0:867daeb1e2b2 7 uint8_t CMD;
SMART_CLEO 0:867daeb1e2b2 8 uint8_t LEN;
SMART_CLEO 0:867daeb1e2b2 9 uint8_t DATA[32];
SMART_CLEO 0:867daeb1e2b2 10 uint8_t END;
SMART_CLEO 0:867daeb1e2b2 11
SMART_CLEO 0:867daeb1e2b2 12 };
SMART_CLEO 0:867daeb1e2b2 13
SMART_CLEO 0:867daeb1e2b2 14
SMART_CLEO 0:867daeb1e2b2 15 PinName pin_IR_D = PC_12;
SMART_CLEO 0:867daeb1e2b2 16
SMART_CLEO 0:867daeb1e2b2 17 Serial SerialUART(PA_2, PA_3);
SMART_CLEO 0:867daeb1e2b2 18
SMART_CLEO 0:867daeb1e2b2 19 uint8_t Buffer[37];
SMART_CLEO 0:867daeb1e2b2 20
SMART_CLEO 0:867daeb1e2b2 21 //UART_buf RX_BUF;
SMART_CLEO 0:867daeb1e2b2 22
SMART_CLEO 0:867daeb1e2b2 23 InterruptIn IR_Detect(pin_IR_D);
SMART_CLEO 0:867daeb1e2b2 24
SMART_CLEO 0:867daeb1e2b2 25 //Ticker Sensor_Timer;
SMART_CLEO 0:867daeb1e2b2 26
SMART_CLEO 0:867daeb1e2b2 27 //void SerialUARTRX_ISR(void);
SMART_CLEO 0:867daeb1e2b2 28 //void Timer_setting(uint8_t cmd, uint8_t value);
SMART_CLEO 0:867daeb1e2b2 29 //void Sensor_Read(void);
SMART_CLEO 0:867daeb1e2b2 30 void Sensor_Read_F(void);
SMART_CLEO 0:867daeb1e2b2 31 void Sensor_Read_R(void);
SMART_CLEO 0:867daeb1e2b2 32
SMART_CLEO 0:867daeb1e2b2 33 int main() {
SMART_CLEO 0:867daeb1e2b2 34
SMART_CLEO 0:867daeb1e2b2 35 SerialUART.baud(115200);
SMART_CLEO 0:867daeb1e2b2 36
SMART_CLEO 0:867daeb1e2b2 37 //SerialUART.attach(&SerialUARTRX_ISR);
SMART_CLEO 0:867daeb1e2b2 38
SMART_CLEO 0:867daeb1e2b2 39 //Timer_setting(0x06, 2);
SMART_CLEO 0:867daeb1e2b2 40
SMART_CLEO 0:867daeb1e2b2 41 IR_Detect.rise(&Sensor_Read_R);
SMART_CLEO 0:867daeb1e2b2 42 IR_Detect.fall(&Sensor_Read_F);
SMART_CLEO 0:867daeb1e2b2 43
SMART_CLEO 0:867daeb1e2b2 44 while(1)
SMART_CLEO 0:867daeb1e2b2 45 {
SMART_CLEO 0:867daeb1e2b2 46 }
SMART_CLEO 0:867daeb1e2b2 47 }
SMART_CLEO 0:867daeb1e2b2 48
SMART_CLEO 0:867daeb1e2b2 49 /*void SerialUARTRX_ISR(void)
SMART_CLEO 0:867daeb1e2b2 50 {
SMART_CLEO 0:867daeb1e2b2 51 static uint8_t RX_count = 0, RX_Len = 32, RX_Status = 0;
SMART_CLEO 0:867daeb1e2b2 52 uint8_t rx_da = SerialUART.getc();
SMART_CLEO 0:867daeb1e2b2 53 switch(RX_Status)
SMART_CLEO 0:867daeb1e2b2 54 {
SMART_CLEO 0:867daeb1e2b2 55 case 0:
SMART_CLEO 0:867daeb1e2b2 56 if(rx_da == 0x76)
SMART_CLEO 0:867daeb1e2b2 57 {
SMART_CLEO 0:867daeb1e2b2 58 RX_BUF.STA = rx_da;
SMART_CLEO 0:867daeb1e2b2 59 RX_Status++;
SMART_CLEO 0:867daeb1e2b2 60 }
SMART_CLEO 0:867daeb1e2b2 61 break;
SMART_CLEO 0:867daeb1e2b2 62 case 1:
SMART_CLEO 0:867daeb1e2b2 63 RX_BUF.MODE = rx_da;
SMART_CLEO 0:867daeb1e2b2 64 RX_Status++;
SMART_CLEO 0:867daeb1e2b2 65 break;
SMART_CLEO 0:867daeb1e2b2 66 case 2:
SMART_CLEO 0:867daeb1e2b2 67 RX_BUF.CMD = rx_da;
SMART_CLEO 0:867daeb1e2b2 68 RX_Status++;
SMART_CLEO 0:867daeb1e2b2 69 break;
SMART_CLEO 0:867daeb1e2b2 70 case 3:
SMART_CLEO 0:867daeb1e2b2 71 RX_BUF.LEN = rx_da;
SMART_CLEO 0:867daeb1e2b2 72 RX_Len = RX_BUF.LEN;
SMART_CLEO 0:867daeb1e2b2 73 RX_Status++;
SMART_CLEO 0:867daeb1e2b2 74 if(RX_Len == 0)
SMART_CLEO 0:867daeb1e2b2 75 RX_Status++;
SMART_CLEO 0:867daeb1e2b2 76 break;
SMART_CLEO 0:867daeb1e2b2 77 case 4:
SMART_CLEO 0:867daeb1e2b2 78 RX_BUF.DATA[RX_count] = rx_da;
SMART_CLEO 0:867daeb1e2b2 79 RX_count++;
SMART_CLEO 0:867daeb1e2b2 80 if(RX_count == RX_Len)
SMART_CLEO 0:867daeb1e2b2 81 {
SMART_CLEO 0:867daeb1e2b2 82 RX_Status++;
SMART_CLEO 0:867daeb1e2b2 83 RX_count = 0;
SMART_CLEO 0:867daeb1e2b2 84 RX_Len = 32;
SMART_CLEO 0:867daeb1e2b2 85 }
SMART_CLEO 0:867daeb1e2b2 86 break;
SMART_CLEO 0:867daeb1e2b2 87 case 5:
SMART_CLEO 0:867daeb1e2b2 88 if(rx_da == 0x3E)
SMART_CLEO 0:867daeb1e2b2 89 {
SMART_CLEO 0:867daeb1e2b2 90 RX_BUF.END = rx_da;
SMART_CLEO 0:867daeb1e2b2 91 RX_Status = 0;
SMART_CLEO 0:867daeb1e2b2 92 switch(RX_BUF.MODE)
SMART_CLEO 0:867daeb1e2b2 93 {
SMART_CLEO 0:867daeb1e2b2 94 case 0x04:
SMART_CLEO 0:867daeb1e2b2 95 Timer_setting(RX_BUF.CMD, RX_BUF.DATA[0]);
SMART_CLEO 0:867daeb1e2b2 96 break;
SMART_CLEO 0:867daeb1e2b2 97 }
SMART_CLEO 0:867daeb1e2b2 98 }
SMART_CLEO 0:867daeb1e2b2 99 break;
SMART_CLEO 0:867daeb1e2b2 100 }
SMART_CLEO 0:867daeb1e2b2 101 }*/
SMART_CLEO 0:867daeb1e2b2 102
SMART_CLEO 0:867daeb1e2b2 103 /*void Timer_setting(uint8_t cmd, uint8_t value)
SMART_CLEO 0:867daeb1e2b2 104 {
SMART_CLEO 0:867daeb1e2b2 105 double Time_value = 0;
SMART_CLEO 0:867daeb1e2b2 106 switch(cmd)
SMART_CLEO 0:867daeb1e2b2 107 {
SMART_CLEO 0:867daeb1e2b2 108 case 0x01:
SMART_CLEO 0:867daeb1e2b2 109 Time_value = 30;
SMART_CLEO 0:867daeb1e2b2 110 break;
SMART_CLEO 0:867daeb1e2b2 111 case 0x02:
SMART_CLEO 0:867daeb1e2b2 112 Time_value = 60;
SMART_CLEO 0:867daeb1e2b2 113 break;
SMART_CLEO 0:867daeb1e2b2 114 case 0x03:
SMART_CLEO 0:867daeb1e2b2 115 Time_value = 120;
SMART_CLEO 0:867daeb1e2b2 116 break;
SMART_CLEO 0:867daeb1e2b2 117 case 0x04:
SMART_CLEO 0:867daeb1e2b2 118 Time_value = 300;
SMART_CLEO 0:867daeb1e2b2 119 break;
SMART_CLEO 0:867daeb1e2b2 120 case 0x05:
SMART_CLEO 0:867daeb1e2b2 121 Time_value = 600;
SMART_CLEO 0:867daeb1e2b2 122 break;
SMART_CLEO 0:867daeb1e2b2 123 case 0x06:
SMART_CLEO 0:867daeb1e2b2 124 Time_value = value;
SMART_CLEO 0:867daeb1e2b2 125 Time_value = 1.0/Time_value;
SMART_CLEO 0:867daeb1e2b2 126 break;
SMART_CLEO 0:867daeb1e2b2 127 }
SMART_CLEO 0:867daeb1e2b2 128 Sensor_Timer.attach(&Sensor_Read, Time_value);
SMART_CLEO 0:867daeb1e2b2 129 }*/
SMART_CLEO 0:867daeb1e2b2 130
SMART_CLEO 0:867daeb1e2b2 131 //rise
SMART_CLEO 0:867daeb1e2b2 132 void Sensor_Read_R(void)
SMART_CLEO 0:867daeb1e2b2 133 {
SMART_CLEO 0:867daeb1e2b2 134 Buffer[0] = 0x76;
SMART_CLEO 0:867daeb1e2b2 135 Buffer[1] = 0x01;
SMART_CLEO 0:867daeb1e2b2 136 Buffer[2] = 0x03;
SMART_CLEO 0:867daeb1e2b2 137 Buffer[3] = 0x01;
SMART_CLEO 0:867daeb1e2b2 138 Buffer[4] = 1;
SMART_CLEO 0:867daeb1e2b2 139 Buffer[5] = 0x3E;
SMART_CLEO 0:867daeb1e2b2 140 for(int i=0; i<6; i++)
SMART_CLEO 0:867daeb1e2b2 141 SerialUART.putc(Buffer[i]);
SMART_CLEO 0:867daeb1e2b2 142 }
SMART_CLEO 0:867daeb1e2b2 143 //fall
SMART_CLEO 0:867daeb1e2b2 144 void Sensor_Read_F(void)
SMART_CLEO 0:867daeb1e2b2 145 {
SMART_CLEO 0:867daeb1e2b2 146 Buffer[0] = 0x76;
SMART_CLEO 0:867daeb1e2b2 147 Buffer[1] = 0x01;
SMART_CLEO 0:867daeb1e2b2 148 Buffer[2] = 0x03;
SMART_CLEO 0:867daeb1e2b2 149 Buffer[3] = 0x01;
SMART_CLEO 0:867daeb1e2b2 150 Buffer[4] = 0;
SMART_CLEO 0:867daeb1e2b2 151 Buffer[5] = 0x3E;
SMART_CLEO 0:867daeb1e2b2 152 for(int i=0; i<6; i++)
SMART_CLEO 0:867daeb1e2b2 153 SerialUART.putc(Buffer[i]);
SMART_CLEO 0:867daeb1e2b2 154 }
SMART_CLEO 0:867daeb1e2b2 155
SMART_CLEO 0:867daeb1e2b2 156 /*
SMART_CLEO 0:867daeb1e2b2 157 void Sensor_Read(void)
SMART_CLEO 0:867daeb1e2b2 158 {
SMART_CLEO 0:867daeb1e2b2 159 Buffer[0] = 0x76;
SMART_CLEO 0:867daeb1e2b2 160 Buffer[1] = 0x01;
SMART_CLEO 0:867daeb1e2b2 161 Buffer[2] = 0x05;
SMART_CLEO 0:867daeb1e2b2 162 Buffer[3] = 0x01;
SMART_CLEO 0:867daeb1e2b2 163 Buffer[4] = IR_Detect;
SMART_CLEO 0:867daeb1e2b2 164 Buffer[5] = 0x3E;
SMART_CLEO 0:867daeb1e2b2 165 for(int i=0; i<6; i++)
SMART_CLEO 0:867daeb1e2b2 166 SerialUART.putc(Buffer[i]);
SMART_CLEO 0:867daeb1e2b2 167 }
SMART_CLEO 0:867daeb1e2b2 168 */