LINUX.ORG.RU

История изменений

Исправление 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) запускаешь таймер. А в обработчике прерываний таймера циклически сдвигаешь указатель и задаешь новое значение для скользящего нуля.