roboforum.ru

Технический форум по робототехнике.


TV-AVR

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение HarryStar » 26 сен 2011, 16:39

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

Проще ничего не смог придумать. Микросхема я так понимаю ЛИ1(74HC08N), да (логическое неинвертирующее И)? Соотв. 2 шт мне их понадобится. Если порт С весь в 1, то сигнал с В идет в полном объеме. если какие-то биты порта С в 0, то соотв. биты на ЦАПе всегда в 0. Правильно я мыслю?
Вложения
cxema-tv2.jpg
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение HarryStar » 27 сен 2011, 14:48

Реализовал в железе. Работает нормально. Еще немного приглажу и покажу результат.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение HarryStar » 06 окт 2011, 21:11

Доделал и вылизал вывод видео.
Результат можно посмотреть тут
На видео видны некоторые артефакты, на самом деле их нет - это последствия не очень качественного видео-захвата и компрессии при закачке на ЮТуб.

Возможности:
4 видеорежима.
40х29 64 градации серого
64х38 16 г.с.
80х58 4 г.с.
128х77 2 г.с.

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

С проблемой полосатости изображения я все таки избавился с помощью программного отключения внутренней подтяжки входов без применения дополнительных микросхем. До этого подобный метод не работал из-за ошибки в программе.

На следующей неделе буду прикручивать I2C и будет у меня графический/текстовый I2C терминал :)
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение =DeaD= » 06 окт 2011, 21:49

Очень даже неплохо! А насколько этот проект далёк от OSD?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение Dmitry__ » 06 окт 2011, 22:42

круто, осталось добавить pll генератор вместо osc avr с синхронизацией от строчных импульсов, чтоб убрать зазубрины и можно osd делать. Где-то видел хорошую схему pll, если надо, найду...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение HarryStar » 06 окт 2011, 23:53

Для нормального OSD надо LM1881 или подобную микросхему. Чисто программно будет не очень, хотя надо попробовать, интересно. Ожидаю проблему с через-строчной разверткой.

Зазубрины на телевизоре не видны. Есть очень незначительное дрожание из-за неточного попадания в прерывание (разница 1-3 такта - это около 20% пикселя). Причем на хороших теликах (например на 40" самсунге) дрожания нет вообще, видимо он сам подстраивается. 20% это на мелком LCD 5" (мой основной тестовый) - это дрожание заметно, но пренебрежимо мало, по крайней мере для таких разрешений.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение Dmitry__ » 07 окт 2011, 00:40

Чел делал для логотипа в кабельном TV, очень профессионально...
как бонус - микшер tv сигнала для osd
http://www.imeda.nm.ru/osd/index.htm
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение HarryStar » 07 окт 2011, 08:17

Ну... скажем прямо, не вижу смысла заменять маленькую микросхему с которой схема будет минимальной и красивой на кучу усилителей, логики и других деталей. У нас просто в городе нет лм1881 и в чипе-дипе нет, найду - обязательно буду делать osd, т.к. нужна для использования на моих моделях. Готовые покупать не хочу, т.к. получаю кайф от пайки и программирования мк :)

Программное решение без 1881 - это интересно, но боюсь качество будет так себе. но попробую. отпишусь.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение HarryStar » 14 окт 2011, 00:22

Попробовал чисто программный метод - фиг. Пока распознается синхронизация, пока определиться, что это именно кадровая, плюс расчет номера строки - уже примерно пол-строки проходит. И то из за медлительного АЦП получается очень неточное позиционирование. Написал прогу, где подмешивается вертикальная линия к чужому видео, но скажем так... она только условно вертикальная. Плавает очень сильно от строки к строке. Да и свободных вычислительных ресурсов вообще 0 остается.

Зато нашел наконец LM1881. думаю за следующую неделю будет готовый модуль OSD на макетке в первом приближении. Результаты выложу конечно.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение Michael_K » 14 окт 2011, 00:37

А зачем АЦП? Можно компаратором ловить. Строки считать, чтобы знать заранее, какой следующий фронт - строчный, кадровый или какой-нибудь еще (выравнивающий, например). Кадровые от строчных отличать повторной проверкой через пять (или сколько надо) микросекунд.

Чтобы точно срабатывать, можно извращаться - например _перед_ ожидаемым фронтом уходить в слип :)
(ну и другие не менее извращенческие кривые способы есть:))...
Последний раз редактировалось Michael_K 14 окт 2011, 00:40, всего редактировалось 1 раз.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение Dmitry__ » 14 окт 2011, 00:39

если найдешь ba7046, ставь ее вместо lm1881, она с AFC, значительно лучше формирует строчные импульсы, особенно в шумном сигнале
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение HarryStar » 20 окт 2011, 14:59

Реализовал прототип OSD модуля. Пока 128х68 разрешение, 2 градации (белый и прозрачный). Проверял с 2 PAL камерами и с моим NTSC генератором видеосигнала. Все работает отлично.
Продолжаю допиливать.
Задача - повысить разрешение и сделать как минимум еще черный цвет.

Думаю попробовать прикрутить SRAM. Вроде недорого, а памяти там дофига. Переживаю только насчет скорости. Например у CY7C1019DV33-10ZSXI (1 Mbit) которая мне легко доступна написано 10 нс время доступа. Что то меня это настораживает. Мне надо читать около 5 байт за 1 нс.

Добавлено спустя 4 минуты 24 секунды:
ой туплю, мне 5 байт за 1 мкс надо, так что 10 нс/байт мне хватит за глаза. Отлично.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение boez » 20 окт 2011, 15:28

10 нс/байт это 100 МГц... Мы все еще говорим про AVR? :)
На самом деле будет медленнее и скорость будет определяться не sram, а AVR. Конкретно скоко будет - зависит от реализации. 5 байт за мкс теоретически может успеть - в линейном коде, без циклов, по 3 команды на одно чтение.
Или я чего-то не понял, как вообще планируется ОЗУ это подключать?
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение HarryStar » 20 окт 2011, 16:09

Яж дописал, что ошибся во времени. Скорости хватит без проблем.

16 бит адреса на 2 порта авр, на входы/выходы памяти сразу ЦАП. Память постоянно в режиме чтения.
Соотв вывод 1 пикселя это PORTC++;
Между строками будет PORTD++;
Между кадрами PORTC = 0; PORTD = томуто;

Так что скорость будет максимальна.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: TV-AVR. (бывш Время выполнения PORTB.1 )

Сообщение boez » 20 окт 2011, 22:32

А - все, понял, я думал ты читать из памяти в AVR собрался. Да, просто перебирать адреса - не вопрос. А записывать в это ОЗУ когда? Между строками/кадрами? Тогда надо на шину данных ОЗУ буфера поставить, чтоб от ЦАП его отключать на время записи.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21