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

 
 
> AVR и Siemens M55
dexter_khm
сообщение May 26 2006, 07:21
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-04-06
Пользователь №: 15 990



Здравствуйте проблема такая есть у меня телефон siemens m55 хочу взять его цветной экран и подключить к AVR. Насколько это реально???? Даташит на екран я не нашел.
Go to the top of the page
 
+Quote Post
87 страниц V  « < 12 13 14 15 16 > »   
Start new topic
Ответов (195 - 209)
_sR_
сообщение Feb 24 2007, 23:03
Сообщение #196


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-07-05
Из: Екатеринбург
Пользователь №: 7 077



давно мониторю тему и здесь и у немцев
тоже вот кулибничеством решил позаниматься...
только успеха пока нет.
была у меня платка с Mega128L решил попробовать подключить туда дисплейчик на LS020...
уже все примеры что мог найти просмотрел, осциллом потыкался - все как доктор прописал, а он зараза молчит как пленный партизан.
посему вопрос к тем у кого этот дисплейчик заработал
при выдачи блоков инициализации на экране что-нибудь должно происходить? ну хоть что-нибудь чтоб понять что он работает.
А то у меня вообще 0 реакции.
немного о железе на чем пробую: ATMega128L 8Мгц (сейчас на 12Мгц, вроде работает) индикатор висит
на SPI вместе с другим (разные CS, другой индикатор работает). Пробовал все скорости SPI - никакой реакции. Паузы между блоками инициализации контроллировал на осциллографе - все как надо.
вобщем уже не знаю что еще пробовать...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Feb 24 2007, 23:17
Сообщение #197


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(_sR_ @ Feb 25 2007, 00:03) *
давно мониторю тему и здесь и у немцев
тоже вот кулибничеством решил позаниматься...
только успеха пока нет.
была у меня платка с Mega128L решил попробовать подключить туда дисплейчик на LS020...
уже все примеры что мог найти просмотрел, осциллом потыкался - все как доктор прописал, а он зараза молчит как пленный партизан.
посему вопрос к тем у кого этот дисплейчик заработал
при выдачи блоков инициализации на экране что-нибудь должно происходить? ну хоть что-нибудь чтоб понять что он работает.
А то у меня вообще 0 реакции.
немного о железе на чем пробую: ATMega128L 8Мгц (сейчас на 12Мгц, вроде работает) индикатор висит
на SPI вместе с другим (разные CS, другой индикатор работает). Пробовал все скорости SPI - никакой реакции. Паузы между блоками инициализации контроллировал на осциллографе - все как надо.
вобщем уже не знаю что еще пробовать...

Вам надо проверить дисплей на исправность - воткните его в телефон.
Если же он живой, то надо разбираться.

Во время инициализации на экране ничего не происходит. Только после неё появляется цветной "мусор".
Проверьте тайминги после/перед всеми сигналами на SPI - у меня был затык с сигналом CS, я его поднимал сразу после передачи, а надо после небольшой паузы (1 мкс достаточно).
Также между передачей команд/данных надо поднять CS.

Длина проводов к дисплею должна быть минимальной (несколько сантиметров).

Можно попросить работающий код у тех, у кого всё работает.

По железу всё-ли подключено правильно?
Go to the top of the page
 
+Quote Post
_sR_
сообщение Feb 24 2007, 23:35
Сообщение #198


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-07-05
Из: Екатеринбург
Пользователь №: 7 077



Цитата(sonycman @ Feb 24 2007, 23:17) *
Проверьте тайминги после/перед всеми сигналами на SPI - у меня был затык с сигналом CS, я его поднимал сразу после передачи, а надо после небольшой паузы (1 мкс достаточно).
Также между передачей команд/данных надо поднять CS.

По железу всё-ли подключено правильно?

проверить негде, у одного знакомого есть такой тел, но представляю его реакцию типа "дай телефон я счас в него свой дисплей воткну проверю" smile.gif
подключено вроде правильно благо проводов то немного.
а про паузы сейчас попробую...

увы паузы после поднятия CS не помогли...

Сообщение отредактировал _sR_ - Feb 24 2007, 23:40
Go to the top of the page
 
+Quote Post
sonycman
сообщение Feb 25 2007, 00:07
Сообщение #199


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(_sR_ @ Feb 25 2007, 00:35) *
увы паузы после поднятия CS не помогли...

Не после поднятия - а перед поднятием CS, то есть так:
Выставили RS, опускаем CS (low), передаём команды, пауза 1 мкс, поднимаем CS, меняем RS, опускаем CS, передаём данные, пауза 1 мкс, поднимаем CS.

Как у вас RESET управляется?
Провода к дисплею не длинные?
Питание 3.3 вольта и у меги, и у дисплея?

Фото монтажа нет?
И осциллограммы сигналов нельзя сделать?
Go to the top of the page
 
+Quote Post
_sR_
сообщение Feb 25 2007, 13:36
Сообщение #200


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-07-05
Из: Екатеринбург
Пользователь №: 7 077



Цитата(sonycman @ Feb 25 2007, 00:07) *
Не после поднятия - а перед поднятием CS, то есть так:
Выставили RS, опускаем CS (low), передаём команды, пауза 1 мкс, поднимаем CS, меняем RS, опускаем CS, передаём данные, пауза 1 мкс, поднимаем CS.

Как у вас RESET управляется?
Провода к дисплею не длинные?
Питание 3.3 вольта и у меги, и у дисплея?

Фото монтажа нет?
И осциллограммы сигналов нельзя сделать?

Ну да перед поднятием...
сегодня сделал програмный SPI - без толку
ресет генерится монитором питания (1171СП20) общий и на контроллер и на индикатор, честно говоря есть на него подозрения что фронт там длинноват, но проверить только завтра на работе смогу.
провода сантиметров 20 с разъемом (програмному SPI не должны быть помехой)
питание 3,1 общее для меги и индикатора
выглядит все так
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
sonycman
сообщение Feb 25 2007, 23:04
Сообщение #201


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(_sR_ @ Feb 25 2007, 14:36) *
провода сантиметров 20 с разъемом (програмному SPI не должны быть помехой)
питание 3,1 общее для меги и индикатора
выглядит все так

Провода всё-же длинноваты.
Тут всё зависит от частоты SPI. Попробуйте или сделать короче (до 10 см макс.), или частоту клоков в минимум. Можно посмотреть осциллографом форму сигналов непосредственно на пинах дисплея. Должен быть меандр с минимальными искажениями.
И ещё - что-то не видно работающей подсветки. ЖКИ должен быть белого цвета, а у вас чёрный...
Go to the top of the page
 
+Quote Post
_sR_
сообщение Feb 26 2007, 09:59
Сообщение #202


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-07-05
Из: Екатеринбург
Пользователь №: 7 077



Я ж говорю сделал програмный SPI с частотой клоков 50 кГц.
Подсветка есть просто т.к. питание у меня сейчас батарейное я занизил напругу подсветки до 9 В, ну и соглнышко на него светит.
Сегодня попробую Reset дисплейчика на ногу контроллера повесить...
Go to the top of the page
 
+Quote Post
satellite-plus
сообщение Feb 26 2007, 10:24
Сообщение #203


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 8-01-07
Из: Одесса
Пользователь №: 24 196



Цитата(_sR_ @ Feb 26 2007, 08:59) *
Я ж говорю сделал програмный SPI с частотой клоков 50 кГц.
Подсветка есть просто т.к. питание у меня сейчас батарейное я занизил напругу подсветки до 9 В, ну и соглнышко на него светит.
Сегодня попробую Reset дисплейчика на ногу контроллера повесить...

Возьми рабочий текст и сравни.
Прикрепленные файлы
Прикрепленный файл  display.zip ( 3.62 килобайт ) Кол-во скачиваний: 816
 


--------------------
Опыт - это та чудесная штука, которая позволяет вам узнать ошибку, когда вы ее повторите.
Go to the top of the page
 
+Quote Post
_sR_
сообщение Feb 26 2007, 15:07
Сообщение #204


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-07-05
Из: Екатеринбург
Пользователь №: 7 077



тупик
на всякий случай, может у кого глаз не замылен и есть минутка свободная, привожу тот код который счас работает
инициализирующую последовательность и времена пауз взял из примера, предоставленного satellite-plus
Встречал эту последовательность разбитую на 7 кусков и несколько другими временами, пробовал и так результата нет.
Видимо всетаки трындец индикатору...
CODE

int main()
{
PORTG_PORTG4 = 1;
MCUInit();
Sleep(1);// Sleep(delay_in_ms)
PORTD_PORTD1 = 1; //LCD RESET
Sleep(1);
S65Init();
S65StartBackLite();
return 0;
}
typedef const unsigned short __flash FlashCShortPtr;
// INIT1: ; 24bytes
FlashCShortPtr INIT1[12]={0xFDFD,0xFDFD,0xEF00,0xEE04,
0x1B04,0xFEFE,0xFEFE,0xEF90,0x4A04,
0x7F3F,0xEE04,0x4306};

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

//INIT3: ; 2bytes
FlashCShortPtr INIT3[1]={0x8001};

void S65Init()
{
SendSPICommandWords( sizeof(INIT1) >> 1, INIT1 );
Sleep(7);
SendSPICommandWords( sizeof(INIT2) >> 1, INIT2 );
Sleep(50);
SendSPICommandWords( sizeof(INIT3) >> 1, INIT3 );
Sleep(5);
}
void SendSPICommandWords(unsigned char size, FlashCShortPtr* arr)
{
// select command register and select display
PORTB_PORTB0 = 1;//io_set_io( S65_IO_RS );
PORTB_PORTB1 = 0;//io_reset_io( S65_IO_CLK );
PORTD_PORTD5 = 0;//io_reset_io( S65_IO_CS );

//send commands
for(unsigned char word_counter=0; word_counter < size; word_counter++ )
{
s65_driver_send_word( *arr );
++arr;
}
__delay_cycles(24);
// deselect display
PORTD_PORTD5 = 1;//io_set_io( S65_IO_CS );
}

void s65_driver_send_word( unsigned short word )
{
for( unsigned char bit_counter=0; bit_counter<16; bit_counter++ )
{
if( (word &(0x0001<<bit_counter)) == 0x01 )
{
PORTB_PORTB2 = 1;//io_set_io( S65_IO_DATA );
}
else
{
PORTB_PORTB2 = 0;//io_reset_io( S65_IO_DATA );
}
PORTB_PORTB1 = 1;//io_set_io( S65_IO_CLK );
__delay_cycles(24);
PORTB_PORTB1 = 0;//io_reset_io( S65_IO_CLK );
}
}
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Feb 26 2007, 16:46
Сообщение #205


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



А приведите-ка нам распиновку вашего дисплея и как вы его подключаете к МК. Дело в том, что на супернемецком форуме были какие то грабли с распиновкой. Там ещё фотографии были, но контакты чуть-чуть по разному сделаны.
PS. А скорость SPI практически влиять не должна. Что программный, что аппаратный SPI работают одинаково. Пробовал я и 20см шлейф на частоте МК 20 МГц. Всё ОК.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
sonycman
сообщение Feb 26 2007, 16:47
Сообщение #206


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(_sR_ @ Feb 26 2007, 16:07) *
тупик
на всякий случай, может у кого глаз не замылен и есть минутка свободная, привожу тот код который счас работает
инициализирующую последовательность и времена пауз взял из примера, предоставленного satellite-plus
Встречал эту последовательность разбитую на 7 кусков и несколько другими временами, пробовал и так результата нет.
Видимо всетаки трындец индикатору...

По порядку:
1. Данные (и команды) на линию SDATA должны выставляться MSB first (старший (15) бит первый), а у вас наоборот.
2. Сразу после установки линии SDATA (перед установкой CLK в 1) должна следовать пауза длительностью 0,5 периода CLK. У вас никакой паузы нет.
А вы хотите, чтобы дисплей заработал sad.gif
Также важна точность временных пауз во время инициализации. Опять-же цитирую немцев: If the time is too short or too long the display will not work!
Какой у вас контроллер? На какой частоте работает? И можно увидеть код процедуры Sleep()?
Повторюсь - лучший способ увидеть, что творится на пинах ЖКИ - взять двухканальный (хотя-бы) запоминающий осциллограф и посмотреть, всё ли в порядке.
Цитата(Nanobyte @ Feb 26 2007, 17:46) *
PS. А скорость SPI практически влиять не должна. Что программный, что аппаратный SPI работают одинаково. Пробовал я и 20см шлейф на частоте МК 20 МГц. Всё ОК.

То есть при частоте SCLK 10 Мгц? Или даже 5 Мгц?
У меня частота SCLK 12 Мгц, и при перегибе шлейфа (длиной 10 см) дисплей перестаёт реагировать на сигналы, так как искажения формы сигнала CLK (да и других сигналов) становятся велики. Индуктивность проводов на высоких частотах играет свою роль, и об этом немцы сразу предупреждают sad.gif
Go to the top of the page
 
+Quote Post
_sR_
сообщение Feb 26 2007, 19:10
Сообщение #207


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-07-05
Из: Екатеринбург
Пользователь №: 7 077



2 Nanobyte
распиновку брал из "Using the Siemens S65.pdf" (PDF by Benjamin Metz, April 18th, 2006) картинка с пинами вот.

2 sonycman
1. самое смешное что в первоначальном варианте на аппаратном SPI так и было, но потом я скачал примерчик у немцев и его воткнул (однако, не все примеры полезны). только что исправил функцию
void s65_driver_send_word( unsigned short word ) на такую
CODE

void s65_driver_send_word( unsigned short word )
{
for( unsigned char bit_counter=0; bit_counter<16; bit_counter++ )
{
if( (word &(0x8000>>bit_counter)) )
{
PORTB_PORTB2 = 1;//io_set_io( S65_IO_DATA );
}
else
{
PORTB_PORTB2 = 0;//io_reset_io( S65_IO_DATA );
}
__delay_cycles(24);
PORTB_PORTB1 = 1;//io_set_io( S65_IO_CLK );
__delay_cycles(24);
PORTB_PORTB1 = 0;//io_reset_io( S65_IO_CLK );
__delay_cycles(24);
}
}

НИФИГА, экран как был так и остался
2. Наверное не в длительности периуда дело (допустим програмный SPI на 1 Гц), а во времени предустановки данных относительно переднего фронта CLK. Контроллер сейчас работает на 8 Мгц
длительность команды установки бита 2 такта (250 нс), что для схемы, работающей с тактовой чатотой 13 МГц не должно представлять проблемы. Да и на осцилле все сигналы вполне "красивые"...
Временные паузы взял из примера satellite-plus. У Вас такие?
код sleep
CODE

__no_init volatile bool DelayComplete;
#pragma vector=TIMER0_OVF_vect
__interrupt void TIMER0_OVF_ISR( void )
{
TCNT0 = 6;
DelayComplete = true;
}
void Sleep(unsigned short delay)
{
TCNT0 = 6;
TIMSK = 1 << TOIE0;
TCCR0 = (1 << CS01) | (1 << CS00);
__enable_interrupt();
while( delay-- )
{
DelayComplete = false;
do
{
__sleep();
}while( !DelayComplete );
}
TCCR0 = 0;
TIMSK = 0;
}


Одна надежда что в распиновке у меня ошибка.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Feb 26 2007, 19:42
Сообщение #208


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(_sR_ @ Feb 26 2007, 20:10) *
2. Наверное не в длительности периуда дело (допустим програмный SPI на 1 Гц), а во времени предустановки данных относительно переднего фронта CLK. Контроллер сейчас работает на 8 Мгц
длительность команды установки бита 2 такта (250 нс), что для схемы, работающей с тактовой чатотой 13 МГц не должно представлять проблемы. Да и на осцилле все сигналы вполне "красивые"...
Временные паузы взял из примера satellite-plus. У Вас такие?

Одна надежда что в распиновке у меня ошибка.

По пункту 2 - совершенно верно, я говорил про предустановку данных.
250 нс должно хватить.

Распиновка верная.
Временные паузы у меня такие-же.
Насчёт Sleep() - процедура инициализирует таймер на прерывание через 1 миллисекунду, но при частоте MCLK 16 Мгц. Так как у вас 8 - задержки идут в два раза больше, чем надо.
Замените везде строку TCNT0 = 6 на TCNT0 = 131.

ЗЫ: Опять-же, по осциллографу должны быть видны слишком большие задержки. Надо быть внимательнее, иначе проблему не решить smile.gif
Go to the top of the page
 
+Quote Post
_sR_
сообщение Feb 26 2007, 22:40
Сообщение #209


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-07-05
Из: Екатеринбург
Пользователь №: 7 077



Цитата(sonycman @ Feb 26 2007, 19:42) *
Насчёт Sleep() - процедура инициализирует таймер на прерывание через 1 миллисекунду, но при частоте MCLK 16 Мгц. Так как у вас 8 - задержки идут в два раза больше, чем надо.
Замените везде строку TCNT0 = 6 на TCNT0 = 131.

ЗЫ: Опять-же, по осциллографу должны быть видны слишком большие задержки. Надо быть внимательнее, иначе проблему не решить smile.gif

ну-у-у-у
во первых осциллографом я смотрел, а во вторых...
смотрим табличку 56 (стр. 103) CS01 = 1; CS00 = 1 коэффициент 32 и того получаем
125 нс * 32 * 250 = 1 мс

но все равно я попробовал Ваш вариант
результат тот же
Go to the top of the page
 
+Quote Post
_sR_
сообщение Feb 26 2007, 23:11
Сообщение #210


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-07-05
Из: Екатеринбург
Пользователь №: 7 077



Аллилуйа!
Тупо взял код satellite-plus и скопировал адаптировав ноги и заменив delay на свою Sleep
едрен батон
ЗАРАБОТАЛО!
"ё-мое, чтож я сделал" (С)
счас буду искать отличия
"видишь суслика? и я не вижу... а он есть"

огроменное спасибо satellite-plus за 100% исправный код!
Go to the top of the page
 
+Quote Post

87 страниц V  « < 12 13 14 15 16 > » 
Reply to this topicStart new topic
23 чел. читают эту тему (гостей: 23, скрытых пользователей: 0)
Пользователей: 0

 


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


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