Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Господа, а кто нибудь пробывал работать с USI как SPI в 2,3mode
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Kovrov
цель заставить ADC со скоростью конверсии до 1msps
состыковать с USI и выжать макс скорость конверсии
ADC например AD7495 с SPI режим работы по AVR SPI MODE 3
defunct
Цитата(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.
Kovrov
я ему про одно он мне про другое cheers.gif
ежу ясно, что на даже 20 мипс авр невостребует все ресурсы этого ацп
проблема не в этом, проблема заставить уси работать как AVR SPI MODE 3
просто, думается если взять техас там моде0 (если не ошибаюсь) и проблем не должно быть
а вот тут на те.. че то ни одной мысли...
а вообще в меге и аппаратном спи легко создавалось 8мгц клока и времени конверсии 2 с копейками мкс - другое дело нет ни какого кайфа от этого и вообще. это не интересно...
defunct
Цитата(Kovrov @ Jan 23 2006, 20:01) *
я ему про одно он мне про другое cheers.gif
проблема не в этом, проблема заставить уси работать как AVR SPI MODE 3


дык, звыняйте.. тада бы писали не со скоростью конверсии "1msps" т.к. msps и в африке msps, а 1Mhz.. smile.gif

Не вдаваясь в детали USI, напрашивается простой ответ - добавить инвертор...
Kovrov
Цитата(defunct @ Jan 23 2006, 21:58) *
дык, звыняйте.. тада бы писали не со скоростью конверсии "1msps" т.к. msps и в африке msps, а 1Mhz.. smile.gif

Это я не подумавши :-)
Цитата(defunct @ Jan 23 2006, 21:58) *
Не вдаваясь в детали USI, напрашивается простой ответ - добавить инвертор...

ставить ещё элементы - как то не хочется - че бы нибудь эдакова придумать, ну кроме конечно программного варианта...
IgorKossak
Kovrov, из Ваших постов так и не ясно в чём у Вас проблема.
Если надо запрограммировать SPI на mode 3, то это делается установкой CPOL = 1, CPHA = 1 в SPCR.
Если же дело в том, чтобы именно USI заставить работать как полнофункциональный SPI, то видимо без ухищрений не обойтись, в том числе и аппаратных.
Kovrov
С родным SPI проблем нет
проблемы сделать подобное на уси и заставить его работать в режиме 3 мастер - к сожалению пока безрезультатно!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.