Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 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
Lexxa
разобрался. косяк был с ресетом. всё бы хорошо, только вот медленно уж очень.

Хочу заметить, что все телефоны работают совершенно одинаково со всеми тремя типами дисплеев. Я с ними полтора года работал и не было такого, что при замене одного на другой приходилось их подшивать как-то.
sasamy
Цитата(Lexxa @ Apr 29 2009, 16:42) *
Хочу заметить, что все телефоны работают совершенно одинаково со всеми тремя типами дисплеев.


Что значит совершенно одинаково ? Супекранц снял логи инициализации ls020 прямо на теле - попробуйте на другом типе контроллера туже самую инициализацию - может у вас заработает smile.gif Я например плотно занимался lcd от nokia 6100 - там тоже два разных контроллера встречаются - pcf8833(Philips) и s1d15g10(Epson ), протоколы очень похожи - намного ближе чем у сименса но влоб не заработает протокол от одного на другом. Обратной связи там тоже нет, по крайней мере не на всех можно читать с контроллера и я не встречал что кто-то читал с них идентификаторы.
Juras Pr.
В случае с телефоном S65 обратная связь теоретически есть. У разных экранов имеются резисторы между некоторыми контактами, так что процессор телефона может определять тип экрана и использовать соответствующий протокол. Т.е. прошивка может быть "универсальной".
У меня есть все 3 типа дисплея. У LS020 резистор 100кОм между 1-м и 3-м падом, и по 100кОм между 4-м и 7-м падом и между 5-м и 7-м падом, что видно и в даташите. У L2F50 есть резистор 100кОм между 7-м и 1-м, 7-м и 3-м, 7-м и 4-м, 7-м и 5-м падами. У LPH88 подобных резисторов не наблюдается. В принципе, держа дисплей в ресете и подавая некоторые сигналы на некоторые пады нетрудно выяснить, что за дисплей физически подключён к телефону благодоря этим резисторам. Такую проверку, я думаю, можно сделать и на ATmega, правда расточительно будет хранить все три библиотеки в памяти.
sasamy
Цитата(Juras Pr. @ May 1 2009, 22:25) *
В случае с телефоном S65 обратная связь теоретически есть. У разных экранов имеются резисторы между некоторыми контактами, так что процессор телефона может определять тип экрана и использовать соответствующий протокол. Т.е. прошивка может быть "универсальной".


Так я об этом и говорю - телефон все равно как то определяет тип дисплея и использует соответтсвующий протокол - это могут быть различные сочетания логических нолей и единиц на определенных группах контактов при подключении питания например.
Juras Pr.
Цитата(sasamy @ May 1 2009, 21:45) *
Так я об этом и говорю - телефон все равно как то определяет тип дисплея и использует соответтсвующий протокол - это могут быть различные сочетания логических нолей и единиц на определенных группах контактов при подключении питания например.

Надо бы как-нибудь попробовать сделать это определение на меге smile.gif. Кстати, только L2F50 использует 8-й контакт (1.8V), без которого дисплей не работает, а в двух остальных его подключать необязательно.
zheka
Господа, не осилю все 64 страницы...
Кто-нибудь может выложить код загрузки картинки для CodeVision?
Имеется ввиду картинка зашифрованная в коде типа "const unsigned int array[23232] = {
0xB596, 0xB596, 0xB596, 0xB596, 0xADB6, 0xADB6, 0xADB6, 0xADB6, \"
bolt
Цитата
Обратной связи там тоже нет, по крайней мере не на всех можно читать с контроллера и я не встречал что кто-то читал с них идентификаторы.

Есть команда по которой контроллер дисплея выдает свой ID. Проги типа Джокера этот ID успешно считывают.
Doniak
Имеется дисплей LPH88 (Siemens CX65) на мега16 инициализировал нормально.
Подключил к АТ91SAM7S32 не удаётся запустить sad.gif
в архиве исходник может подскажетев чом ошибка ?
sasamy
Цитата(bolt @ May 3 2009, 02:51) *
Есть команда по которой контроллер дисплея выдает свой ID. Проги типа Джокера этот ID успешно считывают.

В оригинальных даташитах эти команды есть, но реально клонов очень много, далеко не все поддерживают двунаправленный spi. К примеру у меня был pcf8833 совместимый lcd - он не принимал блоки данных больше 2 кб. Когда я работал с текстом это было незаметно но когда стал писать драйер для фреймбуфера и нужно было все время обновлять весь экран (порядка 14 кб) это всплыло, хотя о таком факте я вообще не встречал упоминания. Китайцы на всем экономят smile.gif
Шурила
Цитата(Doniak @ May 3 2009, 21:17) *
Имеется дисплей LPH88 (Siemens CX65) на мега16 инициализировал нормально.
Подключил к АТ91SAM7S32 не удаётся запустить sad.gif
в архиве исходник может подскажетев чом ошибка ?

Не разбирался. Но здесь мой код для АТ91SAM7S64 под дисплей LPH88 (IAR 5.2). Может поможет.
Схема у меня на сайте.
Нажмите для просмотра прикрепленного файла
sasamy
Цитата(Doniak @ May 3 2009, 21:17) *
Имеется дисплей LPH88 (Siemens CX65) на мега16 инициализировал нормально.
Подключил к АТ91SAM7S32 не удаётся запустить sad.gif
в архиве исходник может подскажетев чом ошибка ?


Не силен в самах, первое что бросилось в глаза - разве там будет pio переключаться когда вы порт перевели в режим периферии ?

AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, AT91C_PA12_MISO | AT91C_PA13_MOSI | >>>AT91C_PA11_NPCS0<<< | AT91C_PA14_SPCK,0);
а потом:
void CSpuls(void){
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, AT91C_PIO_PA11);
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, AT91C_PIO_PA11);
}
Потом под рукой даташита нет - в коментах написано
// SPI Init: CS0, Master, >>>16 Bit<<<, Clock/ 0x10
а работаете как с 8-битными данными.
Doniak
Цитата(sasamy @ May 4 2009, 00:17) *
Не силен в самах, первое что бросилось в глаза - разве там будет pio переключаться когда вы порт перевели в режим периферии ?

AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, AT91C_PA12_MISO | AT91C_PA13_MOSI | >>>AT91C_PA11_NPCS0<<< | AT91C_PA14_SPCK,0);
а потом:
void CSpuls(void){
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, AT91C_PIO_PA11);
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, AT91C_PIO_PA11);
}
Потом под рукой даташита нет - в коментах написано
// SPI Init: CS0, Master, >>>16 Bit<<<, Clock/ 0x10
а работаете как с 8-битными данными.

Цитата
AT91C_PA11_NPCS0

AT91C_PA11_NPCS0 - пробывал не переводить результата нет

Цитата
Потом под рукой даташита нет - в коментах написано
// SPI Init: CS0, Master, >>>16 Bit<<<, Clock/ 0x10

исходник настройки SPI брал с дисплея LS020 коменты сохранились но настройки сделал на 8бит , Clock/4

Шурила спасиба за исходник долго по интернету искал подобное под АТ91.
Цитата
Не разбирался. Но здесь мой код для АТ91SAM7S64 под дисплей LPH88 (IAR 5.2). Может поможет.
Схема у меня на сайте.

а функцыи как в либе KEILa оО
Не могли бы объяснить вот эту функцию что она делает ( её внутренности ) spi_pld (0);
Шурила
Цитата(Doniak @ May 4 2009, 08:24) *
...
Не могли бы объяснить вот эту функцию что она делает ( её внутренности ) spi_pld (0);

spi_pld (0); - это обращение к другому CS SPI (в данном случае CS PLD с которой общение тоже по SPI), соответственно CS дисплея ставится в "1".
Как бы понятно из названия функции lcd_cshigh();
Doniak
Цитата(Шурила @ May 4 2009, 09:30) *
spi_pld (0); - это обращение к другому CS SPI (в данном случае CS PLD с которой общение тоже по SPI), соответственно CS дисплея ставится в "1".
Как бы понятно из названия функции lcd_cshigh();


Спасиба всё заработало проблема оказалась в том что неправельно дёргал ногой CS. В настройках выбрал переменую переферию и теперь меняю её при вызове функцые CSpuls(); и всё работает smile.gif
Немного не ясно какой должна быть фаза синхрон сигнала вродибы в любой работает...
bolt
пользуя инфу от Juras Pr. малость перекроил инициализацию для LS020. Хуже не стало, но желательно перепроверить
Код
//-- step 1 ------------
send(0xef00);//set bank 00h
send(0xee0c);
send(0x1b04);
send(0xef90);//set bank 90h
send(0x4a04);
send(0x7f1f);//8 bit color
send(0x4306);//
del_us(2600);//~7ms

//-- step 2 ------------
send(0x0a00);//X start
send(0x0800);//Y start
send(0x0baf);//X end
send(0x0983);//Y end
send(0x0500);//vertical
send(0x0600);//RAM cursor Y=0
send(0x0700);//X=0
send(0x0080);//?
send(0xefb0);//set bank b0h
send(0x4902);//positive

send(0xef00);//set bank 00h
send(0x7f01);
send(0xe276);
send(0xe183);
send(0x8001);// OSC on
del_us(1800);//~5ms - end init

//-- RAM to TFT --------

send(0xef90);//set bank 90
send(0x0000);// display RAM

RS=1, CS распаян на GND, Reset - на RC. После подачи питания задержка 10ms
Шурила
Цитата(Doniak @ May 4 2009, 11:50) *
Немного не ясно какой должна быть фаза синхрон сигнала вродибы в любой работает...

Эта инфа есть в Using_the_Siemens_S65_Display.pdf
картинка из этого документа. Надо сделать так как на картинке, иначе могут быть казусы, ну например при изменении температуры или питания.
Нажмите для просмотра прикрепленного файла
bolt
Глупость какая! Всегда CS глухо распаивал на всех LCD. Пока чип на шине один - харчами можно не перебирать. Аналогично и RS - пин считывается на последнем такте, но удобно выставить направление до передачи данных.
Или извольте обосновать:
Цитата
..могут быть казусы, ну например при изменении температуры или питания
Шурила
Цитата(bolt @ May 4 2009, 17:28) *
Глупость какая! ...

Вообще то речь шла о данных и клоке biggrin.gif
И если эту времянку не соблюсти, то тогда и проявляется "визит эффект" - вчера работало, а сегодня нет.
Так что не разобравшись... не стОит...
Doniak
Цитата(Шурила @ May 4 2009, 17:44) *
Вообще то речь шла о данных и клоке biggrin.gif
И если эту времянку не соблюсти, то тогда и проявляется "визит эффект" - вчера работало, а сегодня нет.
Так что не разобравшись... не стОит...

Не бывало у вас такова что при иницыализацые дисплэй становился серым(тусклым), а при повторном запускался нормально?
Шурила
Цитата(Doniak @ May 4 2009, 18:15) *
Не бывало у вас такова что при иницыализацые дисплэй становился серым(тусклым), а при повторном запускался нормально?

Да, было, да и к сожалению бывает. Но пока так и не понял где проблема.
Т.е. понятно, что в инициализации проблема, но? что где портится не определил.
Причем после изменения программы (в общем совсем другом месте, к инициализации не относящимся) дисплей начинает работать правильно или наоборот сбоит.
Возможно каким то образом влияет оптимизация. cranky.gif
bolt
что данные читаются по фронту CLK сообщается практически во всех dsh. С температурной компенсацией неправильная передача данных связи не имеет wink.gif
Цитата
Не бывало у вас такова что при иницыализацые дисплэй становился серым(тусклым), а при повторном запускался нормально?

Если короткие задержки, то так и будет. Для LS020 они все могут быть по 10мс.
Еще такой эффект можно получить поставив задержку до
Код
send(0xef90);//set bank 90h
send(0x4a04);
send(0x7f1f);//8 bit color
send(0x4306);//

хотя банк 90 к питанию, по идее, отношения не имеет.
Doniak
Цитата
Если короткие задержки, то так и будет. Для LS020 они все могут быть по 10мс.

между чем короткие задержки?


Может причина в длине проводников от МК к дисплэю. Заметил такую закономерность если перегнуть шлейф дисплэй крайне редко запускается нормально,а если выпрямить то ровно через раз. При этом ево надо выключять програмно :
lcd_comtype(0x0D);
lcd_comdat(0x05,0x05);
lcd_comtype(0x0E);
lcd_comdat(0x1D,0x1F);
lcd_comtype(0x03);
lcd_comdat(0x00,0x00);
bolt
Цитата
между чем короткие задержки?

Между установкой напряжения и следующей командой. В dsh который к сожалению для LR38826 отсутствует, все это расписано. В моей версии инициализации задержек три - после подачи питания, первого шага и запуска встроенного генератора.

У Вас дисплей и так запускается через раз, что свидетельствует о багах программы или монтажа. Гляньте скопом сигналы на CLK & SDA.
Doniak
Цитата
У Вас дисплей и так запускается через раз, что свидетельствует о багах программы или монтажа. Гляньте скопом сигналы на CLK & SDA.

Запускается то он всегда, а вот "нормально" через раз. В тусклых тонах он работает медленно, цветопередача неправильная всё серым кажется. пробивал ставить задержки перед SPCK, между последовательными передачами, без результатно или вообще не запускается. Нужно будит еще попробовать задержку поменять между выбора микросхемы
bolt
может это поможет
Код
send(0xef00);//bank PWR
send(0xee0f);//Vlcd (contrast)
send(0x1b04);//Boost Level?
send(0xef90);//bank DC1
send(0x4a04);//bias (яркость)
send(0x7f1f);//8 bit color
send(0x4306);//V?
del_us(2300);//10ms
......
send(0xef00);//bank PWR
send(0x7f01);//Vsinc flag
send(0xe276);
send(0xe183);
send(0x8001);//OSC on
del_us(2300);//10ms - end init


значения в 1b & 43 регистре как раз здорово влияют на цветопередачу. А CS можешь смело соединять с GND.
Doniak
Цитата(bolt @ May 4 2009, 23:33) *
может это поможет


значения в 1b & 43 регистре как раз здорово влияют на цветопередачу. А CS можешь смело соединять с GND.


Мы про один и тотже дисплей говорим (LPH88) ?
1В и 43 регистров в коде кранза не нашел, здесь HD66773.pdf тоже не нашел. В куске кода я не пойму где регистры и где значения...
bolt
Цитата(bolt @ May 4 2009, 23:33) *
может это поможет
Код
send(0xef00);//bank PWR
send(0xee0f);//Vlcd (contrast)
send(0x1b04);//Boost Level?
send(0xef90);//bank DC1
send(0x4a04);//bias (яркость)
send(0x7f1f);//8 bit color
send(0x4306);//V?
del_us(2300);//10ms
......
send(0xef00);//bank PWR
send(0x7f01);//Vsinc flag
send(0xe276);
send(0xe183);
send(0x8001);//OSC on
del_us(2300);//10ms - end init


значения в 1b & 43 регистре как раз здорово влияют на цветопередачу. CS можешь смело соединять с GND, а RS=1 на время отладки инициализации. Используем только SDA & CLK, ориентируясь на отображение мусора в RAM
bolt
Цитата
Мы про один и тотже дисплей говорим (LPH88) ?

НЕТ! Все мои сообщения относятся к LS020xx, dsh к которому отсутствует.
А Вам нужен HD667A66.pdf
zheka
але-алешеньки...
Кто-нибудь поделитесь функцией вывода картинки для CodeVision
Шурила
Интересная ссылка IMHO
http://www.juras-projects.org/eng/lcd.php
bolt
хорошая работа! Спасибо!
В спецификации к LQ022B8UD05, где стоит контроллер LR38825, SHARP расколдовывает еще пару команд
FDFDFDFD - software reset
FEFEFEFE - host reset
Правда LS020 уверенно запускается без этих команд и плавной регулировки напряжений - REx регистры
Doniak
Вот ещё интересная сцылка http://datagor.ru/microcontrollers/686-pri...s-s65-k-mk.html
Может есть кто там зареген? скиньте пожалуйста исходники с сайта.
Doniak
Полистал ДШ на кристал дисплея LPH88. Чтоб проследить где проблема в иницыализацыи зделал выборку основных команд. и стал эксперементировать... smile.gif Подбором установил что если подобрать паузы между установкой регистров дисплей иницыализируется хорошо, без всяких изменений в цвете серых оттенков. Моя иницыализацыя виглидит так:
Код
lcd_comtype(0x0C);
  lcd_comdat(0x00, 0x01);
            delay_ms(40);
  lcd_comtype(0x03);
  lcd_comdat(0x00, 0x0C);
            delay_ms(40);
  lcd_comtype(0x0D);
  lcd_comdat(0x0A, 0x1A);
           delay_ms(40);
  lcd_comtype(0x04);
  lcd_comdat(0x07, 0x7F);
           delay_ms(40);
  lcd_comtype(0x0E);
  lcd_comdat(0x2D, 0x11);
           delay_ms(40);
  lcd_comtype(0x07);
  lcd_comdat(0x00, 0x33);        
CSpuls();


Код
void delay_ms (long Del){      // Delay in ms
  long i;
  Del = Del * 8000;
  for (i = Del; i > 0; i--);
}

Частота МК(AT91SAM7S32) 26МГц с копейками
Juras Pr.
Я заметил, что у LPH88 с цветами становится что-то не то, а точнее - нарушается гамма, если поднять напряжение питания с 2.9В до 3.3В. Получается, что самые тёмные цвета начинают светлеть. Инициализация от Кранца.
Doniak
Цитата(Juras Pr. @ May 7 2009, 22:43) *
Я заметил, что у LPH88 с цветами становится что-то не то, а точнее - нарушается гамма, если поднять напряжение питания с 2.9В до 3.3В. Получается, что самые тёмные цвета начинают светлеть. Инициализация от Кранца.

А переменный резистор в зади дисплея не помогает?
Juras Pr.
Не пробовал его крутить, потому что на подключенном дисплее к нему трудно добраться.
bolt
Цитата
...нарушается гамма, если поднять напряжение питания с 2.9В до 3.3В.

HM17CM4101 который в мелких сименсовских дисплеях тоже сильно реагирует на плавающее питание. Тут или хороший стабилизатор надо, или коррекцию настроек
sonycman
Цитата(Cyber_RAT @ Jan 28 2009, 14:59) *
собирал кто подсветку на lm2705 ?
у меня что-то через раз включается (вернее включается в полнакала), а иногда нормальная яркость, но на светлом фоне видно помаргивания. sad.gif
может кто имел опыт работы с данными микрушками?
p.s. осцилла нету под руком посмотреть что там происходит

Мне они попадались. Правда, LM2704. Но 2705 из той-же оперы. Отвратные чипы.
Собирал макетку вот по этой схеме, из "родного" даташита:
Нажмите для просмотра прикрепленного файла

Стабилизации практически нет, изменение напряжения Vin чётко прослеживается на выходе стабилизатора, и хорошо заметно на глаз по меняющейся яркости светодиодов.

Заменил микросхему на аналогичную - LM2733 (остальные детали не менялись), и всё встало на свои места.
Идеальная стабилизация, при таком же корпусе SOT-23.
Так что рекомендую.

Цитата(МП41 @ Feb 4 2009, 19:23) *
С левыми микрухами могут быть проблемы. Обычно очень размытая маркировка.

Маркировка в порядке, чёткая, S28B. Пробовал три микросхемы из одной поставки.
John Silver
Юзаю LM3519
Доволен.
Высокая частота, маленькая индуктивность, возможность управления яркостью с помощью ШИМа.
Но дорогая - 5$

А у 27xx можно управлять яркостью?
В доках прямых указаний не увидел, может кто пробовал?
sonycman
Цитата(John Silver @ May 18 2009, 23:26) *
Юзаю LM3519

Жаль, там жёстко задан ток на 20 ма, для подсветки LS020 многовато.
Но управление яркостью может быть полезно smile.gif
Cyber_RAT
c LM2705 разобрался... при питании ее от 5 вольт по вышеприведенной схеме возникали глюки, описываемые раньше.
кинул питание на 3.6в (благо есть) стала работать стабильно.
МП41
Многие импульсные преобразователи могут работать нестабильно из-за плохой индуктивности, а именно, когда у катушки низкая добротность. Такое происходит, когда вместо нормальной катушки берут аксиальный зелёненький дроссель с полосками. Наблюдал подобное на MC34063.
sonycman
Цитата(МП41 @ May 19 2009, 14:50) *
Многие импульсные преобразователи могут работать нестабильно из-за плохой индуктивности, а именно, когда у катушки низкая добротность. Такое происходит, когда вместо нормальной катушки берут аксиальный зелёненький дроссель с полосками. Наблюдал подобное на MC34063.

Или при недостаточной ёмкости входного/выходного конденсаторов. Плюс длинные проводники добавляют проблем.
К слову, юзался именно зелёный аксиальный дроссель, так как фирменных катушек на такой маленький номинал у меня нет.

Однако факт, что 2733 вполне работоспособна там, где 270х никоим образом работать не хотят.
SashaGubov
я тож LM3519, зачетная микруха, шимом удобно рулить
John Silver
Ну тыкните, кто-нить, ШИМом на 27xx, а то зело интересно.

Цитата(sonycman @ May 19 2009, 05:56) *
Жаль, там жёстко задан ток на 20 ма, для подсветки LS020 многовато.
Но управление яркостью может быть полезно smile.gif

Вроде стандартный ток. А кому много, SashaGubov ясно дал понять "ШИМ-рулез".
sonycman
Цитата(John Silver @ May 28 2009, 02:41) *
Вроде стандартный ток. А кому много, SashaGubov ясно дал понять "ШИМ-рулез".

Стандартный для LS020 - 15 ма.
А ШИМ никак не уменьшит мгновенное значение тока.

Я вообще не вижу особого смысла в регулировке яркости. Максимальная - самое то.
А остальное - глаза ломать laughing.gif
Разве что в полной темноте...

Это я так, побрюзжал немного... не бейте, если что smile.gif

ЗЫ: проблемка тут возникла.
Недавно занимался с одним OLED дисплеем, так его можно выключать (типа скрин-сэйвера), просто сняв с него +12 вольт.
При этом его контроллер остаётся запитанным от 3.3в и всё содержимое видеопамяти тоже будет на месте при последующем включении (подаче 12в).
Очень удобно, не надо хранить снимок экрана в памяти контроллера или перерисовывать его полностью заново.

А вот с LS020 так не получится?
А то пока просто подсветку выключаю, чтобы не жечь зря диоды...
John Silver
Цитата(sonycman @ May 28 2009, 02:19) *
Я вообще не вижу особого смысла в регулировке яркости. Максимальная - самое то.
А остальное - глаза ломать laughing.gif
Разве что в полной темноте...

У меня бортовой комп для авто, без регулировки - никак.
Да и домашние применения планирую, тоже ночью прожектор получится еще тот.
bolt
Удачно сделана подсветка в авторском варианте - аппаратный ШИМ МК управляет бустером. Ток подсветки ес-но постоянный и может быть изменен как настройками ШИМ, так и просто резистором.
Все GLCD имеют режим "sleep", при котором содержимое RAM не меняется. В цветном дисплее можно отключить только подсветку – это снизит потребление в 10 раз, что большого смысла не имеет, поскольку изображения не видно.
artem79
Кто нибудь юзал дисплей от Motorola C113a cranky.gif
sonycman
Цитата(bolt @ May 28 2009, 13:27) *
Удачно сделана подсветка в авторском варианте - аппаратный ШИМ МК управляет бустером.

Не дай бог ставить такую поделку в конечный девайс. Мало того, что нет никакой стабилизации по току, так ещё и просто схема опасная - легко может возникнуть кз... laughing.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.