Цитата(Kovrov @ Jan 23 2006, 19:04)

цель заставить ADC со скоростью конверсии до 1msps
состыковать с USI и выжать макс скорость конверсии
ADC например AD7495 с SPI режим работы по AVR SPI MODE 3
А кому кажется что это просто?
1msps - уж слишком для AVR..
Смотрите, допустим требуется получить 1msps при разрешении 8bit, будем работать в mode3, частота SCKusi = Fosc/2.. Берем приведенный в даташите пример кода:
Код
[b](2т)[/b] out USIDR,r16
[b](1т)[/b] ldi r16,(1<<USIOIF)
[b](2т)[/b] out USISR,r16
[b](1т)[/b] ldi r16,(1<<USIWM0)|(
SPITransfer_loop:
(2т)out USICR,r16
[b](2т)[/b]sbis USISR,USIOIF
(2т)rjmp SPITransfer_
[b](2т)[/b]in r16,USIDR
перед инструкциями дописал время выполнения в тактах, жирным выделены инструкции время выполнения которых должны суммироваться с временем выполнения цикла приема/передачи по USI.
Итого аппаратно для передачи байта требуется 16 тактов + 10 тактов (выделенных инструкций) = 26. Т.о. даже если процессор будет осуществлять лишь только линеное чтение, и кроме этого больше ничего не делать, то потребуется тактовая частота ядра 26Mhz, а AVR контроллеров, способных работать на такой частоте пока еще нет, итого задача даже для 8bit 1 MSPS не решаема. Здесь можно порекомендовать использование плиса, реализующего работу с АЦП по SPI и выдающего контроллеру в параллельном виде.. Либо возьмите сразу параллельные АЦП к примеру ADS824/825.