|
|
  |
Пример для LPC2106, нужен пример для LPC2106 |
|
|
|
Jul 19 2006, 07:05
|
Группа: Новичок
Сообщений: 10
Регистрация: 26-02-06
Из: Россия, Москва
Пользователь №: 14 695

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

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(:OveR: @ Jul 19 2006, 10:05)  .. киньте, пожалуйста, примером на lpc2106 (на C или ASM) инициализации и работы с индикатором Пожалуйста, не сочтите за труд воспользоваться поиском. Даже на данном форуме Вы найдете не менее дюжины примеров подходящих под категорию просимого. Другое дело, что все просмотренные в свое время мной представляют достаточно печальное зрелище :-(, но в определенных условиях с определенными ограничениями очевидно работоспособны. Если Вам нужно не для "абы заработало", то рекомендую: - изучить документацию на контроллер/контроллеры; - просмотреть найденные исходники; - попробовать написать свое в меру своего разумения и своих потребностей.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 19 2006, 09:50
|
Группа: Новичок
Сообщений: 10
Регистрация: 26-02-06
Из: Россия, Москва
Пользователь №: 14 695

|
Цитата(zltigo @ Jul 19 2006, 12:02)  Пожалуйста, не сочтите за труд воспользоваться поиском. Даже на данном форуме Вы найдете не менее дюжины примеров подходящих под категорию просимого. Другое дело, что все просмотренные в свое время мной представляют достаточно печальное зрелище :-(, но в определенных условиях с определенными ограничениями очевидно работоспособны. Если Вам нужно не для "абы заработало", то рекомендую: - изучить документацию на контроллер/контроллеры; - просмотреть найденные исходники; - попробовать написать свое в меру своего разумения и своих потребностей. На данном форуме не нашел (может плохо искал, но комбинаций слов и поисковых фраз было больше двух десятков). Если Вы укажете поисковые фразы/слова, по которым найдутся примеры - буду премного благодарен. Далее. Описание индикатора и его контроллера посмотрел. Алгоритм инициализации есть (он и был до обращения сюда). К сообщению прикрепил исходник. Код неоптимизирован, для простоты расписано как можно подробнее и проще. Буду благодарен, если кто-нибудь укажет в коде на ошибки (может вообще надо по-другому). =) P.S. А такой же алгоритм (написанный в другом ассемблере, ессно) работает на msp430f149 и с индикатором MT-16S2D. А на lpc2106 индикатор ведет себя так: после включения на индикаторе высвечивается верхняя строка полностью (просто высвечены знакоместа сколько-то на сколько-то пикселей). И все. Перенос вызова подпрограмм в цикл (т.е. постоянное обновление на индикаторе символов в разных местах) результата не дал.
Прикрепленные файлы
main.txt ( 7.41 килобайт )
Кол-во скачиваний: 93
--------------------
// OveR
|
|
|
|
|
Jul 19 2006, 10:26
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(: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 мкс.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 19 2006, 11:23
|
Группа: Новичок
Сообщений: 10
Регистрация: 26-02-06
Из: Россия, Москва
Пользователь №: 14 695

|
Цитата(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 мкс. Сигналы на всех ножках есть, устанавливаются и сбрасываются как надо. Смотрел как на процессоре, так и непосредственно на индикаторной плате. Про задержки понял, увеличу и воткну, где их не хватает А по поводу E.. В описании на индикатор не нашел упоминания о том, как себя должна вести ножка E (RW, RS и ноги данных).
--------------------
// OveR
|
|
|
|
|
Jul 19 2006, 14:13
|
Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675

|
Цитата(Сергей Борщ @ Jul 19 2006, 14:26)  Я делаю (взял в даташите, с тех пор кочуют из проекта в проект): перед началом инициализации 200мс, после первой и второй команд (0x03) по 50мс и после 0x02 200мс. Далее все задержки около 40 мкс. Я тоже такую информацию с какого-то ксерокса в 2000г выудил (другой документации по HD44780 тогда не было). Но потом обнаружил, что, например, VFD от Futaba и Noritake (по функционалу полностью идентичные HD44780) вообще такой инициализации при включении не требуют - им тока надо дать "Display On". А на указанной LCD и Powertip кто-нить проверял - инициализация (ну, кроме, есс-но перевода в 4-bit режим) нужна или так работают ?
|
|
|
|
|
Jul 19 2006, 15:31
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(:OveR: @ Jul 19 2006, 14:23)  Сигналы на всех ножках есть, устанавливаются и сбрасываются как надо. Смотрел как на процессоре, так и непосредственно на индикаторной плате. Тогда исходник не весь, я не вижу команд дерганья строба (E). Если он не дергается, значит не на всех ножках сигналы есть. Цитата(:OveR: @ Jul 19 2006, 14:23)  А по поводу E.. В описании на индикатор не нашел упоминания о том, как себя должна вести ножка E (RW, RS и ноги данных).  Сорри, а как же тогда работал упоминавшийся исходник на MSP430F149? Как это не нашли в описании? А диаграмы смотрели? На E нужно подавать импульс на каждую команду. Как же иначе индикатор поймет, что именно эта комбинация и есть данные индикатору а не кому-то другому или мусор на шине? Цитата(Andrew2000 @ Jul 19 2006, 17:13)  А на указанной LCD и Powertip кто-нить проверял - инициализация (ну, кроме, есс-но перевода в 4-bit режим) нужна или так работают ? Суда по тому, что при подаче питания он высвечивает верхнюю полосу (как и Powertip и вообще все которые попадались алфавитно-цифровые ЖКИ) инициализация все же требуется.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|