Попробовал запустить TDA8708 в Mode1 и Mode2. Попробовал включить его в Mode1 - получил целиком белую картинку, правда диаграммы немного отличались от приведённых в даташите из-за того, что выход детектора синхроимпульсов идёт прямо на GATEA АЦП, а также из-за того, что GATEA нельзя принудительно устанавливать в нижний уровень до окончания строчного синхроимпульса (иначе не определить начало кадрового). Но GATEB я гарантированно устанавливал в 1, когда ещё GATEA был в 1.
Пришёл к выводу, что всё-таки в оригинальном проекте у видео-АЦП включается режим Mode2, несмотря на то, что в программе сигнал GATEB устанавливается в 1 сразу же после установки в 0 сигнала GATEA (без паузы).
Попытался искусственно снизить амплитуду сигнала с видеокамеры до 0.6..0.8 Vpp (исходная была 1-1.2 Vpp) - картинка стала тусклее, а именно пропали элементы с кодом яркости от 0xE0 до 0xFF (в несжатом виде), хотя, судя по описанию на TDA сигнал от 0.6 В АРУ должна была отработать.
Также попробовал вместо детектора синхроимпульсов на транзисторе использовать микросхему LM1881. При использовании этой микросхемы необходимо слегка менять программу, поскольку длительность генерируемого LM-кой синхроимпульса превышает 5 мкс, и оригинальная программа детектирует его как кадровый. Но особого преимущества от использования этого специализированного детектора не получил - исходная схема нормально детектирует синхроимпульс в достаточно широком диапазоне амплитуд входного сигнала. Может быть, если бы видеосигнал шёл издалека, у него бы портились фронты, тогда бы имело смысл использовать эту ИМС, а так смысла, похоже, нет.
Есть пара вопросов:
1. Просмотрел отсканированный несжатый растр и увидел, что в нём присутствует небольшое число элементов с яркостью меньшей, чем 64 (в частности, 59, 60, 61, 62, 63), т.е. элементы "Чернее чёрного". Не происходит ли при преобразовании в JPEG их превращение в "белые" - ведь там встречаются формулы вроде
Код
__fractional_multiply_unsigned(r-64,170)>>8
?
2. Просмотрел код файла "grab.asm" и проникся большим уважением к автору проекта. Вы очень остроумно применили код Грея для перекачки значений с выхода видео-АЦП во внешнюю память, и макрос для этого просто класс. Вот только возник вопрос: а насколько целесообразно использовать именно код Грея для генерации нового адреса? Ведь можно было вместо инструкций cbi/sbi использовать что-то вроде
Код
ldi ZL, CUR_ADR
out ADR_LO, ZL
(ну, всё это в макросе, конечно). Один раз за весь цикл пришлось бы, конечно, поменять A17 вручную, но один пиксел роли не сыграет... Код процедуры захвата тоже в почти 2 раза возрастёт по объёму, но зато при дальнейшем сжатии в JPEG мы получим линейную адресацию пикселов, и, возможно, более быструю процедуру сжатия?