shiru8bit

shiru8bit 

Программист, музыкант, самоделкин, ретрогеймер

87subscribers

877posts

Победа над Тетрисом

В попытках получить нормальное изображение разобрал макетку и собрал минимальный тест на весу: четыре резистора и разъём. Изменений никаких.
На ЭЛТ телевизоре я увидел, что синхронизация постоянно уплывает. В какой-то момент можно увидеть плавающий прямоугольный растр, в одну долю секунды он даже оказывается на своём месте, потом начинает уплывать быстрее и быстрее. Потом можно видеть его диагональную версию. Определённо что-то не то с синхронизацией. Но что? Причины может быть две: тайминги и уровни сигналов.
Я было подумал, что моя Ардуина не имеет нормальной стабилизации тактовой частоты, у неё керамический резонатор вместо кварца. Но на фото автора проекта видна точно такая же.
Тогда я было подумал, может быть не те резисторы — в схеме для генерации уровней видеосигнала указаны номиналы нестандартного ряда: 380, 780 и 580 Ом. Я поставил ближайшие стандартные 390, 760 и 560 ом. Из-за разброса номиналов они фактически 388, 769, 566 — это очень близко к требуемым.
У автора на фото его собственной конструкции стоит вообще неизвестно что, но скорее всего цепочки по два резистора последовательно. Первые номиналы видны: 680 (вместо 580), 470 (вместо 780), 47 Ом, а остальные перекрывает провод. Вероятно он точно подобрал номиналы таким образом. Но не совсем, потому что из 680 последовательным включением 580 не сделать. Совершенно непонятная история.
Тогда я полез в код, посмотреть, что и как там устроено. И увидел подозрительное: DDRD устанавливается в %10101000, то есть выходные пины для видео PD7, PD5, PD3. А на схеме вместо PD5 указано PD6. Ну и разумеется, дело было в этом. Перепаял резистор на другой пин, и получил чёткую стабильную картинку на более капризном TFT-телевизоре.
Что дальше. Этот проект лишь показывает, что 4 градации серого в принципе возможны на Arduino. Но сам код в этом проекте заточен на тайловую графику, а мне нужна растровая графика. Также здесь код видео сильно связан с четырёхканальным программным генератором звука, который мне не нужен. Поэтому нужно или серьёзно переделывать этот код, или писать свой с нуля. К тому же есть вопрос расхода памяти, а у Arduino её всего 2048 байт. Пока буду думать.
Subscription levels6

Микро 16

$0.22 per month
Просто потому что нельзя 8. Даже самая малая поддержка важна. Спасибо!

База 128

$1.74 per month
Для тех, кто просто хочет поддержать. Спасибо!

Супер 256

$3.5 per month
Для тех, кто хочет поддержать. Спасибо!

Кило 320

$4.4 per month
Для тех, кто сильно хочет поддержать. Спасибо!

Мега 640

$8.7 per month
Для тех, кто очень хочет поддержать. Спасибо!

Гига 1024

$13.9 per month
Для тех, кто крайне хочет поддержать. Спасибо!
Go up