I2C не работает на GPIO9&10

nikolz

Well-known member
При попытке использования выводов №11 и12 для I2C возникает перезагрузка модуля, хотя UART двухпроводный и эти ножки нигде не задействованы (Nodemcu 1.5.1).
Код:
i2c.setup(0, 11,12, i2c.SLOW)
читайте документацию:
Inter-integrated Circuit Interface (I2C)
Pin Name Function Name Type Pin Num
MTMS I2C_SCL I/O/T 9
GPIO2 I2C_SDA I/O/T 14
 

nikolz

Well-known member
А при чем тут железный I2C от ESP? Cогласно документации на NodeMCU "pinSDA 1~12, IO index pinSCL 1~12, IO index" можно использовать любые ножки в диапазоне 1-12 т.е. софтовый I2C. И пример там кстати на GPIO 4,5. Просто как обычно половина модулей луа ни хрена не работают. Реально выполняется лишь часть функции на GPIO9 и GPIO10 поскольку они сидят на ИС памяти то после переключения режима DIO высвобождаются не полностью -вход WP должен быть подтянут к питанию т.е. этот GPIO может быть лишь входом. Второй GPIO висит на HOLD что позволяет его включать как выход или PWM.
А как понять В вопросеGPIO9 и GPIO10 а в посте выводов №11 и12
помоему мнению это четыре больших разницы.
 

nikolz

Well-known member
Да очень просто см. документацию NodeMCU там идет перенумерация выводов GPIO9 =11 и GPIO10=12 (таблица на рис.). Только не спрашивайте почему так, это NodeMCU, китайцам так удобнее наверное, ну ли чтоб враги не догадались.
тото я никак не врублюсь что это Вы изобрели.
Вы внимательно на схему посмотрите там указано, что пины с 9 по 14 используются для флеш.
Но Вы все равно хотите приключений на ...
И Вы думаете, что китайцы это зря написали или они это не читали когда nodemcu делали?
 

nikolz

Well-known member
Еще раз для Вас, для использования пинов GPIO9 &10 нужно переключить флешку в режим обычного трехпроводного последовательного интерфейса. Это режим у китайцев именуется DIO а обычный когда все 5 ножек это QIO. Это не я придумал так написано в документации см. тут . Но там ничего не написано об косяке GPIO9 &10 (это уже видно в исходниках и схеме ). Как я уже объяснил в виду того что WP нельзя вешать на ноль то можно использовать эти выводы с ограниченным функционалом (см.пост выше) -конечно если вы планируете использовать флешку в работе а не только при загрузке кода один раз. Но даже если использовать только бут, при настройке I2C происходит сброс системы с интервалом 3-5сек. Можно конечно и это понять но зачем убивать время на чужой код? Таких ляпов в NodeMCU достаточно например rtc_time_enter_deep_sleep_us() при выходе не выполняет инцилизацию полностью , в результате зависаем в полусброшенном состоянии, хотя старая версия через node.dsleep делает сброс корректно.
Спасибо,понял.
Если знаете ,где ошибка в nodemcu, то продуктивнее исправить самому, чем хаять китайцев.
Забыв народную мудрость - "Дареному коню в зад, т е в зубы, не заглядывают"
 

nikolz

Well-known member
Нет уж спасибо, лучше чтоб на каждую функцию Lua было более детальное описание "зубов" в заду тогда и дареный конь в радость. ( Последний раз когда я исправлял код был CMSIS от Silicon Labs как раз под такой же ARM Cortex M3. В результате мне пришлось переписать весь уровень абстракции- HAL из 30 файлов удалось сократить до 3-х и потерять месяц, но это было терпимо т.к. среда - IAR имеет симулятор ядра и с нормальным JTAG отладчиком. А тут Luna ! и UART-не удивительно, что это так работает...)
Но согласитесь, что ругаться на китайцев на русскоязычном сайте,
который китайцы не читают это полный ...
 

Victor

Administrator
Команда форума
Если бы в описании к каждой функции указывать...
Я, некоторое время назад, сделал перевод на русский почти всей документации, но народ не поддержал, больше никто участие в переводе не принял. Одному человеку все это поддерживать и обновлять трудновато, поэтому проект благополучно умер.
Китайцы же, за это время, сделали отличную документацию на NodeMCU (да, не без недостатков, вы тут абсолютно правы).
А у нас большинство хочет по-быстренькому и только для себя. Лишь немногие отвечают на вопросы новичков на нашем форуме и еще меньшее количество людей участвует в развитии open source проектов. А жаль, могли бы "получить +50 в карму"
Вот вы, @dimka_f, похоже не новичок в микроконтроллерах - вливайтесь в наше сообщество и делитесь своим опытом c другими:)
 

nikolz

Well-known member
вы не путайте конструктивную критику и ругань. Lua на ESP это инструмент программирования для чайников и китайцами он приподноситься именно так и это очень даже хорошо, зачем разбираться в коде когда пару макросов сделают все что надо. Если бы в описании к каждой функции указывать соопутсвующие "грабли" (например тут -"This driver shares hardware resources with other modules. Thus you can't operate it in parallel to" весьма честно сказано что при использовании модуля pcm остальные три модуля встанут) то пользователю будет проще понять что он может реально использовать, а что нет в своем проекте. Такую же Important инфу можно приделать к каждому модулю, к примеру SPI(0) который в принципе не написан т.к. нет OverlapSPI в коде исходника. Или те же extra pins GPIO9&10... Вот это бы сильно упростило жизнь таким ламерам как я, которые леняться ставить IDE и хотят быстренько накидать скрипт и ву аля!.
Вы конструктивную критику для кого пишите? Очевидно, что для китайцев.
Ну тогда пишите им.
Я год назад тоже их критиковал и писал им.
Они отвечали, проверяли. Даже одну ошибку признали.
--------------
А то у Вас как в анегдоте:
Мужик, ты что ищешь? Так сто рублей потерял вон у того киоска.
А почему ищешь здесь, под фонарем, а не там - у киоска?
Так здесь же светло.
 

nikolz

Well-known member
Я думаю что 90 % людей пробуют NodeMCU и бросают его так и не поняв в чем проблема. Поэтому возможно то что я пишу им будет полезно. Китайцам я писать не стану т.к. " если хочешь сделать хорошо - сделай это сам."
Поэтому у меня к Вам как специалисту пару вопросов :
1) Есть IDE Eclipse Luna SR2 под Анройд приложения использую. Я поставил пак SDK NonOS 2.0 +AddonDevKit Примеры от SDK компилятся. А вот исходники NodeMCU не собирает как надо, вроде SDK вверх не проблема, вероятно проблема в инсталяции через Import Git?
2) Не вижу отладчика в среде Eclipse для ESP8266, хотя под студию есть OpenOCD на WDT построена, ну очень не хотелось бы printf() использовать как основной инструмент.
Мое мнение следующее.
---------------------------
1. Все что я хотел сделать в nodemcu -я сделал . Единственная проблема была с утечкой памяти при связи по TCP. Я решил это через UDP.
-----------------------------
2. Относительно многих пробующих
1) одни берут что-то типа на халяву и думают что и дебил все сделает за пару минут.
ан нет, надо шевелить мозгами и трудиться.
многим некогда или не умеют.
2) Другие не разобравшись с тем, что сделано и не изучив луа и примеры,
начинают городить свое - типа
"А если гланды смотреть через зад?
Написано, что можно смотреть в любую дырку и будет видно"
Ан нет, не видно.
И тут куча критики в адрес конечно же китайцев.
Вот они все сделали продают за копейки а не разжевали и в рот не положили.
А как же нам хавать?
--------------------------------------
Теперь по вашему вопросу.
Я не лазил так глубоко, как Вы,
но могу заметить,
что VMLua в ESP это eLua, а не Lua.
Возможно с этим связаны Ваши проблемы.
 
Сверху Снизу