История изменений
Исправление
Eddy_Em,
(текущая версия)
:
Нет. Проще зафигачить "автомат" на сдвиговых регистрах: т.е. ты подаешь последовательно в ячейку 8 байт, а "железный" генератор управляет бегущим нулем и тактом на D-триггере, перебирающим эти 8 байт по кругу.
Никакого геморроя с программированием не будет: просто пихай (хоть через DMA) 8 байт в свои 64 D-триггера (отключив на время копирования генератор), затем запускай генератор и радуйся.
В принципе, можно и по таймеру это сделать: перебирать 8 байт (DMA?) циклически в зависимости от значения счетчика, этим же счетчиком выдавать бегущий нуль. Процедура: 1) указываешь адрес нужной буквы для выхлопа DMA → порт, 2) запускаешь таймер. А в обработчике прерываний таймера циклически сдвигаешь указатель и задаешь новое значение для скользящего нуля.
Вот, кстати, у меня была идейка, что светодиодный куб проще всего было бы именно на основе "железного" генератора скользящего нуля и сделать. Но там нужно будет уже реальную ОЗУ использовать. И лучше всего — с параллельным доступом.
Но все равно, при таких миганиях яркость свечения светодиодов будет невысокой. А подавать на них вместо 5В, скажем, 220 — неизвестно как скажется на сроке жизни этих светодиодов.
Исходная версия
Eddy_Em,
:
Нет. Проще зафигачить "автомат" на сдвиговых регистрах: т.е. ты подаешь последовательно в ячейку 8 байт, а "железный" генератор управляет бегущим нулем и тактом на D-триггере, перебирающим эти 8 байт по кругу.
Никакого геморроя с программированием не будет: просто пихай (хоть через DMA) 8 байт в свои 64 D-триггера (отключив на время копирования генератор), затем запускай генератор и радуйся.
В принципе, можно и по таймеру это сделать: перебирать 8 байт (DMA?) циклически в зависимости от значения счетчика, этим же счетчиком выдавать бегущий нуль. Процедура: 1) указываешь адрес нужной буквы для выхлопа DMA → порт, 2) запускаешь таймер. А в обработчике прерываний таймера циклически сдвигаешь указатель и задаешь новое значение для скользящего нуля.