Guest User

Untitled

a guest
Nov 23rd, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. //easytransfer test using 2 teensy3.2's
  2. //define one as sender (i think i need todo this)
  3. //Now using RS485 half duplex
  4.  
  5. //**********************************************
  6. #define NUMBER_OF_EASYTRANSFER_INTS 128
  7. //#define IS_SENDER true
  8. //**********************************************
  9.  
  10. #ifndef IS_SENDER
  11. #define IS_SENDER false
  12. #endif
  13.  
  14. #include <EasyTransfer.h>
  15.  
  16. //create two objects
  17. EasyTransfer ETin, ETout;
  18.  
  19. struct RECEIVE_DATA_STRUCTURE{
  20. uint8_t recvInt[NUMBER_OF_EASYTRANSFER_INTS];
  21. uint32_t sendCount;
  22. uint32_t peak1;//left channel peak level
  23. uint32_t peak2; //right channel peak level
  24. };
  25.  
  26. struct SEND_DATA_STRUCTURE{
  27. uint8_t sendInt[NUMBER_OF_EASYTRANSFER_INTS];
  28. uint32_t sendCount;
  29. uint32_t peak1;//left channel peak level
  30. uint32_t peak2; //right channel peak level
  31. };
  32.  
  33. RECEIVE_DATA_STRUCTURE rxdata;
  34. SEND_DATA_STRUCTURE txdata;
  35.  
  36. bool isSender=IS_SENDER;
  37. bool commsUp=false;
  38. int currentTime=0;
  39. int speedCheckTime=1000;
  40. int seedCommsCheckTime=1000;
  41. const int SEED_COMMS_CHECK_INTERVAL=1000;
  42. const int SPEED_CHECK_INTERVAL=1000;
  43. int lastIntCount=0;
  44.  
  45. void setup(){
  46. for(int i = 0; i<NUMBER_OF_EASYTRANSFER_INTS; i++)
  47. {
  48. rxdata.recvInt[i]=i;
  49. txdata.sendInt[i]=i;
  50. }
  51. pinMode(13,OUTPUT); //onboard led
  52. // pinMode(12,INPUT_PULLUP);
  53. //pinMode(3,OUTPUT);//rs485 send/recieve control
  54. //digitalWrite(3,LOW);//start rs485 in receive mode;
  55.  
  56. // Serial1.transmitterEnable(3)
  57. Serial1.begin(115200);
  58. Serial.begin(250000);
  59. //start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc.
  60. ETin.begin(details(rxdata), &Serial1);
  61. ETout.begin(details(txdata), &Serial1);
  62. //isSender=digitalRead(12); //sender specified by input 12 pulled up.
  63. delay(1000);
  64. Serial.print("size of struct:");
  65. Serial.println(sizeof(RECEIVE_DATA_STRUCTURE));
  66. }
  67.  
  68. void loop(){
  69.  
  70. currentTime=millis();
  71.  
  72. if(currentTime>speedCheckTime)
  73. {
  74. speedCheckTime+=SPEED_CHECK_INTERVAL;
  75. Serial.print("transfers/second= ");
  76. Serial.println(rxdata.recvInt[0]-lastIntCount);
  77. lastIntCount=rxdata.recvInt[0];
  78. }
  79.  
  80. if(commsUp==false&&isSender&&currentTime>seedCommsCheckTime) //send int to start ping pong comms going.
  81. {
  82. seedCommsCheckTime+=SEED_COMMS_CHECK_INTERVAL;
  83. txdata.sendInt[0]=0;
  84. ETout.sendData();
  85. // Serial1.flush();
  86. Serial.println("sending message");
  87.  
  88. }
  89.  
  90. if(ETin.receiveData()) //if we recieve int, increment and send this int back out
  91. {
  92.  
  93. txdata.sendInt[0]=rxdata.recvInt[0]+1;
  94. ETout.sendData();
  95. //Serial1.flush();
  96. commsUp=true;
  97. digitalWrite(13,!digitalRead(13));
  98. }
  99. }
Add Comment
Please, Sign In to add comment