Сразу скажу, что мой вопрос можно (или нужно) поместить в раздел "Для начинающих". Что С, что классический Асм знаю плохо.
Шибко не пинайте. И к гуглю/яндексу не отправляйте.
![Улыбка](images/smilies/icon_smile.gif)
Был я там...
Пытаюсь запустить USI в режиме SPI.
Понял, что тактировать можно или битом USICLK, или битом USITC.
В датшите есть пример:
Код:
|
SPITransfer:
sts USIDR,r16
ldi r16,(1«USIOIF)
sts USISR,r16
ldi r16,(1«USIWM0)|(1«USICS1)|(1«USICLK)|(1«USITC)
SPITransfer_loop:
sts USICR,r16
lds r16, USISR
sbrs r16, USIOIF
rjmp SPITransfer_loop
lds r16,USIDR
ret |
Понимаю так:
Загружаем в USIDR наши данные.
Сбрасываем флаг USIOIF.
Загружаем в r16 b00011011
метка
Загружаем в USICR b00011011 из r16.
Проверяем флаг. (USISR-›r16)
Если 0, то возврат на метку. А там - из r16 в USICR (т.е. USISR-›USICR).???
Где я "не так" расшифровал?
Где тактирование. Т.е. перепады USICLK или USITC от 0 к 1 и наоборот?