Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
trengtor
Сверлит текстолит когтями
Сообщения: 1299
Зарегистрирован: Вт мар 31, 2015 22:56:07
Откуда: Мы люди простые, живем в лесу, на пенек молимся
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение trengtor »

scorpi_0n писал(а):Так вам же и толкуют про решения подобных задач. При аппаратном решении планировщик только обновляет буфер дисплея, при необходимости, он даже и не ведает о существовании самого дисплея. А с какой частотой периферия, без участия ядра и без прерываний, обновляет данные на самом дисплее уже не суть. Там может быть 25, а может и 125 раз в секунду, время ядра то на это никак не тратится.

1. У меня ATmega328P, а не STM32.
2. У меня НЕТ дисплейного сопра, выводом занимается МК.

Или Вы это не мне?
Изображение
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение ARV »

scorpi_0n писал(а):это копеечный СТМ32 и этот МК не юзает тупые задержки, ему это просто ни к чему
а как же он реализует протокол обмена с ЖКИ, если считывание бита занятости он не делает, и задержки тоже не реализует? может, вы его в сон погружаете или еще как-то загадочно заставляете его ничего не делать некоторое время, пока ЖКИ прочухается? но чем такой подход отличается от тупого цикла?
Мурато Мяуконни писал(а):Делал полностью аппаратный вывод с частотой обновления всего дисплея 25 фпс
полностью аппаратный - это как? как в этом "полностью аппаратном" выводе осуществлялось ожидание времени готовности ЖКИ?
trengtor писал(а):Или Вы это не мне?
да похоже, люди вообще сами с собой говорят. им про то, что соблюсти временные параметры протокола обмена информацией с ЖКИ1602 можно либо с анализом бита занятоски/готовности, либо с задержками, а они про то, как эти функции будет выполнять какой-то "сопроцессор".
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Albert_V »

Мурато Мяуконни писал(а):...не шибко то выгодно с точки зрения кода - ожидать готовность дисплея, проверяя бит занятости....
Надеюсь, вы в курсе того, что времена исполнения команд HD44780 определяются его тактовой частотой, которая, в свою очередь, задаётся RC цепочкой.
Даже в одной партии дисплеев тактовая частота может сильно "гулять" (не говоря уже о её изменении от температуры).
Так же, тактовая частота HD44780 отличается у разных производителей.
Так что, по-вашему, ставить задержки в программе с 4-ёх кратным запасом?
Хотите - делайте вывод по задержкам. Никто, лично вам, не запрещает так делать.
/Вот так и появляются изделия, которые работают с дисплеями на HD44780 только одного производителя/.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение ARV »

Albert_V писал(а):Вот так и появляются изделия, которые работают с дисплеями на HD44780 только одного производителя
я бы дополнил: и вот так появляются многочисленные советы в интернете "играться задержками", если не работает.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение ROMan2947 »

MOHCTEP писал(а):
ROMan2947 писал(а):исправленная функция write_Command
Неисправна. 1 Опять какие-то странные манипуляции с регистром направления DDRD.
2 Опять байт ВСЕГДА!! отправляете дважды - по половинке. Причем, второй раз отправляете всегда нули.
Я у себя "распределил" отправку на пару функций. Когда нужно однократно отправить что-то "в лоб", то примерно так:

Код: Выделить всё

void send_byte(char val){
   LCD_DT_PORT&=~data_mask;//Чистка шины
   LCD_DT_PORT|=(val&data_mask);//Если пины LCD и порта одинаковы
   //strobe
   LCD_CMD_PORT|=(1<<LCD_E);
   _delay_us(40);
   LCD_CMD_PORT&=~(1<<LCD_E);
   _delay_us(40);
}

А отправка байта с разбитием на тетрады, если необходимо, этак вот:

Код: Выделить всё

void send_nibbles(char val){
   send_byte(val);
   if(LCD_BUS==4){send_byte(val<<4);}
}



А LCD_BUS это #define?
Последний раз редактировалось ROMan2947 Пн янв 16, 2017 20:03:32, всего редактировалось 1 раз.
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Мурато Мяуконни »

Albert_V писал(а):Надеюсь, вы в курсе того, что времена исполнения команд HD44780 определяются его тактовой частотой, которая, в свою очередь, задаётся RC цепочкой.
Даже в одной партии дисплеев тактовая частота может сильно "гулять" (не говоря уже о её изменении от температуры).
....Так что, по-вашему, ставить задержки в программе с 4-ёх кратным запасом?
Хотите - делайте вывод по задержкам. Никто, лично вам, не запрещает так делать.
/.

Да блин. "чукча не читатель"? Я же написал - какие к черту программные задержки? У вас что, абдурино весь ум заняло? Кчерту проргаммные задержки. Есть же аппаратный таймер, а вообще я уже объяснял же - лично я делал аппаратный вывод с частотой 25 фпс, и этому аппаратному выводу вообще пофик на то, что делает программа. Или наоборот, программе пофик на тто, с какой скоростью выводит в дисплей. 25 фпс - это трехкратный, как помню, запас. А в три раза тактовая частота не меняется. Процентов 20 максимум, да и то не реально столько. Иначе это хрень полная.
Подпись убрал вместе с автором. aen
Аватара пользователя
A. Fig Lee
Потрогал лапой паяльник
Сообщения: 306
Зарегистрирован: Сб мар 17, 2012 20:31:44
Откуда: Нью Йорк

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение A. Fig Lee »

Аппаратный таймер это и есть програмная задержка. Его и программировать надо, и сложней алгоритм, чем просто опрашивать бит занятости
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение ROMan2947 »

ARV писал(а):это скользкий путь - надеяться на задержки, правильный подход заключается в считывании статуса контроллера дисплея - битик там такой есть. как только команда выполнится, битик примет соответствующее значение и сразу можно отправлять следующие команды/данные. если уж решили самостоятельно пройти весь курс молодого ногодрыга, так проходите его правильно... иначе наука будет не впрок.



для чтения этого самого битика, как нужно выставить ножку RS? BF -это команда, данные или не имеет значение. кстати какие команды можно считать с LCD?
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение scorpi_0n »

A. Fig Lee писал(а):Аппаратный таймер это и есть програмная задержка. Его и программировать надо, и сложней алгоритм, чем просто опрашивать бит занятости

Это если вы по привычке используете таймер для осуществления программных задержек. В случае СТМ32 и аппаратного решения это и даром не нужно, нет там никаких программных задержек, т.к. нет самой программы вывода на дисплей, там всё аппаратно. И программировать его нужно только в начале, при инициализации. Потом он молотит сам по себе. И алгоритма, как такового, там нет вообще, никакого. С буфера по кругу через ДМА по таймеру данные засылаются в порт аппаратно.
Последний раз редактировалось scorpi_0n Пн янв 16, 2017 16:32:34, всего редактировалось 2 раза.
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Мурато Мяуконни »

ARV писал(а):а как же он реализует протокол обмена с ЖКИ, если считывание бита занятости он не делает, и задержки тоже не реализует? может, вы его в сон погружаете или еще как-то загадочно заставляете его ничего не делать некоторое время, пока ЖКИ прочухается? но чем такой подход отличается от тупого цикла?
...
полностью аппаратный - это как? "".

А вот так. Очень просто. Если кому действиельно , а не просто ради спора, будет интересно как это реализуется - расскажу. Вон, и Скорпион тоже знает как это делается. Слава богу, есть еще человеки.
И на практике не надо ожидать, что дисплей вдруг замедлится в три раза после того, как работал нормально. Не бывает такого. А если возразите, что бывает, то значит у вас патроны не той системы. Дешманская херня из китайской столовой - не оправдание, раз вы тут заикались про серийный выпуск.

Аппаратный таймер это и есть програмная задержка. Его и программировать надо, и сложней алгоритм, чем просто опрашивать бит занятости

Да ну, вы чо, сложнее программировать аппаратный таймер? Фууу, ну вы вааащеее. Абдурины на ночь объелись?

Аппаратный таймер работает в связке с прерыванием этого таймера. Произошло прерывание - интервал истек. Отправляйте байт или полубайт в дисплей. А чтобы не случилось казуса с занятостью - там же перед отправкой страховочную проверку бита занятости проведите, раз уж дрожите за некондицию. Черт с ним, с аппаратным модулем СТМа, не у всех есть СТМы, но на атмелах то че, нет прерываний от таймеров чтоле?
Вы, ребята, чесслово, иногда с серьезным видом такую хню городите, и беспрекословно в нее верите. И повторяете из проекта в проект одинаковые несуразности. хотя, судя по датам регистрации, уже как минимум десяток лет батоны на клаве жмете.
Подпись убрал вместе с автором. aen
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Zhuk72 »

Объяснения "на пальцах" приводят к недопониманию.
Последний раз редактировалось Zhuk72 Пн янв 16, 2017 19:07:47, всего редактировалось 1 раз.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение ARV »

да все понятно. полностью соответствует поговорке "и на что только не пойдет человек, лишь бы сделать по-своему"
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение MOHCTEP »

ROMan2947 писал(а):А LCD_BUS это #defaine?
Да. Задается "ширина" шины данных: 4 или 8 бит. Зависимо от этого, байт либо уходит целиком, либо бьется на нибблы. Дисплей инициализируется тоже чуть по разному.
Последний раз редактировалось MOHCTEP Пн янв 16, 2017 20:26:32, всего редактировалось 1 раз.
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Мурато Мяуконни »

И чем это плохо? Что, нужно делать по старинке, как делали 15 лет назад или так, как делают в ардуйнях? Да ну, вот ещё!
Свою позицию я уже объяснил. Никто и ничто не заставит дисплей замедлиться в три раза, иначе это не дисплей а кусок лажи.
Впрочем, ардуино-последователям не доступен аппаратный модуль интерфейса дисплея.

Добавлено after 6 minutes 47 seconds:
ROMan2947 писал(а):для чтения этого самого битика, как нужно выставить ножку RS? BF -это команда, данные или не имеет значение. кстати какие команды можно считать с LCD?

RS = 0. На выводах, помимо BF в последнем разряде, будет выведен и текущий адрес курсора. При RS = 1 читается содержимое (код символа) по текущему адресу курсора. Это и всё, что можно почесть.
Подпись убрал вместе с автором. aen
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение ROMan2947 »

MOHCTEP писал(а):
ROMan2947 писал(а):А LCD_BUS это #defaine?
Да. Задается "ширина" шины данных: 4 или 8 бит. Зависимо от этого, байт либо уходит целиком, либо бьется на нибблы. Дисплей инициализируется тоже чуть по разному.

правильно понял значит, спасибо!
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Albert_V »

Мурато Мяуконни писал(а):Да блин. "чукча не читатель"? Я же написал - какие к черту программные задержки? У вас что, абдурино весь ум заняло? Кчерту проргаммные задержки. Есть же аппаратный таймер, а вообще я уже объяснял же - лично я делал аппаратный вывод с частотой 25 фпс, и этому аппаратному выводу вообще пофик на то, что делает программа. Или наоборот, программе пофик на тто, с какой скоростью выводит в дисплей. 25 фпс - это трехкратный, как помню, запас. А в три раза тактовая частота не меняется. Процентов 20 максимум, да и то не реально столько. Иначе это хрень полная.
Ну чтож, "минус" вы от меня получили за культуру общения (вернее, за её отсутствие).
А теперь "по полочкам":
1. Какая нафиг разница (со стороны дисплея) как вы делаете задержки: "гоните цикл" в программе или выдаёте данные по таймеру? Да хоть ножной педалью тактируйте, если не читаете бит занятости.
2. "25 фпс" на знакосинтезирующем индикаторе - на кой хрен? Кто сможет глазами зафиксировать значения на дисплее, меняющиеся с такой скоростью?
Стандартная задача: сделать изменение неких символов на экране так, чтоб не было "мерцаний".
3. Про приоритеты прерываний вы, похоже, вообще не курсе.
4. Судя по вашим постам, у вас "в руках" есть/был только один экземпляр дисплея на HD44780.
5. Вы и есть "среднестатистический ардуинщик". Строчите программы, не понимая как работает "железо". Удалось достичь неких результатов - хорошо, а на повторяемость вам на...ть.
6. Что касается меня - я пишу программы только на ASM под разные контроллеры и принципиально не использую чужие (скачанные) библиотеки.
7. По дисплеям - я уже долгое время покупаю их в МЭЛТ-е, поскольку эта контора "у меня под боком" и в течении часа я могу приобрести то, что мне нужно на данный момент (и в любом количестве).
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Мурато Мяуконни »

"минус" вы от меня получили

И что? думаете, меня это расстраивает? Да ну, никапли. Особенно от вас. У вас тут что, коллективное кармодрочерство?

Вы и есть "среднестатистический ардуинщик". Строчите программы, не понимая как работает "железо".

Дану, неужели? По себе людей не судят. Тут не тема для обсуждения меня.

я пишу программы только на ASM под разные контроллеры

Ааа, ну ясно. Еще один ассемблерщик, как и этот, как его.... кто-то тут давеча похвалялся, что пишет на ассемблере, а на поверку оказалось, что это всего лишь дизассемблер из Си.
Кстати, гордиться ассемблером не очень то продуктивно. На ассемблере далеко не уедешь. Теперь понятно, откуда все эти программные задержки и сложности с настройкой таймера. И понятно, откуда незнания более сложных микроконтроллеров.
Исключительно ассемблер - удел начинающих или надолго застрявших в переходной периоде.

По дисплеям - я уже долгое время покупаю их в МЭЛТ-е

И чо, они там производят такие хреновые дисплеи, у которых нет повторяемости и параметры плавают аж в три раза? Ох черт, не буду покупаль мэлты. Спасибо за антирекламу. Хоть что-то полезное от вас.

А теперь "по полочкам":

туфта и профанация эти ваши "полочки". Их можно все скопом захватить и выбросить. Поскольку ваши знания ограничены исключительно ассемблером и однажды заданной методикой.
Ну не могут меняться временнЫе параметры в два-три раза, ну не могут. Вы где такое видали? Даже RC-генератор микроконтроллера и то стабильнее работает. Хорошую же "рекламу" вы сделали МЭЛТу, они вам будут очень "благодарны".
Подпись убрал вместе с автором. aen
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Albert_V »

Мурато Мяуконни, Проспитесь.
Может быть, вам полегчает.
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Мурато Мяуконни »

Цитата из даташита вашего любимого мэлта: [url]
https://www.google.ru/url?sa=t&source=w ... KDmkRuLglw
[/url]

Примечания.
1. Указанное время является максимальным. Его не обязательно выдерживать при условии
чтения флага занятости BS — как только флаг BS=0, так сразу можно писать следующую команду
или данные. Если же флаг BS перед выдачей команд не проверяется — необходимо
формировать паузу
не менее указанного времени для надежной работы модуля


Цитата относится к табличке с временем выполнения инструкций. Классические 40 мкс.

Так что проспитесь сами. Думайте в следующий раз, прежде чем написать очередную устаревшую глупость.
И учитесь кодить нормально и используйте актуальные методы
Последний раз редактировалось Мурато Мяуконни Вт янв 17, 2017 06:51:05, всего редактировалось 1 раз.
Подпись убрал вместе с автором. aen
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Albert_V »

Мурато Мяуконни писал(а):...Думайте в следующий раз, прежде чем написать очередную устаревшую глупость
Вы будете последним, у кого я что-то спрошу при разработке очередного изделия.
------
Если хотите продолжить срач - дайте ссылку на новую тему.
Ответить

Вернуться в «Периферия»