именно. А вот while(0) абсолютно бессмысленная конструкция, на мой взгляд.
Что касается основной проблемы - Садман молодец, глазастый.
Но меня смущает то, что вы писали вначале:
Код был с этой же строчкой формата или нет?
С уровнем оптимизации Os это в конечном коде не отразится
Да. Это готовый пример, который взят копи-пастом.
И программа для меня проваливается очень странно. После порчи памяти проходит много подпрограмм, происходит переход в другую библиотеку и только там при вызове очередной функции происходит или мусор или зависание или перезагрузка в зависимости от случайностей.
для порчи памяти это как раз нормально.
Ошибка возникает не тогда, когда вы портите “чужую” память, а когда вы потом пытаетесь этой испорченной памятью воспользоваться.
Так что, в принципе, в маленькой программе это может и вовсе не проявится.
В этом смысле в том, что небольшой пример работал, а в большой программе стал виснуть - ничего удивительного нет. И возможно Садман нашел главную причину ваших проблем.
Однако я призываю не расслабляться. Ошибка может быть и не одна.
sprintf - оружие самурая.
Лично я предпочитаю snprintf, чтобы потом не красноглазить.
И это оказалось правильным - перенес код обратно на ESP8266 - датчики не читаются ![]()
i2c тест проходит, осциллограф красивый, данные не корректные. ![]()
Где задавать вопросы по ESP8266? ![]()
Эти датчики с ESP раньше работали?
Судя по тому, что они не сгорели от AVR, модули с 5V TTL. Питания мож не хватает при работе с 8266
Да. ~год, пока я не перекомпилировал программу на новом Arduino IDE. А дальше начал переподключать и искать почему…
