Народ, тема навеяна постом
по выводу символов на экран путём врезки отдельных пикселей в композитный видеосигнал. Хотелось бы поделиться своими результатами и обсудить их со специалистами.
Задача была такая: добиться равномерного вывода пикселей без каких-либо зазоров между байтами на максимально допустимой скорости Fclk/2.
Для экспериментов была взята атмега8515 (частота кварца 10 МГц) из старых запасов, чтобы не жалко было покурочить плату и пожечь кристалл в случае чего.
Сначала была попытка вывода отдельных бит через SPI, работающего в режиме ведущего (мастер). Но как я ни бился, получался зазор в 1МЦ, т.е. полпиксела. Было решено перейти к режиму ведомого (слейв), а на вход SCK подать Fclk/2=5МГц.
В документации отмечено, что слейв работает только до частот Fclk/4, так как необходимо синхронизировать внешнюю частоту. Но идея была такая, что поскольку источником 5 МГц будет тот же самый микроконтроллер (вывод XCK синхронного USART), то вроде бы проблем с синхронизацией не должно быть.
Сказано, сделано. Оказалось, что устройство прекрасно работает на Fclk/2=5МГц в режиме слейва. Вот тестовая программка, которая выдавала байты в регистр данных SPI. Данные можно было менять, переключая ключи, подключенные к порту С.
Код
spsout: out spdr,r16;current data
in r16,pinc;reading the switch
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
rjmp spsout
Вот картинка с экрана осциллографа, видно, что между байтами зазоров нет.
Вроде всё важное сказал. Что меня смущает, так это то, что слейв работает на частоте в два раза выше, чем описано в документации. Привлекает то, что для 20МГц атмеги максимальная скорость будет 10МГц.
Что скажете?
Эскизы прикрепленных изображений