USI - Әмбебап сериялық интерфейс (Әмбебап сериялық интерфейс) шын мәнінде аппараттық сериялық жіберу және деректерді қабылдау үшін бос орын болып табылады. Бұл интерфейс кез келген нақты деректерді беру протоколы үшін дайын шешім емес, бірақ толық бағдарламалық шешімге қарағанда деректерді берудің ыңғайлы әдісін жүзеге асыруға мүмкіндік береді.
Бұл интерфейстің мәні сериялық ақпаратты беру және қабылдау үшін аппараттық деңгейді ұсынады, ал хаттаманың логикасы бағдарламалық қамтамасыз етуді жүзеге асыруға қазірдің өзінде тағайындалған.
USI интерфейс регистрлерінің сипаттамасы
Бұл интерфейс оның жұмысына жауапты тек төрт регистрден тұрады:
- USIDR - Деректер тізілімі
- USIBR - деректерді буферлеуге тіркелу
- USISR - Интерфейс күйінің тіркелімі
- USICR - басқару тізілімі мен интерфейс параметрлері
USIDR – USI деректер тізілімі
Бұл тізілімдегі деректерге тікелей қол жеткізуге болады, ал деректердің көшірмесін USIBR тізілімінен табуға болады. Бұл регистр ақпаратты қабылдау және беру үшін бір уақытта қолданылады.
USIBR – USI деректер буфері
Бұл тізілім тек оқуға арналған, USIDR. Бұл тізілімде ақпарат сырттан алынған кезде USIDR тіркеліміне түсетін деректер көшіріледі. Бұл ақпаратты қабылдау және беру үшін жүйеде жоғары жүктеме кезінде ақпараттың жоғалуын азайтуға, сондай-ақ микроконтроллер процессорына ол бос емес алдыңғы тапсырмаларды орындауға уақыт беруге мүмкіндік береді.
USISR – USI статус тізілімі
USI интерфейсінің күй регистрінде үзіліс жалаушалары, деректер жолының күй жалаулары және деректер жолында жіберілетін биттердің санын есептейтін есептегіш бар.
- 7-бит - USISIF : Шартты үзу жалауын бастау Екі сымды режимде қолданылады. Бірлік жазбасы арқылы тазартылған.
- бит 6 - USIOIF : Есептегіштің асып кетуін үзу жалауы - есептегіштің асып кетуін үзу жалауы. Бұл жалауша барлық бит деректер жолына тасымалданған кезде көтеріледі. Бірлік жазбасы арқылы тазартылған.
- 5-бит – USIPF: Stop Condition Flag – Тоқтату шартының жалауы, екі сымды режимде де қолданылады. Бір қызығы, бұл жалау үзіліс туы емес. Бірлік жазбасы арқылы тазартылған.
- 4-бит - USIDC : Деректер шығысының соқтығысуы - Бұл бит екі сымды режимде негізгі арбитражда қолданылады.
- Биттер 3:0 - USICNT3:0 : Есептегіш мән - Есептеуіш биттері. Есептегіш 8 бит жіберу үшін 0-ден 15-ке дейінгі мәнді қабылдайды. Есептегішті сыртқы әсер, таймер немесе бағдарламалық құрал ауыстырғышы арқылы, атап айтқанда USICR регистрінде USITC битін орнату арқылы арттыруға болады. Бұл мақалада не қолданылады.
USICR – USI бақылау тізілімі
Басқару және конфигурациялау регистріне үзілістерді қосу биттері, жұмыс режимінің баптаулары, деректерді беру үшін есептегіш қақпақ көзін таңдау кіреді.
- 7-бит - USISIE : Бастау шартын үзу қосу - бастау үзуін қосу.
- 6-бит - USIOIE : Есептегіштің толып кетуін тоқтатуды қосу - Есептегіштің толып кетуін үзуді қосу.
- Бит 5:4 - USIWM1, USIWM0 : Сым режимі - деректерді беру режимін орнату.
- Бит 3:2 - USICS1, USICS0 : Сағат көзін таңдау - Есептегіш қақпақ көзі параметрінің биттері.
- 1-бит - USICLK : Clock Strobe - деректерді сілтемеге жіберуге арналған строб биті.
- Бит 0 - USITC : Сағат портының түйреуішін ауыстырып қосу – бұл бит бірге орнатылғанда таңдалған істікшелі күй 0-ден 1-ге немесе 1-ден 0-ге өзгереді (ол екі сымды режимде SCL ретінде жұмыс істейді) түзу).
USI интерфейсімен жұмыс істеу
Бұл мақалада мақсатты құрылғыға ақпарат байт тасымалдау опциясы берілген. Ақпараттық биттік ілгерілету SCL сызығының күйі 0-ден 1-ге өзгерген кезде жүзеге асырылады. Интерфейстің өзі Екі сымды режимде жұмыс істейді. Деректер SDA желісі арқылы беріледі. Есептегіш USITC битінің әрбір параметрімен ұлғайтылатынын ескере отырып, 8 бит ақпаратты тасымалдау үшін USITC битін 16 рет орнату қажет, себебі төмендегі параметр бит деректер жолына тек келесі кезде ғана тасымалданатын опцияны көрсетеді. сызық күйі 0-ден 1-ге дейін өзгереді.
;======= Процедура инициализации USI в режиме TWO-wire mode ============================= usi\_init: sbi PORTA,4 ; Устанавливаем в исходное состояние PORT SCL sbi PORTA,6 ; Устанавливаем в исходное состояние PORT SDA sbi DDRA,4 ; Устанавливаем в исходное состояние DDR SCL sbi DDRA,6 ; Устанавливаем в исходное состояние DDR SDA ldi r16,0xFF out USIDR,r16 ldi r16,(0<<USISIE)|(0<<USIOIE)|(1<<USIWM1)|(0<<USIWM0)|(1<<USICS1)|(0<<USICS0)|(1<<USICLK)|(0<<USITC) ; (0<<USISIE)|(0<<USIOIE) Запрещаем прерывания по счетчику и СТАРТу ; (1<<USIWM1)|(0<<USIWM0) Устанавливаем двухпроводной режим работы ; (1<<USICS1)|(0<<USICS0)|(1<<USICLK) настройка режима работы счетчика ; бит передаётся по смене состояния линии SCL с 0 до 1 ; (0<<USITC) исходное состояние выхода тактового сигнала out USICR,r16 ; Посылаем полученный байт в USICR ldi r16,(1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)|(0x0<<USICNT0) ; Очистка флагов и обнуляем счетчик out USISR,r16 ; Посылаем полученный байт в USISR ret ;======= Посылка байта информации через интерфейс USI =================================== usi\_send: out USIDR,r16 ; Загружаем данные в USIDR ldi r16,0xF0 ; Установка счетчика USISR для передачи 8 бит информации out USISR,r16 ; Посылаем полученный байт в USISR ldi r16,(0<<USISIE)|(0<<USIOIE)|(1<<USIWM1)|(0<<USIWM0)|(1<<USICS1)|(0<<USICS0)|(1<<USICLK)|(1<<USITC) ; (0<<USISIE)|(0<<USIOIE) Запрещаем прерывания по счетчику и СТАРТу ; (1<<USIWM1)|(0<<USIWM0) Устанавливаем двухпроводной режим работы ; (1<<USICS1)|(0<<USICS0)|(1<<USICLK) настройка режима работы счетчика ; (1<<USITC) исходное состояние выхода тактового сигнала transfer: out USICR,r16 ; Посылаем полученный байт в USICR out USICR,r16 ; Посылаем полученный байт в USICR in r17,USISR sbrs r17,6 rjmp transfer ldi r16,(1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)|(0x0<<USICNT0) ; Очистка флагов out USISR,r16 ; Посылаем полученный байт в USISR ret ;========================================================================================