Выбор с для esp32

Тема в разделе "ESP8266, ESP32", создана пользователем holyorb2, 28 дек 2020.

Метки:
  1. holyorb2

    holyorb2 Нуб

    Выбрал platformio как IDE, но не могу выбрать какой вариант С использовать:

    Frameworks
    1. Arduino
    -->> Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences

    2. Espressif IoT Development Framework -->> ESP-IDF is the official development framework for the ESP32 and ESP32-S Series SoCs.

    Мне больше нравиться 1) потому что проще и я уже на нем работал, все легко, но проблема немогу найти списка всех функций которые используются в ESP32 (или микроконтроллерах), то есть "справочник языка".
    А вот по 2) есть официальное АПИ, но сам язык сложнее и нужно учить.

    Сейчас у меня вопросы по этому поводу:
    1. Есть ли справочник языка ArduinoC со всеми функциями, например, узнать количество свободного места в РАМ, будет ли адекватная инфа в Си функциях? Да и вообще узнать что это за язык такой ArduinoC/C++
    2. Что лучше в плане поддержки библотек на датчики
    3. Что лучше по оптимизации/быстродействии
    4. ULP процессор можно на чем-то из этого программировать? И вообще его можно программировать или только здавать варианты пробуждения?
    5. По аппаратной части есть разница, каким вариантом мы программируем?
     
  2. Daniil

    Daniil Гуру

    для маленького проекта или чтобы втянуться сойдет. Есть встроенный менеджер библиотек, которые обсасывают в интернете.
    зайдите на амперка вики, ардуино.ру или ардуино.сс. По мне слишком много недоговорок, но прочитать полезно.
    фрейморком от эспрессив не пользовался, но см. выше про менеджер библиотек
     
    holyorb2 нравится это.
  3. holyorb2

    holyorb2 Нуб

    Спасибо
    https://www.arduino.cc/reference/en/ - тут был и для ардуино все понятно.
    Становится "не понятно" для ESP32, тут больше железной обвязки и по идее должно быть больше функций, часть функций заменена, теже задачи для разных ядер - это все искать по одному примеру, но полного списка я не могу найти
     
  4. parovoZZ

    parovoZZ Гуру

    никаких вариантов у языка Си нет. Есть стандарты, но они абсолютно самостоятельны.
    Чтобы изучить Си, необходимо прочитать учебник по этому языку. Например, Кернигана и Ричи.
     
  5. holyorb2

    holyorb2 Нуб

    это будет план Б, пока ищу для АрдуиноС++ мануал полный. Уже есть описания части функций и продолжаю копать
     
  6. b707

    b707 Гуру

    какой "полный мануал" Вы ищете? Паровоз правильно сказал - нет никакого С++ для ардуино. Все функции, что вы знаете для ардуино - это все методы каких-то библиотек. Библиотек - тысячи. Библиотеку может написать и выложить в сеть кто угодно. любой пользователь. я сам написал несколько...
    Поэтому нет и не может быть "полного списка всех функций ардуино". не занимайтесь ерундой, учите просто С++ по учебнику. а не какой-то там "С для ардуино" или "С++ для ЕСП32"
     
  7. holyorb2

    holyorb2 Нуб

    с библиотеками ясно, там можно код глянуть
    Ядро ArduinoC разве не долно имеь описания?
     
  8. b707

    b707 Гуру

    а что такое, по вашему, "Ядро ArduinoC" ? - я такого не знаю
     
  9. holyorb2

    holyorb2 Нуб

    Вот что накопал, только без описаний

    Код (C++):
    void EspClass::deepSleep(uint32_t time_us)
    {
        esp_deep_sleep(time_us);
    }

    void EspClass::restart(void)
    {
        esp_restart();
    }

    uint32_t EspClass::getHeapSize(void)
    {
        multi_heap_info_t info;
        heap_caps_get_info(&info, MALLOC_CAP_INTERNAL);
        return info.total_free_bytes + info.total_allocated_bytes;
    }

    uint32_t EspClass::getFreeHeap(void)
    {
        return heap_caps_get_free_size(MALLOC_CAP_INTERNAL);
    }

    uint32_t EspClass::getMinFreeHeap(void)
    {
        return heap_caps_get_minimum_free_size(MALLOC_CAP_INTERNAL);
    }

    uint32_t EspClass::getMaxAllocHeap(void)
    {
        return heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL);
    }

    FlashMode_t EspClass::getFlashChipMode(void)
    {
        esp_image_header_t fhdr;
        if(flashRead(0x1000, (uint32_t*)&fhdr, sizeof(esp_image_header_t)) && fhdr.magic != ESP_IMAGE_HEADER_MAGIC) {
            return FM_UNKNOWN;
        }
        return magicFlashChipMode(fhdr.spi_mode);
    }

    uint32_t EspClass::magicFlashChipSize(uint8_t byte)
    {
        switch(byte & 0x0F) {
        case 0x0: // 8 MBit (1MB)
            return (1_MB);
        case 0x1: // 16 MBit (2MB)
            return (2_MB);
        case 0x2: // 32 MBit (4MB)
            return (4_MB);
        case 0x3: // 64 MBit (8MB)
            return (8_MB);
        case 0x4: // 128 MBit (16MB)
            return (16_MB);
        default: // fail?
            return 0;
        }
    }

    uint32_t EspClass::magicFlashChipSpeed(uint8_t byte)
    {
        switch(byte & 0x0F) {
        case 0x0: // 40 MHz
            return (40_MHz);
        case 0x1: // 26 MHz
            return (26_MHz);
        case 0x2: // 20 MHz
            return (20_MHz);
        case 0xf: // 80 MHz
            return (80_MHz);
        default: // fail?
            return 0;
        }
    }
     
     
  10. b707

    b707 Гуру

  11. b707

    b707 Гуру

    А вообще, как уже писал выше - все эти функции это ровно такие же библиотеки с исходным кодом. как и любые другие
    Вот. например, исходники для поддержки ЕСП8266 в среде Ардуино:
    https://github.com/esp8266/Arduino
     
    holyorb2 нравится это.
  12. holyorb2

    holyorb2 Нуб

  13. parovoZZ

    parovoZZ Гуру

    для новичков учебник. Сколько раз говорить?
    Программированию учатся 2-3 года, а не пару дней отсидки на форумах.
     
  14. b707

    b707 Гуру

    есть исходник, в нем комментраии - изучайте.
    А подробного описания может и вовсе не быть - это же открытое ПО. захотел автор - сделал документацию, а поленился или времени не хватило - пользуйте как есть.
     
  15. holyorb2

    holyorb2 Нуб

    К каждому языку идет справочник, где есть описания всех функций, вот я о нем и спрашиваю
     
  16. ivan_alexoff

    ivan_alexoff Гик

    Тебе у же дважды дали пример такого справочника - Керниган и Ричи
     
  17. parovoZZ

    parovoZZ Гуру

    В языке нет функций. В языке операторы. Функции - в программе и библиотеках.
     
  18. holyorb2

    holyorb2 Нуб

    та да :(

    еще раз, по Си от Керниган и Ричи вопросов нету, у меня даже бумажный справочник есть :)

    Вопрос по прослойке/фрейворку/АрдуиноС++.

    Например, в АрдуиноС для ESP32 есть функция restart(), но этой функции нет у Си Керниган и Ричи.
    Вот у меня запрос конкретно по вот таким функциям, список этих функций и описание.
    Таже deepSleep() - эта функция специфична только для ArduinoC++, а вы меня второй раз тыкаете в Кернигана Ричи, ну нет там таких функций
     
  19. ivan_alexoff

    ivan_alexoff Гик

    Тебе уже который раз тычут что не существует никаких ArduinoC++. Все эти функции самописные и нет никаких официальных справочников по таким функциям. По крайне мере пока не найдется какой-нибудь энтузиаст и соберет их все в кучу. Если не можешь с ними разобраться самостоятельно - ищи автора и спрашивай у него.
     
    holyorb2 нравится это.
  20. parovoZZ

    parovoZZ Гуру

    чушь. Это просто функция.

    нету, потому как функция restart написана на языке Си, а не является функцией языка. Если эту разницу не уяснить, то в программировании делать нечего. Впрочем, эта же функция может быть написана на любом другом языке, скомпилирована и на этапе сборки бинарника к ему прилинкована. Собственно, так и сделано на ESP8266. На ESP32 не знаю, но по ходу пьесы также.
    Программирование таких SoC, как ESP и ему подобных, совсем не для новичков. Мало того, там необходимо ещё и WEB технологии подтянуть.