Работа с ЖКИ на контроллере HD44780 и его аналогах
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Да, хорошая идея - завести в своём арсенале помимо осциллографа еще и логический анализатор. он очень много времени может сэкономить в бесплотных попытках тыкать пальцем в небо и гадать что не так.
Многие из них позволяют создавать кастомный анализатор протокола...
Многие из них позволяют создавать кастомный анализатор протокола...
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 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 ; Вызываем подпрограмму отправки команды
.ENDMAlexeyslav писал(а):завести в своём арсенале помимо осциллографа еще и логический анализатор.
С удовольствием бы... )) Все в финансы упирается. )))
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Возможно Вам поможет такая информация:
У меня всегда, когда используется вывод на индикатор по 4-ёх битному интерфейсу, DB0-DB3 "сидят на земле".
У меня всегда, когда используется вывод на индикатор по 4-ёх битному интерфейсу, DB0-DB3 "сидят на земле".
С Уважением, Альберт (Albert_V).
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
На индикаторе эти выводы подтянуты к земле, их можно оставлять неподключенными.
Примерно $11 - 8 канальный лог. анализатор. Если пошерстить можно найти 16-канальный.
Примерно $11 - 8 канальный лог. анализатор. Если пошерстить можно найти 16-канальный.
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Albert_V писал(а):DB0-DB3 "сидят на земле".
Чувствую, что чем дальше, тем хуже. Припаял я их к земле.. Сразу, как подключал, припаял...
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
"Пожертвуйте" одним выводом контроллера и считывайте "BS". Особенно, если вы разрабатываете что-то для серийного производства. Я не спроста всегда проверяю "готов" индикатор или нет.
Было желание отказаться от одной линии связи с индикатором, но "для серии" это не "проходило".
Без проверки было так, что изделие работает, а контроллер "не знает" что индикатор "отвалился" и "живёт своей жизнью"...
Было желание отказаться от одной линии связи с индикатором, но "для серии" это не "проходило".
Без проверки было так, что изделие работает, а контроллер "не знает" что индикатор "отвалился" и "живёт своей жизнью"...
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Гм...
Ну люди же запускают без этого флага...
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Если "для себя" и "для одного индикатора" - ДА, можно подобрать задержки. Только, надо учитывать, что с изменением температуры (у индикатора встроенный R/C генератор) возможно время записи/обработки команд будет "плавать"...
Последний раз редактировалось Albert_V Пт янв 09, 2015 16:36:20, всего редактировалось 1 раз.
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Albert_V писал(а): что с изменением температуры
Все. Убедили. Буду делать чтение флага.
Alexeyslav писал(а):8 канальный лог. анализатор
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
На всякий случай:
Проверьте в вашей программе, что после Reset-а > INIT-а контроллера, до "выдержки времени" 20ms (время до начала INIT-а индикатора), линии A0, E и R/W находятся в "0".
/вспомнил, что по этим граблям я уже ходил/
Проверьте в вашей программе, что после 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 и его аналогах
СКАЗОЧНИК писал(а):....Я сначала настраиваю направление портов на выход, потом РС, РВ и Е тяну на землю.
А уже потом вызываю инициализацию дисплея.
До "старта" INIT-а индикатора поставьте задержку 100ms.
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Сейчас попробую.
Подвох где-то мелкий... Может и по железу.
Потому что если к ножкам кварца прикасаешься (при СКОРТ = 0, т.е. мелкой амплитуде), то происходит инициализация. Причем постоянно. Иногда с ошибками, а так в основном снова и снова дисплей выводит мне сообщения. Т.е. как будуто кварц останавливается и при запуске снова инициализирует дисплей, причем правильно.
Если тоже самое сделать с питанием... ничего подобного не происходит.
Вот. 256*256*6*5*0,0000625 мс = 122,88 мс
Ответ тот же...
Я переделываю код сейчас, чтобы флаг читал. Однако, все равно, хоть раз он должен запуститься же!
Подвох где-то мелкий... Может и по железу.
Потому что если к ножкам кварца прикасаешься (при СКОРТ = 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 мс
Ответ тот же...
Я переделываю код сейчас, чтобы флаг читал. Однако, все равно, хоть раз он должен запуститься же!Станислав
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
А фьюзы SUT во что установлены? Я у себя всегда в 11 оставляю (16K тактов процессора + 64мс).
Кстати, при 16МГц CKOPT однозначно должен быть в 0 (запрограммирован), единица - это только для кварце 8МГц и ниже.
Кстати, что за контроллер и каковы номиналы конденсаторов при кварце?
Кстати, при 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 Вольта...
Кварц самый высокочастотный для АТМега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 и его аналогах
Ладно, начнём с того, что если у меня это работает в серийном производстве - то и у вас обязано работать.
Я не хочу вспоминать ASM для ATMEL, но могу сказать на уровне алгоритма:
1. После RESET-а > INIT контроллера (с выставлением начальных уровней на выходах).
2. Разрешение прерываний.
3. Отсчёт времени до начала INIT-а индикатора (по таймеру).
4. Разрешение INIT-а индикатора.
5. После отработки подпрограммы INIT-а индикатора - выставление программного флага, разрешающего вывод символов на индикатор.
/подпрограммы INIT-а индикатора и вывода на индикатор - в MAIN/
Я не хочу вспоминать ASM для ATMEL, но могу сказать на уровне алгоритма:
1. После RESET-а > INIT контроллера (с выставлением начальных уровней на выходах).
2. Разрешение прерываний.
3. Отсчёт времени до начала INIT-а индикатора (по таймеру).
4. Разрешение INIT-а индикатора.
5. После отработки подпрограммы INIT-а индикатора - выставление программного флага, разрешающего вывод символов на индикатор.
/подпрограммы INIT-а индикатора и вывода на индикатор - в MAIN/
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Блин... Обязательно таймер использовать???
А то я его еще для других целей замыслил. Хотя, можно и на нем сделать задержки. Однако уже не такая портируемая с МК на МК будет библиотека...
А вызов инициализации делаю там в главной программе, где идет и всякая всячина типа настройки прерываний и таймеров и стеков и т.д. Вывод на индикатор (пока тестовые два слова в двух строках "Привет!") тоже делаю там же. После всего этого идет пустой бесконечный цикл.
Сейчас переделываю всю программулину на чтение флага занятости. Думаю, что до утра справлюсь. )))
Зашил СКОРТ. Таже картина. Запускается с толкача если пинцетом ткнуть в ножку кварца... И то не с первого раза...
Для уверенности выключил питание, включил и ткнул осцилом, проверить заводится ли кварц. Есть синус!
На одной ножке чистый, на другой чуток кривой (более крутой передний фронт и чуток пологий задний)...
А вызов инициализации делаю там в главной программе, где идет и всякая всячина типа настройки прерываний и таймеров и стеков и т.д. Вывод на индикатор (пока тестовые два слова в двух строках "Привет!") тоже делаю там же. После всего этого идет пустой бесконечный цикл.
Сейчас переделываю всю программулину на чтение флага занятости. Думаю, что до утра справлюсь. )))
Зашил СКОРТ. Таже картина. Запускается с толкача если пинцетом ткнуть в ножку кварца... И то не с первого раза...
Для уверенности выключил питание, включил и ткнул осцилом, проверить заводится ли кварц. Есть синус!
На одной ножке чистый, на другой чуток кривой (более крутой передний фронт и чуток пологий задний)...Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Вот задержки по таймеру не надо делать.
По таймеру, просто, досчитайте до 100ms и разрешите INIT индикатора. Это делается один раз (при включении).
Возможно вам будет проще, если представите, что подпрограммы в MAIN, исполняемые по прерываниям и т.д. имеют разный уровень приоритета (в MAIN - низший).
Создайте себе "битовый регистр" (может быть, несколько), в котором будете отмечать (и проверять по битам) некие "шаги" выполнения своих алгоритмов.
По таймеру, просто, досчитайте до 100ms и разрешите INIT индикатора. Это делается один раз (при включении).
Возможно вам будет проще, если представите, что подпрограммы в MAIN, исполняемые по прерываниям и т.д. имеют разный уровень приоритета (в MAIN - низший).
Создайте себе "битовый регистр" (может быть, несколько), в котором будете отмечать (и проверять по битам) некие "шаги" выполнения своих алгоритмов.
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Вот теперь я точно не понимаю про МЭИН...
Это еще не все. Сейчас запущу индикатор этот. А потом мне на том же порту надо клавиатуру опрашивать. Но, не совсем на том порту, только где линии DB7...DB4 висит клавиатура 4х3. Вот с нее надо будет управлять и цифры на индикаторе печатать...
Вот это еще та будет задачка... А я уже 3 или 4 дня бъюсь с этой стекляшкой... :kill

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