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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Да, хорошая идея - завести в своём арсенале помимо осциллографа еще и логический анализатор. он очень много времени может сэкономить в бесплотных попытках тыкать пальцем в небо и гадать что не так.
Многие из них позволяют создавать кастомный анализатор протокола...
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Вот моя инициализация:
Спойлер

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

   .MACRO   INIT_LCD

      rcall   INIT_LINE

      ldi R16, 255         ; Задержка ~20 mсек
      ldi R17, 255   
      ldi   R18, 0      
   
      LoopW:    subi R16, 1      
            sbci R17, 0
            sbci R18, 0
            brcc LoopW   

      ;----------   

            cbi Eport, Epin      ; Опустили строб
            RS_LINE_0         ; Идет команда
                                                         
      ldi      R17,   0b00000011   ; Команда установки 8 линий для инициализации (первый раз)
      
      rcall   DB_LINE            ; Вызываем подпрограмму, которая отправит команду (тетраду)

            STROBE

      rcall    DELAY_1600         ; Задержка общим счетом в больше 4, 1 мс
      rcall    DELAY_1600
      rcall    DELAY_1600
   ;   rcall    DELAY_1600
   ;   rcall    DELAY_1600

      ;----------
      
      ldi      R17,   0b00000011   ; Команда установки 8 линий для инициализации (второй раз)
      
      rcall   DB_LINE            ; Вызываем подпрограмму, которая отправит команду (тетраду)

            STROBE

      rcall    DELAY_45         ; Задержка общим счетом в 100 мкс
   ;   rcall    DELAY_45
   ;   rcall    DELAY_45

      ;----------
         
      ldi      R17,   0b00000011   ; Команда установки 8 линий для инициализации (третий раз)
      
      rcall   DB_LINE            ; Вызываем подпрограмму, которая отправит команду (тетраду)

            STROBE

      rcall   DELAY_45

      ;----------

      ldi      R17,   0b00000010   ; Команда установки 4 линии для инициализации (четвертый раз)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      
      rcall   DB_LINE            ; Вызываем подпрограмму, которая отправит команду (тетраду)

            STROBE

      rcall   DELAY_45
      
      ;----------
         
      ldi      R17,   0b00101000   ; Команда установки 4 линии и две строки (наконец-то прошла и вторая тетрада)
      rcall   CMD_WR            ; Вызываем подпрограмму отправки команды

      ldi      R17,   0b00001000   ; Выключение дисплея
      rcall   CMD_WR            ; Вызываем подпрограмму отправки команды

      ldi      R17,   0b00000001   ; Очистка дисплея
      rcall   CMD_WR            ; Вызываем подпрограмму отправки команды
      rcall   DELAY_1600         ; Очистка - Это медленная команда ей дополнительная задержка

      ldi      R17,   0b00000110   ; Установка режима вывода данных (сдвиг курсора вправо)
      rcall   CMD_WR            ; Вызываем подпрограмму отправки команды

      ldi      R17,   0b00000010   ; Установка на начало дисплея
      rcall   CMD_WR            ; Вызываем подпрограмму отправки команды
      rcall   DELAY_1600         ; На начало - Это медленная команда ей дополнительная задержка

      ldi      R17,   0b00001101   ; Включаем дисплей, курсор в виде квадрата
      rcall   CMD_WR            ; Вызываем подпрограмму отправки команды

   .ENDM


Alexeyslav писал(а):завести в своём арсенале помимо осциллографа еще и логический анализатор.


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

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

Сообщение Albert_V »

Возможно Вам поможет такая информация:
У меня всегда, когда используется вывод на индикатор по 4-ёх битному интерфейсу, DB0-DB3 "сидят на земле".
С Уважением, Альберт (Albert_V).
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

На индикаторе эти выводы подтянуты к земле, их можно оставлять неподключенными.

Примерно $11 - 8 канальный лог. анализатор. Если пошерстить можно найти 16-канальный.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Albert_V писал(а):DB0-DB3 "сидят на земле".

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

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

Сообщение Albert_V »

"Пожертвуйте" одним выводом контроллера и считывайте "BS". Особенно, если вы разрабатываете что-то для серийного производства. Я не спроста всегда проверяю "готов" индикатор или нет.
Было желание отказаться от одной линии связи с индикатором, но "для серии" это не "проходило".
Без проверки было так, что изделие работает, а контроллер "не знает" что индикатор "отвалился" и "живёт своей жизнью"...
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

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

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

Сообщение Albert_V »

Если "для себя" и "для одного индикатора" - ДА, можно подобрать задержки. Только, надо учитывать, что с изменением температуры (у индикатора встроенный R/C генератор) возможно время записи/обработки команд будет "плавать"...
Последний раз редактировалось Albert_V Пт янв 09, 2015 16:36:20, всего редактировалось 1 раз.
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Albert_V писал(а): что с изменением температуры

Все. Убедили. Буду делать чтение флага.

Alexeyslav писал(а):8 канальный лог. анализатор

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

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

Сообщение Albert_V »

На всякий случай:
Проверьте в вашей программе, что после Reset-а > INIT-а контроллера, до "выдержки времени" 20ms (время до начала INIT-а индикатора), линии A0, E и R/W находятся в "0".
/вспомнил, что по этим граблям я уже ходил/
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Проверил. Не помогло... ((((
Я сначала настраиваю направление портов на выход, потом РС, РВ и Е тяну на землю.
А уже потом вызываю инициализацию дисплея.
Станислав
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

DELETED
Последний раз редактировалось СКАЗОЧНИК Пт янв 09, 2015 18:55:35, всего редактировалось 1 раз.
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

СКАЗОЧНИК писал(а):....Я сначала настраиваю направление портов на выход, потом РС, РВ и Е тяну на землю.
А уже потом вызываю инициализацию дисплея.

До "старта" INIT-а индикатора поставьте задержку 100ms.
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Сейчас попробую.

Подвох где-то мелкий... Может и по железу.
Потому что если к ножкам кварца прикасаешься (при СКОРТ = 0, т.е. мелкой амплитуде), то происходит инициализация. Причем постоянно. Иногда с ошибками, а так в основном снова и снова дисплей выводит мне сообщения. Т.е. как будуто кварц останавливается и при запуске снова инициализирует дисплей, причем правильно.
Если тоже самое сделать с питанием... ничего подобного не происходит.

Спойлер

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

ldi R16, 255         ; Задержка ~100 mсек 
      ldi R17, 255   
      ldi   R18, 5      
   
      LoopW:    subi R16, 1      
            sbci R17, 0
            sbci R18, 0
            brcc LoopW   


Вот. 256*256*6*5*0,0000625 мс = 122,88 мс
Ответ тот же... :kill: Я переделываю код сейчас, чтобы флаг читал. Однако, все равно, хоть раз он должен запуститься же!
Станислав
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

А фьюзы SUT во что установлены? Я у себя всегда в 11 оставляю (16K тактов процессора + 64мс).

Кстати, при 16МГц CKOPT однозначно должен быть в 0 (запрограммирован), единица - это только для кварце 8МГц и ниже.

Кстати, что за контроллер и каковы номиналы конденсаторов при кварце?
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Вот с этим у меня небольшая путаница. Я делаю проще. Прошиваю с помощью Хазамы (козы), там прям менюшками.
Кварц самый высокочастотный для АТМега8 16 МГц, с самым медленным запуском (Ext. Crystal/Resonator High Freq.; Start-uo time: 16К СК + 64 ms).
А вот про СКОРТ не могу точно сказать. Т.е. сечас я его убрал, чтобы было можно запустить инициализацию хоть пальцем. А когда ставишь - вообще молчит. )))

АТМега8 Кварц 16 МГц, кондеры 22 пф
Земля для кондеров разведена отдельно, т.е. на нее больше ничего не нагружено. Хоть и на макетке сделано. )))) Цепь сброса РЕЗЕТА тоже стоит. Кондер и резистор. По питанию фильтрующий электролит и керамика 0.1 мкФ. Питаю от ЮСБ с программатора. Показывает 5,1 Вольта...
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Ладно, начнём с того, что если у меня это работает в серийном производстве - то и у вас обязано работать.
Я не хочу вспоминать ASM для ATMEL, но могу сказать на уровне алгоритма:
1. После RESET-а > INIT контроллера (с выставлением начальных уровней на выходах).
2. Разрешение прерываний.
3. Отсчёт времени до начала INIT-а индикатора (по таймеру).
4. Разрешение INIT-а индикатора.
5. После отработки подпрограммы INIT-а индикатора - выставление программного флага, разрешающего вывод символов на индикатор.
/подпрограммы INIT-а индикатора и вывода на индикатор - в MAIN/
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Блин... Обязательно таймер использовать??? :roll: А то я его еще для других целей замыслил. Хотя, можно и на нем сделать задержки. Однако уже не такая портируемая с МК на МК будет библиотека...
А вызов инициализации делаю там в главной программе, где идет и всякая всячина типа настройки прерываний и таймеров и стеков и т.д. Вывод на индикатор (пока тестовые два слова в двух строках "Привет!") тоже делаю там же. После всего этого идет пустой бесконечный цикл.
Сейчас переделываю всю программулину на чтение флага занятости. Думаю, что до утра справлюсь. )))

Зашил СКОРТ. Таже картина. Запускается с толкача если пинцетом ткнуть в ножку кварца... И то не с первого раза...
Для уверенности выключил питание, включил и ткнул осцилом, проверить заводится ли кварц. Есть синус! :kill: На одной ножке чистый, на другой чуток кривой (более крутой передний фронт и чуток пологий задний)...
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Вот задержки по таймеру не надо делать.
По таймеру, просто, досчитайте до 100ms и разрешите INIT индикатора. Это делается один раз (при включении).
Возможно вам будет проще, если представите, что подпрограммы в MAIN, исполняемые по прерываниям и т.д. имеют разный уровень приоритета (в MAIN - низший).
Создайте себе "битовый регистр" (может быть, несколько), в котором будете отмечать (и проверять по битам) некие "шаги" выполнения своих алгоритмов.
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Вот теперь я точно не понимаю про МЭИН... :oops:
Это еще не все. Сейчас запущу индикатор этот. А потом мне на том же порту надо клавиатуру опрашивать. Но, не совсем на том порту, только где линии DB7...DB4 висит клавиатура 4х3. Вот с нее надо будет управлять и цифры на индикаторе печатать...
Вот это еще та будет задачка... А я уже 3 или 4 дня бъюсь с этой стекляшкой... :kill

Изображение
Станислав
Ответить

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