|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
||||||||||||||||||||||||||
Видеоконтроллер без прерываний, да и вообще без процессора27.03.2016, 20:48. Показов 15514. Ответов 44
Метки нет (Все метки)
Только два таймера, spi, dma и 40 строчек программы инициализации )
Полный размер кадра - 288 точек x 312 строк x 1 бит. Но это включая и невидимую часть, а видимой будет картинка где-то 200x200, зависит от телевизора. Ниже настройки для stm32f103, 72 МГц, но всё это легко перестраивается и под другой мк. Первый таймер выдаёт строчные синхроимпульсы - период 64 мкс, импульс 4.7 мкс, активный ноль. Выдаёт он их только когда нет кадрового синхроимпульса, поэтому режим gated.
Период кадровых синхроимпульсов 20 мс (312 строк), импульс 256 мкс, активный ноль.
Частота 4.5 МГц, байтовая передача, 36 байт (288 точек) на строку (64 мкс). Используется только вывод mosi.
Такое странное название потому, что так xnview называет массивы в xbm-формате )
Схема подключения: PB8 (sync) ---[620 Ом]---> VIDEO PB5 (data) ---[300 Ом]---> VIDEO BIS и BIX в тексте - просто макросы установки битов в регистрах. <Изображение удалено> [3.73 Кб]
0
|
||||||||||||||||||||||||||
| 27.03.2016, 20:48 | |
|
Ответы с готовыми решениями:
44
Windows 7 тормозит без видимых причин и без загрузки процессора Нужно написать программу без перегрузок операторов и вообще без перегрузок Как завершить com программу без прерываний. |
|
0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 1,017
|
|
| 28.03.2016, 10:19 | |
|
Круто!
Только я подозреваю, что не каждый телевизор сможет правильно выводить сигнал с такой синхрой. Все-таки последовательность там довольно сложная.
0
|
|
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
| 28.03.2016, 10:36 | |
|
Необходимость точно выдерживать стандарты в случае монохромного изображения и прогрессивной развёртки сильно преувеличена )
Главное не давать особо умным телевизорам вставать в режим авто-распознавания, тогда они похоже действительно что-то анализируют и могут впасть в ступор. Но если насильно выставить secam или pal, или даже ntsc 60 Гц, то спокойно всё сожрут )
0
|
|
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
| 28.03.2016, 11:39 | |
|
Еще бы три канала SPI одновременно пинать и было бы хорошо.
На пЫк32 такое есть...
0
|
|
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
| 28.03.2016, 11:56 | |
|
Не-не-не, не соблазнишь, у меня счас stc15 в фокусе внимания ))
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 28.03.2016, 12:51 | ||
А тогда бы и цветную картинку можно было сделать (через VGA-вход телевизора).
0
|
||
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|||
| 28.03.2016, 13:14 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
| 28.03.2016, 13:24 | |
|
Без spi - это по байту на пиксель - упрёмся в 16-битный счётчик dma, ну и расход ram в восемь раз
0
|
|
|
0 / 0 / 0
Регистрация: 12.08.2012
Сообщений: 1,217
|
|
| 28.03.2016, 13:31 | |
|
А как можно в GPIO с такой скоростью выводить? Если программным ногодрыгом то проц только этим и будет занят, а DMA может из памяти в порт класть по событию от какогонибудь таймера?
0
|
|
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
||
| 28.03.2016, 13:37 | ||
Гы... Есть решение, но пока дорого- QUADSPI см.L4 ... :)))))
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
| 28.03.2016, 13:54 | |
|
Если процессор взять из новеньких (L476, F469, F7xx), то там есть интерфейс QuadSPI - синхронно до восьми SPIных бит работают (обычно в примерах используют четыре из них).
У процессоров постарее - SDIO в четырёхбитном режиме не получится использовать?
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 28.03.2016, 13:57 | |
|
mShit, ну, скорость достижима: у eddy_em получилось 6.25МГц - http://eddy-em.livejournal.com/96373.html
Я тоже пробовал подобное, но с отправкой в BSRR, чтобы только нужные ноги дёргать (соответственно, приходилось слать по 32 бита), максимальная скорость получилась емнип 3 или 4 мегагерца (но я через куб делал, код мне не нравится совсем... а на код eddy_em посмотреть приятно). А вот объём ROM - проблема (ну, мне-то не надо было кадр слать, я хотел просто кусок синусоиды на ЦАП выплюнуть).
0
|
|
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
| 28.03.2016, 14:03 | |
|
В принципе второй и третий spi можно просто тупо и холодно по своим собственным dma и массивам запустить )
Синхронизация с таймерами всё равно только в одновременном начальном запуске, ну будет небольшая разбежка где-нибудь на 30 нс, при пикселе 222 нс может и незаметно будет
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
|
|
| 28.03.2016, 14:38 | |
|
"QUADSPI" ? Да Бог с вами, зачем усложнять себе жизнь? Завести тикающий таймер, от него запустить передачу DMA с записью в порт GPIOx-ODR. И всё, вся жизнь в цвете. )))
Если на STM32 с [цензура] индусская схемой межкоммуникаций это сделать нельзя, то есть xMiko, где DMA полностью автономный ресурс с произвольным подключением.
0
|
|
|
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 550
|
|
| 28.03.2016, 14:43 | |
|
Можно напрямую в линии ввода-вывода посредством ПДП (DMA).
Я делал вот так: http://www.youtube.com/watch?v=ubwrnwihEl8 Контроллер собран на STM32F405, режим 800х600 точек, частота обновления 60Гц, 256 цветов. Однако разрешение используется 400х300, выше не было смысла для поставленной задачи, да и памяти мало.
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 28.03.2016, 15:04 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
|
|
| 28.03.2016, 15:11 | |
|
Да, интересное решение. Главная фенька - это дисплей. Есть матрица, которая выводится на экран и любая железка может залезть (UART/SPI/...) в эту матрицу и поменять нужные точки и оно "само" будет выведено на экран. Такой функции с выводом через SPI не получишь, данные либо вычисляются на ходу, либо лежат в закодированном виде.
Увы, здесь действительно надо что-то "постарше", на матрицу уходит слишком много байт. ((
0
|
|
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
| 28.03.2016, 15:12 | |
|
С gpio всё красиво и весело, но не получится весь кадр по dma закрутить, только построчно, а значит перезапуск dma в прерываниях, и это уже совсем другая история )
А для меня весь цимес был в том, чтобы всё крутилось само по себе, независимо от процессора, и даже в debug-режиме, когда процессор вообще остановлен
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
|
|
| 28.03.2016, 15:49 | |
|
vt340, да тоже классно! )) Только одно для черных, а другое для цветных.
0
|
|
| 28.03.2016, 15:49 | |
|
Помогаю со студенческими работами здесь
20
Как написать ввод/вывод без прерываний?
NASM и C. Как считать ввод с клавиатуру без прерываний ASM, DOS, FAT32. Атрибуты файла без использования прерываний Как программно на Си определить фронт импульса без прерываний? Atmega AVR Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|