VGA Space Invaders на Bluepill

Горан.маховик
Чт, 08 июня 2017 г., 19:12
Я пытаюсь получить https: // www.Артекит.EU/Space-Invaders-For-STM32/ Работая над BluePill, но я терплю неудачу :?

Я только что сделал небольшой код, чтобы получить его компиляцию в Atollic Studio, но сначала я получал сообщение о том, что мне нужно, но на оригинальном процессоре проекта есть такое же количество оперативной памяти, как и Bluepill 20K...

Поэтому я только что попытался положить меньший размер экрана, но потом он висит при очистке экрана в простой петле.

Если кто -то хочет пробуть отладка здесь - это код для атоличного...

Отредактировано:
Исправлена ​​проблема с массивом FB, которую я сделал путем вставки копирования ...

Rogerclark
Чт, 08 июня 2017 г. 22:08
Возможно, проблема с оперативной памятью является проблемой опции компилятора или линкера

Горан.маховик
Пт, 09 июня 2017 г., 7:07
инструкции .failes.png
инструкции.PNG (10.76 киб) просмотрено 568 раз

Горан.маховик
Пт, 09 июня 2017 г. 10:39
Я думаю, что получил это.

FB был определен два раза, и именно поэтому код был большим.
И я совершил ошибку, когда копия вставка из MBED и определил FB как одномерный массив, и он должен быть двумерным (который сбил код)...

Я протестирую его после VGA и поставлю код на git, если все будет работать...

Горан.маховик
Пт, 09 июня 2017 г. 15:32
Space2.jpg
пространство2.JPG (35.42 киб) просмотрено 539 раз

Рик Кимбалл
Пт, 09 июня 2017 г., 15:41
Очень хорошо! .. Ваш код размещен где угодно?

Горан.маховик
Пт, 09 июня 2017 г., 16:08
https: // github.com/goran-mahovlic/arm_space_invaders

Zoomx
Пт, 09 июня 2017 г. 18:42
Вы также опубликовали бинарный эльф! Большой!

Горан.маховик
Пт, 09 июня 2017 г. 18:53
;)

Rogerclark
Пт, 09 июня 2017 г., 21:21
ух ты...

На данный момент происходит так весело.

Спасибо, Горан...

AG123
Sun 11 июня 2017 12:47
+1 круто спасибо! : D

Рик Кимбалл
Солнце 11 июня 2017 г. 16:47
Вы использовали разделитель напряжения на зеленом видеосигнале? Из того, что я читаю, диапазон кажется 0-> 0.7 В?

Горан.маховик
Пн 12 июня 2017 г., 6:05
Нет, я только что использовал прямое соединение, как на оригинальном сайте...

https: // www.Артекит.EU/Space-Invaders-For-STM32/

Горан.маховик
Пн 12 июня 2017 г., 6:44
Но здесь предлагаются резисторы ...

https: // www.Шане.com/~ karllunt/s4dvga.HTML

Пито
Пн 12 июня 2017 г. 9:51 утра
Afik, R, G, B входы 75ohm и 0.7V Макс, другие - 5 В TTL..
Скорее всего, есть реальный 75om (резистор 75om) на входах RGB, подключенные к GND.

Ахулл
Пн 12 июня 2017 г. 14:08
Я подозреваю, что сигнал VGA несколько «переварен», однако большинство мониторов VGA будут мириться с этим, так как они, как правило, будут иметь схемы зажима на входы, чтобы защитить их путем зажима до максимума 0.7 В, или какой бы ни был входной этап монитора, легко выдержит. Поскольку мы только ведем их до 3V3, это, вероятно, безопасно в пределах возможностей рассеивания электроэнергии любой защиты.

Больше подсказок здесь.
https: // en.Википедия.org/wiki/video_graphics_array

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

Таким образом, поскольку мы делаем только 1 бит на видео на пиксель, то включение/выключение - это все, что нам нужно, однако видеосигнал на самом деле не находится в спецификации. скорее это, вероятно, в безопасных пределах в большинстве случаев.

Вы можете положить 100 -километровый горшок между выходным штифтом VGA и заземлением и перенести штифт стеклоочистителя на монитор, чтобы дать вам контроль яркости. Используйте экранированный кабель, и имейте в виду, что вы можете представить отражения/призраки на изображении, если кабель не закрипен или слишком долго. Вы также можете подавать сигнал красным и зеленым булавкам через другие подобные горшки, чтобы вы могли выбрать практически любой другой однократный, который вам нравится..

ZMEMW16
Пн 12 июня 2017 г. 14:21
V Dodgey Istr W контраст или это пороговый уровень ?
Стивен

Рик Кимбалл
Пн 12 июня 2017 г. 14:29
Ахулл написал:Вы можете положить 100 -километровый горшок между выходным штифтом VGA и заземлением и перенести штифт стеклоочистителя на монитор, чтобы дать вам контроль яркости. Используйте экранированный кабель, и имейте в виду, что вы можете представить отражения/призраки на изображении, если кабель не закрипен или слишком долго.

Пито
Пн 12 июня 2017 г. 14:38
Как я писал выше, существует резистор 75ohm против заземления на входе RGB (внутри монитора VGA).
Таким образом, резистор 470OM на выходе MCU создаст делитель напряжения 470 / 75OM = 0.137. Это дает вам максимум 0.7 В при 5 В.
270om / 75 Ом дает вам 0.217 * 3.3V = 0.71 макс на 3.3В.
С STM32 вы должны использовать резистор 270OM от контакта MCU до разъема VGA при входах R/G/B.
@Ahull: потенциометр 100K не будет работать.

Ахулл
Пн 12 июня 2017 г. 14:44
Пито написал:Как я писал выше, существует резистор 75ohm против заземления на входе RGB (внутри монитора VGA).
Таким образом, резистор 470OM на выходе MCU создаст делитель напряжения 470 / 75OM = 0.137. Это дает вам 0.7 В при 5 В.
270om / 75 Ом дает вам 0.217 * 3.3V = 0.71 макс на 3.3В.

Рик Кимбалл
Пн 12 июня 2017 г. 14:48
Пито написал:Как я писал выше, существует резистор 75ohm против заземления на входе RGB (внутри монитора VGA).
Таким образом, резистор 470OM на выходе MCU создаст делитель напряжения 470 / 75OM = 0.137. Это дает вам 0.7 В при 5 В.
270om / 75 Ом дает вам 0.217 * 3.3V = 0.71 макс на 3.3В.

Пито
Пн 12 июня 2017 г. 14:53
Я собираюсь с встроенным 270 Ом на основе того, что я знаю о сообщении автора MSP430 и вашего подтверждения Pito. :) Это правильный подход :)
Если STM32 подключил непосредственно, выходной ток вывода будет 3.3V/75OM = 44 мА, по крайней мере, это не спецификация, конечно.

Ахулл
Пн 12 июня 2017 г. 14:54
Горшок на землю будет работать, но он рискует по поводу выхода на выходе, поэтому добавление встроенного резистора 270 Ом или установление меньшего значения горшка с резистором 270 Ом, а не на землю, вероятно, будет работать лучше. Соберите его и посмотри, но имейте в виду, что некоторые более старые мониторы VGA на основе CRT (не мультисинхронизированные) могут не понравиться это, так как сигналы синхронизации могут не быть на 100% стабильными. Большинство современных мониторов гораздо более надежны в этом отношении и не заботятся (или, по крайней мере, не взорваться), поэтому продолжайте с осторожностью, если вы играете с каким -то редким ранним антиквариатом IBM Antique. : D

Ахулл
Пн 12 июня 2017 г. 14:58
4 -битный цвет... ? Хорошо, безумие лжет : D

Вместо этого иметь древнюю схему атома желудка. Так оригинальные видео доски на базе 6845/6847 выталкивали пиксели..
Изображение
Мы избалованы всеми этими ЖК -дисплеев за 3 доллара. :)

Пито
Пн 12 июня 2017 г. 15:05
Ребята генерируют многоцветную VGA с 80 МГц PIC32MX, так что это должно работать с STM32F4 :)

ZMEMW16
Пн 12 июня 2017 г. 15:57
http: // encyclopedia2.FreeDictionary.com/rgbw

кажется, это позволяет изменять интенсивность белого
SRP

Ахулл
Пн 12 июня 2017 г. 18:55
Одна из причин, по которой я упомянул Humble 6847, заключается в том, что он управлял 4 -битной (или цветной (или цветом (или цветом (или цветом (или цветом (или цветом (или цветом (или цветом (или цветом. Большинство цветных графических процессоров используют высокоскоростные ЦАП для привлечения цвета цвета, но если вы имеете дело с относительно низким разрешением и низкой глубиной цвета, то может быть возможно использовать DMA и DAC с сырой резисторов для генерации относительно простого цвета VGA. Что -то в этом направлении.
http: // Quinndunki.com/blondihacks/?P = 955

Или мы могли бы быть действительно подлинными и просто использовать Радужный целлофан :ржу не могу:

Кстати 6847 DataSheet Понимает в некоторых подробностях о схеме лестницы яркости и много подробностей о времени и т. Д.

.. Еще одна причина, по которой я упомянул 6847 и опубликовал схему атома, заключается в том, что атом желуди (как комплект для самостоятельной сборки) был первым компьютером, которым я действительно владел (как отличался от многих, с которыми я играл до этого момента), так что у меня есть немного мягкое место, и я очень знаком с его причудами и дизайном. Это ни в коем случае не был самым причудливым дизайном, было много других. https: // en.Википедия.org/wiki/list_of_h ... o_hardware

victor_pv
Ср 14 июня 2017 г., 2:58
Передняя ссылка на цвет VGA, этот проект обеспечивает выход VGA с цветом:
https: // chackaday.IO/Project/9383-Pacman ... 41-и-VGA

Глядя на файлы, он использует несколько контактов для каждого кода с различными значениями резистора разделителя:
https: // github.com/drncxcortex/pacman-a ... владелец.Ино

Rogerclark
Ср 14 июня 2017 г., 3:12
victor_pv написал:Передняя ссылка на цвет VGA, этот проект обеспечивает выход VGA с цветом:
https: // chackaday.IO/Project/9383-Pacman ... 41-и-VGA

Глядя на файлы, он использует несколько контактов для каждого кода с различными значениями резистора разделителя:
https: // github.com/drncxcortex/pacman-a ... владелец.Ино

Zoomx
Ср 14 июня 2017 г. 5:58 утра
Синий
Изображение
Но я нашел других, которые выглядят по -разному, где синяя чувствительность не так уж и плох
Изображение
Изображение

Rogerclark
Ср 14 июня 2017 г. 6:44
(LOL) Спасибо

Так... RGB 332 будет лучшим способом упаковать цвет в 8 бит. (Я думаю, что видеосистемы, над которыми я работал, много лет назад, возможно, 16 -битный цвет, так как я не думаю, что количество битов составило 322, больше похоже на 664)

AG123
Ср 14 июня 2017 г. 9:02
Нашел полезную статью
http: // lslwww.эпфл.CH/страницы/преподавание/co ... ES/VGA.PDF -Видеосигнал VGA содержит 5 активных сигналов:
• Горизонтальная синхронизация: цифровой сигнал, используемый для синхронизации видео
• Вертикальная синхронизация: цифровой сигнал, используемый для синхронизации видео
• Красный (R): аналоговый сигнал (0-0.7 В), используется для управления цветом
• Зеленый (G): аналоговый сигнал (0-0.7 В), используется для управления цветом
• Синий (B): аналоговый сигнал (0-0.7 В), используется для управления цветом
Blue Pill / Maple Mini не имеет ЦАП, но у этих серий STM32F407VE / ZE их есть, просто я не слишком уверен, достаточно ли встроенный ЦАП, чтобы генерировать все сигналы RGB, чтобы сделать полноцветный vga Render
Кроме того- Видеосигнал должен перерисовать весь экран в 60 раз в секунду, чтобы обеспечить движение на изображении и уменьшить мерцание: этот период называется скоростью обновления. Ставки обновления выше 60 Гц используются в мониторах ПК
- В режиме 640 на 480 пикселей с частотой обновления 60 Гц это составляет приблизительно 40 нс на пиксель. Часы 25 МГц имеют период 40 нс
F407VE/ZE, казалось, имеет только 2 канала для выходов DAC, я не слишком уверен, может ли это быть мультиплексированным
Казалось бы, 40NS может быть довольно сложно сделать и на DAC от STM F4

Возможно, соединить STM32F1 или лучше F4 с параллельным ЦАП с Hi Speed ​​и дополнительной оперативной памятью? Но спецификации, похоже, говорят, что видеоспута, как правило, специализированы и выделяются, а не используют общие части MCU E.глин. ЦАП, DMA и т. Д. Или, возможно, соединить несколько STM32F1, чтобы сделать это, но ЦАП по -прежнему был бы проблемой, чтобы получить 640x480x24 битов Цвет x 60 Гц

AG123
Ср 14 июня 2017 г. 10:10
Возможно, вместо полноцветного VGA, кажется возможным, может быть «1-битные» цвета я.эн. Feed 'Digital 0.7 В или ноль 'в аналоговые контакты VGA, но это необходимо работать на 25 МГц (40 нс за бит), я не слишком уверен, можно ли взломать 2 бита или 3 биты на этих скоростях
Даже с 1 битом каждого цвета r, g, b, мои мысли в том, что это даст 8 различных цветовых комбинаций таким образом

Rogerclark
Ср 14 июня 2017 г. 10:13
@AG123

Я думаю, ты не сбит с толку.
Этот поток не о копировании полной системы VGA -дисплея, просто синяя таблетка можно превратить в игру с 8 цветными захватчиками, выводя прямо на монитор VGA..

Довольно достижение для доски общего назначения 2 доллара США.

AG123
Ср 14 июня 2017 г. 10:15
Да, это соответствовало бы сценарию «1-битные» цвета или, скорее, 8 цветов. Бинарная комбинация каждого цветового сигнала r, g, b даст 8 цветовых комбинаций
При 3 битах на пиксель, 640x480x3/8 ~ 115 200 байтов для экрана
Я думаю, что это кажется «проще» на чипе F407 с большим количеством SRAM. Я не слишком уверен, может ли для этого CCM RAM, который не выполняет DMA
Другой способ состоит в том, чтобы вычислить каждый пиксель и нарисовать его непосредственно без экрана буфера, я предполагаю, что это может быть несколько «сложнее»

В эти дни с ЖК -мониторами, я не слишком уверен, нужно ли нам запустить обновление при 60 Гц, в том смысле, что ЖК -монитор, возможно, «помнит», что точка мы нарисуем на дисплее, в конце концов. Следовательно, все это «обновление», в конце концов, «эмулировано», мы можем затем работать с гораздо более низкими показателями пикселей (менее 25 МГц) без ущерба для качества дисплея

Это может быть «большим делом» в некотором смысле, если STM32 мог бы просто выводить на мониторах VGA (LCD), нет необходимости в ILI9341 и все эти и т. Д
Типы ЭЛТ по -прежнему могут быть сложны из -за 25 МГц пикселей при обновлении 60 Гц

Chismicro
Ср 14 июня 2017 г. 11:33
@AG123

Я думаю, ты не сбит с толку.
Этот поток не о копировании полной системы VGA -дисплея, просто синяя таблетка можно превратить в игру с 8 цветными захватчиками, выводя прямо на монитор VGA..

Довольно достижение для доски общего назначения 2 доллара США.
Наверное, это можно сделать с помощью Attega:

http: // www.Theresistornetwork.com/2013/ ... атмосфера.HTML

;)

Rogerclark
Ср 14 июня 2017 г. 11:41
Я не смотрел код STM32, но если процессор тратит большую часть своего времени, генерируя кадр, остается не так много времени, чтобы сделать игровой логику и обновить буфер кадров (если он имеет буфер кадров)

Я помню, как эти старые системы, используемые для выполнения таких трюков, как вычисление кода игры во время горизонтальных и вертикальных периодов обработки кадров. Я забыл, как долго каждый из них, так как это немного до моего времени

Но я действительно ценю, насколько тяжело дизайнерам приходилось работать, чтобы получить каждую последнюю унцию обработки мощности из того, что сейчас считается чрезвычайно показателями, с очень ограниченным оперативным операцией, и не так много ПЗУ.

AG123
Ср 14 июня 2017 12:34
Я думаю с 2 долларами за каждый BP/мм, можно даже сказать, что можно сказать 2 куска, скажем, через SPI, и один из чертежа может быть посвящена управлению дисплеем VGA. Таким образом, у нас есть BP/MM, работающий как «карта VGA», а другой может сделать выделенную игровой логику и т. Д. Это позволило бы 1 п.н./мм использовать большую часть своей ограниченной 20 -километровой оперативной памяти (и, возможно, меньше), чтобы сделать дисплей VGA

F4, скорее всего, сможет «сделать это в одиночку» & Скорее всего, сможет управлять разрешениями 640x480. Я думаю, что на F4 APB2 может работать на уровне 84 МГц, а APB1 работает на уровне 42 МГц, он, вероятно, сможет справиться Любые проблемы с временем видео и т. Д

Ахулл
Ср 14 июня 2017 г. 14:07
Если вы используете DMA, чтобы выплюнуть буфер, вы принимаете большую нагрузку на ЦП. Таким образом, код может быть немного более сложным, чем если бы ЦП измешивает биты одновременно с перемещением спрайтов. Вы * можете одновременно делать графику и код на 8 -битном процессоре, взглянуть на ZX80 и ZX81 - хотя у него был какой -то другой логический клей, там не было много.
Изображение
... И да.. это может играть в пространство захватчиков ... в довольно блочной, монохромной, снежной, прыгающей манере...

Пито
Ср 14 июня 2017 г. 16:34
Скажем 400x200pixels, 8 бит на пиксель (256 цветов), 4x 2 -битный R2R VGA DAC.
Вам нужен 80 КБ видео буфер, который вписывается в F407.
У вас может быть 50us, чтобы вытащить 400 пикселей или байтов. Это 125 нс на пиксель. Это поток байтов 8 МГц от GPIO.
ZX80/81: ZX81 не использовал разрешение пикселей, но 8x8 фиксированные куски, сгенерированные с ROM char Gen, Afik (у меня был один..).
Основная настройка получила 1 КБ ОЗУ, инклюзивное видео :)

Rogerclark
Ср 14 июня 2017 г. 22:26
Из того, что я помню, ZX80 не мог сохранить вывод видео, когда любой код работал.

Я думаю, что даже при вводе в коде, экран может мигать (но я могу ошибаться на этом фронте)

У меня был один, когда я был в старшей школе.

ZX81 был лучше, так как он мог поддерживать вывод видео и запустить код, но я не помню, в чем была разница. Предположительно, ZX81 имел какую -то выделенную видео -систему DMA DMA.

Ахулл
Ср 14 июня 2017 г. 11:35
Нет DMA или даже двойной буферизации на ZX80, просто много 74 серии магии.

Изображение

В результате изображение телевизора была во власти различных других систем, если вы загружены с ленты, у вас есть снег. Если вы не придерживались очень строгого времени в коде, снег.. и т. д.

Пито
Чт 15 июня 2017 г., 6:32
В ZX81 они помещают TTL в чип ULA. Итак, ZX81 (я получил комплект) был около 5 чипсов (Z80, ULA, 2x2114 SRAM, ROM).
Наиболее важные части в ZX80/81/спектр - резисторы R4 -R11 в шине данных :) Они изолировали Z80+MEMS от других подсистем, когда заняты.. Z80 имел автоматический цикл обновления для DRAM, который тоже как -то использовался..

Chismicro
Чт 15 июня 2017 г. 6:56 утра
По меньшей мере Можно подражать ZX81 с Atmega644p который напрямую создает сигнал B/W VGA без какого -либо дополнительного оборудования.

AG123
Чт 15 июня 2017 г. 8:05 утра
Пито написал:Скажем 400x200pixels, 8 бит на пиксель (256 цветов), 4x 2 -битный R2R VGA DAC.
Вам нужен 80 КБ видео буфер, который вписывается в F407.
У вас может быть 50us, чтобы вытащить 400 пикселей или байтов. Это 125 нс на пиксель. Это поток байтов 8 МГц от GPIO.
ZX80/81: ZX81 не использовал разрешение пикселей, но 8x8 фиксированные куски, сгенерированные с ROM char Gen, Afik (у меня был один..).
Основная настройка получила 1 КБ ОЗУ, инклюзивное видео :)

Пито
Чт 15 июня 2017 г. 12:18
Когда будет использован генератор символов ПЗУ, вы должны быть в состоянии обратиться и прочитать вспышку во время отправки пикселей. Это может стоить много времени с BP. Преимущество этого подхода в том, что вам нужен один байт для 8x8 пикселей, таким образом, для 400x200pixels видео оперативная память будет 1250bytes (50x25). Однако не подходит для графики, как вы знаете с сегодняшнего дня (линии, круги и т. Д. Работал с ZX81 и космическими захватчиками в порядке :)