|
|
  |
трудности с PG320240WRF на S1D13700 |
|
|
|
May 12 2010, 09:07
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 15-09-08
Пользователь №: 40 218

|
Доброго дня! Топчусь на граблях, но в упор не вижу проблемы, прошу совета. Не получается оживить LCD(PG320240WRF). Выполнение практически любой команды после SCROLL приводит к появлению горизонтальных линий на всю длинну экрана. Косяк наверняка характерный, сомневаюсь в порядке и правильности инициализации. Инициализацию провожу так: Код Reset, CS, RD, WR - устанавливаем в единицу Ждем около 0,5 секунд
SYSTEM_SET 1: 0х30 // установленны только IV, и 4-й, W/S=0 2: 0x87 // FX=3, 3: 0x07 // FY=8, 4: 0x27 // C/R = 39 5: 0x2F // TC/R = 47 6: 0xEF // L/F = 239 7: 0x28 // APL = 40 8: 0x00
SCROLL 1: 0х00 //SAD1 = 0x00; 2: 0x00 3: 0xEF //SL1 = 239 4: 0xB0 //SAD2 = 1200 5: 0x04 6: 0xEF //SL2 = 239 7: 0x00 //SAD3 = 0x00 ????????? 8: 0x00 9: 0x00 //SAD4 ??????????? 10: 0x00
OVLAY 0x00 // simple overlay
CSRFORM 1: 0х04 2: 0x86 DISPON 0x16 // FC0 = 0 // FC1 = 1 // FP0 = 1 // FP1 = 0 // FP2 = 1 // FP3 = 0 // FP4 = 0 // FP5 = 0 Далее пробую вывести символы с MWRITE по адресам начиная с 0x00 но ничего не получается
|
|
|
|
|
May 13 2010, 11:49
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 15-09-08
Пользователь №: 40 218

|
Решилось. Про SCROLL в предыдущем посте загон. Решающую роль сыграло отсутствие задержки перед посылкой параметров команде SYSTEM_SET. Подсмотренно в исходниках на какой-то борд от atmel
Сообщение отредактировал LiloQQ - May 13 2010, 11:52
|
|
|
|
|
May 14 2010, 06:25
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 15-09-08
Пользователь №: 40 218

|
Ещё одна неадекватность с этим экраном, моя или нет пока не понятно. Изначально закупили 2 шт, с текущим кодом признаки жизни подаёт только один экран. Но оба реагируют на "неправильную" команду SYSTEM_SET(без паузы перед передачей параметров), полосами по всей длине экрана. На "живом" экране после записи в память какого-либо символа, он размножается по вертикали до конца видимой области. При заполнении первой строки заполняется весь экран. Документация на S1D13700 претендует на полноту, но ответов не даёт. Если у кого-нибудь есть положительный опыт работы с девайсом PG320240, или S1D13700 непосредственно, буду очень признателен за помощь. Текущая условно-рабочая конфигурация такова: Код dispSYSTEM_SET(0,// M0 0, // M1 0, // M2 0, // WS 1, // IV 7, // FX 1, // WF 7, // FY 40, // CR 127, // TCR 240, // LF 50, // APL 0); // APH //SCROLL dispSCROLL( 0x0000, // SAD1 0xF0, // SL1 0x2000, // SAD2 0xF0, // SL2 0x0000, // SAD3 0x0000); // SAD4 //CSRDIR_RIGHT cmdwrite(paramcmd, 0, CSRDIR_RIGHT); //CSR FROM paramcmd[0] = 0x04; //CRX paramcmd[1] = 0x86; //CX CRY cmdwrite(paramcmd, 2, CSRFORM); //HDOT SCR paramcmd[0] = 0x00; cmdwrite(paramcmd, 1, HDOT_SCR); //OVLAY paramcmd[0] = 0x00; cmdwrite(paramcmd, 1, OVLAY); SetMem(0x0000, '_', 1200); SetMem(0x2000, 0x00, 9600); displON(0x16);
//CSRW paramcmd[0] = 0x00; paramcmd[1] = 0x00; cmdwrite(paramcmd, 2, CSRW); //SetCursorPOsition(0, 0); //MWRITE paramcmd[0] = '*'; paramcmd[1] = 'a'; paramcmd[2] = 'b'; paramcmd[3] = 'c'; paramcmd[4] = 'd'; paramcmd[5] = 'e'; cmdwrite(paramcmd, 6, MWRITE); В результате выполнения вместо шести символов только в первой строке, эти шесть символов появляются в начале каждой строки до конца видимой области
Сообщение отредактировал LiloQQ - May 14 2010, 06:26
|
|
|
|
|
May 20 2010, 07:02
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 15-09-08
Пользователь №: 40 218

|
Цитата(MSprut @ May 20 2010, 10:16)  Приведите пожалуйста исходный код служебных функций, в частности cmdwrite. Доброго дня! Вот такая картина: Код #define SetA0 set_bit(PORTG, PORTG2) #define ClearA0 clear_bit(PORTG, PORTG2)
#define SetRD set_bit(PORTG, PORTG1) #define ClearRD clear_bit(PORTG, PORTG1)
#define SetWR set_bit(PORTG, PORTG0) #define ClearWR clear_bit(PORTG, PORTG0)
#define NotRESET set_bit(PORTG, PORTG3) #define EnableRESET clear_bit(PORTG, PORTG3)
#define ComandA0 set_bit(PORTG, PORTG2) #define DataA0 clear_bit(PORTG, PORTG2)
#define SetCS set_bit(PORTH, PORTH4) #define ClearCS clear_bit(PORTH, PORTH4)
#define DELAY_WR_RD asm volatile ("nop\n\t" \ "nop\n\t" \ "nop\n\t" \ "nop\n\t" \ "nop\n\t" \ "nop\n\t" \ "nop\n\t" \ "nop\n\t" \ "nop\n\t" \ "nop\n\t" \ ::);
void sendByte(tByte in) { DispPort = in; ClearCS; DELAY1; ClearWR; DELAY_WR_RD; SetWR; SetCS; }
void sendCMD(tByte in) { ComandA0; sendByte(in); }
void paramwrite(tByte *p, tByte length) { for(tByte i = 0; i < length; i++) { sendByte(p[i]); DELAY_WR_RD; } }
void cmdwrite(tByte *p, tByte length, tByte cmd) { sendCMD(cmd); DataA0;
for(tInt j = 0; j < 500; j++) { DELAY_WR_RD; }
paramwrite(p, length); DELAY_WR_RD; } Забыл отметить ещё одну особенность. Считывать озу контроллера получается, и в результате считывания области памяти в которую производилась запись получаются адекватные результаты. Т.е. к примеру пишем в память "hello" на экране вначале КАЖДОЙ строки символы "hello", а содержимое памяти соответствует действительности, т.е. "hello" записано только в первые 5 байт
Сообщение отредактировал LiloQQ - May 20 2010, 07:11
|
|
|
|
|
May 20 2010, 10:39
|
Местный
  
Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476

|
Не могу сложить картинку в голове, вы все время приводите куски кода в которых появляются новые функции  А вообще такое впечатление что при инициализации память распределена неправильно. Попробуйте инициализировать с такими параметрами: Код lcd_wr_cmnd(SYSTEM_SET); delay_us(30); lcd_wr_data(0x30); lcd_wr_data(0x87); lcd_wr_data(0x07); lcd_wr_data((LCD_X_SIZE / 8) - 1); lcd_wr_data(92); lcd_wr_data(LCD_Y_SIZE - 1); lcd_wr_data(40);//LCD_X_SIZE / 8); lcd_wr_data(0x00); // Scroll lcd_wr_cmnd(SET_SCRL_BLOCK); lcd_wr_data(0x00); lcd_wr_data(0x00); lcd_wr_data(LCD_Y_SIZE); lcd_wr_data(0x60); lcd_wr_data(0x09); lcd_wr_data(LCD_Y_SIZE); lcd_wr_data(0x00); lcd_wr_data(0x00); lcd_wr_data(0x00); lcd_wr_data(0x00); Собственно изменения только в адресе с 0x4b0 на 0x0960 и 47 на 92. Давно работал с похожим дисплеем, были похожие проблемы и все в основном с задержками и распределением памяти.
|
|
|
|
|
May 20 2010, 11:15
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 15-09-08
Пользователь №: 40 218

|
Цитата(MSprut @ May 20 2010, 14:39)  Не могу сложить картинку в голове, вы все время приводите куски кода в которых появляются новые функции  А вообще такое впечатление что при инициализации память распределена неправильно. Накрученно, плохо читается, извините Цитата(MSprut @ May 20 2010, 14:39)  Попробуйте инициализировать с такими параметрами: ... Собственно изменения только в адресе с 0x4b0 на 0x0960 и 47 на 92. Давно работал с похожим дисплеем, были похожие проблемы и все в основном с задержками и распределением памяти. Пробывали с продавцами общаться, прислали тестовую программу, пробывали с их настройками - пока топчимся. На текущий момент они дисплей тестировали на своём стенде(говорят без проблем работает), завтра приедет и попробую зашиться с Вашим замечанеием. Благодарю!
Сообщение отредактировал LiloQQ - May 20 2010, 11:16
|
|
|
|
|
May 20 2010, 11:45
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 15-09-08
Пользователь №: 40 218

|
Цитата(MSprut @ May 20 2010, 15:28)  Забыл спросить... а режим отображения 1bpp или 2bpp используете? В текущем обкатываемом варианте GRAY_SCALE вызывать перестали, на картину никак не влияла, но опираясь на аппноуты epson наивно считаю что работаю с 1bpp по умолчанию.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|