Работа с ЖКИ на контроллере HD44780 и его аналогах
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Неправильно!!! Читайте даташит...
"Я не даю готовых решений, я заставляю думать!"(С)
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Да, да... развивайте мысль дальше... где практическое применение этому чуду???
"Я не даю готовых решений, я заставляю думать!"(С)
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Большого смысла нет.olegleon писал(а):Enable cycle time = 500ns min,
как бы максимумом не ограничено, но повторюсь, хочу по максимуму оптимизировать.
Всё равно, следующую команду дисплей сразу же принять может. Флаг готовности устанавливается (исходя из моего опыта) где-то через 7..8 мкс. На некоторых дисплеях и 10мкс не хватало.
Поэтому, не важно, 500нс у вас будет, 100нс, или 1мкс - всё равно вся команда будет выполняться на порядок дольше. Так что степень этой оптимизации - с гулькин нос.
А вообще у меня реально в жизни дисплею и 4 nop-ов хватает (тыц). Плюс у функций вроде _delay_us() - аргумент типа double, что не слишком хорошо для тех же AVR.
Кстати, как раз и аргументHHIMERA писал(а):практическое применение этому чуду???
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
HHIMERA писал(а):развивайте мысль дальше
Что тут развивать? Сказанное про сигнал ENABLE - правильно. Если гнаться за максимальной скоростью работы с ЖКИ, то именно с таким темпом нужно дергать ENABLE, сначала в цикле записи/чтения, затем в циклах чтения BUSY. Но особого смысла в этом нет, так как общая скорость в основном будет определяться временем выполнения команд контроллером.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Леонид Иванович писал(а):есть ли смысл гнаться за предельной скоростью?
Смысл есть, хочу научиться решать полностью возникшую ситуацию, а не находить выход типа "сделал лишь бы работало, некогда оптимизировать"
Никуда не спешу, хочу научиться делать хорошо, правильно и оптимально.
- Пахнет котом, - подумал Штирлиц.
- Зачем он нюхает мою лапу? - подумал кот.
- Зачем он нюхает мою лапу? - подумал кот.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
очень даже хорошо для AVR. _delay_us(.5) очень даже нормально отработает 500 нс, если тактовая соответствующая.WiseLord писал(а):Плюс у функций вроде _delay_us() - аргумент типа double, что не слишком хорошо для тех же AVR.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Кстати, да. Смысл шпарить на мегагерце, если все команды выполняются 38 мкс (SPLC780D)?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
olegleon писал(а):хочу научиться делать хорошо, правильно и оптимально.
В данном случае оптимально не получится... как и нет никакого смысла в "500nS"...
В случае с STM8L/STM32 можно заюзать ДМА... Тогда во время загрузки дисплея можно заниматься своими делами... нет потерь на ожиданиях и задержках... Но даже в этом случае нет смысла доводить ситуацию до "прикрутил другой дисплей, а он почему-то не работает"...
"Я не даю готовых решений, я заставляю думать!"(С)
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Шмышл есть иногда чтобы не задерживать программу когда общение с индикатором идет не аппаратно. и в 4-х битном режиме надо выталкивать по две порции данных на одну команду. Максимально быстро вытолкнули данные в индикатор а потом можно что-то сделать перед тем как дождаться готовности индикатора к приёму следующей команды.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Alexeyslav писал(а):Шмышл есть иногда чтобы не задерживать программу когда общение с индикатором идет не аппаратно. и в 4-х битном режиме надо выталкивать по две порции данных на одну команду.
500nS это 8 циклов МК для 16МГц... в вышеприведённом исходнике я не вижу функции залержки на 500nS... даже в случае с 4-х битным режимом...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
ARV писал(а):если тактовая соответствующая.
а как указать компилятору какая тактовая, чтобы он правильно все с таймингами считал?
- Пахнет котом, - подумал Штирлиц.
- Зачем он нюхает мою лапу? - подумал кот.
- Зачем он нюхает мою лапу? - подумал кот.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
в свойствах проекта задается тактовая путем определения глобального макроса F_CPU 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
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 и его аналогах
аналогичные функции (точнее, макросы) имеются и в WinAVR
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
HHIMERA писал(а): в вышеприведённом исходнике я не вижу функции залержки на 500nS... даже в случае с 4-х битным режимом...
А там и не нужны 500ns. У дисплея на строб 230 в даташите - это 4 "nop"-а. А после строба до 500 добивать смысла нет - эти 4-5 инструкций всё равно потратятся на тот же вызов функции строба.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
в общем обрыл кучу инфы, и то что часто встречается по поводу инициализации - не идеально работает.
точнее работает , если поставить побольше задержки, но есть маленькое НО, если к примеру, делать библиотеку для более шустрых процессоров,
к примеру STM32, то алгоритм нужен более точный. Ответ в тайминг графике, и правильное решение, кстати, нашел товарисч DiHALT и хорошо это описал

точнее работает , если поставить побольше задержки, но есть маленькое НО, если к примеру, делать библиотеку для более шустрых процессоров,
к примеру STM32, то алгоритм нужен более точный. Ответ в тайминг графике, и правильное решение, кстати, нашел товарисч DiHALT и хорошо это описал
- Вложения
-
- запись команд.jpg
- (20.22 КБ) 786 скачиваний
- Пахнет котом, - подумал Штирлиц.
- Зачем он нюхает мою лапу? - подумал кот.
- Зачем он нюхает мою лапу? - подумал кот.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Послушайте, причём тут длительность импульса? В даташите сказано что запись/чтение данных происходит по заднему фронту сигнала.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
olegleon писал(а):к примеру STM32, то алгоритм нужен более точный. Ответ в тайминг графике, и правильное решение, кстати, нашел товарисч DiHALT и хорошо это описал
Не нужно сгущать краски...
В случае с STM8L/STM32 можно заюзать ДМА... Тогда во время загрузки дисплея можно заниматься своими делами... нет потерь на ожиданиях и задержках...
В данном случае о таймингах заботится таймер...
"Я не даю готовых решений, я заставляю думать!"(С)