Arduino: 1.6.4 (Windows 7), Плата"Generic ESP8266 Module, 80 MHz, 115200, 512K (64K SPIFFS)"
c:/users/victor/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_pow.o):(.literal+0x104): undefined reference to `__ieee754_sqrt'
c:/users/victor/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_pow.o): In function `__ieee754_pow':
d:\ivan\projects\arduinoesp\toolchain\dl\esp-newlib\build\xtensa-lx106-elf\newlib\libm\math/../../../../../newlib/libm/math/e_pow.c:164: undefined reference to `__ieee754_sqrt'
collect2.exe: error: ld returned 1 exit status
Ошибка компиляции.
Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки
#include <ESP8266WiFi.h>
#include <Ticker.h>
void SendIP();
const char* ssid = "Keenetic-7300";
const char* password = "********";
const char* host = "192.168.1.22";
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(5555);
Ticker sendip;
void setup() {
Serial.begin(115200);
delay(10);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.println(WiFi.localIP());
sendip.attach(30, SendIP);
//SendIP();
}
void loop() {
}
void SendIP()
{
Serial.println("Funktion SendIP");
WiFiClient client;
if (!client.connect(host, 5555))
{
Serial.println("connection failed");
}
Serial.println("Connection OK!");
IPAddress tmp = WiFi.localIP();
Serial.println("IP OK!");
String ip = String(tmp[0]) + '.' + String(tmp[1]) + '.' + String(tmp[2]) + '.' + String(tmp[3]);
Serial.println("Otpravka soobsheniya");
client.print("id:0001;name:Banya;ip:"+ip+";");
sendip.detach();
}
Connecting to Keenetic-7300
........
WiFi connected
Server started
192.168.1.34
Funktion SendIP
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld
Может функция и рабочая, но видать она долго выполняется, раз WDT отрабатывает...Хотя функция рабочая! Если ее вызывать не через Ticker. В чем может быть проблема?
Он зависает на 55 строчке WiFiClient client; очень долго выполняется. А если в Setup вызвать функцию, то там все сразу подключается, без всяких задержек.Может функция и рабочая, но видать она долго выполняется, раз WDT отрабатывает...
Ну и зачем она тебе в функции нужна ? Вынеси ее к глобальным где у тебя сервер и тикер объявлены в самом начале программы...Он зависает на 55 строчке WiFiClient client; очень долго выполняется.
Это походит на неверно избранную политику порта Arduino IDE с таймерами в Ticker. Не верно составлено переключение контекста SDK<->код пользователя? Если сработал программный таймер, то он отрабатывается только в функции ets_run() и вызвав какую пользовательскую задачу остальные системные таймеры встают, пока задача не вернет управление в ets_run(). Тут сколько хош переключай контекст или потоки, всё равно поддерживающие систему таймеры не отработают. Надо переназначать вызов функции пользователя от срабатывания таймера и завершать процедуру вызова, отдавая управление в ets_run(). Можно вообще заменить ets_run() на свой обработчик...А вообще, ИМХО, не стоит событие таймера нагружать кучей обработок. Не лучше ли это вынести в loop. Он хоть и пустой, но регулярно выполняется. А вот в самом таймере "взводить" некоторую переменную, которая в самом loop тебе подскажет нужно выполнять твой код с отправкой или нет...
Помогите пожалуйста.Добрый вечер. У меня такая проблема. Загрузил в esp8266 скетч wifi web server (управление gpio2) при периодических посылках команд модулю, он начинает медленно откликаться на команды.