Evgenii Legotckoi
Evgenii LegotckoiТам. 26, 2015, 9 Т.Қ.

Attiny24 ішіндегі USI - екі сымды режимнің параметрлері

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
 ;========================================================================================
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
OI
  • Ora Iro
  • Жел. 24, 2024, 6:38 Т.Ж.

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:40ұпай,
  • Бағалау ұпайлары-8
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:50ұпай,
  • Бағалау ұпайлары-4
m
  • molni99
  • Қаз. 26, 2024, 1:37 Т.Ж.

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:80ұпай,
  • Бағалау ұпайлары4
Соңғы пікірлер
ИМ
Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProjectМаусым 4, 2022, 3:49 Т.Ж.
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9AnonimҚаз. 25, 2024, 9:10 Т.Ж.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Бізді әлеуметтік желілерде бақылаңыз