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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Неправильно!!! Читайте даташит...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

Изображение

Изображение
Вложения
hd2.gif
(11.42 КБ) 1094 скачивания
hd1.gif
(9.67 КБ) 1024 скачивания
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Да, да... развивайте мысль дальше... где практическое применение этому чуду???
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

olegleon писал(а):Enable cycle time = 500ns min,
как бы максимумом не ограничено, но повторюсь, хочу по максимуму оптимизировать.
Большого смысла нет.
Всё равно, следующую команду дисплей сразу же принять может. Флаг готовности устанавливается (исходя из моего опыта) где-то через 7..8 мкс. На некоторых дисплеях и 10мкс не хватало.
Поэтому, не важно, 500нс у вас будет, 100нс, или 1мкс - всё равно вся команда будет выполняться на порядок дольше. Так что степень этой оптимизации - с гулькин нос.
А вообще у меня реально в жизни дисплею и 4 nop-ов хватает (тыц). Плюс у функций вроде _delay_us() - аргумент типа double, что не слишком хорошо для тех же AVR.
HHIMERA писал(а):практическое применение этому чуду???
Кстати, как раз и аргумент :) Код по ссылке выше отлично работает на 16МГц.
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

HHIMERA писал(а):развивайте мысль дальше


Что тут развивать? Сказанное про сигнал ENABLE - правильно. Если гнаться за максимальной скоростью работы с ЖКИ, то именно с таким темпом нужно дергать ENABLE, сначала в цикле записи/чтения, затем в циклах чтения BUSY. Но особого смысла в этом нет, так как общая скорость в основном будет определяться временем выполнения команд контроллером.
Аватара пользователя
olegleon
Родился
Сообщения: 15
Зарегистрирован: Ср янв 22, 2014 17:44:19
Откуда: Одесса

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

Сообщение olegleon »

Леонид Иванович писал(а):есть ли смысл гнаться за предельной скоростью?


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

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

Сообщение ARV »

WiseLord писал(а):Плюс у функций вроде _delay_us() - аргумент типа double, что не слишком хорошо для тех же AVR.
очень даже хорошо для AVR. _delay_us(.5) очень даже нормально отработает 500 нс, если тактовая соответствующая.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Кстати, да. Смысл шпарить на мегагерце, если все команды выполняются 38 мкс (SPLC780D)?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

olegleon писал(а):хочу научиться делать хорошо, правильно и оптимально.

В данном случае оптимально не получится... как и нет никакого смысла в "500nS"...
В случае с STM8L/STM32 можно заюзать ДМА... Тогда во время загрузки дисплея можно заниматься своими делами... нет потерь на ожиданиях и задержках... Но даже в этом случае нет смысла доводить ситуацию до "прикрутил другой дисплей, а он почему-то не работает"...
"Я не даю готовых решений, я заставляю думать!"(С)
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Шмышл есть иногда чтобы не задерживать программу когда общение с индикатором идет не аппаратно. и в 4-х битном режиме надо выталкивать по две порции данных на одну команду. Максимально быстро вытолкнули данные в индикатор а потом можно что-то сделать перед тем как дождаться готовности индикатора к приёму следующей команды.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Alexeyslav писал(а):Шмышл есть иногда чтобы не задерживать программу когда общение с индикатором идет не аппаратно. и в 4-х битном режиме надо выталкивать по две порции данных на одну команду.

500nS это 8 циклов МК для 16МГц... в вышеприведённом исходнике я не вижу функции залержки на 500nS... даже в случае с 4-х битным режимом...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
olegleon
Родился
Сообщения: 15
Зарегистрирован: Ср янв 22, 2014 17:44:19
Откуда: Одесса

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

Сообщение olegleon »

ARV писал(а):если тактовая соответствующая.

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

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

Сообщение ARV »

в свойствах проекта задается тактовая путем определения глобального макроса F_CPU :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
olegleon
Родился
Сообщения: 15
Зарегистрирован: Ср янв 22, 2014 17:44:19
Откуда: Одесса

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

Сообщение olegleon »

ARV писал(а):delay_us(.5)

к сожалению не все компиляторы поддерживают не целые числа. Так что актуальным остается вопрос о задержке в 500ns.
все что предложили, заполнить nop-ами, еще варианты есть ?
Если нет, то как автоматизировать нужное количество нопов под соответствующую частоту ?
- Пахнет котом, - подумал Штирлиц.
- Зачем он нюхает мою лапу? - подумал кот.
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

В IAR есть intrinsic функция __delay_cycles(), которая сама выбирает нужное количество nop-ов, а для длинных задержек использует цикл + nop-ы. Наносекундная задержка будет выглядеть так: __delay_cycles(DELAY_NS * F_CLK_MHZ / 1000)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

аналогичные функции (точнее, макросы) имеются и в WinAVR
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

HHIMERA писал(а): в вышеприведённом исходнике я не вижу функции залержки на 500nS... даже в случае с 4-х битным режимом...

А там и не нужны 500ns. У дисплея на строб 230 в даташите - это 4 "nop"-а. А после строба до 500 добивать смысла нет - эти 4-5 инструкций всё равно потратятся на тот же вызов функции строба.
Аватара пользователя
olegleon
Родился
Сообщения: 15
Зарегистрирован: Ср янв 22, 2014 17:44:19
Откуда: Одесса

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

Сообщение olegleon »

в общем обрыл кучу инфы, и то что часто встречается по поводу инициализации - не идеально работает.
точнее работает , если поставить побольше задержки, но есть маленькое НО, если к примеру, делать библиотеку для более шустрых процессоров,
к примеру STM32, то алгоритм нужен более точный. Ответ в тайминг графике, и правильное решение, кстати, нашел товарисч DiHALT и хорошо это описал
Изображение
Вложения
запись команд.jpg
(20.22 КБ) 786 скачиваний
- Пахнет котом, - подумал Штирлиц.
- Зачем он нюхает мою лапу? - подумал кот.
sartam
Открыл глаза
Сообщения: 40
Зарегистрирован: Вс окт 17, 2010 21:56:40

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

Сообщение sartam »

Послушайте, причём тут длительность импульса? В даташите сказано что запись/чтение данных происходит по заднему фронту сигнала.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

olegleon писал(а):к примеру STM32, то алгоритм нужен более точный. Ответ в тайминг графике, и правильное решение, кстати, нашел товарисч DiHALT и хорошо это описал

Не нужно сгущать краски...
В случае с STM8L/STM32 можно заюзать ДМА... Тогда во время загрузки дисплея можно заниматься своими делами... нет потерь на ожиданиях и задержках...

В данном случае о таймингах заботится таймер...
"Я не даю готовых решений, я заставляю думать!"(С)
Ответить

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