|
Помогите разобраться с lcd DG-32240 |
|
|
|
Mar 23 2008, 21:30
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 11-05-07
Из: Коряжма
Пользователь №: 27 672

|
Похоже скоро мне ваш опыт наверное понадобиться..так как лежит дома безхозно экран 320*240. вот думаю на каком контроллере это сделать..т.к. вы все знаете что эти экраны идут без внутреннего контроллера. у меня написано на панели LSUBL6291A у него на подсветку стоит люминесцентная лампа. но при работе подсветка померла. вот и думаю что сдохла сама лампа или инвертор. как проверить лампу незнаю если честно, но думаю врядли обычной цешкой (мультиметром) это можно сделать. А кстати ещё вопросик в оффтоп. почему все пишут на ассемблере? Или код меньше получается? или просто привыкли все давно уже? Или так как я пока только начинаю и пишу на Си, но с опытом люди понимают что Ассемблер эффективнее?
|
|
|
|
|
Mar 24 2008, 10:16
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(=GM= @ Mar 23 2008, 14:23)  Такое впечатление, Сергей, что вы топик полностью не читали. Кстати, о каком формировании картинки вы толкуете? Не, не читал. Ну как, какое формирование... Букевка "А" в знакоместе 8Х8 разложится на 8 байтиков(или 16 тетрад). А если ещё есть какое графицкое изображение(график чего-то от чего-то) то вообще швах. Отрендерить изображение - нидецких ресурсов стоит. Цитата Зачем ещё фпга, вроде бы пришли к тому, что в качестве контроллера графического дисплея 320х240 можно обойтись одним 16 МГц атмеловским МК, он будет больше половины времени простаивать. Ну а если взять 20 МГц клок, сами можете представить, что можно сделать... от задачи зависит. Если рендеринг внешний, а этот АВР тока лопатой грузит, то да, справится(тока нужно как-нить двухпортовость обеспечить для внешнего или арбитраж по доступу к видеоОЗУ). Мож на малых скоростях смены инфы, тоже прокатит. А так, МАХ2 + те-же 32К и никакого геморроя. На рупь дороже(если не дешевле), так ещо нагрузить можно всякими прибамбасами логическими/скоростными. Дело вкуса, в общем.
|
|
|
|
|
Mar 24 2008, 10:52
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(mse @ Mar 24 2008, 10:16)  Не, не читал. Ну как, какое формирование... Букевка "А" в знакоместе 8Х8 разложится на 8 байтиков(или 16 тетрад). А если ещё есть какое графицкое изображение(график чего-то от чего-то) то вообще швах. Отрендерить изображение - нидецких ресурсов стоит Надо бы читать, прежде чем отвечать, а то попадёте впроссак ненароком. Товарищ тему замутил на предмет построения графического контроллера, поскольку его ЖКИ имеет только драйвера. Вся тема крутится вокруг этого. Цитата(mse @ Mar 24 2008, 10:16)  Если рендеринг внешний, а этот АВР тока лопатой грузит, то да, справится(тока нужно как-нить двухпортовость обеспечить для внешнего или арбитраж по доступу к видеоОЗУ). Мож на малых скоростях смены инфы, тоже прокатит. А так, МАХ2 + те-же 32К и никакого геморроя. На рупь дороже (если не дешевле), так ещо нагрузить можно всякими прибамбасами логическими/скоростными Контроллер вроде занят 40% времени, остальные можно кинуть на приём данных следующего кадра. Зачем платить даже рубль, если можно не платить? Вверх предела нет.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 24 2008, 12:27
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(=GM= @ Mar 24 2008, 13:52)  Надо бы читать, прежде чем отвечать, а то попадёте впроссак ненароком. Товарищ тему замутил на предмет построения графического контроллера, поскольку его ЖКИ имеет только драйвера. Вся тема крутится вокруг этого. ;О) Да я в курсе, чего он замутил. Проблема рендеринга и/или двухпортовости остаётся. SED1335 как раз этим и болеет. Она прекрасно выводит данные из видеоОЗУ, но доступ к нему(ОЗУ) извне сопряжОн с такими издержками, что мама дорогая. Либо скорость(но фликкер по экрану), либо качество изображения(но динамической картинку можно назвать лишь с большой долей оптимизьма). Не спорю, можно потрахаться и добиться относительной работоспособности. В случае с SED1335 это выливалось в перманентный опрос готовности или вывод прерывания с секретной ноги. Но полюбому, больше 10-12 БАЙТ в видеоОЗУ пропихнуть за один раз не получалось. А этот раз случается в конце строки. А если рисуем график в реальном времени. А если не один... Тоска, короче... А в ФПГА, накрайняк, можно и простенький граф ускоритель замутить. И, при необходимости, цветность прикрутить. И аффтаматов всяких...В общем, дело вкуса и задачи. Мне пришлось с ФПГА связываться. И не пожалел. ;О)
|
|
|
|
|
Mar 24 2008, 15:11
|
Частый гость
 
Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031

|
Дело движется)))) Вариант очень даже работоспособный и не надо ПЛИС. Хотя кому как нравиться или кому что надо. Кому красивости а кому и бюджетную разработку(с минимальной ценой). В моем случае ипользуеться ЖКИ 400Х160 точек. Для обеспечениячастоты кадра 50Гц необходимо строки выдовать через 125мксек. Немного подкоректировал код предложенный =GM= получил следующие результаты: строка выдаеться за 45мксек. ))))))  Код для выдачи двух тетрад имееи вид ld temp,X+ out Port_lcd,temp cbi Port_lcd_upr, CL2 sbi Port_lcd_upr, CL2 swap temp out Port_lcd,temp cbi Port_lcd_upr, CL2 sbi Port_lcd_upr, CL2 Понятно что байт считаный из ОЗУ остается в регистре. Применив SWAP мы с энономили 2МЦ и главное теперь можно инфомацию хранить по байтно и т.д. Согласен, что SED1335 еще тот тормоз. Этот вариант на AVR лишен главного недостатка SED1335 а именно плохого доступа к ОЗУ. Тк. контролер выдает информацию на ЖКИ из ОЗУ в прерывании. А остальное время контролер может делать с ОЗУ, что угодно)) Например формировать кадр, как и говорил =GM=. Пытаюсь программу , выдающую строку, написать на СИ с ИАРом. Прихожу к выводу, что обработчик прерывания надо писать на асме а остальное на СИ. Задам вопрос к знатокам по оптимизации кода в ИАРе в соответствующем разделе форума. Может помогут.
|
|
|
|
|
Mar 25 2008, 12:53
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(SergSit @ Mar 24 2008, 15:11)  Дело движется)))) Вариант очень даже работоспособный и не надо ПЛИС. Пытаюсь программу, выдающую строку, написать на СИ с ИАРом. Прихожу к выводу, что обработчик прерывания надо писать на асме а остальное на СИ Я обычно оформляю ассемблерные подпрограммы так, чтобы можно было вызывать из Си. Тогда и прозрачно всё и отлаживать легко. Вот подумал ещё, что для новых аврок можно вместо пары команд cbi Port_lcd_upr, CL2 sbi Port_lcd_upr, CL2 поставить пару команд, которые дважды инвертируют CL2 (а в r17 заранее положить 0х10) out pin_lcd, r17 ;инвертируем бит4 out pin_lcd, r17 ;инвертируем бит4 ещё раз Вместо 8МЦ получится 4МЦ на две тетрады, т.е. экономия 4*50=200МЦ или 13 мкс.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 25 2008, 17:44
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(SergSit @ Mar 25 2008, 15:56)  Написал программу выдачи строки на СИ и ИАР преобразует в ассемблер нужного вида Интересно. Взглянуть можно? Цитата(SergSit @ Mar 25 2008, 15:56)  А что значит "для новых аврок"? Где можно почитать про эту возможность? Но, насколько я понимаю, при исполнении этой команды остальные разряды порта будут установленны в "0" Нет, не так. Только запись 1 приводит к инверсии, а 0 ничего не даёт. Недавно было обсуждение вот здесь. Начиная с поста #64. И пораньше - здесь.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 25 2008, 18:09
|
Частый гость
 
Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031

|
Да посмотреть можно. Выкладываю проект для ИАРа. Про новую фичу незнал. Спасибо.
|
|
|
|
|
Mar 25 2008, 23:07
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(SergSit @ Mar 25 2008, 18:09)  Про новую фичу не знал. Спасибо Ну так, работают люди...кодируют помаленьку(:-) Цитата(SergSit @ Mar 25 2008, 18:09)  Выкладываю проект для ИАРа Несколько вопросов по сишному коду. 1) Как так получилось, что оператор "temp=*point_ram_video++" переходит в "ld r16,x+"? А если нужно использовать регистровые пары Y и/или Z, что надо сделать? Или здесь есть определенные ограничения? 2) Откуда взялась функция __swap_nibbles(temp)? 3) Почему надо использовать CL2_1 вместо setbit(port,CL2), а не просто port |=(1 << bit)? В чём тут интерес? Или чем чудней, тем модней(:-)? (Это не к вам, это общее замечание, у вас замечательно всё получилось, вообще я поражён, как оказывается точно можно на си отобразить желаемый ассемблерный код)
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 26 2008, 05:42
|
Частый гость
 
Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031

|
По пунктам. 1. Как получилось не знаю))) Это вопрос к компилятору. Насколько знаю, ИАР регистровую пару Y отводит под указатель стека данных. Поэтому он не использует ее для пользовательские нужды. А алгоритм использования X, Z не знаю. По идее ИАР их использует по очереди. Если создать еще один указатель, то это будет Z. Но это из области предположения. 2. В составе ИАР есть файл intrinsics.h. В этом файле есть уже готовые функции. Вся информация есть в помощи. 3. Так просто, для меня, удобочитаемо. И меньше писанины) Честно тоже поражен))) Какой замечательный ИАР. Может воплотить задуманное)).
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|