в оперативке лежит массив объемом 432 х 128.
тоесть 128 строк по 432 8-мибитных значения.
Задача - снаружи атмеги есть 6х3 сдвиговых регистра по 192 бита в каждом. В данный момент все соединены в один огромный сдвиговый регистр длиной в 432 байта. регистры могут схавать до 30 мегагерц по такту.
Собственно надо выплюнуть эти 432 байта в последовательный порт но успеть за 0.2 миллимекунды. Атмега тактуется на 30 мегагерцах работает стабильно глюков нет.
Максимум что я смог добиться используя прерывания и буферизированный уарт1 в режиме SPI мастера - 1.2 миллисекунды! непозволительно долго.
с SPI модулем на прерываниях получалось ещё хуже - 1.6 милисек.
пробовал разбить весь массив регистров на 9 линеек по два регистра в каждой и программно выдавать на порты 9 бит каждому регистру а потом дергать тактовой ногой - получилось 1.1 милисекунда - много занимают операции проверки байта по маске когда побитово передаеш байт. порядов данных в памяти может быть любой - перед этим есть море времени на обработку тасовку и подготовку.
Кто что может предложить как это провернуть быстро? конечно напрашивается вариант перекомутировать регистры в 6 впаралель и 3 последовательно, в памяти подготоврить массив так чтоб в каждом байте массива было тупо то что надо выдавать на порт разом и тогда уже массово слать данные тупо память-порт. но увы не хватит оперативки
Кто что может предложить? армы не предлагать - не встречались мне простые дешевые армы с 65 килами оперативки.
Не доверяйте русским лужам - это может быть вход в метро.




