Дисплеи от мобильных телефонов- осцилограммы работы

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение SubDia »

Без даташита тяжко. =)
Но есть некоторые сходства с кой-каким иным дисплеем. И если судить по строкам

Код: Выделить всё

WriteToLCD(CMD,0x3a); //interfase pixel format
WriteToLCD(DAT,0x03); //

дисплей запускают в 12-битном режиме. Вы учитываете это?
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

SubDia писал(а):дисплей запускают в 12-битном режиме. Вы учитываете это?

Нет, не учитываю. А в каком режиме его надо запускать?
И для чего используются разные режимы?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение SubDia »

Я имею в виду количество цветов, которое способен отобразить дисплей. Ведь от этого зависит и то, каким количеством бит будет определяться засветка одного пикселя. Например, для 256-цветного режима достаточно выводить 1 байт: RRRGGGBB, а для 4096-цветного это уже будет 12 бит: RRRRGGGGBBBB. Об этом режиме я и говорю.
Вообще, разместите кусочек кода вывода на дисплей (именно как Вы выводите эти цветные полосы).
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

Вот так вывожу:

Код: Выделить всё

   //Красный
   for(int i = 0; i < 26; i++)
   for(int j = 0; j < 101; j++)
   DrawPixel( j, i, 0xF800 );
   
   //Зелёный
   for(int i = 26; i < 52; i++)
   for(int j = 0; j < 101; j++)
   DrawPixel( j, i, 0x07E0 );
   
   //Синий
   for(int i = 52; i < 80; i++)
   for(int j = 0; j < 101; j++)
   DrawPixel( j, i, 0x001F );



Функция DrawPixel:

Код: Выделить всё

void DrawPixel(uint8_t XPos, uint8_t YPos, uint16_t Color)
{

   CLR_CS;

   WriteToLCD( CMD, 0x2A );
   WriteToLCD( DAT, XPos );
   WriteToLCD( DAT, 100 );

   WriteToLCD( CMD, 0x2B );
   WriteToLCD( DAT, YPos+1 );
   WriteToLCD( DAT, 80 );

   WriteToLCD( CMD, 0x2C );
   WriteToLCD( DAT, (Color >> 8) & 0xFF );
   WriteToLCD( DAT, Color & 0xFF );
   
  SET_CS;
}
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение SubDia »

Это Вы чей-то исходник использовали, или сами писали?
Я вижу здесь вообще 16-битные определения цветов. Вот, например,

Код: Выделить всё

   WriteToLCD( CMD, 0x2C ); - команда записи в память дисплея
   WriteToLCD( DAT, (Color >> 8) & 0xFF ); - выгрузка старшего байта
   WriteToLCD( DAT, Color & 0xFF );            - выгрузка младшего байта

То есть у Вас данные выгружаются в формате RRRRRGGGGGGBBBBB. А при инициализации, судя по всему, объявлен 12-битный формат.
Лучше вообще для начала попробовать 8-битный режим.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

Это исходник с первых страниц темы.
Если инициализировать в 8-битонм режиме (0x02), красный становиться ещё более бледнее, а если в 16-битном (0x05), вобще черный экран.

А вот ещё, что я не понял, это как в разных режимах получаються значения цветов?
Вот красный например в 16 битном режиме как записать? а в 8 битном?

PS. а все, понял.
Итак, с восьмибитным режимом разобрался, вот правильные цвета))

Изображение
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение SubDia »

Да нет, неправильные цвета. Черные полосочки видите? Это потому что у Вас по два байта выгружается, а нужно - по одному. :)
Замените uint16_t Color на uint8_t Color (пошто тратить память на 16-битную переменную, когда она не нужна?), и определяйте цвет 8-битной переменной:

Код: Выделить всё

DrawPixel( j, i, 0xE0 );
DrawPixel(j,i,0x1C);
DrawPixel( j, i,0x03);

А в функции void DrawPixel пишите

Код: Выделить всё

   WriteToLCD( CMD, 0x2C );
   WriteToLCD( DAT, Color );

Bonio писал(а):Вот красный например в 16 битном режиме как записать?

Вот с этим режимом у самого не получилось ни хрена. Биться и разбираться не стал, бросил (мне 256 цветов выше крыши). Тоже черным заливало, и все тут.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

Все в точности так и делаю :)
Черные полосочки может это особенность экрана? (маленькое разрешение)
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

Вот как закрашивать пиксели я понял.
А как вывести на экран строку?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение SubDia »

Bonio писал(а):Черные полосочки может это особенность экрана? (маленькое разрешение)

Да нет, должен заливать каждый пиксель. А у Вас получается так: один пиксель заливает нужным цветом, а следующий - черным (0x00). Смотрите программу, где-то должен быть прокол.
Bonio писал(а):А как вывести на экран строку?

Придется самостоятельно массивчик писать, который потом нужно будет выгружать на дисплей подобно этим полосам.
Я делаю так: в фотошопе пишу нужный текст, вырезаю, потом сохраненное изображение конвертирую в массив с помощью Nokia Image Creator (вот здесь возьмите). А после - в нужном месте выгружаю этот массив в память дисплея.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

SubDia, спасибо за помощь.
Черные полоски это часть пиксела, такой вот экран. В живую они не заметны.
Щас не поленился, сфотографировал экран в максимальном приближении фотоаппарата и вручную посчитал красные пикселы, ровно 101 штука, как и положено.
Кроме того, полоски можно заметить и вот на этой фотографии у plutonium. Такчто все нормально :)

Для конвертации картинок в массив мне больше понравилась программа image2lcd.

И ещё спросить хотел, как можно добиться моментальной смены картинки, только увеличением частоты процессора?
Нельзя одной командой залить например заданный квадрат? надо заливать отдельно каждый пиксел?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение SubDia »

Bonio писал(а):как можно добиться моментальной смены картинки, только увеличением частоты процессора?

Увеличением частоты тактового сигнала используемого интерфейса - там SPI, если я не ошибаюсь?
Однако при этом нужно учитывать скорость, которую способен поддерживать контроллер дисплея.
Bonio писал(а):Нельзя одной командой залить например заданный квадрат? надо заливать отдельно каждый пиксел?

Можно ограничить заданный квадрат специальными командами (установка координат x и y), а затем залить каждый пиксель в заданной области. Но заливка будет попиксельной - это да.
Bonio писал(а):спасибо за помощь.

Совершенно не за что. Обращайтесь. =)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

Что такое может быть? Хочу залить картинку во весь экран, объявляю массив размером 8080 (101x80), прошиваю, и вобще ничего не работает, даже экран не инициализируется.
Притом, если объявить массив размером например 1010 (картинка 101x10) все прекрасно работает, картинка выводится.
Опытным путем выяснил, что МК перестает работать при объявлении очень длинного массива.
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение SubDia »

Ну так...МК какой? Тинька?
А массив оный получается объемом 8080 байт. У контроллера попросту не хватает памяти для него (это то, о чем я говорил в самом начале нашей беседы).
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

atmega8 и atmega32, и там и там такая фигня. оперативки у них 1 и 2 кб соответственно, вроде в любом случае должно хватать?

P.S. Чето туплю, оперативки не хватает. теперь все понятно.
А как же тогда вывести картинку во весь экран? На куски разбивать?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение SubDia »

А куда шьете массив? Загоняйте во флэш, что ли. Мега32 должна нормально работать.
Я вообще стараюсь подобные данные во внешней памяти хранить.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

Массив прямо в программе объявляю. это ведь и есть флеш?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение SubDia »

Ну вообще зависит от настроек программы, которую Вы используете для прошивки. В общих случаях так и есть. А иногда нужно ставить галочку "сохранить константы во flash", и т.д. Тут уж я не знаю.
Но если бы у Вас массив записывался во флэш, то с Мегой 32 проблем точно не было бы - у нее 32кБ флэш, этого с головой хватает.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Bonio
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вт сен 27, 2011 21:23:36

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bonio »

Интересно. Прошиваю через avrdude, командой avrdude -p atmega32 -P lpt1 -c stk200 -U flash:w:main.hex

Как я понял, в процессе работы микроконтроллера, объявленные значения подгружаються в оперативку.
Такой большой массив в оперативку попросту не помещается, следовательно программа не работает.
Foks
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Foks »

Да нет, у Вас скорее массив в оперативке объявлён.
Кроме того, Си не позволяет использовать всю оперативу до конца - http://www.nongnu.org/avr-libc/user-manual/malloc.html
Giggity giggity goo!
Ответить

Вернуться в «Периферия»