У меня есть мик attiny2313 помогите потключить к max522(ЦАП) , просто в MAX522 интерфейс передачи данных Spi а в Attiny2313
usi если хто-нибуть работал с Usi напишите(Зарание спасибо)
attiny2313 Usi
- Реклама
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: attiny2313 Usi
Это почти одно и то же USI - Universal Serial Interface, SPI - Serial Programming Interface.
USI может работать в двухпроводном режиме(TWM, TWI) и в трехпроводном(SPI)
Всё есть в даташите на МК, даже примеры кода для SPI для ведущего и ведомого устройств.
Обработчик для ведущего SPI:
И для ведомого:
В даташите всё описано.
Дело в том, что регистр USIDR общий как для приема данных,
так и для передачи. При сеансе обмена, данные принимаются и отправляются одновременно.
Отправляемый байт выталкивается из регистра USIDR принимаемым байтом. В конце сеанса
в этом регистре (USIDR) находится принятый байт. Выводы DI - приём данных,
DO - передача данных, SCK - тактирование обмена данными, такты генерирует ведущее устройство. Стартовых и стоповых битов нет.
Есть и прерывания - как использовать, тоже есть в даташите.
USI может работать в двухпроводном режиме(TWM, TWI) и в трехпроводном(SPI)
Всё есть в даташите на МК, даже примеры кода для SPI для ведущего и ведомого устройств.
Обработчик для ведущего SPI:
Код: Выделить всё
SPITransfer:
out USIDR, r16
ldi r16, (1<<USIOIF)
out USISR, r16
ldi r17, (1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC)
SPITransfer_loop:
out USICR, r17
in r16, USISR
sbrs r16, USIOIF
rjmp SPITransfer_loop
in r16, USIDR
ret
Код: Выделить всё
init: ;Инициализация. Ставим где-то в начале программы.
ldi r16,(1<<USIWM0)|(1<<USICS1)
out USICR,r16
...
SlaveSPITransfer:
out USIDR, r16
ldi r16, (1<<USIOIF)
out USISR, r16
SlaveSPITransfer_loop:
in r16, USISR
sbrs r16, USIOIF
rjmp SlaveSPITransfer_loop
in r16, USIDR
ret
Дело в том, что регистр USIDR общий как для приема данных,
так и для передачи. При сеансе обмена, данные принимаются и отправляются одновременно.
Отправляемый байт выталкивается из регистра USIDR принимаемым байтом. В конце сеанса
в этом регистре (USIDR) находится принятый байт. Выводы DI - приём данных,
DO - передача данных, SCK - тактирование обмена данными, такты генерирует ведущее устройство. Стартовых и стоповых битов нет.
Есть и прерывания - как использовать, тоже есть в даташите.
I am DX168B and this is my favourite forum on internet!
Re: attiny2313 Usi
DX168B Спасибо понял!!!
- Aheir
- Модератор
- Сообщения: 4517
- Зарегистрирован: Пн апр 03, 2006 11:43:25
- Откуда: Санкт - Петербург
- Контактная информация:
Re: attiny2313 Usi
Тема открыта не в том разделе. Вопрос рассматиривался в "Микроконтроллерах". Используйте "Поиск" перед открытием тем. Замечание. Закрыто.
Оптимизм х (Опыт + Знания) = const

