Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR и Siemens M55
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26
yarunt
Цитата(SashaGubov @ Jun 10 2007, 18:52) *
Люди, скажите сколько у вас потребляет дисплей от сименса, потому что у меня от кушает 150ма 07.gif

С таким током в дисплее должно что-то грется на дисплее.С преобразователем подсветки 3в, 70ма.
BelTech
Собираюсь управлять экраном от Mega128,запитанной от 5 вольт.Что лучше применить для конвертации лог уровней для экрана(что-бы попроще): делители на резисторах или
схему на транзисторах(2 с общим эмиттером или 1 с общим коллектором).74lvc245 не предлагать,так как нет возможности купить.
yarunt
Цитата(BelTech @ Jun 11 2007, 02:45) *
Собираюсь управлять экраном от Mega128,запитанной от 5 вольт.Что лучше применить для конвертации лог уровней для экрана(что-бы попроще): делители на резисторах или
схему на транзисторах(2 с общим эмиттером или 1 с общим коллектором).74lvc245 не предлагать,так как нет возможности купить.

Можно начинать с делителей в верхних плечах 200 Ом, в нижних 300 ом и с пониженой частоты SPI. После разогнать SPI , может понадобится подключение конденсаторов 100 пф на каждый резистор верхнего плеча .
Но сначало отладить работу с общим питанием 3.3 в. smile.gif
Nanobyte
Цитата(yarunt @ Jun 11 2007, 10:15) *
... Но сначала отладить работу с общим питанием 3.3 в. smile.gif

ИМХО, лучше всего не отладить, а использовать с общим питанием 3.3 вольта. Никакое понижение частоты SPI не спасало меня во время экспериментов. Я уже и делители пересчитывал, и конденсаторы ставил, и преобразователи уровня из серии ЛП ставил. А всё сразу заработало, когда соединил напрямую. А при начальных попытках подружиться с дисплеем вы сразу обойдёте целое грабельное поле.
BelTech
3.3 вольта--это хорошо, но во-первых Mega без буквы L, а во-вторых с таким напряжением на меге не достичь наивысшей частоты SPI.А мегу я хочу затактовать от
20Мгц.Тогда как поступить?
yarunt
Цитата(BelTech @ Jun 12 2007, 20:21) *
3.3 вольта--это хорошо, но во-первых Mega без буквы L, а во-вторых с таким напряжением на меге не достичь наивысшей частоты SPI.А мегу я хочу затактовать от
20Мгц.Тогда как поступить?

Atmega128- 16pu стабильно работает на 3.3в 24мГц ,но может шиться с ошибкой .
bodja74
Цитата(BelTech @ Jun 12 2007, 20:21) *
3.3 вольта--это хорошо, но во-первых Mega без буквы L, а во-вторых с таким напряжением на меге не достичь наивысшей частоты SPI.А мегу я хочу затактовать от
20Мгц.Тогда как поступить?


Если для себя делаете ,делайте как yarunt говорит ,но готовтесь к тому ,что у Вас будет периодически виснуть контроллер и слетать прошивка.
Но для отладки ИМХО лучше общее питание ставить ,чем делители.
Ну а уже после заниматься экспениментами.

Ну а идеальным для этого дисплея АРМ ,куча оперативки ,3.3в ну и необходимая скорость.
А то а в АВР при использовании графдисплея моментально начинаеш испытывать острый недостаток
в оперативке.
zorromen
А ресет обязательно надо дергать? Иль его можно к 3 вольтам кинуть?
QuickWitted
1111493779.gif
Написано по этой теме уже очень много, но пока нет подобия указателя...
(в котором можно было бы прочесть параметры дисплея,
КОТОРЫЙ УДАЛОСЬ ПОДКЛЮЧИТЬ не перерывая пол енета... help.gif )

Предлагаю создать указатель типа:

1) Фирма изготовитель телефона
1.А) Протокол обмена последовательный - "такой то"
доки брать - "Тут"
1.A.1) Дисплей от "Название модели" - цветной ( 256 цветов)
Габариты вид. области - 22х23мм Разрешение - 128х128
IgorKossak
Тут возможны два варианта:
1. Напрячься самому и выложить такой указатель. Честь Вам за это и хвала.
2. Напрячь кого-нибудь. Неблагодарное это дело.
QuickWitted
И третий вариант...
beer.gif описать у кого что получилось...

Я сейчас стою перед выбором:
Какой брать (какой дешевле)
какое макс разрешение и видимая область получится?
как подключать, где брать описание интерфейса...
BelTech
Наконец запустил свой экран.Да,всё-таки он медленный.Мега работает на 20Мгц(spi = Fsck/2) .Пишу в CodeVision,уже написал несколько функций:пиксель, линия , круг,
прямоугольник.Все фигурки рисуются нормально (по скорости),но очистка дисплея идёт относительно медленно.Может подскажите команду быстрой очистки дисплея.
Кто-нибудь знает почему при задании маленького радиуса(до ~35 пикселей) ,рисуется равносторонний ромб, а не окружность.Может у кого есть проверенная ф-ия рисования окружности?
Кому нужны исходники,скажите,выложу,для дальнейших модификаций.
~phase
Цитата(BelTech @ Jun 22 2007, 20:35) *
Наконец запустил свой экран.Да,всё-таки он медленный.Мега работает на 20Мгц(spi = Fsck/2) .Пишу в CodeVision,уже написал несколько функций:пиксель, линия , круг,
прямоугольник.Все фигурки рисуются нормально (по скорости),но очистка дисплея идёт относительно медленно.Может подскажите команду быстрой очистки дисплея.
Кто-нибудь знает почему при задании маленького радиуса(до ~35 пикселей) ,рисуется равносторонний ромб, а не окружность.Может у кого есть проверенная ф-ия рисования окружности?
Кому нужны исходники,скажите,выложу,для дальнейших модификаций.

Если можно выложи... И драйвер дисплея.
А то пытаюсь запустить мегу16 и ls020... пока что только фон устанавливает, а буковки не рисует sad.gif
хотя все пишуто что это:http://www.superkranz.de/christian/S65_Display/data/simple_display3.zip
работает... а у меня не хочет может руки не из того места ростут wink.gif
BelTech
Вот как и обещал, выкладываю проект.Пока всё только основное,но можно добавить доп.функции(производные от основных).

P.S.Чего-то вывод значения из переменной перестал работать,нпверное где-то чего-то накосячил.
QuickWitted
Куда выложил то?
(во всяком случае у меня в твоём письме вложений не видно...) sad.gif

если можно со схемой подключения...
Wano
Ну так нужна функция рисования окружности? Рисуется отлично,писал по мануалу.
На счёт s65.

QuickWitted хотел указатель

1) Фирма изготовитель телефона Siemens
1.А) Протокол обмена последовательный SPI
1.A.1) Дисплей от Siemens CX65/CX70/CX70v/CXI70/CXT65/CXT70/CXV65/CXV70/M65/SX65/SK65/S65/SP65
- цветной ( 65000 цветов)
1.A.2)Габариты вид. области - 45х30мм(может ошибаюсь) TFT со светодиодной подсветкой.
Разрешение - 132х176. Виды контроллеров LS020xxx LPH88xxxx L2F50xxx.
1.A.3)Валить на http://www.superkranz.de/ а также туча страниц разговора в этой теме.

Единственное, продаётся экран S65 в рамке. Ичто это обозначает я не спрашивал,но цена выше.
~phase
Цитата(BelTech @ Jun 24 2007, 19:02) *
Вот как и обещал, выкладываю проект.Пока всё только основное,но можно добавить доп.функции(производные от основных).

P.S.Чего-то вывод значения из переменной перестал работать,нпверное где-то чего-то накосячил.

Пасиба, только некоторых либов вроде нехватает.
Wano
Люди,насущный вопрос. А что было или не было решено с кадровой синхронизацией? Сказали что её нет,а раз её нет и нет возможности её найти,то выходит сложно создать какое-то движение,всплывающие меню ,медленное перелистывание текста. Мож кто пытался что-нить посложнее статики отобразить?
BelTech
Подключение дисплея взято на сайте http://www.superkranz.de/ (Using_the_Siemens_S65.pdf),мега запитана от 5V, lcd от 3v, делитель напряжения на резисторах : верхнее плечо 470 ом,нижнее 560 ом.

Сейчас думаю как замутить меню с вложениями.Может у кого есть какие наработки?



так что насчёт функции окружности?
Допоялся
Немогу подключить дисплей от Nokia6100 делал по вот этой схеме http://thomaspfeifer.net/nokia_6100_display.htm
Может есть у ковонить схемы подключения этого дисплея , а то я уже незнаю что с ним делать.
yarunt
Цитата(Wano @ Jun 25 2007, 19:34) *
Люди,насущный вопрос. А что было или не было решено с кадровой синхронизацией? Сказали что её нет,а раз её нет и нет возможности её найти,то выходит сложно создать какое-то движение,всплывающие меню ,медленное перелистывание текста. Мож кто пытался что-нить посложнее статики отобразить?

Ну чего же есть, нет скрола . Синхронизация работает таким макаром вводим команду $ef90, $0500 или $0504 поворачивает развертку,$08*начало по горизонтали ,$09* конец по горизонтали,$0a*начало по вертикали ,$0b*конец по вертикали , эта команда переносит пиксель на начало задонного раздела ,после закачиваеш данные.
Wano
Цитата(Допоялся @ Jul 5 2007, 12:08) *
Немогу подключить дисплей от Nokia6100 делал по вот этой схеме http://thomaspfeifer.net/nokia_6100_display.htm
Может есть у ковонить схемы подключения этого дисплея , а то я уже незнаю что с ним делать.


А вроде всё верно. Поищи ссылку на форуме на другого немца. Много раз говорили. Всё пашет как часы. Правдо ваша ссылка с трёхмерной графикой - это уже круто. Жаль что все данные валят на экран с компа,а не решаются на контроллере.
Допоялся
Я или чегото непонел зачем комп ? Я контролер прошил ошибок при прошивке некаких невыдало подключаи и нечего на жк невыводится !!! Тамже вроде токо тест и все зачем комп ?
QuickWitted
Если кому интерестно то:

Nokia 3310/3330 display benytter en "Phillips PCD8544" kontroller.
http://www.jfboll.dk/avr/menu2.php?valg=1&...4ec12a50cd57339
lomtev
Парни, наверное этот вопрос вас задолбал, но все же. Как подключить дисплей от сименс м65, у кого были траблы с этим, поделитесь как решили. Прошил мегу32 на 16МГц, все пучком. При компиляции никаких ошибок. Прошивку и схему подключения скачал у уже всем измевестного сосисочника из приведенных им примеров (Да кстати LS020xxxx, забыл сказать=) ). Так вот. Не пашет, сволочь. Черный экран. Запустил прошивку в VMLAB чтобы посмотреть что программно происходит на ногах. Тема следующая... все вывода в высоком состоянии, потом начинается видать инициализация SPI(ris1), лог ножек меняется и сохраняется 1 мс, потом идут скачки на выводах PB7 (RS) и PB0 (CS) (см. ris2), продолжается это 0,1 мс, спустя 7мс начинается следующие прыжки, затихает и повторяется через 50 мс и уже долго-долго. Почему PB2 (MOSI) не скачет? Может ошибка в запуске spi? У него все функции написаны на asm, а я только в с++ разбираюсь.
sadat
А кто сказал, что PB2 это MOSI??? MOSI по даташиту на PB5 лапке, и, если реализация спи аппаратная, данные на ней и тусуются....
lomtev
Нет, инициализациция идет программно:

;void port_init_io(void)
.global port_init_io
port_init_io:
; setup serial data I/O pins

cbi PORTB, LCD_RESET ; display reset
sbi DDRB, LCD_RESET ; set reset as output
sbi DDRB, LCD_MISO ; MISO is always input in SPI
sbi DDRB, LCD_MOSI ; MOSI must be set as output for SPI
sbi PORTB, LCD_CS ; deselect display
sbi DDRB, LCD_CS ; SS must be output for Master mode to work


cbi PORTB, LCD_SCK ; set SCK lo
sbi DDRB, LCD_SCK ; set SCK as output
sbi PORTB, LCD_MISO ; enable pull up of MISO to avoid floating input

sbi PORTB, LCD_RS ; start with RS=high
sbi DDRB, LCD_RS ; RS signal is output

; setup serial data interface
; select clock phase positive going in middle of data
; master mode
; enable SPI
; speed is CPUclock/2

ldi r24,(1<<MSTR) | (1<<SPE) | (1<<SPR0) ; Master Mode, Enable SPI, fCPU/16 clock
out SPCR,r24

ldi r24,1 ; double speed bit
out SPSR,r24

ldi r24,1
ldi r25,0
rcall mswait ; wait one ms to have a nice reset
sbi PORTB, LCD_RESET ; release reset
in r24,SPSR ; clear status
ret

Где:

#define LCD_CS PB0
#define LCD_RESET PB6
#define LCD_RS PB7
#define LCD_MOSI PB2
#define LCD_MISO PB3
#define LCD_SCK PB1

Разводка самого проца - дисплея см ris3.
На рисунке указана мега128, у меня 32.
Все темы в мэйк файле я изменил на 32.
У меня есть мысля, не медленно ли у меня работает спи, если стоит кварц на 16МГц, его делим на 16, получаем 1МГ, а надо вроде как я понял больше 10.
sadat
Увы, пока "глюки в голове" - ничего корректно работать не будет.
По программе - АППАРАТНАЯ реализация SPI интерфейса, а это означает БЕЗУСЛОВНОЕ использование назначенных пинов в соответствии с документацией на тип микроконтроллера.
Дисплей инициализируется и при таком медленном SPI, что сигналы можно отлаживать на светодиодах :-)
ПОЭТОМУ:
#define LCD_MOSI PB5
#define LCD_MISO PB6 (он не используется в работе)
#define LCD_SCK PB7
ОДНОЗНАЧНО!
Остальные (RESET, CS, RS) на других свободных выводах порта.
Попробуй, должно помочь.
lomtev
Огромное спасибо. Все заработало. Но вот возникла следующая проблема, но конечно я не буду так делать часто но все же. При тупом выдергивании шнура питания на экране остается след. Так и должно быть?
sadat
Увы, да. Попробуй в мобилке с таким дисплеем в рабочем состоянии вытащить аккумулятор - такой же эффект...
Хотя надо поставить вывод мк на детектор пропадания питания - как чуть меньше 4,8в - так сразу выводим "черный экран".

Хотя, вполне возможно, я и ошибаюсь и как-то это уже решено.
lomtev
Ну да ладно. Мне надо не на мультимедиа а на измерительный девайс, если честно то мне и цветов не надо было столько, просто график функции выводить. Зато мне над как-то засунуть в один МК два SPI один на память другой на дисплей. Вообще возможно такое? Если не два сразу то хоть поочереди. Но лучше сразу.
И почему-то на выводе 2.9В при включенном шлейфе с дисплеем напряжение 4В, отключаю шлейф и напряжение падает... Что за хрень... Но работает, пока еще не спалил...=)
SashaGubov
Цитата(lomtev @ Aug 23 2007, 21:33) *
Ну да ладно. Мне надо не на мультимедиа а на измерительный девайс, если честно то мне и цветов не надо было столько, просто график функции выводить. Зато мне над как-то засунуть в один МК два SPI один на память другой на дисплей. Вообще возможно такое? Если не два сразу то хоть поочереди. Но лучше сразу.
И почему-то на выводе 2.9В при включенном шлейфе с дисплеем напряжение 4В, отключаю шлейф и напряжение падает... Что за хрень... Но работает, пока еще не спалил...=)


Ипользуй программный SPI , скорость почти такая-же, лучше тот, который полностью расписан по битам
lomtev
Цитата(SashaGubov @ Aug 24 2007, 08:11) *
Ипользуй программный SPI , скорость почти такая-же, лучше тот, который полностью расписан по битам

Я просто запускал один SPI, причем только в CVAVR, так что как запустить по битам два я вообще не понимаю. И они будут работать вместе или только если один оключить, второй включить. Регистры же пишутся только одни, так что придется самому.
Или побитово, это я должен описать работу каждой ножки, например функция send - поднять лог одной, поднять другой, а через третью посылать данные? На енто я точно не способен, с регистрами легче
SashaGubov
Цитата(lomtev @ Aug 24 2007, 15:15) *
Я просто запускал один SPI, причем только в CVAVR, так что как запустить по битам два я вообще не понимаю. И они будут работать вместе или только если один оключить, второй включить. Регистры же пишутся только одни, так что придется самому.
Или побитово, это я должен описать работу каждой ножки, например функция send - поднять лог одной, поднять другой, а через третью посылать данные? На енто я точно не способен, с регистрами легче

Для экрана используйте функцию посылки через обыкновенное дрыгание ногами!
Ну а для памяти аппаратный......
void lcd_write(uint8_t a)
{
LCD_SCK=0;if (a & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
}
Только ноги правильно настройте.....
#define LCD_RS PORTC.4
#define LCD_RESET PORTC.3
#define LCD_CS PORTC.2
#define LCD_SCK PORTC.1
#define LCD_DAT PORTC.0
Использовать можно любые....
sadat
Цитата
И почему-то на выводе 2.9В при включенном шлейфе с дисплеем напряжение 4В, отключаю шлейф и напряжение падает... Что за хрень... Но работает, пока еще не спалил...=)


Это из-за защитных диодов по выводам данных внутри дисплея. Надо согласовывать уровни, так, как сделано у немцев (резисторы) либо логикой, либо диодами. Мк питается-то от пяти вольт, на линии данных - 4.6в, после встроенных защ. диодов на питании 4 вольта и формируется.
К стати, дисплей может работать и без питания - внутренее потребление около 1 ма, может и на "паразитном" питании сидеть, только это не совсем правильно ;-)

От перенапряжения по входам дисплей может сдохнуть, люди уже жаловались.....
lomtev
Цитата(sadat @ Aug 24 2007, 22:43) *
Это из-за защитных диодов по выводам данных внутри дисплея. Надо согласовывать уровни, так, как сделано у немцев (резисторы) либо логикой, либо диодами. Мк питается-то от пяти вольт, на линии данных - 4.6в, после встроенных защ. диодов на питании 4 вольта и формируется.
К стати, дисплей может работать и без питания - внутренее потребление около 1 ма, может и на "паразитном" питании сидеть, только это не совсем правильно ;-)

От перенапряжения по входам дисплей может сдохнуть, люди уже жаловались.....

Спасибо. Все понял. Что-нибудь придумаем.

Цитата(SashaGubov @ Aug 24 2007, 16:21) *
Для экрана используйте функцию посылки через обыкновенное дрыгание ногами!
Ну а для памяти аппаратный......
void lcd_write(uint8_t a)
{
LCD_SCK=0;if (a & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (a & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
}
Только ноги правильно настройте.....
#define LCD_RS PORTC.4
#define LCD_RESET PORTC.3
#define LCD_CS PORTC.2
#define LCD_SCK PORTC.1
#define LCD_DAT PORTC.0
Использовать можно любые....

Сидел думал - Что за хрень, а потом ан нет стал догонять.... Значит для дисплеяя нужен только SCK и DAT, а у меня еще и CS дергается.
SashaGubov
Цитата(lomtev @ Aug 24 2007, 22:33) *
Спасибо. Все понял. Что-нибудь придумаем.
Сидел думал - Что за хрень, а потом ан нет стал догонять.... Значит для дисплеяя нужен только SCK и DAT, а у меня еще и CS дергается.

CS тоже нужен! Посмотрите по примерам...
lomtev
Цитата(SashaGubov @ Aug 25 2007, 13:38) *
CS тоже нужен! Посмотрите по примерам...

Вроде где-то были. Взглянем. Всем спасибо a14.gif . Если что че-нить ще глупое спрошу twak.gif .
k34Nex
Здравствуйте уважаемые электронщики!У меня есть M65 lcd с контроллером L2F50** и еще есть огромное желание прикрутить его к МК. Но я не знаю WinAVR и контроллер у меня Мега16. Знаю основы Си и CVAVR. Мне бы только инициализировать его и все) Помогите новичку плз! Перечитал форум, скачал примеры с немецкого форума но нифига не разобрался)Подскажите, как инициализировать чтобы написать в cvavr! Заранее благодарен всем!!
-=Женек=-
http://electronix.ru/forum/index.php?showt...6563&st=300

Вот где-то на этой странице есть две ссылки на архивы с библиотекой под CV.

От себя добавлю - есть там файл disp.lib, так вот он викидывал ошибку при ассемблировании до тех пор, пока после всех строк ассемблерных вставок (#asm/#endasm) я не поубирал комментарии. Так что если не будет запускаться - уберите их.
lomtev
Цитата(SashaGubov @ Aug 24 2007, 16:21) *

Вот и назрел тупой вопрос.
Привожу код побитового SPI? много, но все очень понятно.
файл simple.c

#include <mega32.h>
#include <delay.h>

#include "lcd_function.h"

int main(void)
{
PORTB=0x5D;
DDRB=0xFF;

// backlight PWM generation
// use timer 2 in fast PWM mode for this
PORTD = 0<<7; // clear port before enable
DDRD = 1<<7; // will be used for OC2, must be output
TCCR2 = 1<<3 | 1<<6 | 1<<5 | 1<<0;
TCNT2=0x00;
OCR2=85;
delay_ms(1);
lcd_init();
while (1)
{
}
return(0);
}


файл lcd_function.h

#include <mega32.h>
#include <delay.h>

#define cmd 1
#define dat 0

#define LCD_CS PORTB.0
#define LCD_RESET PORTB.1
#define LCD_RS PORTB.2
#define LCD_DAT PORTB.5
#define LCD_SCK PORTB.7

char i=0;
char datcom=0;
int word=0;

int INIT1[12]={0xFDFD,0xFDFD,0xEF00,0xEE04,0x1B04,0xFEFE,0xFEFE,0xEF90,0x4A04,0x7F3F
,0xEE04,0x4306};

int INIT2[20]={0xEF90,0x0983,0x0800,0x0BAF,0x0A00,0x0500,0x0600,0x0700,0xEF00,0xEE0C
,0xEF90,0x0080,0xEFB0,0x4902,0xEF00,0x7F01,0xE181,0xE202,0xE276,0xE183};

int INIT3[1]={0x8001};

void lcd_write(char,int word);
//инициализация дисплея
void lcd_init()
{

for(i=0; i<12; i++) lcd_write(cmd, INIT1[i]); //Первый массив данных
delay_ms(7);

for(i=0; i<20; i++) lcd_write(cmd, INIT2[i]); //Второй массив данных
delay_ms(50);

for(i=0; i<1; i++) lcd_write(cmd, INIT3[i]); //Третий массив данных
delay_ms(5);
}

//Запись байта
void lcd_write(char datcom, int word)
{
if(datcom & 1) LCD_RS=1; else LCD_RS=0;
LCD_CS=0;
LCD_SCK=0;if (word & 32768) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 16384) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 8192) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 4096) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 2048) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 1024) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 512) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 256) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_CS=1;
}

Проверял в VMLAB, все скачки подходят под числа, никаких сдвигов, все ноги (вроде RESET) в нужном лог. уровне. Причем всё сверял с немцами. различается лишь что я посылаю int, а в рабочем примере char, и у немцев идет небольшая пауза между передаче двух char-ов (пр. их - 0xFD,0xFD, мой 0xFDFD), но кристалл в это время все равно не выбран так что ни на что влиять не должно.
Я вообще в непонятках. Как я понимаю после того что я привел выше на дисплее должен появиться мусор. Однако черный экран.
Заранее огромной спасибо за помощь. help.gif
lomtev
Отвечать на предыдущий вопрос не надо, все пошло. Свои "мусор" я вывел. Теперь. Кто подскажет как совместить лог уровни, что бы там где должно 2.9В быть не было 4В. На умных словах не пойму в упор, только уж если совсем на пальцах, так что если можно схемку - какие резисторы куда вешать. Заранее спасибо.
-=Женек=-
можно без резисторов. У меня Мега32 работала на 3,3 вольтах на 16 МГц. Оба вывода питания 2.9 и 1.8 вольт можно совершенно безболезненно цеплять на 3,3 вольти ничего дисплею не будет.
lomtev
Цитата(-=Женек=- @ Aug 29 2007, 09:05) *
можно без резисторов. У меня Мега32 работала на 3,3 вольтах на 16 МГц. Оба вывода питания 2.9 и 1.8 вольт можно совершенно безболезненно цеплять на 3,3 вольти ничего дисплею не будет.

Питаюсь от USB с матери в компе. Если есть мысль где там 3.3 буду рад узнать.
iDenis
Цитата(skripach @ Feb 10 2007, 05:10) *
Народ можеткто нить пробовал разобраться с диспам у которого разрешение больше чем 132х176, например 240х320???????????


Сейчас у Нокиа е61 очень не плохой экран 320 х 240... не только в плане точек но и самого размера экрана, только как за него зацепится пока не представляю... Разпиновку нашел в схеме е61... в остальном черный ящик... какие контроллеры использует Нокиа для таких решений?
lomtev
Доброго времени суток.
Никто не сталкивался ли со следующей проблемой с LS020.
После инициализации заливаю весь экранчик цветом А, жду двацать милисекунд и пытаюсь залить через ту же функцию но цветом Б и он не хочет. Но перед этим я пытался залисть область следующим образом:

#define cmd 1
#define dat 0

void lcd_pset(char x , char y , int color_line)
{
lcd_write(cmd, 0xEF90);
lcd_write(cmd, 0x0800);
lcd_write(cmd, 0x0985);
lcd_write(cmd, 0x0A00);
lcd_write(cmd, 0x0B85);
lcd_write(dat, 0x000A);

}

Если глаз не замылен то еще

void lcd_write(char datcom, int word) //Запись байта
{
LCD_CS=0;
if(datcom & 1) LCD_RS=1; else LCD_RS=0;
LCD_SCK=0;if (word & 32768) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 16384) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 8192) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 4096) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 2048) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 1024) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 512) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 256) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_CS=1;
}

Так вот. Первая заливка через

lcd_write(cmd,0xEF90);
lcd_write(cmd,0x0500);
lcd_write(cmd,0x0600);
lcd_write(cmd,0x0700);

for (i=0; i<DISP_W*DISP_H; i++) lcd_write(dat,color);

Один раз идет на ура. Повторно не хочет.
Позле первой зааливки не хочет выделяться даже область.
Может кто подскажет? Заранее огромное спасибо.
satellite-plus
Цитата(lomtev @ Sep 1 2007, 00:21) *
Доброго времени суток.
Никто не сталкивался ли со следующей проблемой с LS020.
После инициализации заливаю весь экранчик цветом А, жду двацать милисекунд и пытаюсь залить через ту же функцию но цветом Б и он не хочет. Но перед этим я пытался залисть область следующим образом:

#define cmd 1
#define dat 0

void lcd_pset(char x , char y , int color_line)
{
lcd_write(cmd, 0xEF90);
lcd_write(cmd, 0x0800);
lcd_write(cmd, 0x0985);
lcd_write(cmd, 0x0A00);
lcd_write(cmd, 0x0B85);
lcd_write(dat, 0x000A);

}

Если глаз не замылен то еще

void lcd_write(char datcom, int word) //Запись байта
{
LCD_CS=0;
if(datcom & 1) LCD_RS=1; else LCD_RS=0;
LCD_SCK=0;if (word & 32768) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 16384) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 8192) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 4096) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 2048) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 1024) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 512) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 256) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_CS=1;
}

Так вот. Первая заливка через

lcd_write(cmd,0xEF90);
lcd_write(cmd,0x0500);
lcd_write(cmd,0x0600);
lcd_write(cmd,0x0700);

for (i=0; i<DISP_W*DISP_H; i++) lcd_write(dat,color);

Один раз идет на ура. Повторно не хочет.
Позле первой зааливки не хочет выделяться даже область.
Может кто подскажет? Заранее огромное спасибо.


Попробуй

void clr_scr(void)
{
word i;
sendCMD(0xEF90);
sendCMD(0x0500);
sendCMD(0x0800);
sendCMD(0x0984);// 09xx xx- длина
sendCMD(0x0A00);
sendCMD(0x0BAF);
for (i=0;i<132*178;i++) sendDATA(0);
}
lomtev
Цитата(satellite-plus @ Sep 1 2007, 13:48) *
Попробуй

void clr_scr(void)
{
word i;
sendCMD(0xEF90);
sendCMD(0x0500);
sendCMD(0x0800);
sendCMD(0x0984);// 09xx xx- длина
sendCMD(0x0A00);
sendCMD(0x0BAF);
for (i=0;i<132*178;i++) sendDATA(0);
}

Нет не работает. Я думаю что здесь вопрос не в том какие команды, они то верные, у меня есть подозрение что все дело в дерганье LCD_CS. Но все равно после отправки данных в функцию lcd_write, LCD_CS передергивается из высокого в низкое, после концовки отправки LCD_CS остается в высоком до следующей команды, после отправки следующей команды опять вниз. Вроде должно все работать. Но может надо дернуть пару раз на пустом RS и DATA или RESET?
lomtev
В моем случае явно не хватает какой-то команды типа 0x0800. Потому как попробывал заливать экран через область а не полностью, заливается чудесно и целиком и областью... но только один раз. что за хня не пойму.
lomtev
Спасибо. Все заработало. В прошивке был косяк. Вроде все работает, но все равно как-то криво.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.