Комментарии 21
И, хотя сама работа отличная и полезная, и автору респект, как за изделие, так и за нормальное его описание — определить теперь где хабр где ГТ уже само НЛО наверное не в состоянии
Думаю что нет, на ардуино полно весьма приличных проектов и решений. Прошли те времена, когда только светодиодом там мигали.

Тем не менее, раздел DIY на Geektimes, и не понятно что делать, когда DIY касается микроконтроллера, поскольку хаб о его программировании на Habrahabr. Кто бы разъяснил...

Да сразу было понятно, что разделение это абсолютно бессмысленное (аудитория там одна и та же), недавняя смерть «мегамозга» это только потдвердила. Я думаю, скоро гигтаймс сольется с хабром (или наоборот, пофигу). Имхо, НЛО — дура!
Ну, тут неоднозначно… Я рад, что всякий мусор, который ежедневно, тоннами сваливают всем известные персонажи, стало проще фильтровать, персонажи переехали на гт, а сюда все больше в гости заходят. И в тоже время, как-то не хватает нормального DIY (не диодом конечно мигать, но просто прикольные железки с достойным описанием как она работает, будь-то хоть сколько оригинально, а не перепост любой ссылки с первой страницы гугла, по правильному запросу) и науч-поп хабов, типа Космонавтика…
Я бы оставил как было изначально — все на хабре, но дал пользователям возможность настроить фильтр ленты как ему удобно.
Кстати, на вашей картинке, которая показывает эффект девятого бита, отлично бы помог трюк от того же TellyMate с дублированием восьмого бита. Мне кажется, она стала бы намного лучше, став лишь немного более кривой на наклонных переходах цвета.
Я когда-то делал нечто похожее на AT91SAM7S, только для VGA. Хорошо что там был DMA и более вменяемый SPI.
Но мне пришлось выделить под frame buffer бОльшую часть доступной RAM, потому что в frame buffer пришлось хранить не только само изображение, но и невидимые части (все четыре porch'а). Только таким образом удалось избежать срывов синхронизации.
Простым решением было бы переписать вывод видео на STM8. Он по функциям почти аналогичен, но SPI непрерывный. Я даже получил лицензию на компилятор COSMIC.
Но потом понял, что лучше сразу сделать на STM32. На данный момент сделал вывод синхросигнала и немного исследовал SPI, DMA и контроллер прерываний.
Выглядит так, что тайминги можно выдерживать с помощью таймера синхронизации (с его 4 каналами), один канал вырабатывает сами синхроимпульсы, второй — настроен на backporch и пинает DMA на вывод строки. Или запускает второй таймер, который, в свою очередь, несколько раз пинает DMA c периодом, равным ширине каждого символа в строке.
В деталях еще не продумал, периферия очень мощная, изучаю потихоньку.
Да, чем хороши STM32, так это развитой периферией. Она там намного лучше чем в тех же AT91SAM7x, и уж явно намного круче AVRок. И это при сопоставимой с AVRками цене.
Думаю, на STM32 выйдет реализовать вменяемый frame buffer. А если бы там было три SPI или один quad SPI, то можно было бы сделать даже трехбитный цвет.
Цвет я бы сделал 8-битный, внешним кодеком, даже заказал пару микросхем.
Можно так же через DMA выводить байты в порт, к которому подключен простой R2R ЦАП.
Только для хранения цветного изображения нужно гораздо больший объем флеша, тут бы сжатие не помешало какое-нибудь быстрое.
Другой вариант — сделать мультиплексор и подавать черно-белый сигнал на разные входы кодера цвета.

Только в практическом устройстве это вряд ли нужно.
И кстати, frame buffer как таковой в этом таймере отсутствует.

Есть буфер, где хранятся значения символов — 5 байт верхней строки и 8 — нижней (только второе двоеточие и секунды не отображаются, они нужны для хода часов).

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

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

Таким образом расход ОЗУ вообще минимален, а флеш забит огромным шрифтом.
Совет: используйте GIMP и формат XBM для графики. Очень помогает (я делал похожий проект на AVR, потом на STM32).
Ностальгия…
Как то подобное и на рассыпухе (обычная K155 серии «логика» + ПЗУ) один мой знакомый делал. Вот это был мазохизм.

Еще один кусочек который можно добавить — это передатчик. Хоть на одном транзисторе (на метровый диапазон).
Тогда даже кабеля к телевизору не надо. В радиусе 10-20 метров нормально сигнал ловится.

Рекомендую еще попробовать сделать то же самое на FPGA. Опыта и удовольствия получите в разы больше. Кстати, я тоже делал похожую штуку только под VGA. Внешний ПЛИС генерировал синхроимпульсы, и выводил данные с SRAM чипа, а МК на порчах записовал.
Обязательно попробую. Я даже заказал пару микросхем sram по 128 кБайт каждая, флешек от биосов у меня и так полно, есть кодеры цвета, есть макетка на Altera MAX2 и Циклоне 1.

Хочу еще с какой-нибудь AVR с интерфейсом внешней памяти поиграться.

Времени только мало.
Можно информацию о SRAM чипе? А что за макетки Altera MAX II и Cyclone I? самодельные?

«Хочу еще с какой-нибудь AVR с интерфейсом внешней памяти поиграться.»
Не совсем понял. Что вы имеете ввиду? чипы памяти подключить к AVR или с интерфесом внутри AVR поиграться? (видимо пора спать).
Память взял первую попавшуюся.
Макетка MAX2

Макетки с циклоном такие, как у меня, уже не продаются. Вот здесь описание.

К интерфейсу внешней памяти (а это шина адреса и шина данных) хочу подключить плис и сделать какое-нибудь внешнее устройство. Тот же видеоадаптер или вывод звука.
Насколько мне известно в AVR8 нет апаратной шины адреса или данных.
Лучше сделать все в плисе. Ядро аврок есть, возможно придется доделать, но они рабочие. С внутренним ядром можно всякое творить, например много много pwm или вывести его вообще.

Чип от итачи не рекомендую поскольку они не дадут вывести тру 640 на 480 при 60 фпс 8 бит цвет. У них скорость ~14MHz, а с кешом это 14МегаБайт в секунду а надо 18 МегаБайт с кешом или 25 МегаБайт без кеша. Можно конечно уменшить разрешение, скажем 320 на 240 с 60 фпс, но это не ахти.
В MAX II авр не поместить, но VGA поместится.

Поидее можно вывести видеопамять на внутренний авр. Только там 64кб макс, а с перефирией 60кб максимум.
Эх забыл сказать. У чипов итачи ножки 5V и питание соответсвенно. А у плис только 3.3V. Будут проблемы с уровнями.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.