Посмотрел программу, есть замечания.
1 Возможно Вы не знали, что в ВАМ методе, при переходе значений от 127 к 128 и наоборот возникают артефакты в виде заметного моргания. Такое получается из за того, что при смене вышеуказанных значений соседние периоды ВАМ образуют облась с одним уровнем (в зависимости от напрвления перехода 0 или 1) с периодом равным целому периоду ВАМ.
127 --> 128 #b0{1111111 --> #b1}0000000
Для того, чтобы этого избежать, в каждый следующий период работы ВАМ нужно меняеть направление обработки.
Т.е.: 1 период = b7, b6 ... b1 b0; 2 период = b0, b1 ... b6 b7; 3 период = b7, b6 ... b1 b0; и т.д.
2 Для 16ти каналов еще куда не шло (и может быть оправдано с точки зренения простоты кострукции), но если каналов больше или планируется увеличивать их количество, переходите на последовательную передачу данных. Аппараный SPI для этого подходит лучше всего: считаем 8 каналов, выдаем байт, пока байт апаратно выталкивается можно считать следующую порцию - экономия времени обработки и памяти (не нужно каждый канал обрабатывать отдельно, все работает в одном цикле). В качестве драйверов можно заюзать обыкновенные сдвиговые регистры, а еще лучше специальные драйверы светодиодов (получается не на много дороже, но удобней) в которых светодиоды запитываются стабилизированным током.
Вот набросал программку.
BAM-test.zip [7.17 КБ]
Скачиваний: 674
Правда для Тини2313, но думаю, не проблема подправить для меги. Проверить в железе нет возможности, поэтому если попробуете - отпишитесь.