elektronek

Martin M Klain - double pres i2c nebo usart

Oct 31st, 2020 (edited)
1,036
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Vysilaci strana
  2. double i1, i2, i3;
  3. uint8_t* p1;  // 8bit ukazatel
  4. uint8_t* p2;  // 8bit ukazatel
  5. uint8_t* p3;  // 8bit ukazatel
  6. uint8_t TXBUFFER[12]; // Udelame si vysilaci buffer pro vsechny hodnoty
  7.  
  8. // prijimaci strana
  9. double y1,y2,y3;
  10. uint8_t* yp1;  // 8bit ukazatel
  11. uint8_t* yp2;  // 8bit ukazatel
  12. uint8_t* yp3;  // 8bit ukazatel
  13. uint8_t RXBUFFER[12];
  14.  
  15.  
  16. void setup() {
  17.   Serial.begin(9600);
  18.   i1 = 165645.65;   // Double hodnota
  19.   i2 = 838484.89;   // Double hodnota
  20.   i3 = 145412.14;   // Double hodnota
  21.   p1=(uint8_t*)&i1; // Do ukazatelu dame pretypovanou adresu puvodniho double
  22.   p2=(uint8_t*)&i2; // Do ukazatelu dame pretypovanou adresu puvodniho double
  23.   p3=(uint8_t*)&i3; // Do ukazatelu dame pretypovanou adresu puvodniho double
  24.   Serial.println("Puvodni double hodnoty");
  25.   Serial.println(i1); // cvicne si je vypiseme
  26.   Serial.println(i2); // cvicne si je vypiseme
  27.   Serial.println(i3); // cvicne si je vypiseme
  28.  
  29.   // Plmime do bufferu prvni hodnotu
  30.   TXBUFFER[ 0] = *(p1);
  31.   TXBUFFER[ 1] = *(p1+1);
  32.   TXBUFFER[ 2] = *(p1+2);
  33.   TXBUFFER[ 3] = *(p1+3);
  34.  
  35.   // Plmime do bufferu druhou hodnotu
  36.   TXBUFFER[ 4] = *(p2);
  37.   TXBUFFER[ 5] = *(p2+1);
  38.   TXBUFFER[ 6] = *(p2+2);
  39.   TXBUFFER[ 7] = *(p2+3);
  40.  
  41.   // Plmime do bufferu treti hodnotu
  42.   TXBUFFER[ 8] = *(p3);
  43.   TXBUFFER[ 9] = *(p3+1);
  44.   TXBUFFER[10] = *(p3+2);
  45.   TXBUFFER[11] = *(p3+3);
  46.  
  47.   Serial.println("Odvysilame buffer");
  48.   for (uint8_t a=0; a<=11; a++)
  49.   {
  50.     Serial.println(TXBUFFER[a],16);
  51.   }
  52.  
  53.   // Po odvysilani se prijme na strane prijmu do bufferu opet
  54.  
  55.   // My si ho ukazkove zkopirujeme  
  56.   strcpy(RXBUFFER,TXBUFFER);
  57.   Serial.println("Prijaty buffer");
  58.  
  59.   yp1=(uint8_t*)&y1; // Do ukazatelu dame pretypovanou adresu puvodniho double
  60.   yp2=(uint8_t*)&y2; // Do ukazatelu dame pretypovanou adresu puvodniho double
  61.   yp3=(uint8_t*)&y3; // Do ukazatelu dame pretypovanou adresu puvodniho double
  62.  
  63.   // Do ukazatelu plnime prijate 8bit hodnoty
  64.   *(yp1)  = RXBUFFER[ 0];
  65.   *(yp1+1)= RXBUFFER[ 1];
  66.   *(yp1+2)= RXBUFFER[ 2];
  67.   *(yp1+3)= RXBUFFER[ 3];
  68.  
  69.   *(yp2)  = RXBUFFER[ 4];
  70.   *(yp2+1)= RXBUFFER[ 5];
  71.   *(yp2+2)= RXBUFFER[ 6];
  72.   *(yp2+3)= RXBUFFER[ 7];
  73.  
  74.   *(yp3)  = RXBUFFER[ 8];
  75.   *(yp3+1)= RXBUFFER[ 9];
  76.   *(yp3+2)= RXBUFFER[10];
  77.   *(yp3+3)= RXBUFFER[11];
  78.  
  79.   Serial.println("Prijate double hodnoty");
  80.   Serial.println(y1);
  81.   Serial.println(y2);
  82.   Serial.println(y3);
  83. }
  84.  
  85. void loop() {
  86.  
  87. }
RAW Paste Data