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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Подмешивание в видеосигнал
umup
сообщение Dec 21 2007, 18:12
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 226
Регистрация: 2-06-06
Пользователь №: 17 720



Цитата
TWI - не лучший вариант. SPI - тоже


как раз по неплохо SPI передают, у UART частота ниже :
http://www.vga-avr.narod.ru/
http://www.serasidis.gr/circuits/AVR_VGA/avr_vga.htm
http://blog.makezine.com/archive/2007/06/a...a8_video_o.html
http://convergencepromotions.com/atmel/v_6..._6_pg-40-42.pdf

Сообщение отредактировал umup - Dec 21 2007, 18:14
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 21 2007, 18:29
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(umup @ Dec 21 2007, 21:12) *
как раз по неплохо SPI передают, у UART частота ниже :

Я же говорю не про классический UART, а про UART в режиме SPI, в котором данные передаются с той же скоростью, что и в "обычном" аппаратном SPI (до cpuclk/2), но с дополнительной буферизацией, которую "обычный" SPI не обеспечивает и для соблюдения правильной растактовки необходимо считать такты вручную, и даже при этом, между out в SPDR должно быть 16 тактов (при максимальной частоте, естественно), т.е. разрыв на границе 8 битов будет неизбежно. UART в режиме SPI есть, например, в m48/88/168.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Dec 22 2007, 06:02
Сообщение #18


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(rx3apf @ Dec 21 2007, 20:29) *
Я же говорю не про классический UART, а про UART в режиме SPI, в котором данные передаются с той же скоростью, что и в "обычном" аппаратном SPI (до cpuclk/2), но с дополнительной буферизацией, которую "обычный" SPI не обеспечивает и для соблюдения правильной растактовки необходимо считать такты вручную, и даже при этом, между out в SPDR должно быть 16 тактов (при максимальной частоте, естественно), т.е. разрыв на границе 8 битов будет неизбежно. UART в режиме SPI есть, например, в m48/88/168.


Я Вам больше скажу, разрыв там будет из-за особенностей реализации SPI, обязательно один бит пропустит. А UART в режиме SPI рулит - я через него эзернетовские пакеты отправлял при 20МГц wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
idono
сообщение Dec 22 2007, 11:34
Сообщение #19


Частый гость
**

Группа: Новичок
Сообщений: 90
Регистрация: 19-12-07
Пользователь №: 33 459



Цитата(Maik-vs @ Dec 21 2007, 20:17) *
ИМХО это большой героизм советского толка писать такое на С. Лучше на ассемблере - там эмулятор точно считает время, можно всё учесть и пользоваться всякими хитростями. Сам интересуюсь подобной штукой, поэтому интересно, что у Вас получится. Видел проект, где пикселы строки заносятся во все 32 регистра, а потом тупо сдвигаются. Для сдвига, подумалось мне, можно использовать один из последовательных интерфейсов, кажется TWI может подойти. Или использовать внешний регистр сдвига как external RAM. Насчёт дрожания. PLL к строчной синхронизации конечно желателен, но у нас есть разработка с пиксельной частотой 20 МГц, буквы не дрожат.


Для меня скорее наоборот на ассемблере будет героизмом писать, т.к. я вообще в нем ничего не знаю smile.gif
Так что пишу по мере возможностей на Си


Расскажите, пожалуйста, про TWI и SPI применительно к моей задаче. Посмотрел проекты другие, там идет запись в какой-то SPDR, почитал даташит, мало чего понял. Если не сложно, напишите пример вывода хотя бы одного байта в строку с помощью этих технологий, попробую разобраться что к чему.

Ну и надо попробовать вариант с выводом целого байта в свободный порт с последующим сдвигом, может это будет быстрее
Go to the top of the page
 
+Quote Post
idono
сообщение Dec 22 2007, 20:23
Сообщение #20


Частый гость
**

Группа: Новичок
Сообщений: 90
Регистрация: 19-12-07
Пользователь №: 33 459



Сделал вариант с выводом байта целиком в порт с последующим сдвигом - занимает в 2 раза меньше времени, чем мой первый вариант, т.е. нужные мне символы дописались без проблем. При желании можно было бы еще с десяток циферок до конца строки успевать прописывать.

Итого вышло 4 строки по 6 символов в каждой (плюс в двух еще и точка разделительная).
Получилась отличная реализация телеметрии для авиа-модели, осталось отыскать пару датчиков давления, дабы менять скорость и высоту.

Спасибо всем за помощь и идеи a14.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Rst7
сообщение Dec 23 2007, 12:46
Сообщение #21


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Получилась отличная реализация телеметрии для авиа-модели, осталось отыскать пару датчиков давления, дабы менять скорость и высоту.


Ну датчиков давления как грязи разных, найти не проблема. Но я бы делал телеметрию не так.

Насколько я понял, у вас передается изображение с видеокамеры, установленной на БПЛА, но перед этим вы подмешиваете туда свою графику. А надо бы чуть наоборот - подмешивать в воздухе данные телеметрии в бинарном виде - например, отвести на них 8 микросекунд после гасящего строчного и передать, скажем, 1 байт за это время (да хоть используя USART). В результате, если вы будете смотреть картинку, то увидите справа столбик с данными. А уже на земле пропустить этот видеосигнал через коробочку, в которой проц вытащит байтик по строчному синхроимпульсу и отобразит его красиво буквами и цифрами (и, например, можно будет по необходимости эту информацию наложить или убрать). В этом случае, у вас получается возможность, записав видеосигнал, сохранить объективные цифровые данные, которые можно потом обрабатывать не вручную. Запись можно вести хоть на видеомагнитофон, хоть цифровать сразу на комп.

В профсистемах для этой цели используются невидимые интервалы (гашение и т.д.), но лучше пожертвовать маленьким кусочком картинки, тогда все можно сохранить, не заботясь, что данные могут быть обрезаны (например, при цифровке на комп, как понимаете, все данные вне видимой области уйдут в сад).


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Xumuk
сообщение Dec 23 2007, 14:36
Сообщение #22





Группа: Новичок
Сообщений: 3
Регистрация: 23-12-07
Из: Харьков, Украина
Пользователь №: 33 566



Привет всем wink.gif
Очень интересная тема, давно думал над этим и вот собрался.

Собрал схему (прошу прощения за её несоответвие ISO, ГОСТ, ДСТУ прочим стандартам smile.gif )


(Забыл нарисовать на схеме, общий провод конструкции соединен с общим проводом видеосигнала)
Но вывести что-то осознанное на экран не получилось sad.gif
Подскажите поожалуйста, может я допустил ошибку в схеме? Или в коде программы?

_______________________________________________________________
#include <tiny26.h>
#include <delay.h>

int i=0;

interrupt [EXT_INT0] void ext_int0_isr(void)
{
if(i>100 && i<200){
delay_us(10);
PORTA.7=1;
delay_us(20);
PORTA.7=0;
}
i++;
}


void main(void)
{

PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
TCCR0=0x00;
TCNT0=0x00;
PLLCSR=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1=0x00;
OCR1A=0x00;
OCR1B=0x00;
OCR1C=0x00;

GIMSK=0x40;
MCUCR=0x00;
GIFR=0x40;

TIMSK=0x00;

USICR=0x00;

ACSR=0x80;

#asm("sei")

while (1)
{
if(PINB.3==0){
i=0;
}
};
}
________________________________________________________________________________
_

Это конечно не Мега16, но ведь вывести квадратик должно хватить? Просто под рукой был макет на Тинни26, который можно было легко переделать.

Сообщение отредактировал Xumuk - Dec 23 2007, 15:07
Go to the top of the page
 
+Quote Post
idono
сообщение Dec 23 2007, 18:23
Сообщение #23


Частый гость
**

Группа: Новичок
Сообщений: 90
Регистрация: 19-12-07
Пользователь №: 33 459



Xumuk, на схеме сразу бросается в глаза разрыв видео-сигнала. Сигнал рвать не надо, провода Vin и Vout надо оба подключить к центральной жиле видео-провода, не разрывая ее.
Тогда твой МК будет в нужный момент времени выдавать "в линию" напряжение, что будет белой точкой в строке (либо линией, смотря на сколько "включать" PA7)

Сообщение отредактировал idono - Dec 23 2007, 18:27
Go to the top of the page
 
+Quote Post
fmdost
сообщение Dec 23 2007, 18:54
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Только вертикальную скорость нужно отображать ввиде столбика или полоски. Иначе легко запутаться в цифрах.
Go to the top of the page
 
+Quote Post
idono
сообщение Dec 23 2007, 19:27
Сообщение #25


Частый гость
**

Группа: Новичок
Сообщений: 90
Регистрация: 19-12-07
Пользователь №: 33 459



Цитата(Т.Достоевский @ Dec 23 2007, 21:54) *
Только вертикальную скорость нужно отображать ввиде столбика или полоски. Иначе легко запутаться в цифрах.

Это точно, но у меня пока до вертикальной скорости дело не дошло. Не думаю, что разрешения стандартных датчиков давления + АЦП хватит для измерения вертикальной скорости с разрешением хотя бы 0.5 м/с
Go to the top of the page
 
+Quote Post
fmdost
сообщение Dec 23 2007, 19:40
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(idono @ Dec 23 2007, 22:27) *
Не думаю, что разрешения стандартных датчиков давления + АЦП хватит для измерения вертикальной скорости с разрешением хотя бы 0.5 м/с

Хватит. У меня знакомые моделисты делали. Ещё знакомые, делали измеритель давления для часов на мотороловском датчике, говорят на 16 битах меряли высоту комнаты. Уточню название завтра, ибо уже спят.
Можно ещё сделать как в больших самолётах. Баллон с маленькой дырочкой, и какой нибуль датчик расхода, или измеритель относительного давления.

Сообщение отредактировал Т.Достоевский - Dec 23 2007, 19:42
Go to the top of the page
 
+Quote Post
Xumuk
сообщение Dec 23 2007, 20:40
Сообщение #27





Группа: Новичок
Сообщений: 3
Регистрация: 23-12-07
Из: Харьков, Украина
Пользователь №: 33 566



Цитата(idono @ Dec 23 2007, 20:23) *
Xumuk, на схеме сразу бросается в глаза разрыв видео-сигнала. Сигнал рвать не надо, провода Vin и Vout надо оба подключить к центральной жиле видео-провода, не разрывая ее.
Тогда твой МК будет в нужный момент времени выдавать "в линию" напряжение, что будет белой точкой в строке (либо линией, смотря на сколько "включать" PA7)


Спасибо wink.gif
Заработало biggrin.gif
Я не досмотрел, специально не соединял чтобы можно было лучше рассмотреть полученное изображение, а о том, что выходит телевизору не от чего синхронизироваться я как-то не подумал smile.gif

А можно узнать какой датчик для измерения температуры был использован?
Go to the top of the page
 
+Quote Post
idono
сообщение Dec 23 2007, 21:39
Сообщение #28


Частый гость
**

Группа: Новичок
Сообщений: 90
Регистрация: 19-12-07
Пользователь №: 33 459



Цитата(Xumuk @ Dec 23 2007, 23:40) *
А можно узнать какой датчик для измерения температуры был использован?

AD22100 обычный аналоговый, на вход АЦП.
Может это не лучший вариант, везде пишут про использование каких-то датчиков с передачей инфы по l2c (даже в примерах cvavr такой использован, там кстати и название его написано)
Go to the top of the page
 
+Quote Post
idono
сообщение Jan 1 2008, 01:18
Сообщение #29


Частый гость
**

Группа: Новичок
Сообщений: 90
Регистрация: 19-12-07
Пользователь №: 33 459



Объясните на пальцах, пожалуйста, как сделать вывод данных на видео через SPI?
А то чисто программно выводить слишком сложно выходит, а ведь надо еще и для кучи расчетов "мозгов" МК оставить help.gif
Go to the top of the page
 
+Quote Post
HCHUNTER
сообщение Jan 1 2008, 07:39
Сообщение #30


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 29-12-07
Пользователь №: 33 732



idono,

...от себя хотел добавить - обратите внимание на уровень оптимизации кода вашим компилятором (на какой уровень он выставлен). От этого будет сильно зависеть скорость работы таких конструкций как
i=10; while(i--) { #asm("nop"); }
или последовательный вывод строчек символов (где у вас подряд идут штук 20 одинаковых операторов).

А вывод делать нужно действительно через SPI ! Это самый быстрый метод. Пропускная способность порта для наших задач - фактически 8000000 точек в секунду.

Я сейчас озадачен той же самой проблемой, что и вы, с той лишь разницей, что я полностью формирую изображение на экране TV, а не накладываю текст.
На данный момент я добился вывода ч/б текстового поля размером 43х27 символов. Размер символа 8х12 точек.
Это же эквивалентно выводу ч/б картинки размером 340х312 пикселей.

Делаю все на AVR Mega8, но собираюсь переползать на Mega32, т.к. у "восьмерки" (впрочем как и у мега16) катастрофически не хватает памяти, а все видеообразы и таблицы символов целесообразно хранить во FLASH...

Сообщение отредактировал HCHUNTER - Jan 1 2008, 07:41
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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