Using LTC1485 simple transmit program

Dependencies:   mbed

Committer:
WakoTakeru
Date:
Sat Feb 25 07:32:42 2017 +0000
Revision:
0:5f4b6ac9df07
Child:
1:db0469ab641f
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WakoTakeru 0:5f4b6ac9df07 1 /*--- 送信側 ---*/
WakoTakeru 0:5f4b6ac9df07 2 #include "mbed.h"
WakoTakeru 0:5f4b6ac9df07 3 #include "Serial.h"
WakoTakeru 0:5f4b6ac9df07 4 DigitalOut led(PA_12);
WakoTakeru 0:5f4b6ac9df07 5 DigitalOut myled(LED1);
WakoTakeru 0:5f4b6ac9df07 6 DigitalOut rede(PA_8);
WakoTakeru 0:5f4b6ac9df07 7
WakoTakeru 0:5f4b6ac9df07 8 DigitalIn address1(PF_0);
WakoTakeru 0:5f4b6ac9df07 9 DigitalIn address2(PB_1);
WakoTakeru 0:5f4b6ac9df07 10 DigitalIn address4(PB_6);
WakoTakeru 0:5f4b6ac9df07 11 DigitalIn address8(PB_7);
WakoTakeru 0:5f4b6ac9df07 12
WakoTakeru 0:5f4b6ac9df07 13 Serial myserial(PA_9,PA_10);
WakoTakeru 0:5f4b6ac9df07 14
WakoTakeru 0:5f4b6ac9df07 15 void send_rs485();
WakoTakeru 0:5f4b6ac9df07 16 void onInterrupt();
WakoTakeru 0:5f4b6ac9df07 17
WakoTakeru 0:5f4b6ac9df07 18 int index = 0;
WakoTakeru 0:5f4b6ac9df07 19 int buffer[5] = {0};
WakoTakeru 0:5f4b6ac9df07 20
WakoTakeru 0:5f4b6ac9df07 21 int main() {
WakoTakeru 0:5f4b6ac9df07 22 rede=0;
WakoTakeru 0:5f4b6ac9df07 23 int address = address1<<0 | address2<<1 | address4<<2 | address8<<3;
WakoTakeru 0:5f4b6ac9df07 24 // int rs485_data[4]={0};
WakoTakeru 0:5f4b6ac9df07 25 myserial.attach(&onInterrupt,Serial::RxIrq);
WakoTakeru 0:5f4b6ac9df07 26 while(1){
WakoTakeru 0:5f4b6ac9df07 27 if(address == 0x01){
WakoTakeru 0:5f4b6ac9df07 28 myled = 1;
WakoTakeru 0:5f4b6ac9df07 29 // rs485_data[0]=buffer[1];
WakoTakeru 0:5f4b6ac9df07 30 // rs485_data[1]=buffer[2];
WakoTakeru 0:5f4b6ac9df07 31 // rs485_data[2]=buffer[3];
WakoTakeru 0:5f4b6ac9df07 32 // rs485_data[3]=buffer[4];
WakoTakeru 0:5f4b6ac9df07 33 }else{
WakoTakeru 0:5f4b6ac9df07 34 myled=0;
WakoTakeru 0:5f4b6ac9df07 35 }
WakoTakeru 0:5f4b6ac9df07 36 send_rs485();
WakoTakeru 0:5f4b6ac9df07 37 led=1;
WakoTakeru 0:5f4b6ac9df07 38 wait(0.05);
WakoTakeru 0:5f4b6ac9df07 39 led=0;
WakoTakeru 0:5f4b6ac9df07 40 wait(0.05);
WakoTakeru 0:5f4b6ac9df07 41 }
WakoTakeru 0:5f4b6ac9df07 42 }
WakoTakeru 0:5f4b6ac9df07 43
WakoTakeru 0:5f4b6ac9df07 44 void send_rs485(){
WakoTakeru 0:5f4b6ac9df07 45 int TxData[5] = {0};
WakoTakeru 0:5f4b6ac9df07 46
WakoTakeru 0:5f4b6ac9df07 47 /*データ準備*/
WakoTakeru 0:5f4b6ac9df07 48 TxData[0] = '#';//TAG
WakoTakeru 0:5f4b6ac9df07 49 TxData[1] = 0x41;//ID
WakoTakeru 0:5f4b6ac9df07 50 TxData[2] = 0x41;//data
WakoTakeru 0:5f4b6ac9df07 51 TxData[3] = 0x41;//data
WakoTakeru 0:5f4b6ac9df07 52 TxData[4] = (TxData[0]^TxData[1]^TxData[2]^TxData[3]);
WakoTakeru 0:5f4b6ac9df07 53
WakoTakeru 0:5f4b6ac9df07 54 /*送信*/
WakoTakeru 0:5f4b6ac9df07 55 rede = 1;
WakoTakeru 0:5f4b6ac9df07 56 for(int i=0;i<=4;i++){
WakoTakeru 0:5f4b6ac9df07 57 myserial.putc(TxData[i]);
WakoTakeru 0:5f4b6ac9df07 58 }
WakoTakeru 0:5f4b6ac9df07 59 wait_us(2500);
WakoTakeru 0:5f4b6ac9df07 60 rede = 0;
WakoTakeru 0:5f4b6ac9df07 61 }
WakoTakeru 0:5f4b6ac9df07 62
WakoTakeru 0:5f4b6ac9df07 63 void onInterrupt(){
WakoTakeru 0:5f4b6ac9df07 64 myled=1;
WakoTakeru 0:5f4b6ac9df07 65 wait(0.01);
WakoTakeru 0:5f4b6ac9df07 66 myled=0;
WakoTakeru 0:5f4b6ac9df07 67 wait(0.01);
WakoTakeru 0:5f4b6ac9df07 68 char data = myserial.getc();
WakoTakeru 0:5f4b6ac9df07 69 if(data == '#'){
WakoTakeru 0:5f4b6ac9df07 70 index = 1;
WakoTakeru 0:5f4b6ac9df07 71 return;
WakoTakeru 0:5f4b6ac9df07 72 }
WakoTakeru 0:5f4b6ac9df07 73 if(index != 0){
WakoTakeru 0:5f4b6ac9df07 74 buffer[index-1] = data;
WakoTakeru 0:5f4b6ac9df07 75 if(index == 5){
WakoTakeru 0:5f4b6ac9df07 76 index = 0;
WakoTakeru 0:5f4b6ac9df07 77 }
WakoTakeru 0:5f4b6ac9df07 78 index ++;
WakoTakeru 0:5f4b6ac9df07 79 }
WakoTakeru 0:5f4b6ac9df07 80 }