Перейти к содержанию
    

Пример для LPC2106

Господа, киньте, пожалуйста, примером на lpc2106 (на C или ASM) инициализации и работы с индикатором

 

Индикатор двухстрочный (типа мэлтовского MT16S2D), режим работы - 4-х битный.

Если что: overthrash (a) mail . ru

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.. киньте, пожалуйста, примером на lpc2106 (на C или ASM) инициализации и работы с индикатором

Пожалуйста, не сочтите за труд воспользоваться поиском. Даже на данном форуме Вы найдете не менее дюжины примеров подходящих под категорию просимого.

Другое дело, что все просмотренные в свое время мной представляют достаточно печальное зрелище :-(, но в определенных условиях с определенными ограничениями очевидно работоспособны.

Если Вам нужно не для "абы заработало", то рекомендую:

- изучить документацию на контроллер/контроллеры;

- просмотреть найденные исходники;

- попробовать написать свое в меру своего разумения и своих потребностей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пожалуйста, не сочтите за труд воспользоваться поиском. Даже на данном форуме Вы найдете не менее дюжины примеров подходящих под категорию просимого.

Другое дело, что все просмотренные в свое время мной представляют достаточно печальное зрелище :-(, но в определенных условиях с определенными ограничениями очевидно работоспособны.

Если Вам нужно не для "абы заработало", то рекомендую:

- изучить документацию на контроллер/контроллеры;

- просмотреть найденные исходники;

- попробовать написать свое в меру своего разумения и своих потребностей.

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

Далее.

Описание индикатора и его контроллера посмотрел. Алгоритм инициализации есть (он и был до обращения сюда).

К сообщению прикрепил исходник. Код неоптимизирован, для простоты расписано как можно подробнее и проще. Буду благодарен, если кто-нибудь укажет в коде на ошибки (может вообще надо по-другому). =)

 

P.S. А такой же алгоритм (написанный в другом ассемблере, ессно) работает на msp430f149 и с индикатором MT-16S2D. А на lpc2106 индикатор ведет себя так: после включения на индикаторе высвечивается верхняя строка полностью (просто высвечены знакоместа сколько-то на сколько-то пикселей). И все. Перенос вызова подпрограмм в цикл (т.е. постоянное обновление на индикаторе символов в разных местах) результата не дал.

main.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 мкс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

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

 

Вижу выставление D4, D5, задержку и сброс всех ножек. Не вижу где здесь выставляется E. Вы пробоваали на симуляторе или в железе пошагово проходить и смотреть что ноги выставляются именно так как надо? После команд =D45 задержки есть, после остальных команд инициализации задержек нет. Индикатор не будет успевать.

Задержки 43 мкс при инициализации маловаты. Я делаю (взял в даташите, с тех пор кочуют из проекта в проект): перед началом инициализации 200мс, после первой и второй команд (0x03) по 50мс и после 0x02 200мс. Далее все задержки около 40 мкс.

 

Сигналы на всех ножках есть, устанавливаются и сбрасываются как надо. Смотрел как на процессоре, так и непосредственно на индикаторной плате.

Про задержки понял, увеличу и воткну, где их не хватает :biggrin:

А по поводу E.. В описании на индикатор не нашел упоминания о том, как себя должна вести ножка E (RW, RS и ноги данных). :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там кстати ремарки не совпадают с реальной схемой. Это не моя библиотека. Я её под себя переделал. Её вроде бы rezident писал для MSP. А так как я ремарки обычно не пишу, то там остались старые. Но работает вроде идеально. Нужно только чтобы таймер 0 работал. По нему интервалы отсчитываются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делаю (взял в даташите, с тех пор кочуют из проекта в проект): перед началом инициализации 200мс, после первой и второй команд (0x03) по 50мс и после 0x02 200мс. Далее все задержки около 40 мкс.

Я тоже такую информацию с какого-то ксерокса в 2000г выудил (другой документации по HD44780 тогда не было).

Но потом обнаружил, что, например, VFD от Futaba и Noritake (по функционалу полностью идентичные HD44780) вообще такой инициализации при включении не требуют - им тока надо дать "Display On".

А на указанной LCD и Powertip кто-нить проверял - инициализация (ну, кроме, есс-но перевода в 4-bit режим) нужна или так работают ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сигналы на всех ножках есть, устанавливаются и сбрасываются как надо. Смотрел как на процессоре, так и непосредственно на индикаторной плате.
Тогда исходник не весь, я не вижу команд дерганья строба (E). Если он не дергается, значит не на всех ножках сигналы есть.

А по поводу E.. В описании на индикатор не нашел упоминания о том, как себя должна вести ножка E (RW, RS и ноги данных). :(
Сорри, а как же тогда работал упоминавшийся исходник на MSP430F149? Как это не нашли в описании? А диаграмы смотрели? На E нужно подавать импульс на каждую команду. Как же иначе индикатор поймет, что именно эта комбинация и есть данные индикатору а не кому-то другому или мусор на шине?

 

А на указанной LCD и Powertip кто-нить проверял - инициализация (ну, кроме, есс-но перевода в 4-bit режим) нужна или так работают ?
Суда по тому, что при подаче питания он высвечивает верхнюю полосу (как и Powertip и вообще все которые попадались алфавитно-цифровые ЖКИ) инициализация все же требуется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну ты, GetSmart, даешь! Хоть бы причесал мои черновики прежде, чем выкладывать на публику. :rolleyes: Вроде этот исходник вполне рабочий. По крайней мере проверялся на MSP430F149 с WH1602B (WinStar) и VC16X2A (WizeTip).

P.S. еще вспомнил, что проверял его на 4-х строчном PC1604A от PowerTip, правда только на две строки. Тоже работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

1. Он, как я уже писал, совсем не образец для подражания.

2. Писать на ASM для АRMов работу с безмерно тормозными вещами типа помянутого LCD, неумно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...