Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. #include "arduino.h"
  2.  
  3. int button = 2;
  4.  
  5. #define NANOBAUD 57600
  6. int nanoResetPin = 7;
  7.  
  8. #define MKSBAUD 115200
  9. int mksResetPin = 10;
  10.  
  11. int* sizedArray;
  12.  
  13. void setup()
  14. {
  15. // Debug
  16. Serial.begin(115200);
  17. while (!Serial);
  18. Serial.println("Startup!\n");
  19.  
  20. // Button
  21. pinMode(button, INPUT_PULLUP);
  22.  
  23. /* NANO Setup */
  24. Serial3.begin(NANOBAUD);
  25. while (!Serial3);
  26. pinMode(nanoResetPin, OUTPUT);
  27. digitalWrite(nanoResetPin, HIGH);
  28.  
  29. /* MKS Setup */
  30. Serial2.begin(MKSBAUD);
  31. while (!Serial2);
  32. pinMode(mksResetPin, OUTPUT);
  33. digitalWrite(mksResetPin, HIGH);
  34. }
  35.  
  36. void loop()
  37. {
  38. if (digitalRead(button) == LOW)
  39. {
  40. while (digitalRead(button) == LOW);
  41.  
  42. /* NANO */
  43. // Reset board
  44. delay(50);
  45. digitalWrite(nanoResetPin, LOW);
  46. delay(50);
  47. digitalWrite(nanoResetPin, HIGH);
  48.  
  49. Serial.print("Nano tentatives ");
  50.  
  51. // EtablishSync
  52. for (int i = 0; i <= 25; i++)
  53. {
  54. byte byt[] = { (char)0x30, (char)0x20 }; // CMD_STK_GET_SYNC / SYNC_CRC_EOP
  55. Serial3.write(byt, sizeof(byt));
  56. Serial.print(".");
  57. if (Serial3.available() > 0 || i == 25) break;
  58. delay(25);
  59. }
  60. Serial.print("\n");
  61.  
  62. // Read Sync response
  63. int readBuffNano[16], readBuffSizeNano = 0;
  64.  
  65. while (Serial3.available() > 0)
  66. {
  67. readBuffNano[readBuffSizeNano] = Serial3.read();
  68. readBuffSizeNano++;
  69. }
  70.  
  71. sizedArray = (int *)malloc(readBuffSizeNano * sizeof(int));
  72. for (int i = 0; i < readBuffSizeNano; i++) {
  73. sizedArray[i] = readBuffNano[i];
  74. }
  75.  
  76. // Check Sync response
  77. int* readNano = sizedArray;
  78.  
  79. if (readNano[0] == (char)0x14 && readNano[1] == (char)0x10){ // RESP_STK_INSYNC / RESP_STK_OK
  80. Infos(readNano, "Nano EstablishSync OK");
  81. }
  82. else{
  83. Infos(readNano, "Nano EstablishSync NOK");
  84. }
  85.  
  86. /* MKS */
  87. // Reset board
  88. delay(50);
  89. digitalWrite(mksResetPin, LOW);
  90. delay(50);
  91. digitalWrite(mksResetPin, HIGH);
  92.  
  93. Serial.print("Mks tentatives ");
  94.  
  95. // EtablishSync
  96. for (int i = 0; i <= 25; i++)
  97. {
  98. byte byt[] = { (char)0x30, (char)0x20 }; // CMD_STK_GET_SYNC / SYNC_CRC_EOP
  99. Serial2.write(byt, sizeof(byt));
  100. Serial.print(".");
  101. if (Serial2.available() > 0 || i == 25) break;
  102. delay(25);
  103. }
  104. Serial.print("\n");
  105.  
  106. // Read Sync response
  107. int readBuffMks[16], readBuffSizeMks = 0;
  108.  
  109. while (Serial2.available() > 0)
  110. {
  111. readBuffMks[readBuffSizeMks] = Serial2.read();
  112. readBuffSizeMks++;
  113. }
  114.  
  115. sizedArray = (int *)malloc(readBuffSizeMks * sizeof(int));
  116. for (int i = 0; i < readBuffSizeMks; i++) {
  117. sizedArray[i] = readBuffMks[i];
  118. }
  119.  
  120. // Check Sync response
  121. int* readMks = sizedArray;
  122.  
  123. if (readMks[0] == (char)0x14 && readMks[1] == (char)0x10) { // RESP_STK_INSYNC / RESP_STK_OK
  124. Infos(readMks, "Mks EstablishSync OK");
  125. }
  126. else {
  127. Infos(readMks, "Mks EstablishSync NOK");
  128. }
  129.  
  130. delay(1000);
  131. }
  132. }
  133.  
  134. void Infos(int* read, String data)
  135. {
  136. Serial.print(data);
  137.  
  138. if (read != 0 && sizeof(read) > 0)
  139. {
  140. Serial.print(" : ");
  141. for (int i = 0; i < sizeof(read); i++) {
  142. Serial.print("0x" + String(read[i], HEX) + " ");
  143. }
  144. }
  145. Serial.print("\n");
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement