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 хостинг.

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

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
Г

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

  • Нәтиже:66ұпай,
  • Бағалау ұпайлары-1
t

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

  • Нәтиже:33ұпай,
  • Бағалау ұпайлары-10
t

Qt - Тест 001. Сигналы и слоты

  • Нәтиже:52ұпай,
  • Бағалау ұпайлары-4
Соңғы пікірлер
G
GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrАқп. 8, 2024, 6:43 Т.Қ.
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCT
BlinCTМаусым 25, 2024, 1 Т.Ж.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
BlinCT
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

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