roboforum.ru

Технический форум по робототехнике.
Текущее время: 21 май 2025, 05:25

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 88 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 22 окт 2011, 01:36 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 996
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Писать в любой момент.
Процедура рисования (пикселя, линии и тд.) будет отключать сканирование SRAM, переключать ее в режим записи, писать что нужно и восстанавливать все назад. Т.о. на экране при например отрисовке пикселя может почернеть пару строк или появится небольшой мусор (но в следующем кадре они восстановятся). Думаю это будет допустимо, посмотрю как получится. Буфер на память думаю непонадобится и шина данных всегда будет подключена к ЦАПу.

Во вторник придет мне SRAM, соотв до конца недели надеюсь доделаю макет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 22 окт 2011, 02:39 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
а ты случайно не анализировал osd в открытых проектах? например smalltim

Добавлено спустя 2 минуты 37 секунд:
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 23 окт 2011, 01:50 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 996
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
За smalltimом слежу уже года 2, правда нерегулярно. Читал много OSD проектов, собственно они и Смаллтим в частности послужили причиной старта моей разработки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 24 окт 2011, 15:20 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 996
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Возникла проблемка...
Связанная с тем, что прерывание не прерывает текущую команду. В результате получается неопределенность от 1 до 3 тактов. Проблема известная обычно кладут в слип, но мне нужны вычислительные ресурсы и слип не хочется использовать. В случае прерывания по таймеру есть решения программной компенсации неопределенности (видел несколько решений разных). Но в случае OSD прерывание не по таймеру, а внешнее.

Есть какие-то варианты решений в этом случае?

Добавлено спустя 5 минут 44 секунды:
Как внутри обработчика прерывания в конце отправить мк в слип?
Прерывания строк идут подряд. Хотелось бы в конце каждой видимой строки отправлять мк в слип, что-бы следующее внешнее прерывание выводило его из слипа без неопределенности. А в конце видимой части перестать это делать (чтоб между кадрами и в черной зоне он что-то вычислял).

Добавлено спустя 2 минуты 53 секунды:
Тупо оправить в сон в конце обработчика я так понимаю нельзя, надо завершить обработчик, иначе будет тут же переполнение стека. Или я туплю?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 24 окт 2011, 15:20 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
сделайте прерывание на оба фронта.
На переднем фронте синхроимпульса отправлять в слип, на заднем - просыпаться и разворачивать строку.
Например.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 24 окт 2011, 15:27 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
HarryStar писал(а):
В результате получается неопределенность от 1 до 3 тактов.

Я бы в прерывании считывал таймер. И в зависимости от того на сколько он убежал сделать выравнивание.
Но без асм - голяк :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 24 окт 2011, 15:30 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 996
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Michael_K писал(а):
сделайте прерывание на оба фронта.
На переднем фронте синхроимпульса отправлять в слип, на заднем - просыпаться и разворачивать строку.
Например.

Вот это мысль! Спасибо.
Dmitry__ писал(а):
Я бы в прерывании считывал таймер. И в зависимости от того на сколько он убежал сделать выравнивание.

Внешнее прерывание. Нет таймеров, яж писал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 24 окт 2011, 15:39 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
опс, виноват, обещаю дочитывать сообщения до конца :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 24 окт 2011, 15:51 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
HarryStar писал(а):
Внешнее прерывание. Нет таймеров, яж писал.

Не, ну это как раз обходимо - если внешний сигнал повесить на capture. Разность между регистрами TCNT и ICP даст величину неопределенности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 24 окт 2011, 16:50 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
в далеких 90-х делал osd на пик. Чтоб меньше была зазубренность вертикальных линий делал так:
1. Ждем строчный импульс
2. Хитро выключаем генератор контроллера (диод, резистор), т.е. сам генератор продолжал работать, но уровень сигнала был недостаточен для работы контроллера.
3. После команды выключения генератора несколько nop-ов , где-то прога останавливается.
4. Пришедший строчный импульс с селектора (Q2) запускает программу.
5. Программа снимает блокировку генератора.

Схема "не по правилам", тапками не кидаться, по губам не бить т.к. я играю на флейте :P


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 24 окт 2011, 18:07 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
boez писал(а):
HarryStar писал(а):
Внешнее прерывание. Нет таймеров, яж писал.

Не, ну это как раз обходимо - если внешний сигнал повесить на capture. Разность между регистрами TCNT и ICP даст величину неопределенности.

Вот я бы так и поступил, но без асма ловить такты беспонтово.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 24 окт 2011, 19:41 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 996
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Реализовал предложенный Майклом вариант с передним и задним фронтом.
Отлично работает. Более подробно вернусь к этому вопросу после подключения SRAM и повышения разрешения. В 128х68 все идеально (почти).

Вариант c таймером и capture я понял только теоретически, не разу так не делал, надо подумать...

И придется переходить с меги32 на мегу128. SRAM отъедает 24 ноги, а мне надо еще 3 внешних прерывания, АЦП и еще несколько свободных ног.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 28 окт 2011, 08:43 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 996
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Для вывода непрозрачных пикселей нужно отключать видеосигнал, подскажите, как лучше это сделать?
На это выделяется отдельная ножка, соотв нужно чтоб при 1 на ней видео-сигнал проходил на выход, при 0 - соотв был бы отключен (желательно находился в высокоомном состоянии).

Нашел например SN74LVC1G3157 или 74HC4066D (микросхемы переключатели) - но может быть есть способы попроще? Или это самые нормальные варианты через подобные микросхемы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 28 окт 2011, 10:51 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
"Попроще" и "нормальный вариант" - это разные вещи.
Нормальный вариант - это обеспечить одинаковое входное и выходное сопротивление (75 Ом, кажется положено) для этого НУЖНО ставить усилитель-смеситель и у него на входе уже что-то мутить (даже просто закорачивать входной сигнал на землю).
Ну а попроще... Фиг его знает. Можно попробовать и просто коротнуть :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TV-AVR. (бывш Время выполнения PORTB.1 )
СообщениеДобавлено: 28 окт 2011, 12:47 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
В "уровень белого" пикселы сами получатся непрозрачными (делать больше уровень сигнала), но на белом фоне osd будет сливаться с видео :(
Так сделано и в smalltim и в схеме, что я давал выше. А вот с "уровень черного" - все плохо, надо не нарушать привязку уровня черного и уровень синхроимпульсов.
В общем если делать нормально, то получится как в ссылке на "OSD & dsPIC30F3012"


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 88 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO