Chamud / LEGEND-TAKIJIRI-RSC-2024

0 stars 1 forks source link

byte #6

Open INA0017 opened 6 months ago

INA0017 commented 6 months ago
uint16_t Combbytes(uint16_t MB, uint16_t LB) {
  return MB << 8 | LB;
}

int8_t SplitH(int16_t data) {
  return highByte(data);
}

int8_t SplitL(int16_t data) {
  return lowByte(data);
}
INA0017 commented 6 months ago
#include <ESP32SPISlave.h>

ESP32SPISlave slave;
static constexpr uint8_t VSPI_SS{ SS };
#define SPI_Delay 15

#define FOC_Delay 300

#define buf 16
uint8_t tx_master_array[buf]{ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
uint8_t rx_master_array[buf]{ 0 };
#define Normalization_buf 8
volatile int16_t array[Normalization_buf]{ 0 };

uint16_t Combbytes(uint16_t MB, uint16_t LB) {
  return MB << 8 | LB;
}

int8_t SplitH(int16_t data) {
  return highByte(data);
}

int8_t SplitL(int16_t data) {
  return lowByte(data);
}

double round_2(double a) {
  a *= 100;
  a = round(a);
  a /= 100;
  return a;
}

void setup() {
  xTaskCreateUniversal(FOC, "FOC", 8192, NULL, 1, NULL, 0);
  Serial.begin(115200);
  delay(2000);

  slave.setDataMode(SPI_MODE0);
  slave.begin(VSPI);  // VSPI = CS:  5, CLK: 18, MOSI: 23, MISO: 19
}

void loop() {

  slave.queue(rx_master_array, tx_master_array, buf);
Normalization();
  while (slave.available()) {

    memset(rx_master_array, 0, buf);
    slave.pop();
  }

  delay(SPI_Delay);
 // Serial.println(Serial.readStringUntil(' '));
}

void FOC(void* args) {
  while (1) {

   for (byte i = 0; i < buf; i++) {
      Serial.print(rx_master_array[i]);
      Serial.print(" ");
    }
    Serial.println();

   for (byte i = 0; i < Normalization_buf; i++) {
      Serial.print(array[i]);
      Serial.print(" ");
    }
    Serial.println();

for(byte i = 0; i < Normalization_buf; i++){
FOCwrite('A'+ i, array[i]);
}

//Serial.println(Serial.readStringUntil(' '));

    delay(FOC_Delay);
  }
}

void Normalization() {
  for (byte i = 0; i < Normalization_buf; i++) {
    array[i] = Combbytes(rx_master_array[i * 2], rx_master_array[i * 2 + 1]);
  }
}

void FOCwrite(byte select, float speed){
Serial.write(select);
Serial.print(speed);
Serial.print("\n");
}