Скрыть объявление
Управляйте вашими ESP8266 и другими устройствами прямо с телефона из любой точки мира, где есть интернет!
Подробности и обсуждение IoT Manager в этой теме. Официальный сайт приложения и документация IoTmanager.ru
Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Общие вопросы по Arduino IDE для ESP8266

Тема в разделе "ESP8266 Arduino IDE", создана пользователем Victor, 28 мар 2015.

  1. Telek

    Telek Читатель

    Сообщения:
    33
    Симпатии:
    8
    JustACat, А как его включить тут? Или проверить включен/не включен? Я не нашел в ардуиновском описании вотчдога...
     
  2. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    Telek, ну у нас же теоретически не ардуино, а ESP, а значит функции ESP должны как-то обрабатываться, я считаю.
    Попробуйте эти, например:
    ets_wdt_disable() и ets_wdt_enable()
    Для сброса должен использоваться ets_wdt_restore() вроде или wdt_feed() ... Но вам же наоборот не надо сбрасывать...
    Можете и тут на форуме поискать по этим функциям.
     
  3. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    И вообще, вам же ребут нужен же, а я чего-то в дебри полез :)
    Попробуйте лучше:
    system_restart(); или system_restart_enhance();
    Описание есть в файле SDK-Espressif IoT SDK Programming Guide_v1.0.0 (ну или другой версии).
     
  4. Telek

    Telek Читатель

    Сообщения:
    33
    Симпатии:
    8
    JustACat, Что-то не нашел я к ним заголовки. Они в каких библиотеках описаны?
     
  5. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    У ESP много на что заголовков нету, а функции есть - как суслик, в общем... А вот как это реализовано в ардуино IDE (скомпилится или нет) - не знаю.
    Но в SDK официальном оно лежит вот тут:
    \include\user_interface.h
    Просто объявлено:
    void system_restart(void);
    И все.
     
  6. Telek

    Telek Читатель

    Сообщения:
    33
    Симпатии:
    8
    system_restart() я нашел в user_interface.h, но если я его включаю, то вываливается при компиляции:
    Код (Text):
    1. In file included from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/os_type.h:10:0,
    2.                  from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/user_interface.h:9,
    3.                  from sketch_apr10a.ino:1:
    4. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:94:20: error: 'size_t' was not declared in this scope
    5. void *pvPortMalloc(size_t xWantedSize);
    6.                     ^
    7. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:95:32: error: 'size_t' has not been declared
    8. void *pvPortRealloc(void* ptr, size_t xWantedSize);
    9.                                 ^
    10. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:97:19: error: 'size_t' was not declared in this scope
    11. void *vPortMalloc(size_t xWantedSize);
    12.                    ^
    13. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:99:47: error: 'size_t' has not been declared
    14. void *ets_memcpy(void *dest, const void *src, size_t n);
    15.                                                ^
    16. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:100:34: error: 'size_t' has not been declared
    17. void *ets_memset(void *s, int c, size_t n);
    18.                                   ^
    19. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:109:48: error: 'size_t' has not been declared
    20. char *ets_strncpy(char *dest, const char *src, size_t n);
    21.                                                 ^
    22. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:112:28: error: 'size_t' has not been declared
    23. int os_snprintf(char *str, size_t size, const char *format, ...) __attribute__ ((format (printf, 3, 4)));
    24.                             ^
    25. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:104:5: error: previous declaration of 'int atoi(const char*)' with 'C++' linkage
    26. int atoi(const char *nptr);
    27.      ^
    28. In file included from c:\users\jd\desktop\arduino-1.6.1\hardware\tools\esp8266\xtensa-lx106-elf\xtensa-lx106-elf\include\stdint.h:12:0,
    29.                  from c:\users\jd\desktop\arduino-1.6.1\hardware\tools\esp8266\xtensa-lx106-elf\lib\gcc\xtensa-lx106-elf\4.8.2\include\stdint.h:9,
    30.                  from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/c_types.h:8,
    31.                  from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:11,
    32.                  from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/os_type.h:10,
    33.                  from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/user_interface.h:9,
    34.                  from sketch_apr10a.ino:1:
    35. c:\users\jd\desktop\arduino-1.6.1\hardware\tools\esp8266\xtensa-lx106-elf\xtensa-lx106-elf\include\stdlib.h:70:5: error: conflicts with new declaration with 'C' linkage
    36. int _EXFUN(atoi,(const char *__nptr));
    37.      ^
    38. In file included from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/os_type.h:10:0,
    39.                  from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/user_interface.h:9,
    40.                  from sketch_apr10a.ino:1:
    41. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:119:6: error: previous declaration of 'void ets_intr_lock()' with 'C++' linkage
    42. void ets_intr_lock();
    43.       ^
    44. In file included from sketch_apr10a.ino:3:0:
    45. C:\Users\jd\Desktop\arduino-1.6.1\hardware\esp8266com\esp8266\cores\esp8266/Arduino.h:80:20: error: conflicts with new declaration with 'C' linkage
    46. void ets_intr_lock();
    47.                     ^
    48. In file included from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/os_type.h:10:0,
    49.                  from C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/user_interface.h:9,
    50.                  from sketch_apr10a.ino:1:
    51. C:\Users\jd\Desktop\arduino-1.6.1/hardware/tools/esp8266/sdk/include/ets_sys.h:120:6: error: previous declaration of 'void ets_intr_unlock()' with 'C++' linkage
    52. void ets_intr_unlock();
    53.       ^
    54. In file included from sketch_apr10a.ino:3:0:
    55. C:\Users\jd\Desktop\arduino-1.6.1\hardware\esp8266com\esp8266\cores\esp8266/Arduino.h:81:22: error: conflicts with new declaration with 'C' linkage
    56. void ets_intr_unlock();
    57.                       ^
    58. Ошибка компиляции
    Проверял на таком коде:

    Код (Text):
    1. #include <user_interface.h>
    2.  
    3. void setup() {
    4.   // put your setup code here, to run once:
    5. system_restart();
    6. }
    7.  
    8. void loop() {
    9.   // put your main code here, to run repeatedly:
    10.  
    11. }
     
  7. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    А если не инклюдить <user_interface.h> вообще не работает?
    Если да, тогда это уже точно к разработчикам Arduino ESP - пусть разбираются. Лог вы приложили.
     
  8. Telek

    Telek Читатель

    Сообщения:
    33
    Симпатии:
    8
    Без инклюда не находит.
     
  9. nikolz

    nikolz Гуру

    Сообщения:
    2.602
    Симпатии:
    237
    node.restart(),
    не устраивает?
    либо аналог на СИ
     
  10. nikolz

    nikolz Гуру

    Сообщения:
    2.602
    Симпатии:
    237
    мой небольшой опыт знакомства с андулино ESP привел меня в уныние.
    "Это не заливная рыба"
     
  11. nikolz

    nikolz Гуру

    Сообщения:
    2.602
    Симпатии:
    237
    Сугубо мое личное мнение:
    пока реально работающими являются UDK
    и все что сделано для LUA , включая ESPlorer.
     
  12. nikolz

    nikolz Гуру

    Сообщения:
    2.602
    Симпатии:
    237
    Telek,
    если Вы на СИ пишите то берите UDK и не мучайтесь с андулиной
     
  13. Telek

    Telek Читатель

    Сообщения:
    33
    Симпатии:
    8
    nikolz, Пишу но не так уверенно. Тут проще и короче. Но в ходе тестирования выявлено несколько глюков приводящих к зависанию. Пока все зависания у меня получается вычислять не теряя полного контроля над устройством(Тикер, пока все время оставался рабочим). Поэтому, на данном этапе достаточно просто перегрузить. Должен же быть какой-то простой способ перезагрузки(типа как в AVR переход по нулевому адресу или что-то подобное.). Можно конечно попробовать свободной ногой дернуть ресет, но я не уверен, что эта нога после перезагрузки не будет менять свои состояния до момента моей инициализации и это не приведет к вечной перезагрузке.
     
  14. jcmvbkbc

    jcmvbkbc Читатель

    Сообщения:
    179
    Симпатии:
    17
    Попробуйте так:
    ((void (*)(void))0x40000080)();
     
  15. Telek

    Telek Читатель

    Сообщения:
    33
    Симпатии:
    8
    От спасибо огромное человеческое! Заресетил, так заресетил :) - работает. Теперь осталось понять, спасет ли это при глюках с зависонами.
    PS. Скажите, а при испотзовании UDK зависания при нестабильном WiFi наблюдаются?
    Пока у меня два основных типа зависаний:
    1. Выключение WiFi в момент передачи данных(если ловко выключить)
    2. После длительной работы(часа три-четыре передачи данных раз в минуту) "теряется" точка доступа (WiFi.status() != WL_CONNECTED) и больше переподключиться не получается. Только перезагрузка.
     
  16. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.194
    Симпатии:
    375
    Подглядел у Ивана на билд сервере новый релиз Arduino IDE (только win)
    Скачать: https://ci.appveyor.com/api/buildjo...facts/build/windows/arduino-1.6.1-windows.zip (на гитхабе пока старая версия)
    Пока также требуется после распаковки архива скопировать файл libiconv-2.dll из arduino-1.6.1\hardware\tools\avr\libexec\gcc\avr\4.8.1 в arduino-1.6.1

    Изменения можно посмотреть по коммитам

    Кое-какие изменения (кроме фиксов) для тех, кому неохота лезть в гитхаб:

    SDK 1.0.0
    esptool теперь не нужно выбирать в качестве программатора
    автоматическая прошивка по DTR/RTS (монитор порта их теперь не трогает)
    можно выбирать частоту процессора (80/160) и скорость загрузки (9600 - 921600)

    Sermus портировал библиотеку для работы с TFT-драйвером ILI9341

    ESP-specific APIs
    APIs related to deep sleep and watchdog timer are available in the ESP object.
    ESP.deepSleep(microseconds, mode) will put the chip into deep sleep. mode is one of WAKE_DEFAULT,WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED.
    ESP.wdtEnable(), ESP.wdtDisable(), and ESP.wdtFeed() provide some control over the watchdog timer.

    Definition of F() macro
    add macro for vsnprintf_P and snprintf_P
    fix platform file to support Arduino Eclipse Plugin
     
    Последнее редактирование: 11 апр 2015
  17. igrr

    igrr Moderator Команда форума

    Сообщения:
    70
    Симпатии:
    23
    Есть:
    Код (Text):
    1.  
    2. IPAddress local_ip(1.2.3.4);
    3. IPAddress gateway(1.2.3.0);
    4. IPAddress subnet(255.255.255.0);
    5. ESP8266WiFi.config(local_ip, gateway, subnet);
    6.  
     
    Victor нравится это.
  18. igrr

    igrr Moderator Команда форума

    Сообщения:
    70
    Симпатии:
    23
    Так как скетч — это C++ код, то заголовочные файлы из SDK нужно размещать в блоках extern "C":
    extern "C" {
    [HASHTAG]#include[/HASHTAG] "user_interface.h"
    }

    Спасибо @jcmvbkbc, добавил ESP.reset() который дергает ((void (*)(void))0x40000080)();

    Также пофиксил работу с UDP, и добавил сэмпл NTP клиента.
     
    Victor нравится это.
  19. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.194
    Симпатии:
    375
    igrr, что-то на билд-сервере
     
  20. igrr

    igrr Moderator Команда форума

    Сообщения:
    70
    Симпатии:
    23
    Да, это не скачался тулчейн AVR. Похоже на arduino.cc этот (старый) архив больше не хостится.
    Эх, видимо все-таки придется перелопатить каталоги и перейти-таки на 1.6.3.
     
    Victor нравится это.

Поделиться этой страницей