Юзаем дисплеи от сотовых и других потаскунчиков.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение hd44780 »

kentik писал(а):покажите листинг плиииз.


Я думаю, что с листинга Вам толку мало будет, оно у меня под STM32F4, дисплей на сидит на FSMC. Да и ваш SSD контроллер может облегчать какие-то дествия ...

На моём ILI9320Алгоритм такой - дисплею задаю окно по размеру BMP-шки и с указанными координатами, затем устанавливаю позицию вывода на те же координаты и гоню в него все пиксели подряд.

Если без окна, то в начале каждой строки снова позиционируйтесь руками.
Chettuser

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение Chettuser »

VDLab писал(а):возможно имелись ввиду TFT панели с аналоговым RGB интерфейсом (правда в мобильниках такие не встречал, зато в фотоаппаратах и в дешевых фоторамках и телевизорах они чаще всего и встречаются), но и там с VGA ничего общего нет.

Спасибо! Значит будем фоторамку трепать... :)
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение drakon »

kentik, вот так можно вывести картинку:

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

    //вывод картинки 105x73
    //LCD_goto(x, y, x1, y1);
    LCD_goto(0, 0, 105 -1, 73 -1); //выделяем окно
    for(i=0; i<105*73; i++)  //последовательно выводим все пиксели
      lcd_dat16(image[i]); //вывод пикселя

пользуюсь программой bmp2h_conv.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение kentik »

drakon писал(а):kentik, вот так можно вывести картинку:

такой же вывод и у меня.
в теле цикла только разбиваю цвет, на необходимый RRRRRGGGGGGBBBBB
что-то путаю я с этой разбивкой.
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение drakon »

покажите фотографию того, что выводит. программа bmp2h_conv преобразовывает из BMP в массив RGB 565. потом выводите готовый массив. там в программе есть Reverse R<->B.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение kentik »

все. я вконец запутался.
подскажите плиииз.

картинка выводится, если массив объявлен так:
int picture[] = {
0xFFFF, 0xFFFF, ...
};

функция вывода изображения:
void drawBitmap(int x, int y, int sx, int sy, unsigned int* data)
{
int allpixels;
allpixels = sx*sy;
setXY(x, y, x+sx-1, y+sy-1);
for (tc=0; tc<allpixels; tc++){
col=data[tc++];
LCD_Write_DATA(col>>8,col&0xff);
}
}

но стоит мне объявить массив:
flash int kentik[] = {
0xFFFF, 0xFFFF, ...
};
так выводится черный экран, размером с картинку.
где я ошибся?
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение drakon »

вы int объявляете как знаковую.
попробуйте так:

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

 flash unsigned int kentik[] = {
0xFFFF, 0xFFFF, ...
};
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение kentik »

drakon писал(а):вы int объявляете как знаковую.

тогда выводится ошибка
function argument #5 of type 'flash unsigned int [1008]' is incompatible with required parameter of type 'unsigned int *'

p.s. видимо тут играет роль какая-то особенность codevision
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение drakon »

попробуйте процедуру вывода картинки и ее вызов закомментировать. ошибка все ровно есть? вместо flash можно написать const. если ошибка пропала попробуйте ту процедуру что я показывал. проверена на CVAVR.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение kentik »

drakon писал(а):попробуйте процедуру вывода картинки и ее вызов закомментировать. ошибка все ровно есть? вместо flash можно написать const. если ошибка пропала попробуйте ту процедуру что я показывал. проверена на CVAVR.


закомментировал вывод картинки и ошибка пропала. ну так логично - я ж к массиву не обращаюсь теперь.
const вместо flash не помещает массив в flash/ так и висит в RAM

все получилось.
НО!!! только если вызывать массив картинки напрямую из функции попиксельного заполнения.

я так понял, что со своей проблеммой мне надо в тему к новичкам по Codevision.
хрень какая-то. не правильно тип массива что-ли указываю?
srg320
Встал на лапы
Сообщения: 85
Зарегистрирован: Пт фев 01, 2013 17:47:26
Откуда: Украина, Луганская область

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение srg320 »

а если так:
void drawBitmap(int x, int y, int sx, int sy, flash unsigned int* data)
Аватара пользователя
U235
Встал на лапы
Сообщения: 135
Зарегистрирован: Вт фев 21, 2012 20:42:26
Откуда: Санкт-Петербург, Россия, Земля

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение U235 »

kentik писал(а):все. я вконец запутался.
подскажите плиииз.

flash модификатор памяти, указывает что данные находятся во флеше, а не в ОЗУ. Поэтому, если размещаете картинку во флеше, то и функция должна к нему обращаться.

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

flash int picture[] = { 
    0xFFFF, 0xFFFF, ...
};

функция вывода изображения:
void drawBitmap(int x, int y, int sx, int sy, flash unsigned int* data)
{
    int allpixels;
    allpixels = sx*sy;
    setXY(x, y, x+sx-1, y+sy-1);
    for (tc=0; tc<allpixels; tc++)
    {
        col=data[tc++];
        LCD_Write_DATA(col>>8,col&0xff);
     }
}
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение kentik »

srg320 и U235 спасибо огромное. вот так все работает.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение kentik »

и снова я с вопросом по своему модулю.
переписываю библиотеку ардуины для тачпада. в модуле установлен ads7843.
пока вот так:
Спойлер#define Tclk PORTC.6
#define Din PORTC.4
#define Tcs PORTC.5

#define Dout PORTB.0
#define Irq PORTB.1

void InitTouch()
{
DDRC=0xff;
DDRB=0x00;
Tclk=1;
Din=1;
Tcs=1;
}

void Touch_readData()
{
char count;
touchdata=0;
for( count=0; count<12; count++)
{
touchdata <<= 1;
Tclk=1;
delay_ms(1);
Tclk=0;
delay_ms(1);
if (PINC.0==1)
touchdata++;
}
}

void Touch_WriteData(unsigned int data)
{
unsigned int temp;
char count;
temp=data;
Tclk=0;
for(count=0; count<8; count++)
{
if(temp & 0x80)
Din=1;
else
Din=0;
temp = temp << 1;
Tclk=0;
delay_ms(1);
Tclk=1;
delay_ms(1);
}
}
void read()
{
unsigned long tx=0, ty=0;
char i;
Tcs=0;
Touch_WriteData(0x90);
Tclk=1;
Tclk=0;
Touch_readData();
ty+=touchdata;

Touch_WriteData(0xD0);
Tclk=1;
Tclk=0;
Touch_readData();
tx+=touchdata;
Tcs=1;
TP_X=tx;
TP_Y=ty;
}


вся программа вот такая:
while (1)
{
read();
sprintf(lcdBuffX,"%u",TP_X);
print(lcdBuffX,10,300) ;
sprintf(lcdBuffY,"%u",TP_Y);
print(lcdBuffY,50,300) ;
};

в итоге вижу две цифирьки 4095 и ноль внимание на нажатия.
что я не так делаю?
srg320
Встал на лапы
Сообщения: 85
Зарегистрирован: Пт фев 01, 2013 17:47:26
Откуда: Украина, Луганская область

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение srg320 »

ну, для начала:
Спойлерvoid Touch_readData()
{
char count;
touchdata=0;
for( count=0; count<12; count++)
{
touchdata <<= 1;
Tclk=1;
delay_ms(1);
Tclk=0;
delay_ms(1);
if (PINB.0==1)
touchdata++;
}
}


я применяю уже новый контроллер тачскрина TSC2046, он похож на ads7843, даташит на ads7843 не смотрел, но думаю его тоже надо вначале проинициализировать и загнать в Power-Down Mode, а уже при нажатии по Irq выводить из спящего режима, считывать значения и снова в спящий режим.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение kentik »

srg320 писал(а):ну, для начала:
PINB.0==1


ух ты. ничего себе такая глупая ошибка.
мне просто стыдно за себя.
Спасибо вам огромное.

srg320 писал(а):думаю его тоже надо вначале проинициализировать и загнать в Power-Down Mode, а уже при нажатии по Irq выводить из спящего режима, считывать значения и снова в спящий режим.

зачем? он постоянно не может функционировать? мне не надо экономить батарейку или еще что там!
srg320
Встал на лапы
Сообщения: 85
Зарегистрирован: Пт фев 01, 2013 17:47:26
Откуда: Украина, Луганская область

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение srg320 »

kentik писал(а):зачем? он постоянно не может функционировать? мне не надо экономить батарейку или еще что там!

Дело в том, что считывать значения нужно сразу после нажатия на тач и при условии, что нажатие присутсвовало на протяжении чтения обеих координат. В противном случае, вы будете получать постоянно какие-то значения, потому что, вход АЦП контроллера тачскрина будет висеть в воздухе с подключённой к нему одной из пластин тачскрина. И только при нажатии эти значения будут верными.

Мне, для повышения точности замеров, пришлось ставить фильтр по питанию контроллера, а также значения считываются сразу по 5 раз на каждую координату, затем считаю среднее значение. А то при перемещении объектов стилусом было сильное дрожание +-5пикселов, а сейчас дрожание заметно только по одной координате +-2пиксела.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение kentik »

srg320 писал(а):Дело в том, что считывать значения нужно сразу после нажатия на тач и при условии, что нажатие присутсвовало на протяжении чтения обеих координат. В противном случае, вы будете получать постоянно какие-то значения

все верно. поставил вывод координат все время. пока не нажимаю - выводится фигня разная. нажимаю - показывает все правильно.

srg320 писал(а):Мне, для повышения точности замеров, пришлось ставить фильтр по питанию контроллера, а также значения считываются сразу по 5 раз на каждую координату, затем считаю среднее значение.

у меня 10 раз считается. надо бы поменьше поставить. но у меня нету точности никакой. мне на экране 240 точек надо лишь разместить три кнопки.
srg320
Встал на лапы
Сообщения: 85
Зарегистрирован: Пт фев 01, 2013 17:47:26
Откуда: Украина, Луганская область

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение srg320 »

kentik писал(а):пока не нажимаю - выводится фигня разная. нажимаю - показывает все правильно.

поэтому то и надо переводить его в Power Down для отлавливания момента нажатия
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Сообщение kentik »

srg320 писал(а):
kentik писал(а):пока не нажимаю - выводится фигня разная. нажимаю - показывает все правильно.

поэтому то и надо переводить его в Power Down для отлавливания момента нажатия


правильно ли я понимаю алгоритм тогда?

1. отлавливаем момент нажатия - if PIN(IRQ) ==1
2. если да, то выводим из спящего режима, прописывая определенные биты в байте конфигурации
3. читаем Х
4. посылаем еще байт конфигурации, где биты режима Power-DOWN ставим в спящий режим
5. читаем У
(так попробовал - не получается)

так?
или дополняем обычный алгоритм?
1. посылаем байт где только биты просыпания
2. посылаем байт
3. читаем Х
4. посылаем байт
5. читаем У
6. посылаем байт, где только биты засыпание
Ответить

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