Особенности работы с контроллером WS0010 (индикатор WEH000802)

Почитав заметки здесь и здесь решил попробовать включить индикатор WEH000802 в свой аппарат. :)


Сам приборчик с ЖКИ индикатором сфоткан тут.
Первым делом прикупил WEH000802ALPP5N00000 здесь. :)
Подключил его на место полноценно работающего ЖКИ MT-08S2a-3YLG и… конечно ничего толком не заработало. На индикаторе светились только крайние правые символы из строк в левых знакоместах. Да и те были не в русской кодировке. Проблемы с инициализацией, придется читать DS, подумалось мне. :(

Особенность N1. Инициализация в 4-х битном режиме.
Так получилось, что индикатор подключен в режиме 4-х бит. данных и никак не хотел уверенно заводиться. Но, оказалось, что все не просто, а очень просто. Надо дочитать до конца DS на контроллер WS0010. На самой последней странице нарисована блок схема инициализации в 4-х битном режиме. Вкратце — перед командой «Function Set», в которой и устанавливается этот самый 4-х бит режим, нужно подождать 500мс после установления питания и ПЯТЬ раз выдать команду «0х00».

#ifdef HD44780_WEH0802
  DelayResolution100us(5000);

  HD44780WrComm_High(0x00);
  DelayResolution100us(HD44780_FIRST_COMM_DLY);
  HD44780WrComm_High(0x00);
  DelayResolution100us(HD44780_FIRST_COMM_DLY);
  HD44780WrComm_High(0x00);
  DelayResolution100us(HD44780_FIRST_COMM_DLY);
  HD44780WrComm_High(0x00);
  DelayResolution100us(HD44780_FIRST_COMM_DLY);
  HD44780WrComm_High(0x00);
  DelayResolution100us(HD44780_FIRST_COMM_DLY);

  HD44780WrComm_High(0x20);
  DelayResolution100us(HD44780_FIRST_COMM_DLY);
  HD44780WrComm_High(0x20);
  DelayResolution100us(HD44780_SECOND_COMM_DLY);
  HD44780WrComm_High(0xA0);//здесь установка русского набора символов
  DelayResolution100us(HD44780_SECOND_COMM_DLY);
#else 
здесь код перехода в 4-х битный режим для нормального HD44780
#endif

HD44780WrComm_High — выводит только старшую тетраду в порт данных
HD44780_FIRST_COMM_DLY = 41
Далее можно работать как с обычным HD44780. :) Только нужно быть повнимательней с командой «Cursor or display shift» — в ней теперь добавлена функция включения графического режима и внутреннего преобразователя.

Особенность N2. Уровни входных сигналов.
У стандартного HD44780 уровень «1» от 2,4В до Vcc. У WS0010 — от 0,9Vcc до Vcc. (см. соотв. DS)
ЖКИ индикатор у меня питается от 5В а управляется контроллером с питанием 3,3В (шина данных подключена к 5V tolerant входам). WS0010 при питании от 5В первые 10..30 секунд работает нормально, потом что-то в последовательности команд/данных ему перестает нравится и он выключается. Подал на OLED питание 3,3 В и вся связка заработала нормально. Едва заметно уменьшилась яркость, но все равно — яркости «выше крыши». Пока не было возможности вынести на солнышко, но по ощущениям яркости должно хватать для работы на ярком солнце.

Особенность N3. Возможность регулировки яркости.
Как уже было отмечено в посте уважаемого arhip, перепаяв перемычку с JV на JVO можно управлять яркостью индикатора в очень широких пределах. Для моего индикатора перемычки выставляются так (полноразмерная фотка лежит здесь).
https://dl.dropbox.com/u/12253020/OLED/img1001__.jpg
У меня, как и у arhip, получилось, что значению «едва видно» соответствует 1,0В, а значению «очень ярко» 0,0В на выводе 3 индикатора. Только я управлял постоянным напряжением (отфильтрованным ШИМом).
Это темное изображение (у фотоаппарата небольшие проблемы с цветопередачей)

А это яркое изображение


UpDate 02.07.2012

Особенность N4. Расположение пинов.
Начал собирать все устройство вместе — не лезет, зараза. Оказалось, что выводы этого индикатора смещены на 1.27 мм (по отношению к BC0802 и MT-08S2, например). У кого жесткое соединение индикатора с платой — будьте бдительны!!!

Это расположение выводов «стандартного» ЖКИ типоразмера 8х2

А это расположение выводов WEH000802


Хорошо видно, что выводы смещены на половину шага пинов. :( Самое неприятное, что на картинках нигде нет явного указания расположения выводов относительно платы.

UpDate 05.07.2012
Особенность N5. Наводки от встроенного преобразователя на аналоговые цепи.
Встречал где-то в И-нете жалобы на большой уровень шума подобных индикаторов. Попробовал в своем девайсе. Их у меня два варианта. Один с аккуратно разведенной аналоговой частью (аналоговые земли и питания разведены отдельно, соединены около здоровенного кондера питания через мелкие помехоподавляющие фильтры BLMххх). Другой вариант — аналоговые земли и питания соединены напрямую. На плате работает ЦАП, на него подаю тестовый синус и смотрю. Результаты таковы:
1. На плате с аккуратно разведенной аналоговой частью уровень шума (по сравнению с индикатором на HD44780) увеличился очень незначительно, не больше чем на 3..5 дБ. Точнее сказать сложно, поскольку вокруг достаточно «шумно», с точки зрения ЭМП.
2. На плате с «плохой» разводкой уровень шума вырос весьма значительно, примерно на 12..15 дБ. Он и был-то на пределе -38..-35дБ (по отношению к номинальному выходному уровню), а стал невозможно высоким. Но эта плата в реале никогда не использовалась и использоваться не будет, только софтовые «тренировки». :)

Вывод — при грамотной разводке печатной платы индикатор аналоговой части не мешает. Сильных шумов от встроенного преобразователя на аналоговые цепи не наблюдается.

И, при любом раскладе, если используете аналоговые цепи совместно с цифровыми — особое внимание уделите качеству разводки!

UpDate 12.07.2012
Особенность N6. Оказывается, есть не меньше двух вариантов плат этого индикатора.
Rev.0 Внешний вид (в большом разрешении)

Rev.A Внешний вид (в большом разрешении)

Видно, что плату Rev.A можно заставить работать в режиме SPI, переставив перемычки J_CS и J_PS. На плате Rev.0 этих перемычек нет вовсе. :(
Индикатор Rev.A приехал сегодня вечером из Терры, будем надеяться, что старых индикаторов больше не будет.

UpDate 06.12.2014
Особенность N7. При использовании в режиме 4-х битной шины данных я лично рекомендую ИСПОЛЬЗОВАТЬ пин RD/WR и работать по готовности. Иначе можно нарваться на ситуацию, когда контроллер не готов к приему данных и длинные последовательности нулевых нибблов воспринимает как команду «сброс».
Это мой личный вывод из более чем двухгодичных жалоб на кривость 4-х битного режима.
От себя замечу, что при использовании 4-х битного режима и честных проверках готовности НИКАКИХ косяков НЕТ.
  • +9
  • 26 июня 2012, 23:07
  • SeregaB

Комментарии (59)

RSS свернуть / развернуть
Интересно, зачем они претендуют на совместимость с HD44780, если совместимости-то всё равно нет (есть похожесть).

А графический режим пробовал?
0
А что такого особенного в графическом режиме? Я пробовал.
0
Переключение необычно. см.здесь
0
За исключением инициализации и двух команд (001хххххb и 0001ххххb) совместимость полная. Я, кроме инициализации, код, по сравнению с HD44780, нигде в программе не правил.

Такой графический режим как в WEH индикаторах, ИМХО, нах… не нужен. Если нужна графика — WEG использовать. В моем случае это WEG005016.
0
4-битный режим у WEH глючный, назвать это совместимостью с HD44780 язык не поворачивается
0
Самое интересное, что, похоже, есть обратная совместимость. Вчера, случайно, воткнул BC0802 (контроллер HD44780) в плату с прошивкой для WEH000802 (контроллер WS0010). Так BC0802 завелся в 4-х битном режиме сразу-же (аппаратные отличия регулировки контрастности и подсветки — не учитываем).
0
у меня не было проблем с совместимостью 2 х 16 дисплеев. OLED взял попробовать потому, что LCD синий на 3.3 вольта плавал по контрастности в зависимости от форточки. А зеленый — не труЪ.

Графический режим, вот приятный бонус, буду пробовать
0
Посмотрел по ссылкам в каком устройстве применяется индикатор. Весьма впечатляет!
0
А что это вообще за приборчик?
0
Название треда же — «Электронный указатель скорости, высотомер и вариометр»)
Внутри коробочки видны два датчика давления — видимо, для измерения высоты и скорости.
Вертикальная скорость, видимо, рассчитывается по показателям высотомера)
0
Именно так.
Подробнее могу рассказать вечером или в ПН., как получится.
0
Да, было бы интересно.
0
Подумал и решил, что сделаю отдельную запись про приборчик. Но попозже. :)
0
А что там за гламурные кнопочки в девайсе? Как звать?
0
Беленькие-то? Больше на светодиодики похоже)
0
Особенно учитывая, что кнопочки обычно не светятся. Правда, тогда возникает вопрос, что жто за гламурные светодиодики.
А из управления там кажись только энкодер.
0
Это кнопочки с подсветкой.
Они используются для управления, как и энкодер. А еще на РУСе кнопочки есть, логически запаралеленные с кнопками на морде через CAN. Т.е. на РУСе нажимаешь кнопки а они отрабатываются, как будто нажимаешь на морде.
0
Имя! Мы хотим знать имя!
+1
Я ответил на твой комментарий, а он попал ниже. См. на строку ниже. Его имя Q-9799. У нас продают с зеленым, красным и синим LED. У китайцев бывают разные по форме, цвету и т.д. Да и в Кварце тоже их есть. :) Только дорогие, зараза. Три кнопки стОят как большой и умный контрорллер. :(
0
0
Вообще для яркого солнца круче трансрефлективки имхо ничего нет.
0
Позавчера попробовал на ярком солнце — вполне себе нормально видно.
0
Еще у WEH00xx проблемы с софтовым сбросом.
Приходится сделать через ключ на питание.
0
Привет товарищу по крылу!
А что за датчик давления использовал?? И какое получил разрещение по высоте? И по скороподъемности?
0
А ты собственно само сообщение читал? см. «Особенность N1.»
Не нужен ключ. Нужна аккуратная инициализация.
Я проверял в разных режимах. Вручную пытался поставить раком этот индикатор. Пять нулевых команд спасают ситуацию. (Речь идет о 4-х битном режиме, в 8-ми битном — не проверял.)
0
Это я valio отвечал. :)
0
Ошибся! Не туда коментарий попал…
Аэродром Грызлово?? :-) Мы там тоже летали…
0
  • avatar
  • kos
  • 28 июня 2012, 20:18
Это ты про фотку из кабины Твина? Где только Лодочник не летал. :)
Это не мои фотки, но, похоже на заход в БГ на полосу 01L.
Вообще-то я базируюсь в Ватулино. Заходи/заезжай/залетай (в смысле приходи/приезжай/прилетай). :)
0
А какое разрешение по высоте?? И что за датчик давления? и какое разрешение по скороподъемности?
0
Позже сделаю отдельную запись про этот девайсик. Там — подробно напишу. Здесь, давай, про индикатор.
0
Добавил про расположение выводов и шум встроенного преобразователя.
0
Сегодня добавил про разные варианты плат индикатора. См. Особенность N6.
0
Пытаюсь завести подобного зверя, а точнее WEH001601AGPP5N00000 (16x1 символов). За основу взял код от hd44780. Ничего не получается почему-то. Не могли бы Вы выложить исходники для работы с экраном? Буду премного благодарен.
0
Здесь лежит ссылка на исходники и на тестовый проект в ИАР. У WEG и WEH контроллеры абсолютно одинаковые, отличаются разводкой по столбцам. Смело можно использовать тот код. Только заголовочные файлы слегка поправить нужно в части размеров индикатора.
0
На самой последней странице нарисована блок схема инициализации в 4-х битном режиме. Вкратце — перед командой «Function Set», в которой и устанавливается этот самый 4-х бит режим, нужно подождать 500мс после установления питания и ПЯТЬ раз выдать команду «0х00».
У меня на последней странице в ДШ эта процедура идёт исключительно как синхронизация между верхними и нижними 4-мя битами, без неё всё инициализируется нормально:
Noise causing transfer mismatch between the four upper and lower bits can be corrected by a reset
triggered by consecutively writing a “0000” instruction five times.
0
эта процедура идёт исключительно как синхронизация между верхними и нижними 4-мя битами,
А в процессе инициализации не требуется четко синхронизировать старший-младший полубайт? Никому неизвестно, сколько раз дернулся сигнал Е с момента включения до определения состояния управляющего выхода.
без неё всё инициализируется нормально:
До тех пор, пока не словишь пропуск полубайта.
Я в отладчике в пошаговом режиме СПЕЦИАЛЬНО пробовал делать сброс после передачи одной тетрады. Без этих пяти нулей — все работает криво.
0
Имейте ввиду что ОЛЕД индикатор выгорает. Информация как бы сырая но отклики уже есть. То есть собрав к примеру гламурный часик на стол можно ожидать что через 1-2 года индикатор сдохнет. Разный срок службы для разного цвета.
www.pro-radio.ru/controllers/7397-2/
www.x-drivers.ru/articles/technologies/73/full.html
forum.ixbt.com/post.cgi?id=print:28:15588&page=9
electronix.ru/forum/index.php?showtopic=95223
-1
Информация как бы сырая но отклики уже есть.То есть собрав к примеру гламурный часик на стол можно ожидать что через 1-2 года индикатор сдохнет.
Это — ОБС. А если почитать ДШ на конкретный индикатор, то можно узнать, что:
Operating Life Time (Ta=25℃ Initial 50% checkboard brightness 70nits ) 50,000 Hrs

В переводе на «часики» — чуть меньше 5 лет и яркость упадет на 50%.

Это в ДШ Version: 0. В более свежих указаны 100000 часов.
0
То есть одна бабка собрала часы и через год стали появлятся не светящиеся сегменты. Где то в инете был обзор этого человека. только найти не могу. И кому верить — даташиту или реальным фотками и расказу человека?
0
И кому верить — даташиту или реальным фотками и расказу человека?
В таких случаях я верю ДШ. АДНАЗНАЧНА! (С) :)
То есть одна бабка собрала часы и через год стали появлятся не светящиеся сегменты. Где то в инете был обзор этого человека. только найти не могу.
Именно так. Там могло быть все что угодно. От высыхания резинки и механического воздействия на стекляшку до превышения питания драйвера стекляшки и температуры.
Еще индикаторы разные бывают. Вот у этого OLED срок службы на максимальной яркости указан в три раза меньше — 30000 часов. Я думаю, что два… три года назад сроки службы были еще меньше.

Еще свежий пример. Здесь человек пишет про глюк индикатора, а на картинке в статье его явно нет.
0
Добрый день.
Начал подключать OLED дисплей WEH001602AGPP5 по 4 битной шине.
Прочитал Ваши сообщения об особенностях инициализации контроллера WS0010 по 4 битной шине, которые описаны в даташите на последней странице.
Скачал даташит на WS0010, и этой информации там не увидел.
Я скачал не тот даташит?
0
Скачал по этому адресу.
WS0010 datasheet with the detailed commands for control
www.adafruit.com/datasheets/WS0010.pdf
Дайте пожалуйста ссылку на Ваш даташит.
0
0
Спасибо за даташит, постараюсь разобраться.

Ещё вопрос о регулировке яркости.
Я подключил дисплей WEH001602AGPP5 по 8 битной шине,
сделал указанную выше перепайку, и попробовал регулировать яркость.
Яркость регулируется так же, как и у Вас,
0V — максимум, (1-1,2)V — минимум.
Напряжение менял плавно, увидел что при напряжении 0,8V — 0,9V изображение начинает мерцать, как будто по изображению проходят волны. Причём, это повторяется не всегда на одном и том же напряжении, иногда видел это и на 0,7V.
Вы замечали у себя такой эффект?
0
Нет, не замечал. Были какие-то проблемы при отрицательных напряжениях на пине регулировки (у меня в этом месте остался инвертор от ЖКИ). Какие — не помню.
0
Особенность 7:
В 4-битном режиме индикатор не любит последовательностей нулей. Поэтому нельзя выводить подряд несколько символов с кодом 00, а также проблематично загружать в CGRAM символы, в которых много пустого места.
Вместо символов с кодом 00 можно использовать символы с кодом 08, они дублируются. Это решение совместимо со стандартными ЖКИ на базе HD44780 контроллере.
При записи в CGRAM можно попробовать загружать значения с установленным одним из старших бит. Совместимость такого решения с другими индикаторами пока проверена недостаточно.
+1
Это точно… Поначалу я подключил подобный OLED по 4-битной шине, но при сбросе МК на дисплее вылетали кракозябры, строки менялись местами, вобщем выводилась какая-то чушь. 2 дня пытался побороть- не прокатило. Подключил по 8-битной шине- завелось сразу и глюки исчезли.
0
2 дня пытался побороть- не прокатило.
Лучше было потратить 1 день на ВНИМАТЕЛЬНОЕ чтение ДШ. :) У меня все дисплеи с контроллером WS0010 (графические (WEG), текстовые (WEH), зеленые, желтые, разных ревизий плат) подключены в 4-х битовом режиме. Нет нареканий. И не надо распространять сказки о косяках 4-х битного режима этого контроллера.
0
Так я же думал что это замена дисплеям на контроллере HD44780, а оказалось что это совершенно новый дисплей с новыми косяками
0
Здесь разобрались с этой проблемой. НИКАКИХ проблем при работе в 4-х битном режиме не обнаружено.
0
Если не использовать длинных последовательностей нулей, то проблем с 4-битным режимом действительно нет. За ссылку спасибо, там как раз более глубокое описание именно указанной здесь мною проблемы. Жаль, что я сам раньше не нашел.
0
А если использовать? Глюки выскочат?
0
Вы всегда читаете только последний пост? Попробуйте прочитать хотя бы несколько предыдущих.
0
А если использовать? Глюки выскочат?
НЕТ. Поскольку их там нет. :)
Если у тебя нет желания/возможности прочитать что тут написано, то извини — ССЗБ.
Контроллер WS0010 на 99% совместим с HD44780, но имеет возможность работы в графическом режиме и ЧЕТЫРЕ таблицы кодировок. Посему имеются незначительные отличия одного от другого.
0
Добавил «Особенность 7» в своей интерпретации в тело заметки. ИМХО — так правильнее.
0
На стр.35 написано следующее: The Busy Flag must be checked (one instruction) after completion of the data transfer (that is, 4-bit data has been transferred twice.). The Busy Flag must be checked after two 4-bits data transfer has been completed. При этом не поясняется зачем это нужно.
В таблице на стр.24 для всех команд, кроме стирания экрана, указано нулевое время выполнения (для HD44780 и клонов обычно это время ненулевое и указывают порядка до 40 мксек). Вывод по одному байту за 2 мсек (что значительно превышает требования) без чтения готовности на WS0010 приводит к проблемам в 4-битном режиме в случае длинных последовательностей нулей (5 нибблов и больше), при этом низкая частота выдачи заведомо покрывает любые неготовности.

Поэтому я не согласен вышеприведенной интерпретацией: анализ документации, а также опытные данные указывают на то, что причина не в возможной неготовности индикатора (как Вы написали), а в особенности работы контроллера, которому просто требуется сброс внутренней логики подсчета нулей, для чего может (а согласно документации — должно) быть использовано чтение готовности. Поскольку при чтении готовности в остальных битах возвращается текущий адрес, а он как правило имеет не менее одного установленного бита, то наиболее вероятно физически контроллеру индикатора, как мне кажется, просто требуется появление хотя бы одного единичного бита на 4 считанных/записанных ниббла для поддержания внутренней логики в правильном состоянии. Что легко доказывается экспериментально, в результате внесение изменений в схему уже готового изделия при замене HD44780-совместимых индикаторов на WS0010 не требуется. На данный момент в моём БП PSA2 уже есть возможность установки такого OLED-индикатора без каких-либо изменений. Чтение из индикатора там не предусмотрено.
0
Я правильно понял, что можно без проверки готовности в четырхбитном режиме лупить по очереди нулевые байты данных и, например, команду «Display ON/OFF Control» (с правильнымо установленными битами) для прерывания цепочки нулей? И при этом внутренняя логика сброса будет оставаться пассивной? И при этом, согласно ДШ вообще наплевать на готовности? Так? Если ты проверил такую возможность — я, конечно, исправлю «Особенность 7».

И, хотя вся эта байда нужна только для экономии одной ноги, но как раз этой одной ноги часто не хватает. :)
0
Почти так: нужно организовать передачу данных таким образом, чтобы в потоке не возникало более четырёх нулевых нибблов подряд. Это можно сделать разными методами, я выбрал тот, который посчитал более удобным для своей реализации.
Символы с кодом 00 не использую, вместо них использую алиас с кодом 08
Пользовательские символы, загружаемые в CGRAM использую, с ними как раз и возникает самая большая сложность, однако это решаемо минимум двумя способами. Наиболее правильный способ требует некоторого увеличения числа циклов обращения к индикатору. Для этого достаточно перед каждым вторым подряд загружаемым в CGRAM байтом 00 передать команду установки адреса CGRAM

Графический режим WS0010 не использую, поскольку эти индикаторы использую только как альтернативу ЖКИ, соответственно стараюсь всё делать максимально совместимым для разных типов индикаторов.

Передавать «Display ON/OFF Control» не пробовал, по идее это тоже должно работать. Если только не будет сбиваться текущий указатель на DRAM или CGRAM, который может потребоваться обновлять. В таком случае лучше для разбивки потока использовать команду установки текущего адреса.

Чтение готовности алфавитно-цифровых индикаторов не использую нигде, ни в 8-битном режиме, ни в 4-битном. Считаю это слишком большой роскошью :=) Потому как речь идёт не только об экономии ноги, но и об уменьшении длительности циклов обращения к индикатору. Просто у меня всегда вывод происходит не на индикатор, а в буфер, а отдельная задача занимается выводом из буфера в индикатор с заведомо более низкой скоростью, чем нужно индикатору, обычно для 16х2 индикатора 1-2 мсек на символ, полное обновление за 30-40мсек выглядит вполне нормально.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.