Дисплей от Siemens S65

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

Увидел фото тоже решил попробать на экран вывести каконить сигнал. В этоге имеем L2F50+atmega128+16Mhz на вход АЦП подан табличный синус на R2R делителе.
Пробал программу поразному писать сначала делать 176 преобразований записывать в масив и потом отуда в экран , ну как-то непонравилось долгое обновление картинки дето около 500мс.
Второй варянт что на фото после каждого преобразования сразу писать в экран получилось мона даже сказать реалмтайм ,также сделал черный фон обновление экрана невидно!.

Фото делал торопясь качество неочень :(
Преложу таблицу синуса может кому пригодится.

Если укаво есть функция создания пилы на R2R делители поделитесь пожалуйста .
Вложения
.txt
табличный синус
(835 байт) 617 скачиваний
2.JPG
фото
(36.86 КБ) 990 скачиваний
.JPG
фото
(80.15 КБ) 1280 скачиваний
Реклама
Аватара пользователя
PIC
Открыл глаза
Сообщения: 72
Зарегистрирован: Ср ноя 05, 2008 22:23:11
Откуда: Алма-Ата
Контактная информация:

Сообщение PIC »

Neonix - оффигеть, просто супер. Респект тебе.
Щас сам доделаю и выложу, просто скоро женюсь идет подготовка к свадьбе :))
Дай если что исходник
Реклама
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

Если разгребу исходник может и выложу, ибо там в основном проект библиотеки для дисплея.
Man Прикольно получилось, а сколько примерно FPS ? У меня гдето 20-22 кадра в секунду если в рельном времени, но этого мало всеравно, фликер видно и падает контрастность изображения.
Кстати я оцифровку переделал теперь пишем в буфер из 256 значений потом усреднение простейшее и вывод кординаты X из буфера на дисплей, а кордината Y просто перебирается от 0 до 175. Так получается скорость оцифровки поднять, у меня при таком подключении осцилоскоп до 13 Кгц показывает сигнал.
Where technology meets enjoyment.
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

На глаз честно сказать скоко FPS незнаю , обновления на черном фоне совсем невидно.
Завтро попробую затактировать от 25Mhz.
Шас думаю как избавится от нехарошей операции деления каторой в AVR нету=( , а использую я ее в делении результатов АЦП на 2 и потом вывожу по оси Y какрас получается 128 а разрешение 132.
Ну а 4 неиспользованых пиксела мона рамочку нарисовать но это лишние такты ...

Сейчас еше напишу быстренко функцию по рисованию сетки,ну уже реалмтайма некакова неполучится(
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

У меня сетка тоже моей функцией рисуется, у меня дисплей разбит на квадраты по 22 пиксела. 176\22 = 8 и 132\22 = 6.
От опереации деления можно избавится просто читая 176 значений из 255 максимальных в АЦП. Т.е заполняем буфер 176 значниями и заполняем ими дисплей. Тогда размах амплитуды получится ровно в 132 пиксела.
Примерно вот так

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

for (i=176,i>0;i--)
{
buff[i]=ADCH;
_delay_us(1);
}

У меня прорисовка вообще мгновенная, но фликер видно. Ды и вообще ресурсов AVRки, мало надо АРМ и внешний АЦП.
Where technology meets enjoyment.
Реклама
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

Я вот так делаю тут сразу рисование каждой точки после преобразования.
ARM деже его еше взять... да и с AVR еше проблем хватает :(
Попробать затактировать AVR денить на 30Mhz-40Mhz от внешнего генератора производительность всетоки уже в двое возрастет но вот гложат сомнения что некоторая перефирия просто небудет работать...


{
fill_screen(0x0000);
for(a=0;a<176;a++)
{
b=read_adc(0)/2;
LCD_PixelPut(a,b,65535);
_delay_us(1);
}
}
Реклама
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

Я делаю точно также, только плюс сначала все складываю в буфер, и АЦП работает в Free Running mode, так ненадо ждать окончания преобразования. AVR ка при 40 Мгц глючит дико, 36 более менее но глючит АЦП и SPI. Думаю переделывать под ARM, скоро привезут AT91SAM256 и STM32F103 там и псмотрим, что выйдет пока надежды на STM32 он 72 Mhz.
Надо внешний АЦП найти какой ни будь, и по фронту тактового генератора, читаем значения из АЦП, а по спаду рисуем на дисплей - можно мегагерц пять получить оцифровку.
Where technology meets enjoyment.
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

Впаял кварц на 25Mhz честно выдернутый и 8 портового тупника :))
Также написал функцию рисования сетки , обновление заметно это нерадует :(
Нашел глупую ошибку в функции думаю почему умя все цвета почти синии если по пикселу рисовать ,а оказалось вводимое значение в функцию было char заместо int.
Вложения
1.JPG
фото нечеткое иза тавочто без вспышке сетка нарисована 1 пикселом насамом деле...
(65.63 КБ) 850 скачиваний
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

Man писал(а):Впаял кварц на 25Mhz честно выдернутый и 8 портового тупника :))
Также написал функцию рисования сетки , обновление заметно это нерадует :(
Нашел глупую ошибку в функции думаю почему умя все цвета почти синии если по пикселу рисовать ,а оказалось вводимое значение в функцию было char заместо int.

Вообщем результаты теже что у меня просто немного разные методы решения задачи :) Производительности нехватает, для такого дисплея мало AVRки. Кстати вывод сетки как сделан ? Я сделал заполнением областей цветом, так можно обойтись без циклов при рисовании пописксельно. У меня вообще оптимизация везде сделана до придела, может полностью на асм переписать ?
Where technology meets enjoyment.
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

Сделал просто цыклами сначало по одной оси рисуем потом по другой:

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

void setka() 
   {
    fill_screen(0x0000);
   
    for(s=0;s<176;s++)
    {
     LCD_PixelPut(s,131,0xF800);
    LCD_PixelPut(s,110,0xF800);
    LCD_PixelPut(s,88,0xF800);
    LCD_PixelPut(s,66,0xF800);
    LCD_PixelPut(s,44,0xF800);
    LCD_PixelPut(s,22,0xF800);
    LCD_PixelPut(s,0,0xF800);
    }
   for(s=0;s<132;s++)
   {
   
    LCD_PixelPut(0,s,0xF800);
    LCD_PixelPut(22,s,0xF800);
    LCD_PixelPut(44,s,0xF800);
    LCD_PixelPut(66,s,0xF800);
    LCD_PixelPut(88,s,0xF800);
    LCD_PixelPut(110,s,0xF800);
    LCD_PixelPut(132,s,0xF800);
    LCD_PixelPut(154,s,0xF800);
    LCD_PixelPut(175,s,0xF800);
   }
   
   }


Как я непонел вы делаете так сначало заливаем все одним цветом и потом ресуем квадраты по 21х21 пикселу?
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

Просто заливаю экран весь черным, потом рисую линии, но не попиксельно, а заполнением те тупо задал координаты X=0 y=174
и область толщиной в один пиксель залилась цветом. Но это в дисплее с контроллером ls020. Незнаю в Вашем дисплее будет такое или нет. Просто так получается быстрее и без дополнительных циклов. Кстати у себя в исходнике подредактируйте циклы, вычитание работает быстрее чем сложение.

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

for(s=176;s>0;s--)

Ну и другой цикл аналогично.
Where technology meets enjoyment.
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

Через АЦП AVR какую реально частоту пропустить? Мона попробать взять ченить типа atmega88 работает на 20Mhz затактировать от 30 , делать также 176 преобразований в ОЗУ и потом передавать через параллельный интерфейс или оно таво нестоит?
Мона посматреть на симейство "Xmega" хатя в продаже их невидел :))
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

Ну у мну на АВРке получаеся оцифровка сигнала до 15 Кгц. Но чтоб сигнал хорошо было видно надо как минимум скорость оцифровки в четыре раза больше. Да и вообще надо внешний АЦП, встроенный г*вно полное, шумов больно много. Надо делать экранный буфер, туда рисовать картинку, а потом сразу выводить на экран. Тогда фликера не будет и скорость оцифровки будет максимальная. Но под такой дисплей это как минимум 23 килобайта памяти при 256 цветах, при 16 бит цвете в два раза больше. Хмегу ставить нет смысла, стоит дороже арма, и корпус со 128 ногами, убогий интерфес к внешней памяти лучше АРМ со встроенной памятью 64 килобайта.
Where technology meets enjoyment.
akimov1987
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вт авг 11, 2009 10:03:00

Сообщение akimov1987 »

это что, подскажите пожалуйста. по мне вроде это только питания дисплея
Вложения
1236109842_schematic.gif
(25.12 КБ) 1033 скачивания
akimov1987
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вт авг 11, 2009 10:03:00

Сообщение akimov1987 »

хочу для машины что ни будь с этим дисплеем собрать
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

akimov1987 писал(а):это что, подскажите пожалуйста. по мне вроде это только питания дисплея

Это схема преобразователя для питания подсветки, преобразователь лог уровней, и крен на 3.3в для питания самого диспа. Можно обойтись без преобразователя уровней, только МК надо питать от 3.3v
Изображение
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

Вчера немного посидел попробал производительность повысить ,подумал зачем весь экран после 176 преобразований перерисовывать. Сделал так каждое преобразование записываю в дисплей и в массив, вот после 176 преобразований делаю новое записываю в промежуточную переменную ,после читаю значение из массива закрашиваю нарисованную точку ,переписываю значение из переменой в массив и в дисплей. В этоге выигрываем в обновление но проигрываем в следующем преобразование…
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

Man писал(а):Вчера немного посидел попробал производительность повысить ,подумал зачем весь экран после 176 преобразований перерисовывать. Сделал так каждое преобразование записываю в дисплей и в массив, вот после 176 преобразований делаю новое записываю в промежуточную переменную ,после читаю значение из массива закрашиваю нарисованную точку ,переписываю значение из переменой в массив и в дисплей. В этоге выигрываем в обновление но проигрываем в следующем преобразование…

Тоже побовал такой метод, не понравился по скорости оцифровки, легче весь дисплей очищать. Тут нужен экранный буфер, чтоб рисование было в памяти, а только потом отправлялось все на экран тогда флика не будет совсем. Я пока плюнул на попытки выжать еще производительности, жду ARM. Единственный способ получить производительности это написать все на асме, у меня даже есть один готовый проект под мегу64 и этот дисп, попробую подкрутить его мож получится.
Where technology meets enjoyment.
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

Тож поматриваю в сторону ARM, с какой частотой ARM заказал?
Изображение
Аватара пользователя
Yellow Tiger
Сверлит текстолит когтями
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

neonix писал(а):вычитание работает быстрее чем сложение

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

for(s=176;s>0;s--)
Если речь о том, какой код генерится компилятором, то есть более прямой способ ускорить выполнение инкремента - в случаях, когда значение счетчика до инкремента не используется, применять не постфиксный, а префиксный инкремент - это и по смыслу операции правильно, и время экономит. ;)

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

for(s=0;s<176;++s)

Хотя, у каждого компилятора свои методы, замена инкремента на вычитание -1 - частый фокус, а CV Avr умеет оптимизировать неиспользуемый постфикс. :)
Ответить

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