Хорошее видео и урок. Не использую, но решил написать про это. И еще вспомнил подробности про свой dupont разъем и тогда там, в той теме, напишу.
@NRelectronics4 жыл бұрын
Спасибо, стараюсь. Ок, делитесь конечно опытом. Будет для всех полезно.
@Mikke_302 жыл бұрын
Что такое "хиддер"? 5:49
@NRelectronics2 жыл бұрын
Файл для препроцессора с расширением .h
@СергейМазуров-я3ъ4 жыл бұрын
Классная серия! Ещё бы тему мультимастера раскрыть по подробнее.
@NRelectronics4 жыл бұрын
Спасибо. Пока не планирую мультимастерный режим
@ПетрГуберт4 жыл бұрын
Не очень понял про нераспаянный reset на программаторе. В кейле же есть галочка "reset and run" на вкладке "download function". Тоже пользуюсь китайским стлинком и все запускается само.
@NRelectronics4 жыл бұрын
Знаю про эту галочку, но китайский стлинк он не сбрасывает у меня.
@slavaglow69334 жыл бұрын
Спасибо за информацию. У меня есть не совсем связанный с этим видео. Как правильно реализовывать атомарный доступ к 64 битной переменной?
@NRelectronics4 жыл бұрын
Пожалуйста. Тут до меня все описано: habr.com/ru/post/244881/
@luckygiftlit31772 жыл бұрын
Не открывается исходный код.
@NRelectronics2 жыл бұрын
Я проверю, ок.
@alx1234 жыл бұрын
Без отдельного ресета непонятно, то ли прошил, то ли нет, а в готовой сборке до кнопки нет доступа, поэтому я сразу соорудил ST-Link из блупилла.
@NRelectronics4 жыл бұрын
Есть такое дело. В видео нажал кнопку ресет на плате. И окна консоли для чего собственно нужно?)
@alx1234 жыл бұрын
@@NRelectronics Кстати, в кубе IDE нет кнопки прошивки (может сочетание клавиш есть?), есть только компилить, запустить или дебаг, а в Кейле есть. И еще с устройств кидать на "сд-карту" стлинка удобно. Почему-то на всех Demo Board F030 у меня ошибка верификации, если через куб запускать, а скорость SWD родного отладчика вроде нельзя понизить.
@NRelectronics4 жыл бұрын
кнопки прошивки действительно нет, приходиться запускать дебаг, в Кейле многое чего лучше...
@КлимЧугункин-д1д4 жыл бұрын
Спасибо за труды, но почему во всех уроках по I2C показывают работу только в режиме тупого ожидания? Почему не использовать прерывания? Это же намного эффективнее. И к тому же никто никогда не показывает работу в слэйве, только мастер ну а обработку ошибок вообще никто не затрагивает, а ведь эта шина крайне капризная. По сравнению с АВР здесь крайне глючный блок I2C. Столкнулся с проблемой как раз обработки ошибок при работе одновременно слэйв-мастер. Модуль часто зависает если ловит потерю приоритета или BUS FAIL Если интересно распишу подробнее
@NRelectronics4 жыл бұрын
Пожалуйста. Но у меня нет цели делать прошивку с наименьшей нагруженностью на мк, показываю именно работу прошивки дисплея. Никто не спорит с эффективностью прерывания и дма. Это каждый сможет прикрутить. Контроллер мастер для дисплея, это норм. Интерфейс глюченный на F1. Тут лучше дело обстоит. Поделитесь опытом, только по подробнее.
@КлимЧугункин-д1д4 жыл бұрын
@@NRelectronics Да, забыл написать что это про F051. Проблемы было две. Первое это когда мы ловим свой адрес во время передачи, и второе - когда вклинивается другой мастер во время преедачи, ну или просто плохой контакт в линии SDA или SCL. Вторая проблема хуже. МОдуль тупо зависал. Висел флаг BUSY и линия SCL сбрасывалась в 0. И все. никаких больше флагов. Первое решил запретом прерывания ADDR и отключением возможности отзываться на свой адрес I2C_OAR1_OA1EN = 0(то есть режим слэйва выкл) при предаче в режиме мастер. Со вторым сложнее. Если мы вываливаемся в I2C_ISR_BERR или I2C_ISR_ARLO, то смотрим флаг BUSY. Если он стоит (а его, как я понял быть не должно в нормальном случае) - это означает, что модуль завис. Пробуем перезапустить модуль битом PE = 0, PE = 1 и вкатить опять Start. Но бывает, что все равно это не помогает, модуль не висит, но флаги состояния не появляются, пооэтому есть вторая ступень защиты. В нормальном режиме после старта, у меня в очередь задач становится функция Supervisor с задержкой около 15 мс, чтоб с запасом на время передачи. Если мастер отработал успешно, то позавершению, мы удаляем Supervisor из очереди задач не дав ей сработать. То есть в норм ситуации она не работает никогда. А если модуль завис, она вызывается и тогда смотрим, если у нас висит BUSY или моя внутренняя переменная состояния I2C, то тогда ребутим модуль PE = 0, PE = 1. Да в тупом суперцикле этот костыль не проканает, нужен диспетчер задач. Топорно. Дубово, но работает безотказно. Да, это результат моих опытов и мои наблюдения. Может я ошибаюсь и делаю что-то не так, если у кого есть соображения на этот счет, поделитесь пожалуйста
@NRelectronics4 жыл бұрын
Интересно получалось. Спасибо что поделились опытом, для себя его учту тоже. Побольше таких подписчиков, которые делились опытом реальным а не опытом лежания на диване!
@mi4ell3 жыл бұрын
@@NRelectronics Тоже решил реализовать обмен по I2C с помощью прерываний...и как понеслось. Реализовывал master-передатчик и master-приемник. Использовал контроллер F103. Столкнулся с тем что хочу принять 1 байт, вместо этого принимаю 2 байта (1 байт реальных данных, 2 байт 0xFF - т.е нет изменений на линии SDA, а есть просто тактирование на линии SCL). В RM пишут что есть некое событие EV6_1, которое ни с чем не ассоциируется и в нем надо отключить подтверждение и сгенерить СТОП-условие, но не тут то было - этот алгоритм не рабочий! Залез в ERRATA, нашел что реально за STM грешок, есть ошибки принятия лишнего байта) Что они предлагают: среди прочего вывод SCL вывести в режим GPIO и настроить на открытый сток с низким лог. уровнем, а затем вернуть в определенный момент в альтернативную функцию (если интересно почитайте, там 2 страницы, весь алгоритм расписывать лень). В итоге добился что принимаю 1 байт, НО нет СТОП-условия в результате чего, что логично микруха виснет)) и и линия SCL остается в лог. нуле (походу не возвращается в альтернативный режим работы), дальнейший обмен по шине невозможен. Итог: капался 2 недели))) модуль на F103 жудко сырой, с кучей глюков. Может я в чем-то ошибся, если у кого-то другой опыт, поделитесь, буду рад его перенять!
@tarasdemyanchuk91324 жыл бұрын
👍
@ivanrusev22704 жыл бұрын
у меня два вопроса к вам как к спецу ф 1 глючит,Вообще у меня с I2C проблемма .Создал я своё меню по пинам оно переключается а вот во через приставку I2C не хочет. ?Как с этим бороться?Что я только не делал.Прошу меня не судить.Я чайник.На AVR EEPROM настроил в железе.В stm32 EEPROM и вообще I2C загадка.Как мне ресетировать шину и переустановить?
@NRelectronics4 жыл бұрын
Проверьте адрес вашей приставки. Если шина правильно проинициализирована то переустановка не требуется.
@ivanrusev22704 жыл бұрын
@@NRelectronics почему вы не ответили?
@NRelectronics4 жыл бұрын
Вообще-то ответил.
@ivanrusev22704 жыл бұрын
@@NRelectronics adres 0x4E или 0b01001110 он верный я проверил причина наверное в другом.
@NRelectronics4 жыл бұрын
может не работать и приставка.
@Jtcvry4 жыл бұрын
Либо было сказано как-то вскользь, либо не было сказано вообще, какая библиотека используется. Речь про lcd.h и .c
@NRelectronics4 жыл бұрын
Библиотека для работы с I2C преобразователем.
@Jtcvry4 жыл бұрын
@@NRelectronics Ссылку на источник, пожалуйста. Или вы сами её писали?
@NRelectronics4 жыл бұрын
ссылка на гитхаб есть, там Weather Station закладка.
@Jtcvry4 жыл бұрын
@@NRelectronics В смысле на облако мыла.ру?
@NRelectronics4 жыл бұрын
в смысле на социальную сеть программеров гитхаб)
@manul884 жыл бұрын
Спасибо! Но очень похоже на копию с канала Narodstream.
@NRelectronics4 жыл бұрын
А там оно рабочее вообще??))
@manul884 жыл бұрын
@@NRelectronics да, вполне
@sergienko_maxim4 жыл бұрын
@@NRelectronics Ну у меня в конечном итоге все заработало по тому уроку на Narodstream. Но не помню сейчас точно, следовал ли буквально или просто брал за основу урок.
@NRelectronics4 жыл бұрын
Я иду в любом случае по своей программе, и если где-то как у меня то я не виноват, зато на BlackPill - плате.
@Ihor_Mikulin3 жыл бұрын
Если убрать все "эээ" из ролика, то видео сократится наполовину. Не стоит так волноваться.
@NRelectronics3 жыл бұрын
Хорошо, согласен, не буду больше волноваться)
@znakomiy_422 жыл бұрын
быстро быстро пробежался, палцем натыкал.... кто-то подгонял. Наверное не урок, а обзор больше