Код arduino для esp32

Тема в разделе "ESP8266, ESP32", создана пользователем SDogi, 16 июн 2021.

  1. SDogi

    SDogi Нуб

    Всем здрастье. Понадобилось создать БМС-ку на основе esp32. Нашел в интернете код для ардуино. Немного его перелопатил думал что сейчас все запуститься в итоге выдает такую ошибку.
    Код (C++):
    #include <stdint.h>
    #include <Arduino.h>
    #include "Linduino.h"
    #include "LT_SPI.h"
    #include "LTC68042.h"
    #include <SPI.h>


    const int CELL_NUM = 12;                        
    const int TOTAL_IC = 1;                        
    uint8_t tx_cfg[TOTAL_IC][6];                    
    uint8_t error;
    int input;
    uint16_t cell_codes[TOTAL_IC][12];

    void init_cfg(){
      for(int i = 0; i<TOTAL_IC;i++){
        tx_cfg[i][0] = 0x04;
        tx_cfg[i][1] = 0x00;
        tx_cfg[i][2] = 0x00;
        tx_cfg[i][3] = 0x00;
        tx_cfg[i][4] = 0x00;
        tx_cfg[i][5] = 0x10;
      }
    }

    void print_cells()
    {
      for (int current_ic = 0 ; current_ic < TOTAL_IC; current_ic++)
      {
        Serial.print(" IC ");
        Serial.print(current_ic+1,DEC);
        for(int i=0; i<CELL_NUM; i++)
        {
          Serial.print(" C");
          Serial.print(i+1,DEC);
          Serial.print(":");
          Serial.print(cell_codes[current_ic][i]*.0001, 4);
          Serial.print(",");
        }
         Serial.println();
      }
    }

    /*********************************************************************************************/

    void setup()
    {
      Serial.begin(115200);
      LTC6804_initialize();
      init_cfg();          
    }

    void loop()
    {
      Serial.println("Starting voltage loop. Transmit 'm' to quit.");
      wakeup_sleep();
      LTC6804_wrcfg(TOTAL_IC,tx_cfg);
      while (input != 'm')
      {
        if (Serial.available() > 0)
        {
          input = Serial.available();
        }
        wakeup_idle();
        LTC6804_adcv();                
        delay(10);
        wakeup_idle();
        error = LTC6804_rdcv(1, TOTAL_IC,cell_codes);    
                                                                           

       
        if (error == 255)
        {
          Serial.println("Была обнаружена ошибка");
          while (error == 255)
          {
            error = LTC6804_rdcv(1, TOTAL_IC,cell_codes);
            Serial.println("ошибка");
          }
        }
        else
        {
          Serial.print(error);
          print_cells();
          Serial.println();
        }
        delay(50);
      }
    }
    причем на ардуино все прогоняет. А вот на esp не хочет. В чем может быть ошибка?
     
  2. b707

    b707 Гуру

    приведите сообщение об ошибке полностью, там должно быть имя файла и номер строки
     
  3. SDogi

    SDogi Нуб

    Как я понял он ругается на строку библиотеки для микросхемы LTC6804. Но я точно уверен что в библиотеке все правильно так как брал её от производителя.
     
  4. b707

    b707 Гуру

    в своем коде попробуйте переставить строчку
    Код (C++):
    #include <SPI.h>
    до соответсвующих инклюдов библиотек "LT_..."
     
  5. SDogi

    SDogi Нуб

    Покопался немного, сделал как вы и посоветовали.
    Теперь выдает такую ошибку
     
  6. b707

    b707 Гуру

    SPIClass' - это новый интерфейс для SPI
    Толи у вас ядро для ЕСП очень старое, то ли в нем вообще этого нет - точно сказать не могу
     
  7. SDogi

    SDogi Нуб

    Все равно спасибо большое за наводку, Буду дальше копаться.
     
  8. Un_ka

    Un_ka Гуру

    Какая плата выбрана и в какой конфигурации? Какая версия ядра для esp?