Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пример для LPC2106
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
:OveR:
Господа, киньте, пожалуйста, примером на lpc2106 (на C или ASM) инициализации и работы с индикатором

Индикатор двухстрочный (типа мэлтовского MT16S2D), режим работы - 4-х битный.
Если что: overthrash (a) mail . ru
zltigo
Цитата(:OveR: @ Jul 19 2006, 10:05) *
.. киньте, пожалуйста, примером на lpc2106 (на C или ASM) инициализации и работы с индикатором

Пожалуйста, не сочтите за труд воспользоваться поиском. Даже на данном форуме Вы найдете не менее дюжины примеров подходящих под категорию просимого.
Другое дело, что все просмотренные в свое время мной представляют достаточно печальное зрелище :-(, но в определенных условиях с определенными ограничениями очевидно работоспособны.
Если Вам нужно не для "абы заработало", то рекомендую:
- изучить документацию на контроллер/контроллеры;
- просмотреть найденные исходники;
- попробовать написать свое в меру своего разумения и своих потребностей.
:OveR:
Цитата(zltigo @ Jul 19 2006, 12:02) *
Пожалуйста, не сочтите за труд воспользоваться поиском. Даже на данном форуме Вы найдете не менее дюжины примеров подходящих под категорию просимого.
Другое дело, что все просмотренные в свое время мной представляют достаточно печальное зрелище :-(, но в определенных условиях с определенными ограничениями очевидно работоспособны.
Если Вам нужно не для "абы заработало", то рекомендую:
- изучить документацию на контроллер/контроллеры;
- просмотреть найденные исходники;
- попробовать написать свое в меру своего разумения и своих потребностей.

На данном форуме не нашел (может плохо искал, но комбинаций слов и поисковых фраз было больше двух десятков). Если Вы укажете поисковые фразы/слова, по которым найдутся примеры - буду премного благодарен.
Далее.
Описание индикатора и его контроллера посмотрел. Алгоритм инициализации есть (он и был до обращения сюда).
К сообщению прикрепил исходник. Код неоптимизирован, для простоты расписано как можно подробнее и проще. Буду благодарен, если кто-нибудь укажет в коде на ошибки (может вообще надо по-другому). =)

P.S. А такой же алгоритм (написанный в другом ассемблере, ессно) работает на msp430f149 и с индикатором MT-16S2D. А на lpc2106 индикатор ведет себя так: после включения на индикаторе высвечивается верхняя строка полностью (просто высвечены знакоместа сколько-то на сколько-то пикселей). И все. Перенос вызова подпрограмм в цикл (т.е. постоянное обновление на индикаторе символов в разных местах) результата не дал.
zltigo
Цитата(:OveR: @ Jul 19 2006, 12:50) *
Если Вы укажете поисковые фразы/слова, по которым найдутся примеры - буду премного благодарен.

"LCD" - все очень просто.

Кривой под LPC2016 конкретно :-)))) можете посмотреть на olimex.com в образчиках LPC-MT-2106
Сергей Борщ
Цитата(:OveR: @ Jul 19 2006, 12:50) *
P.S. А такой же алгоритм (написанный в другом ассемблере, ессно) работает на msp430f149 и с индикатором MT-16S2D. А на lpc2106 индикатор ведет себя так: после включения на индикаторе высвечивается верхняя строка полностью (просто высвечены знакоместа сколько-то на сколько-то пикселей). И все. Перенос вызова подпрограмм в цикл (т.е. постоянное обновление на индикаторе символов в разных местах) результата не дал.
Ой... ассемблер :-(
Ну симптомы явно указывают на неправильную инициализацию. Глянул инициализацию:
Код
    ldr r0,=ioset
    ldr    r2,=D45        // установка D4, D5
    str r2,[r0]

    stmfd    sp!,{r14}
    mov    r2,#0x200        // 43,4 мкс
    bl    pause
    ldmfd    sp!,{r14}

    ldr r0,=ioclr
    ldr    r2,=LCD_IOALL
    str r2,[r0]
Вижу выставление D4, D5, задержку и сброс всех ножек. Не вижу где здесь выставляется E. Вы пробоваали на симуляторе или в железе пошагово проходить и смотреть что ноги выставляются именно так как надо? После команд =D45 задержки есть, после остальных команд инициализации задержек нет. Индикатор не будет успевать.
Задержки 43 мкс при инициализации маловаты. Я делаю (взял в даташите, с тех пор кочуют из проекта в проект): перед началом инициализации 200мс, после первой и второй команд (0x03) по 50мс и после 0x02 200мс. Далее все задержки около 40 мкс.
:OveR:
Цитата(zltigo @ Jul 19 2006, 14:26) *
Цитата(:OveR: @ Jul 19 2006, 12:50) *

Если Вы укажете поисковые фразы/слова, по которым найдутся примеры - буду премного благодарен.

"LCD" - все очень просто.

Кривой под LPC2016 конкретно :-)))) можете посмотреть на olimex.com в образчиках LPC-MT-2106


Спасибо, на олимексе.ком нарыл исходник на Си под IAR. Попробую переделать на ассемблере и под CrossWorks =)

Цитата(Сергей Борщ @ Jul 19 2006, 14:26) *
Вижу выставление D4, D5, задержку и сброс всех ножек. Не вижу где здесь выставляется E. Вы пробоваали на симуляторе или в железе пошагово проходить и смотреть что ноги выставляются именно так как надо? После команд =D45 задержки есть, после остальных команд инициализации задержек нет. Индикатор не будет успевать.
Задержки 43 мкс при инициализации маловаты. Я делаю (взял в даташите, с тех пор кочуют из проекта в проект): перед началом инициализации 200мс, после первой и второй команд (0x03) по 50мс и после 0x02 200мс. Далее все задержки около 40 мкс.


Сигналы на всех ножках есть, устанавливаются и сбрасываются как надо. Смотрел как на процессоре, так и непосредственно на индикаторной плате.
Про задержки понял, увеличу и воткну, где их не хватает biggrin.gif
А по поводу E.. В описании на индикатор не нашел упоминания о том, как себя должна вести ножка E (RW, RS и ноги данных). sad.gif
GetSmart
Если не лень разбираться, то вот мой. На 60 МГц.
GetSmart
Там кстати ремарки не совпадают с реальной схемой. Это не моя библиотека. Я её под себя переделал. Её вроде бы rezident писал для MSP. А так как я ремарки обычно не пишу, то там остались старые. Но работает вроде идеально. Нужно только чтобы таймер 0 работал. По нему интервалы отсчитываются.
GetSmart
Забыл ашник добавить.
Никто главное не сказал и не завозмущался.
Andrew2000
Цитата(Сергей Борщ @ Jul 19 2006, 14:26) *
Я делаю (взял в даташите, с тех пор кочуют из проекта в проект): перед началом инициализации 200мс, после первой и второй команд (0x03) по 50мс и после 0x02 200мс. Далее все задержки около 40 мкс.

Я тоже такую информацию с какого-то ксерокса в 2000г выудил (другой документации по HD44780 тогда не было).
Но потом обнаружил, что, например, VFD от Futaba и Noritake (по функционалу полностью идентичные HD44780) вообще такой инициализации при включении не требуют - им тока надо дать "Display On".
А на указанной LCD и Powertip кто-нить проверял - инициализация (ну, кроме, есс-но перевода в 4-bit режим) нужна или так работают ?
Сергей Борщ
Цитата(:OveR: @ Jul 19 2006, 14:23) *
Сигналы на всех ножках есть, устанавливаются и сбрасываются как надо. Смотрел как на процессоре, так и непосредственно на индикаторной плате.
Тогда исходник не весь, я не вижу команд дерганья строба (E). Если он не дергается, значит не на всех ножках сигналы есть.
Цитата(:OveR: @ Jul 19 2006, 14:23) *
А по поводу E.. В описании на индикатор не нашел упоминания о том, как себя должна вести ножка E (RW, RS и ноги данных). sad.gif
Сорри, а как же тогда работал упоминавшийся исходник на MSP430F149? Как это не нашли в описании? А диаграмы смотрели? На E нужно подавать импульс на каждую команду. Как же иначе индикатор поймет, что именно эта комбинация и есть данные индикатору а не кому-то другому или мусор на шине?

Цитата(Andrew2000 @ Jul 19 2006, 17:13) *
А на указанной LCD и Powertip кто-нить проверял - инициализация (ну, кроме, есс-но перевода в 4-bit режим) нужна или так работают ?
Суда по тому, что при подаче питания он высвечивает верхнюю полосу (как и Powertip и вообще все которые попадались алфавитно-цифровые ЖКИ) инициализация все же требуется.
rezident
Ну ты, GetSmart, даешь! Хоть бы причесал мои черновики прежде, чем выкладывать на публику. rolleyes.gif Вроде этот исходник вполне рабочий. По крайней мере проверялся на MSP430F149 с WH1602B (WinStar) и VC16X2A (WizeTip).
P.S. еще вспомнил, что проверял его на 4-х строчном PC1604A от PowerTip, правда только на две строки. Тоже работает.
zltigo
Цитата(:OveR: @ Jul 19 2006, 14:23) *
Спасибо, на олимексе.ком нарыл исходник на Си под IAR. Попробую переделать на ассемблере и под CrossWorks =)

1. Он, как я уже писал, совсем не образец для подражания.
2. Писать на ASM для АRMов работу с безмерно тормозными вещами типа помянутого LCD, неумно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.