Using LTC1485 simple transmit program

Dependencies:   mbed

Committer:
WakoTakeru
Date:
Sun Feb 26 06:10:45 2017 +0000
Revision:
1:db0469ab641f
Parent:
0:5f4b6ac9df07
ID check

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 1:db0469ab641f 20 int address;
WakoTakeru 0:5f4b6ac9df07 21 int main() {
WakoTakeru 0:5f4b6ac9df07 22 rede=0;
WakoTakeru 1:db0469ab641f 23 address = address1<<0 | address2<<1 | address4<<2 | address8<<3;
WakoTakeru 0:5f4b6ac9df07 24 myserial.attach(&onInterrupt,Serial::RxIrq);
WakoTakeru 0:5f4b6ac9df07 25 while(1){
WakoTakeru 0:5f4b6ac9df07 26 if(address == 0x01){
WakoTakeru 0:5f4b6ac9df07 27 myled = 1;
WakoTakeru 0:5f4b6ac9df07 28 }else{
WakoTakeru 0:5f4b6ac9df07 29 myled=0;
WakoTakeru 0:5f4b6ac9df07 30 }
WakoTakeru 0:5f4b6ac9df07 31 send_rs485();
WakoTakeru 0:5f4b6ac9df07 32 led=1;
WakoTakeru 0:5f4b6ac9df07 33 wait(0.05);
WakoTakeru 0:5f4b6ac9df07 34 led=0;
WakoTakeru 0:5f4b6ac9df07 35 wait(0.05);
WakoTakeru 0:5f4b6ac9df07 36 }
WakoTakeru 0:5f4b6ac9df07 37 }
WakoTakeru 0:5f4b6ac9df07 38
WakoTakeru 0:5f4b6ac9df07 39 void send_rs485(){
WakoTakeru 0:5f4b6ac9df07 40 int TxData[5] = {0};
WakoTakeru 0:5f4b6ac9df07 41
WakoTakeru 0:5f4b6ac9df07 42 /*データ準備*/
WakoTakeru 0:5f4b6ac9df07 43 TxData[0] = '#';//TAG
WakoTakeru 1:db0469ab641f 44 TxData[1] = address;//ID
WakoTakeru 0:5f4b6ac9df07 45 TxData[2] = 0x41;//data
WakoTakeru 0:5f4b6ac9df07 46 TxData[3] = 0x41;//data
WakoTakeru 0:5f4b6ac9df07 47 TxData[4] = (TxData[0]^TxData[1]^TxData[2]^TxData[3]);
WakoTakeru 0:5f4b6ac9df07 48
WakoTakeru 0:5f4b6ac9df07 49 /*送信*/
WakoTakeru 0:5f4b6ac9df07 50 rede = 1;
WakoTakeru 0:5f4b6ac9df07 51 for(int i=0;i<=4;i++){
WakoTakeru 0:5f4b6ac9df07 52 myserial.putc(TxData[i]);
WakoTakeru 0:5f4b6ac9df07 53 }
WakoTakeru 0:5f4b6ac9df07 54 wait_us(2500);
WakoTakeru 0:5f4b6ac9df07 55 rede = 0;
WakoTakeru 0:5f4b6ac9df07 56 }
WakoTakeru 0:5f4b6ac9df07 57
WakoTakeru 0:5f4b6ac9df07 58 void onInterrupt(){
WakoTakeru 0:5f4b6ac9df07 59 myled=1;
WakoTakeru 0:5f4b6ac9df07 60 wait(0.01);
WakoTakeru 0:5f4b6ac9df07 61 myled=0;
WakoTakeru 0:5f4b6ac9df07 62 wait(0.01);
WakoTakeru 0:5f4b6ac9df07 63 char data = myserial.getc();
WakoTakeru 0:5f4b6ac9df07 64 if(data == '#'){
WakoTakeru 0:5f4b6ac9df07 65 index = 1;
WakoTakeru 0:5f4b6ac9df07 66 return;
WakoTakeru 0:5f4b6ac9df07 67 }
WakoTakeru 0:5f4b6ac9df07 68 if(index != 0){
WakoTakeru 0:5f4b6ac9df07 69 buffer[index-1] = data;
WakoTakeru 0:5f4b6ac9df07 70 if(index == 5){
WakoTakeru 0:5f4b6ac9df07 71 index = 0;
WakoTakeru 0:5f4b6ac9df07 72 }
WakoTakeru 0:5f4b6ac9df07 73 index ++;
WakoTakeru 0:5f4b6ac9df07 74 }
WakoTakeru 0:5f4b6ac9df07 75 }