Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Обсуждение Что делать, чтобы прошивка проходила гладко

Тема в разделе "Железные вопросы по esp8266", создана пользователем nikolz, 27 апр 2015.

  1. nikolz

    nikolz Гуру

    Сообщения:
    4.133
    Симпатии:
    431
    1)devkit NODEMCU с интерфейсом на борту без проблем.
    источник usb
    2) Для ESP-01 без проблем.СH_PD - 24 к на 3.3v.
    Источник питания - 3.5-3.3v любой
     
    Последнее редактирование: 8 май 2015
  2. JustACat

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

    Сообщения:
    568
    Симпатии:
    121
    nikolz, ну, значит я плохо понимаю понятие "хороший источник". Имхо, AMS1117-3.3 прямо рядом с ESP + электролит на 1000 uF + керамика. Куда уж ровнее... Конечно осциллографом не мерил, ибо нет его, увы... Но мультиметр (ut61e) показывает наировнейшее питание. И все равно прошивка то прекрасно и стабильно работает раз за разом, то через раз, а иногда бывает, что и раз 5 подряд не хочет шиться.
    Не, я не утверждаю, может я что-то делаю не так - знать бы что...
    Такие дела...
     
  3. JustACat

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

    Сообщения:
    568
    Симпатии:
    121
    nikolz, может быть. Я грешу больше на ESP которые мне попались. Все таки меньше у меня к ним доверия, чем ко всему остальному.
    Т.к. на том же самом оборудовании прекрасно шьются и работают и АВР'ки, и STM'ки, и еще куча всякой фигни, хоть через бутлодыри, хоть напрямую.
    ESP (и прочие железки) питанию не от компа (компа жалко, он хороший), на нее отдельный БП (от ПК) -> AMS1117-3.3 -> ESP.
    Пробовал и по-другому: отдельный БП (трансформаторный) -> другой преобразователь в 3.3 -> ESP.
    К слову сказать, и сам ПК, и все, что обычно связано с микроконтроллерами во время тестов - запитано не напрямую от сети, а через сетевой стабилизатор (не "пилот" розеточный, а именно стабилизатор, ибо сеть наша домашняя, увы, и правда, не самая лучшая в этом плане, и напряжение, бывает, гуляет, но стабилизатор это лечит - после него всегда стабильно все).
    В общем, как ни крути - все компоненты качественные и направлены как раз на отсутствие помех.
    Так что остается только грешить на сами ESP. Они после аврок и стмок просто пипец какие капризные. Но я готов им это прощать, в виду их стоимости и наличия WiFi :)
    Ну и без осцилла дальше проверять смысла нету, т.к. это все равно что пальцем в небо тыкать. Если бы были проблемы еще хоть с чем-то из моего электронного зоопарка, кроме ESP - тогда конечно заморочился бы. А так - бессмысленно.
     
  4. JustACat

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

    Сообщения:
    568
    Симпатии:
    121
    А что, бывают не Б/У? :) Я ж им пользуюсь, значит конечно он Б/У - мною и Б/У :) Но БП хороший.
    И до него стоит дополнительно сетевой стабилизатор + за ним еще и сетевой фильтр (оба не дешевые).
    Модули при прошивке не перевключаю, вместо этого пользуюсь резетом. Так что бросков быть не должно.
    Ведь по сути получается так: запускаем прошивку - прошивальщик дает резет и заодно GPIO дергает, чтобы режим загрузчика запустить - ESP сразу попадает в загрузчик, в котором (я очень надеюсь) WiFi вообще не стартует (зачем он в загрузчике?) - прошиваем - и вдруг прошивка падает (причем падать она может на совершенно разных процентах загрузки, что исключает повреждение памяти в какой-то конкретной ячейке).
    Опять же, ну во время прошивки самой никак не должно влиять WiFi и прочее - ибо оно в этот момент вовсе не задействовано...
    Остается как раз одно: память не очень высокого качества.
    Ну либо какие-то фундаментальные проблемы/ошибки в загрузчике, либо в самом ESP.
    А кто ж ее тогда делал? =) Ну не эти конкретно китайцы, так другие. Все равно же все оттуда :)
    И есть же такое понятие как контроль качества - вполне могли заказать партию отбракованных не очень стабильных модулей памяти и напаять их на дешевские модули ESP.
    Я, как человек, который заказывает много всяких железок из Китая знаю, что такое контроль качества :) Заказываешь вроде бы один и тот же телефон (по начинке), но от разных фирм. У одной он стоит (допустим) 100 баксов, у другой 200. В итоге первый глючит безбожно и падает где только можно, а второй прекрасно работает. А железо (процессор, объем памяти и т.п.) внутри одинаковое. В чем же подвох? Только в качестве компонентов... Имхо, конечно...
     
    Последнее редактирование: 28 апр 2015
  5. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Шьется при болтании питания от 1.71 до 5 вольт. Всё остальное - завязка на I/O = как и куда включены + состояние перед сбросом. И значения в RTC часиках!!!
    А так как у всех часики без питания - то там бардак.
    Китайцы вообще в SDK контрольную сумму аппаратных настроек из часиков считают даже не суммой слов или XOR, а OR ! :eek: Ну это же програмеры из Espressif. В том блоке сохраняется и состояние для старта SDK - ну там deep-sleep и подобное...
    Так что ничего удивительного, что модуль может не стартовать.
    Решается принудительной перезаписью этой области путем нескольких переключений старта в режим программирования и в режим запуска.
     
    Последнее редактирование: 27 апр 2015
  6. sherr

    sherr Читатель

    Сообщения:
    36
    Симпатии:
    6
    1000 мкф после AMS1117-3.3 - это может быть много, не все стабилизаторы такое терпят, вплоть до выгорания при вклю-
    чении или выключении (особенно если конденсатор LOW-ESR) и еще при таких емкостях диод нужен между входом и выходом
    в обратном включении,,,, я бы ставил тантал на 100 мкф + керамика на 0,22-0,47 мкф. Вряд ли причина эта, но всё-таки ...
     
  7. JustACat

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

    Сообщения:
    568
    Симпатии:
    121
    sherr, ага, спасибо, учтем. Это на макетке в общем-то, так что не сильно страшно, если выгорит. Страшнее именно сбои прошивки, но тут емкость кондера явно не играет роли :(
    А так, без кондера, субъективно, прошивка рвется чаще. Субъективно, потому что уж больно это случайно происходит, и утверждать я не берусь.
     
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Рваться может от резких фронтов, наводок на RESET. Этот пин срабатывает от импульса в 1 ns. Попробуйте на него повесить малую емкость - до десятков наноФарад.
    Так-же от фронтов по RS каналу в минус, если длинные провода до USB-COM. Это может давать прямые наводки в кристалл. Простой последовательный резистор на сотню Ом прямо у модуля на проводники может спасти это дело.
    Остальное - это расхождение скорости uart. При прошивке ВСЕГДА в модуле устанавливается автоопределение скорости по RS-232 TTL. Оно делается один раз при приеме первых синхро.
    Проверка показала (несколько тестов просмотра что автоопределилось и записано в регистр делителя UART), что в ROM-BIOS у китайцев стоит коррекция автоопределения скорости для кварца в 40MHz. Итоговая скорость в делителе UART чипа всегда не совпадает. Расхождения в плюс и минус достаточно большие. Т.е. автоопределение скорости не очень четкое и главное - оно делается при старте синхро и любые помехи или предварительные символы будут мешать.
    Код (C):
    1.  // ROM:40003924
    2. uint32 uart_baudrate_detect(uint32 uart_num, uint32 flg)
    3. {
    4.     volatile uint32_t *uartregs = REG_UART_BASE(uart_num);
    5.     if(UartDev.rcv_state != BAUD_RATE_DET) {
    6.         uartregs[6] &= 0x7E; // UART_AUTOBAUD(uart_num)
    7.         uartregs[6] = 0x801; // UART_AUTOBAUD(uart_num)
    8.         UartDev.rcv_state = WAIT_SYNC_FRM;
    9.     }
    10.     while(uartregs[12] >= 29) { // UART_PULSE_NUM(uart_num)
    11.         if(flg) return 0;
    12.         ets_delay_us(1000);
    13.     }
    14.     uint32 ret = (((uartregs[10] & 0xFFFFF) + (uartregs[11] & 0xFFFFF)) >> 1) + 12;  // UART_LOWPULSE(uart_num) + UART_HIGHPULSE(uart_num)
    15.     uartregs[6] &= 0x7E; // UART_AUTOBAUD(uart_num)
    16.     return ret;
    17. }
     
    JustACat нравится это.
  9. JustACat

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

    Сообщения:
    568
    Симпатии:
    121
    pvvx, ага, спасибо за советы! Кондер на reset тоже добавил (в дополнение к подтяжке в 10 kOm). Но увы, не сказал бы, что стало шибко лучше.
    Провода от USB-COM не более 10 см. Не знаю, короткие это или нет. Надо будет еще попробовать и на них резисторов навтыкать.
    Что интересно, как уже замечал ранее: перезагружается ESP от прикосновения любого куска металла, начиная от короткой отвертки или канц. ножа - до любого участка GND связанной с этой ESP.
    Даже расположенного достаточно далеко от ESP. Например, если ESP подключена к USB-UART, который в свою очередь подключен к ПК, и на этом ПК мы коснемся корпуса USB разъема - ESP перезагрузится. Причем не важно, есть у данного куска металла контакт прямой со мной или нет. То есть может ей емкости хватает этого куска, либо может статика так на нее срабатывает, хотя какая статика, заземляться перед этим - не помогает... Мистика :)
    Не, вы не думайте, я понимаю, что где-то я чего-то не понимаю или не знаю, и в этом моя проблема. Ну пока не разобрался, может быть когда-нибудь.
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    На макетке с внешними проводами от модуля данное не лечиться. Т.е. вылечить от этого не удалось. Это импульсная помеха.
    Обычно, в практике, такое вызывает внутренний встроенный в чип BOR (Brown-out Reset), если он настроен на высокое напряжение срабатывания или работу по коротким импульсам.
    При макетке с проводами во все стороны от этого импульса не избавиться ни как. Считайте сами - заряженная емкость (то есть железяка), хоть 10 пФ c напряжением в 100..300В включается на проводник. У проводника длина пусть 5 см. На нем будет более нескольких нс разница между его концами и другими проводниками в эти 100..300В (считайте индуктивность провода и получите частоту до 500MHz).
    Попробуйте это сделать с батарейкой и в лесу - фигу что выйдет :) Там нету этой разницы заряда между отверткой и модулем.
    Во всех современных устройствах, даже телефонах, на входах с кнопок или других внешних контактах стоят специальные быстродействующие варисторы на 3..5В. Выглядят как SMD резистор или как на USB - sot23-6
     
    Последнее редактирование: 28 апр 2015
    JustACat нравится это.
  11. JustACat

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

    Сообщения:
    568
    Симпатии:
    121
    Вот и я так же подумал. и забил. По крайней мере пока что.
    К своему стыду скажу, что у меня ESP пока ни в одном законченном проекте не втыкнута... Увы, никак времени не хватает... Вот когда во что-то законченное втыкну, там может и придется бороться со всеми этими шалостями. Покамест и так сойдет.
     
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Возьмите проводящий лист или фольгу. Главное побольше площадью (емкость). Положите на него все потроха и соедините gnd модуля с этим листом в центре. Никакая "заряженная" отвертка больше не сможет сбивать работу модуля при касании к листу (gnd) - у него есмкость больше и разность заряда гасится на ней (соотношение емкостей), а импульс тока становится локальным только в месте касания листа :)
    Аналогично и с разводкой на плате, если правильно разведен слой gnd + все проводники имеют есмкость к этому слою и импульс заряда смещает их всех одновременно, не создавая большой разницы между gnd и этими проводниками. Вот тогда встречается только не правильно настроенный BOR (который слишком чувствительный).
    А так ставьте защитные варисторы на все входяшие-выходящие провода из макетки и соедините их к gnd геометрически правильно - избавит от "сборса ответкой" :)
    http://bourns.com/pdfs/MLC.pdf Maximum Response Time RT 1 ns
    Беда эта у всей современной аппаратуры, т.к. скорости её работы (и соответственно реакции входов) - сотни MHz. Старинные микросхемы чихали на импульсы в несколько ns - у них рабочий фронт за 10 ns, а тут < 0.3 ns :)
     
    Последнее редактирование: 29 апр 2015
    JustACat нравится это.
  13. sherr

    sherr Читатель

    Сообщения:
    36
    Симпатии:
    6
    Поделюсь своим приколом - собрал платку на ESP-07(12) + USB-UART переходник на основе PL2303. Обвязку делал согласно советам ув. JustACat. Шьется нормально, работает до передергивания питания (выключатель стоит перед стабилизатором 3,3в, питание пока от USB). Разбирательство
    показало, что виснет PL2303, да так, что при передергивании кабеля гарантированно перепрыгивает с ttyUSB0 на ttyUSB1...
    Перенос выключателя за стабилизатор (+ керамика ~15-22 мкф до и после него) помогли, но заставили призадуматься .
     
    Последнее редактирование: 3 май 2015
    JustACat нравится это.

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