убил вечер с инициализацией на STM32F103C8. все очень просто. не верные задержки при инициализации дисплея. По даташиту самая долгая > 500нс. В тиках проца на 72МГц составит 13.8нс на тик. делим 500нс на 13.8, получаем 36.2 тика (округлим до 40). В void delay(void) меняем 1000 на 40 - for(i=0;i
Мужики, я разобрался, почему может не работать дисплей с LCD и контроллере STM32L103C8T6! В моем случае проблемой оказался не столько код, сколько питание, т.к. платка с контроллером запитывалась через ST-Link по 4 проводам и я долго подключался к пятивольтовому выводу, не вспоминая, что им там неоткуда взяться. Проблема решилась с запитыванием платки от USB. И в функции delay() нужно ставить i
О да, создание своей библиотеки/подключение чужой - это хорошая тема. Не делали такое видео? С удовольствием бы посмотрел, что, как и почему. :) Кстати, можно обозвать пины прямо в кубе, в итоге будут созданы дефайны для пина и порта с этим именем. Таким образом, можно в кубе назвать линии для данных, например D7, D6, D5, D4 и обращаться к ним, как к D7_GPIO_Port, D7_Pin в функциях. Т.е. даже после переноса пинов на другие места код вообще не надо трогать и править порты/пины, т.к. они привязаны к тому, как обозвали пины в кубе.
Непривычно слышать слово "Дисплей" именно через "е". А вообще большое спасибо за уроки! Именно по Вашим урокам хаотически витающие мысли начали оседать по полочкам на свое место. Становится все просто и легко. Спасибо за уроки.
Владимир Александрович, я один заметил, что + подсветки дисплея вместо VCC в схеме подключен к RS? Чет раньше не обращал внимания на схему. Слушал на автомате. :-)
Мне не понятно, при реализации функции инициализации 39:30 параметром передается число 3 и устно обьясняется, что это 11 (видимо 00000011) в восьмеричной системе. Но откуда функция узнала, что здесь восьмеричная система? Ведь в остальных случая передается 16 и 10 чные! Спасибо за оперативное обьяснение:)
Число 3, что в восмиричной, что в десятичной, что в шестнадцатиричной выглядит одинаково и в двоичную переводится как 00000011. Но, конечно, привычка не указывать систему счисления - это повод когда-нибудь долго искать ошибку.
А потому что так проще. Я тоже могу спросить "А почему нельзя смотреть уроки подряд?". Но я же не спрашиваю. А вот если их смотреть подряд, то не возникнет таких вопросов. И занятия скомпонованы так, что смотреть нужно все рубрики сначала. Да и вообще, зачем мы пишем проекты, если мы не можем ими в дальнейшем воспользоваться. И вообще, я уже 100 раз отвечал на этот вопрос. Да и ладно, если Вы такой вопрос задали где-то в 100-м уроке, но досмотреть до 6-го если тяжело, то, видимо, и смотреть тогда уроки не зачем. P S. Школьник идёт в школу сначала в 1 класс и затем в других классах он использует накопленный опыт.
Здравствуйте, дошел до ЛСД и тут у меня загвоздка, дисплей у меня QAPAS 1602А, не получается инициализировать, после прошивки горят обе линии всеми пикселями, до прошивки горела только нижняя линия, подскажите в чем может быть причина?
во первых вместо LCD_Command(0x28); в void LCD_ini(void) отправляй LCD_Command(0x20); , во вторых запитай анод подсветки через резистор на 330, например
Так дефайнить куски кода не рекомендуется. Поглядите, как сделано в библиотеках. Обычно заключают в какой-нибудь блок вроде do{ }while(0U); Это для того, чтобы гарантировать в коде изолированность дефайна от каких-то других выражений.
Очень сложные уроки в плане восприятия. Создавать новый проект руками, когда в 2 клика можно создать проект без "мусора". Но нет, мы полезем искать разный мусор, удалять его ручками, а между этими поисками полезная инфа и вот приходится слушать, смотреть и перематывать... А вот если начать смотреть с самого первого урока, а не то что интересует и делать все как автар, то все встает на свои места... но мне предыдущие не нужны...
Благодарю за уроки, все очень толково и по делу, с помощью полученных знаний подключил немного другой дисплей - WH0802A NGG CT, а это как раз самое оно! Посмотрел, осмыслил и вперед, к поиску новых тупиков))) Шутка.
4битный режим для stm32f1 для экрана на этом же контроллере только 1602 (16 символов и две строки) нужно чуть по другому проинициализировать, вместо 0x28 пишем 0x08 А также там где задаем курсор, режимы 0x0F / 0x0E / 0x0C - при инициализации нужно в самом конце прописывать. Иначе не получится убрать курсор. Если кому нужно.
У меня LCD на контроллере KS0066U, для перехода на 4 битный режим надо на DB5 отправить два раза 1, как учесть это в программе не понимаю, это мой первый проект, помогите пожалуйста.
Спасибо огромное. Отличные уроки для постепенного входжения. Повторил на stm32f103c8n6 - все работает! Конечно надо немного поработать мозгами, многие ответы нашел в комментариях. Продолжайте в том же духе.
Привет всем! Автору за видео большой респект! lcd.h без проблем подцепился к main.h после того как стер из lcd.h все инклюды кроме include "main.h". Сам файл lcd.h в папку Inc, а lcd.c в папку Src, как в видео.
Здравствуйте! Делаю все как описано в уроке, только под контроллер stm32f103c8t6. Вместо портов d4-d7 использую b4-b7. Мигающий курсор выводится. а когда пытаюсь выводить символы вместо одного символа выводится два иероглифа. Уже два дня бьюсь. ничего не получается! Подскажите в чем может быть причина. Файлы lcd.h и lcd.c беру уже с уроков вместо мною набранных. Результат тот же. Help!!!
Было так при ресете МК во время передачи команд. Повторная инициализация не спасает, внутренняя память символов похоже заполняется говном, лечилось только сбросом питания, команд на сброс самого контроллера дисплея я не нашел.
@@dazzershell Делаю по уроку и тоже с контроллером STM32F103C8T6 использую d4-d7 использую b4-b7. Вообще не запускается, даже с учетом всех рекомендаций, коих немало собралось в комментариях к данному видео. Могли бы Вы поделиться файлом lcd.c для STM32F103C8T6?
@@vahtang-testers я городил свой велосипед, без сторонних библиотек, и для экрана сразу использовал и2с расширитель, вам этот код не подойдет. С помощью hal рецепт описан в каком-то из следующих уроков. Экран заводится указанным заклинанием (набором инструкций), проверьте все передачи данных побитно, важно не только данные, но и паузы между передачами. Заклинание не выполняет сброс экрана, если он завис в непонятном состоянии или не стартует - сбросьте питание. Крайне рекомендую применять логический анализатор, ускорит работу и поиск подобных ошибок на порядки, самый дешёвый китайский клон saleae, софт к нему бесплатный.
@@dazzershell В итоге у меня всё запустилось и проблема была вообще не в коде, а в питании дисплея - я подавал на него 3,3., а не 5В. Анализатор логических сигналов у меня сеть (LA1010), но при подключении соответствующим пинам контроллера/дисплея он показывает нечто не соотносящееся с временными диаграммами инициализации из даташита на дисплей. Странно. Тем не менее - всё работает.
Хотел поделился на вашем форуме по этой теме результатами своих изысканий, но увы не проходит проверка примера для подтверждения "человечности"😀. Информации в инете мало на самом деле, многие просто копипастят, конечно это проще . Но если что не стандартное или нечасто встречаемые то караул.
Я не понимаю, когда люди выкладывают свои ценные наработки в народ, даже автора канала не понимаю. Это советское воспитание, у нас про таких говорят "хороший человек". Только потом эти люди не могут найти работу в нашей нефтегазоядерной сверхдержаве. У меня на глазах двоих спецов так отбрили, отца моего динамили и обманывали.
Когда то неплохо изучил Турбо Паскаль, писал свои программки. Решил изучить язык Джава и запутался в библиотеках. Корифеи просветите, сколько времени уходит на изучение библиотек. В каждом ролике говорят - эта функция находится в этой библиотеке здесь. Откуда вы это знаете?
Мне с ХАЛ было намного сложнее, чем работать напрямую с регистрами. Описание на нее есть, сгенерированный роботом файл: просто список функций и аргументов. Обзорного знакомства с контроллером не достаточно, все равно надо лазить под капот, изучать их код, изучать мануалы. В основе та же работа с регистрами, короче двойную работу делать приходится и код разбухает неприлично. Моргалка светодиодом весит как целый проект)
@@dazzershell Я пока только вникаю в STM32, вчера смотрел ролик, там автор провел эксперимент, простой ногодрыг с HAL в восемь раз медленней чем с CMSIS. Так, что сделал вывод - HAL только для инициализации, ну или по быстрому чего нибудь.
Да я вроде стараюсь всегда и ссылку на урок даю, возможно этот урок был сделан до того, как у меня был сайт. Поэтому сейчас старайтесь также смотреть текстовые версии на сайте и там уже будут кликабельные ссылки на уроки. Спасибо за интерес к ресурсу. А я постараюсь следовать Вашим подсказкам и рекомендациям.
Спасибо за уроки. Пытаюсь учить как программирование МК так и саму радиоэлектронику. Вопрос такой: В конце вашего видео видно, что питание индикатора идет от ножки 5 вольт, а на схеме питание указано с ножки Vdd. А там ведь 3 вольта? Подключать все равно как, или я чего то путаю?
Бред какой-то. Вот не могу проинициализировать дисплей. Ни QC1602A, ни МЭЛТовский 20х4. Поначалу как-то делал вывод библиотекой, которую нашел в инете, малость переписал ее под себя. На 1602 работало. Теперь создал новый проект, и не работает ни моя, ни ваша библиотека. Вот засада. Жду прихода логического анализатора. Будем смотреть диаграммы на ногах. Кстати, а можете снять анализатором диаграммы при инициализации дисплея? Был бы признателен. Не понятно, где засада. То ли ST что-то поменяли при обновлении библиотек, то ли у меня уже глаз замылился. Хоть бросай всё и начинай играться с RFID метками, пришла мне платка такая. Сервопривод с ШИМ уже освоил. А вот с надежным выводом на дисплей засада.
Вот логи анализатора savepic.su/7365194.jpg Не знаю, что они дадут. По ним точно все равно тайминги не отследить, но общая картина в принципе видна. Здесь инициализация дисплея, очистка экрана, переход на позицию 0,0 и вывод символа 'n'
Ок, пасиба. Придет мой ЛА, сравню. Делал ЛА из своей дискавери, но он пишет всего 24мс, что есть очень мало. Видимо, заполняет свой какой-то буфер и выкидывает через Com порт. Исходников нет, только прошивка. Было два дисплея на HD44780, спалил отдел электроники. :-) Остался один, мы его распаяли на шлейф, макетировать неудобно очень стало с ним.
Вот. Но там неудобная программа. При включении питания, по всем шинам возникает импульс. Программа начинает запись, и пишет только 24мс, а там ожидание стоит в начале инициализации. Получается, программа записывает только фронт установки 3 на шине данных и все. :)
Как можно сделать задержку в микросекундах в отдельную библиотеку(файл), чтобы можно его было использовать во всем проекте... у меня не получается вынести в отдельный файл delay.c Идут ошибки __STATIC_INLINE
+Дмитрий Попов Ну DMA с дисплеем, это уж перебор. не такие уж великие пакеты передаем. Ну хотя пробуйте, может и будет какой то выигрыш. Отпишитесь, что у Вас получится только обязательно.
+narod stream проверил только что время заливки TFT экрана 480х272 16 битным цветом. С DMA - 4.76, без(только FCMS) - 11.67. Как видим результат примерно в 2.5 раз лучше. Без FCMS будет ещё хуже.
Это бесплатные уроки. Мне кажется, Вы выдвигаете требования не имеющие под собой почвы. Почва - образец бесплатного видео. в котором очень много информации за максимально-короткое время. Вообщем, ведёте Вы себя так, как будто Вы заплатили очень дорого за услугу, а она не была предоставлена должным образом. Тем более этому видео уже много времени, и замечания уже не актуальны.
Алекс, я вас понимаю, когда знаешь 90% по теме то такие уроки только для здорового сна полезны. Но когда знаешь только 10% по теме, то есть шанс узнать все до конца, при этом в сон клонить не будет. Спокойная подача материала способствует его усвоению. Вот я них не знаю и 10%)) сначала изучаю урок на сайте, точнее распечатывая его чтоб все было перед глазами, изучаю так чтоб были вопросы и потом в видео я получаю на них ответы.
Вы хотите сказать, что у вас на видео нет рекламы и вы бесплатно тут все выложили? Ну да ладно... По мне кажется что вы просто передрали урок ничего своего не добавили, я бы добавил регулировку контрастности программно в место переменного резистора. Ничего личного спасибо вам за то что есть, могу накидать тем по которым нужно делать уроки их нет в инете. 1-Работа с CD картой чтение и запись в файл. 2-Работа с дисплеем Nextion 3-Весы 4-Часы и вывод даты на дисплей итд можно долго перечислять потому как на stm32 очень мало инфо. Конечно любой труд должен быть оценен ставлю лайк.
При наличии всяких неочевидных глюков и подстав в самом Кале, надо повторять все буква в букву, чтоб хоть что-то заработало, такие видео очень нужны. Например, когда программатор не определялся, я весь лоб расшиб. На наших форумах предлагают "переустановить Кайл, пререзагрузить винду, почистить реестр итд" Кто-то даже советовал винду переставить))). И только на буржуйском форуме среди всяких бытовых вопросов написал добрый человек, что надо зайти туда-то и ткнуть туда-то, и тогда она падла заработает.