Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //easytransfer test using 2 teensy3.2's
- //define one as sender (i think i need todo this)
- //Now using RS485 half duplex
- //**********************************************
- #define NUMBER_OF_EASYTRANSFER_INTS 128
- //#define IS_SENDER true
- //**********************************************
- #ifndef IS_SENDER
- #define IS_SENDER false
- #endif
- #include <EasyTransfer.h>
- //create two objects
- EasyTransfer ETin, ETout;
- struct RECEIVE_DATA_STRUCTURE{
- uint8_t recvInt[NUMBER_OF_EASYTRANSFER_INTS];
- uint32_t sendCount;
- uint32_t peak1;//left channel peak level
- uint32_t peak2; //right channel peak level
- };
- struct SEND_DATA_STRUCTURE{
- uint8_t sendInt[NUMBER_OF_EASYTRANSFER_INTS];
- uint32_t sendCount;
- uint32_t peak1;//left channel peak level
- uint32_t peak2; //right channel peak level
- };
- RECEIVE_DATA_STRUCTURE rxdata;
- SEND_DATA_STRUCTURE txdata;
- bool isSender=IS_SENDER;
- bool commsUp=false;
- int currentTime=0;
- int speedCheckTime=1000;
- int seedCommsCheckTime=1000;
- const int SEED_COMMS_CHECK_INTERVAL=1000;
- const int SPEED_CHECK_INTERVAL=1000;
- int lastIntCount=0;
- void setup(){
- for(int i = 0; i<NUMBER_OF_EASYTRANSFER_INTS; i++)
- {
- rxdata.recvInt[i]=i;
- txdata.sendInt[i]=i;
- }
- pinMode(13,OUTPUT); //onboard led
- // pinMode(12,INPUT_PULLUP);
- //pinMode(3,OUTPUT);//rs485 send/recieve control
- //digitalWrite(3,LOW);//start rs485 in receive mode;
- // Serial1.transmitterEnable(3)
- Serial1.begin(115200);
- Serial.begin(250000);
- //start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc.
- ETin.begin(details(rxdata), &Serial1);
- ETout.begin(details(txdata), &Serial1);
- //isSender=digitalRead(12); //sender specified by input 12 pulled up.
- delay(1000);
- Serial.print("size of struct:");
- Serial.println(sizeof(RECEIVE_DATA_STRUCTURE));
- }
- void loop(){
- currentTime=millis();
- if(currentTime>speedCheckTime)
- {
- speedCheckTime+=SPEED_CHECK_INTERVAL;
- Serial.print("transfers/second= ");
- Serial.println(rxdata.recvInt[0]-lastIntCount);
- lastIntCount=rxdata.recvInt[0];
- }
- if(commsUp==false&&isSender&¤tTime>seedCommsCheckTime) //send int to start ping pong comms going.
- {
- seedCommsCheckTime+=SEED_COMMS_CHECK_INTERVAL;
- txdata.sendInt[0]=0;
- ETout.sendData();
- // Serial1.flush();
- Serial.println("sending message");
- }
- if(ETin.receiveData()) //if we recieve int, increment and send this int back out
- {
- txdata.sendInt[0]=rxdata.recvInt[0]+1;
- ETout.sendData();
- //Serial1.flush();
- commsUp=true;
- digitalWrite(13,!digitalRead(13));
- }
- }
Add Comment
Please, Sign In to add comment