Takeru Wako
/
RS485_Transmit
Using LTC1485 simple transmit program
Diff: main.cpp
- Revision:
- 0:5f4b6ac9df07
- Child:
- 1:db0469ab641f
diff -r 000000000000 -r 5f4b6ac9df07 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Feb 25 07:32:42 2017 +0000 @@ -0,0 +1,80 @@ +/*--- 送信側 ---*/ +#include "mbed.h" +#include "Serial.h" +DigitalOut led(PA_12); +DigitalOut myled(LED1); +DigitalOut rede(PA_8); + +DigitalIn address1(PF_0); +DigitalIn address2(PB_1); +DigitalIn address4(PB_6); +DigitalIn address8(PB_7); + +Serial myserial(PA_9,PA_10); + +void send_rs485(); +void onInterrupt(); + +int index = 0; +int buffer[5] = {0}; + +int main() { + rede=0; + int address = address1<<0 | address2<<1 | address4<<2 | address8<<3; + // int rs485_data[4]={0}; + myserial.attach(&onInterrupt,Serial::RxIrq); + while(1){ + if(address == 0x01){ + myled = 1; +// rs485_data[0]=buffer[1]; +// rs485_data[1]=buffer[2]; +// rs485_data[2]=buffer[3]; +// rs485_data[3]=buffer[4]; + }else{ + myled=0; + } + send_rs485(); + led=1; + wait(0.05); + led=0; + wait(0.05); + } +} + +void send_rs485(){ + int TxData[5] = {0}; + + /*データ準備*/ + TxData[0] = '#';//TAG + TxData[1] = 0x41;//ID + TxData[2] = 0x41;//data + TxData[3] = 0x41;//data + TxData[4] = (TxData[0]^TxData[1]^TxData[2]^TxData[3]); + + /*送信*/ + rede = 1; + for(int i=0;i<=4;i++){ + myserial.putc(TxData[i]); + } + wait_us(2500); + rede = 0; +} + +void onInterrupt(){ + myled=1; + wait(0.01); + myled=0; + wait(0.01); + char data = myserial.getc(); + if(data == '#'){ + index = 1; + return; + } + if(index != 0){ + buffer[index-1] = data; + if(index == 5){ + index = 0; + } + index ++; + } +} \ No newline at end of file