-
Сообщения
-
А "Толик"- Atollic забыли. Это так чтобы всех вспомнить. Хотя тормоз, как все Эклипсы, но дармовой.Отладчик есть, правда теряет после каждого выхода из дебагера сервер. Кто подскажет куда копать. Каждый раз плату отключаю включаю перед дебагом.
-
By Виталий МонстеР · Posted
Доброго времени. Подскажите пожалуйста "размер" диодов, если в схеме управления стоит МВ10М. Заранее благодарен за ответ. ЗЫ у меня совсем грустно. -
Добрый день! Это мой первый пост на этом форуме, хочу поделиться своими соображениями по сабжу и попросить совета. Опыт работы с электроникой не очень большой и то по сути только в логикой, всего пару месяцев как засел за avr-микроконтроллеры, так что далеко не все тонкости могу знать. В общем... Хочу сделать типа "видеокарту" для вывода картинки по VGA 640x480x60гц. А точнее фрейм-буфер (или как он там правильно называется) данные из которого преобразуется в аналоговые цветовые сигналы для монитора. Чтобы чуток упростить требование к железу решил, что мне достаточно будет разрешения картинки в 4 раза меньше (320х240) но при этом стандарт таймингов для синхросигналов остается как для 640x480, то есть просто буду 4 пикселя брать за один, это позволит мне сэкономить на частоте пикселей, вместо 25мгц получается ~12.5мгц. Цвет каждого пикселя удобнее всего кодировать одним байтом по схеме 3R-3G-2B (8 значений красного, 8 зеленого и 4 синего, всего 256 цветов). Таким образом мне нужно как минимум 76800 байт на буфер, то есть микросхемку памяти на 128К*8bit (выбрал CY7C109D). Я даже написал консольную утилиту, которая конвертирует любую картинку в нужный формат и на выходе выдает готовый массив байтов. Я звял Atmega664P, не без проблем, но настроил нормальный и достаточно четкий ШИМ для h-sync и v-sync, подключил к монитору и проверил на одном красном цвете, что все работает и все строчки заливаются красным. Осталось дело за малым, я подключил оперативку к МК, подключив все 17 ног адреса, 8 ног данных и 4 для управления памятью заняв практически все выводы мк кроме SPI интерфейса. Теперь надо только по нужным таймингам выставлять на портах адрес для оперативки, а 8 бит данных от нее через нехитрую схему с резисторами (ЦАП) выдавать на монитор. И да, перед этим я предварительно закинул часть картинки во flash-память контроллера, который при запуске "заливает" ее в sram, осталось только бегать по всем адресам и снимать картинку. Но ничего не работало. Перебор адресов на атмеге слишком медленный, в идеале переключение адресов должно происходить с интервалами 79.4 нс а это всего 2 процессорных такта и то при условии, что мк будет работать кварце 25мгц, а судя по отладке в AtmelStudio один цикл тратил 57(!) тактов. При этом надо изменить значения в трех портах (2 целых порта и один бит на еще одном порту), инкрементировать счетчик, переключить управляющие оперативкой пины, чтобы записать значение. Короче, никакой avr тут не справиться, даже если упороться, все переписать на асм и забустить частоту, все равно будет мало. Ну собственно думать долго не пришлось, сразу пришла идея использовать отдельные битовые счетчики (например SN74HC4040D, на 12 бит) поставить два таких, подать высокочастотный сигнал на нужные мне 12.5 мгц (хотя тут опять-таки всплывается, что есть синхронные и асинхронные счетчики, и типа асинхронные на высоких частотах работают не так как хотелось бы, мне тут пока не все понятно). Я соорудил схему с таким счетчиком в Протеусе, вроде все работает, НООООО... И тут я наконец-то подошел к вопросу, который уже несколько дней не могу решить. Дело в том, что как я сказал в начале, изначальное разрешение 640х480 я решил уменьшить до 320х240, то есть вместо 640 пикселей на одну строку мне за этот же период времени нужно вывести в 2 раза меньше с меньшей частотой, таким образом пиксели "растянутся" в два раза на одну строку. Но нам так же нужно растянуть пиксель и по вертикали, то есть сделать так чтобы две горизонтальные линии идущие друг за другом были одинаковые, потом еще две одинаковые и так далее до конца кадра. Но наш битовый счетчик считает все по порядку строку за строкой, по идее пройдя по одной линии нужно было бы вычесть из адреса 320 и инкрементировать дальше, чтобы получить две одинаковые строки. Но из счетчика нельзя вычитать, тем более произвольные значения. Можно забить память одинаковой информацией, чтобы не было манипуляций с адресами, но тогда и понадобится в 2 раза больше памяти (стоит сильно дороже) и вообще хранить одну и туже информацию ну совсем не вариант. Я еще рассматривал, что если использовать sram с организацией 64к*16 бит, то есть уменьшаем разрядность адреса с 17 до 16 (до двух портов мк) и храним в одной ячейке сразу два пикселя. Таким образом можно оптимизировать время доступа, но все равно не достаточно для использования мк avr и это никак не решает подход с битовым счетчиком. В общем я не вижу выхода как решить проблему дублирующих строк через битовый счетчик. А если все же использовать микроконтроллер, то какой, STM32? У меня с ним нет опыта, да и не слишком ли он жирный для такой вроде бы тривиальной задачки. Может вообще есть дешевая и простенькая готовая RAMDAC микросхемка? Знаю, что такие есть, типа AT76C176, но дорого и фиг где купишь да и не понятно в точности то ли это, что надо или не очень. По этому прошу совета у знающих специалистов, может кто сталкивался с подобным и может дать совет, как лучше сделать. Я в курсе разных поделок "видеоприставок" на ардуино, где они генерируют картинку и текст через vga (от туда я подсмотрел настройки таймеров и шим) но мне нужен именно модуль преобразования информации из памяти в картинку.
-
Теоретически, нужно лишь уменьшить на порядок R27 и добавить батарею мощных транзисторов с радиаторами на нужный ток и напряжение. Ну и пересчитать/подобрать номиналы нескольких резисторов.
-
Что и было сделано после того как один индикатор спалил
-
Similar Content
-
By Обычный Человек
Микроконтроллер ATmega328p, внешний кварц 16МГц. Компилятор avr-gcc с оптимизацией O1
Написал код для управление шаговым двигателем. Работает так: требуемая скорость задается переменной STP1_ReqSpeed, дальше с частотой 100Гц срабатывает таймер TIM0, который высчитывает с какой частотой надо подавать сигналы на вход шагового драйвера. TIM1 работает в режиме частотно импульсной модуляции и по прерыванию меняет значение пина на противоположное.
Управление работает, скорость регулируется, но по какой то причине случаются пропуски шагов. Чаще всего во время ускорения. Количество пропусков от 0 до 4, обычно 2-3, длятся 32мс.
Из кода вырезал неиспользуемое. Заменить прерывания на аппаратный ШИМ возможности нет. Как убрать эти пропуски?
Осциллограммы:
-
By Артур Измаилов
1.Создать схему в которой два светодиоды загораются в следующей последовательности: 1 и 2, 2 и 3, 3 и 4, …, 15 и 16, 1 и 2 и т.д. (т.е. создается эффект движения двух светодиодов).
Дано условие выше. Решение задачи нужно представить в Proteus. Код для программирования пишу в AtmelStudio 7. Схему собрал в Proteus. Вывел 16 светодиодов через 2 порта (Порт B и Порт D). МК использовал ATMEGA 8 вариации в корпусе DIP с 28 ножками (SPDIL28).
До этого смог написать схему, чтобы работали светодиоды в последовательности 1.2.3.4.5....16.1.2.3.4 и тд. Делал через оператор FOR. Однако с этим кодом начались проблемы. Помогите пожалуйста.
Нижу представил изображение кода.
Заранее спасибо!
-
By Lisitsin
Собираем компьютер ZX Spectrum на микроконтроллерах AVR своими руками!
Проект открытый, все исходники и информация проекта по ссылке
https://yadi.sk/d/9S2S0ZmNqsLykQ
Проект печатной платы выполнен в PCAD-2006, программное обеспечение разработано в AVRStudio 4b401
Здесь отвечу на все возникающие вопросы и помогу со сборкой и запуском
-
By O5-14
По поводу этого https://cxem.net/mc/mc220.php девайса. Как напоминалка паролей думал сделать, только в моих краях 1604 нету( Под wg12864 нет случаем модификации ?
И что такое значит "Текстовые файлы должны быть в обычном txt формате и без форматирования" - первая часть понятна. А без форматирования ? Одна длинная строка ? Пробелы-то хоть можно ?
-
By Karl-Ieronim
Коллеги, всем привет.
Увидел вот такой проект.
Несмотря на явную привлекательность что-то совсем мало повторивших.
Может кто-то из завсегдатаев форума делал этот проект?
Интересует ваше мнение: хочу повторить, но не силен в программировании, поэтому беспокоюсь на счёт подводных камней с которыми не смогу справиться.
-