реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Помогите разобраться с lcd DG-32240
Антон Малыгин
сообщение Mar 23 2008, 21:30
Сообщение #16


Участник
*

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



Похоже скоро мне ваш опыт наверное понадобиться..так как лежит дома безхозно экран 320*240. вот думаю на каком контроллере это сделать..т.к. вы все знаете что эти экраны идут без внутреннего контроллера. у меня написано на панели LSUBL6291A
у него на подсветку стоит люминесцентная лампа.
но при работе подсветка померла. вот и думаю что сдохла сама лампа или инвертор. как проверить лампу незнаю если честно, но думаю врядли обычной цешкой (мультиметром) это можно сделать.
А кстати ещё вопросик в оффтоп. почему все пишут на ассемблере?
Или код меньше получается? или просто привыкли все давно уже?
Или так как я пока только начинаю и пишу на Си, но с опытом люди понимают что Ассемблер эффективнее?
Go to the top of the page
 
+Quote Post
mse
сообщение Mar 24 2008, 10:16
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(=GM= @ Mar 23 2008, 14:23) *
Такое впечатление, Сергей, что вы топик полностью не читали. Кстати, о каком формировании картинки вы толкуете?

Не, не читал.
Ну как, какое формирование... Букевка "А" в знакоместе 8Х8 разложится на 8 байтиков(или 16 тетрад).
А если ещё есть какое графицкое изображение(график чего-то от чего-то) то вообще швах. Отрендерить изображение - нидецких ресурсов стоит.

Цитата
Зачем ещё фпга, вроде бы пришли к тому, что в качестве контроллера графического дисплея 320х240 можно обойтись одним 16 МГц атмеловским МК, он будет больше половины времени простаивать. Ну а если взять 20 МГц клок, сами можете представить, что можно сделать...

от задачи зависит. Если рендеринг внешний, а этот АВР тока лопатой грузит, то да, справится(тока нужно как-нить двухпортовость обеспечить для внешнего или арбитраж по доступу к видеоОЗУ). Мож на малых скоростях смены инфы, тоже прокатит. А так, МАХ2 + те-же 32К и никакого геморроя. На рупь дороже(если не дешевле), так ещо нагрузить можно всякими прибамбасами логическими/скоростными. Дело вкуса, в общем.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 24 2008, 10:52
Сообщение #18


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% времени, остальные можно кинуть на приём данных следующего кадра. Зачем платить даже рубль, если можно не платить? Вверх предела нет.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
mse
сообщение Mar 24 2008, 12:27
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(=GM= @ Mar 24 2008, 13:52) *
Надо бы читать, прежде чем отвечать, а то попадёте впроссак ненароком. Товарищ тему замутил на предмет построения графического контроллера, поскольку его ЖКИ имеет только драйвера. Вся тема крутится вокруг этого.

;О) Да я в курсе, чего он замутил. Проблема рендеринга и/или двухпортовости остаётся.
SED1335 как раз этим и болеет. Она прекрасно выводит данные из видеоОЗУ, но доступ к нему(ОЗУ) извне сопряжОн с такими издержками, что мама дорогая. Либо скорость(но фликкер по экрану), либо качество изображения(но динамической картинку можно назвать лишь с большой долей оптимизьма).
Не спорю, можно потрахаться и добиться относительной работоспособности. В случае с SED1335 это выливалось в перманентный опрос готовности или вывод прерывания с секретной ноги. Но полюбому, больше 10-12 БАЙТ в видеоОЗУ пропихнуть за один раз не получалось. А этот раз случается в конце строки. А если рисуем график в реальном времени. А если не один... Тоска, короче...
А в ФПГА, накрайняк, можно и простенький граф ускоритель замутить. И, при необходимости, цветность прикрутить. И аффтаматов всяких...В общем, дело вкуса и задачи. Мне пришлось с ФПГА связываться. И не пожалел. ;О)
Go to the top of the page
 
+Quote Post
SergSit
сообщение Mar 24 2008, 15:11
Сообщение #20


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031



Дело движется)))) Вариант очень даже работоспособный и не надо ПЛИС. Хотя кому как нравиться или кому что надо. Кому красивости а кому и бюджетную разработку(с минимальной ценой). В моем случае ипользуеться ЖКИ 400Х160 точек. Для обеспечениячастоты кадра 50Гц необходимо строки выдовать через 125мксек. Немного подкоректировал код предложенный =GM= получил следующие результаты: строка выдаеться за 45мксек. )))))) a14.gif Код для выдачи двух тетрад имееи вид
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=.
Пытаюсь программу , выдающую строку, написать на СИ с ИАРом. Прихожу к выводу, что обработчик прерывания надо писать на асме а остальное на СИ. Задам вопрос к знатокам по оптимизации кода в ИАРе в соответствующем разделе форума. Может помогут.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 25 2008, 12:53
Сообщение #21


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


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
SergSit
сообщение Mar 25 2008, 15:56
Сообщение #22


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031



Написал программу выдачи строки на СИ и ИАР преоразует в ассемблер нужного вида.
А что значит "для новых аврок"? Где можно почитать про эту возможность? Но, насколько я понимаю, при исполнении этой команды остальные разряды порта будут установленны в "0". Если это так, то вариант не подойдет. Т.к. в порту еще используеться 3 вывода для формирования сигналов управления ЖКИ. Покрайней мере надо разбираться.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 25 2008, 17:44
Сообщение #23


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. И пораньше - здесь.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
SergSit
сообщение Mar 25 2008, 18:09
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031



Да посмотреть можно. Выкладываю проект для ИАРа. Про новую фичу незнал. Спасибо.
Прикрепленные файлы
Прикрепленный файл  lcd_400160_avr.rar ( 36.09 килобайт ) Кол-во скачиваний: 128
 
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 25 2008, 23:07
Сообщение #25


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)? В чём тут интерес? Или чем чудней, тем модней(:-)? (Это не к вам, это общее замечание, у вас замечательно всё получилось, вообще я поражён, как оказывается точно можно на си отобразить желаемый ассемблерный код)


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
SergSit
сообщение Mar 26 2008, 05:42
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 9-12-05
Пользователь №: 12 031



По пунктам.
1. Как получилось не знаю))) Это вопрос к компилятору. Насколько знаю, ИАР регистровую пару Y отводит под указатель стека данных. Поэтому он не использует ее для пользовательские нужды. А алгоритм использования X, Z не знаю. По идее ИАР их использует по очереди. Если создать еще один указатель, то это будет Z. Но это из области предположения.
2. В составе ИАР есть файл intrinsics.h. В этом файле есть уже готовые функции. Вся информация есть в помощи.
3. Так просто, для меня, удобочитаемо. И меньше писанины)
Честно тоже поражен))) Какой замечательный ИАР. Может воплотить задуманное)). biggrin.gif
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01441 секунд с 7
ELECTRONIX ©2004-2016