Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

62 Часть /. Общие принципы устройства и функционирования Аtте/ АVR У ниверсальны й последовательны й ин терфе й с USI В AVR семейства Tiny, з а исключением некоторых старших моделей, UART (или USART), SPI и TWI вообще отсутствуют. Вместо них предлагается интерфейс USI (Universal Serial Interface), который представляет собой по сути «голый» сдвиговый регистр ( usшR ) с регистром управления ( usrcR ) и статуса ( usrsR ) без каких-либо буферов данных. С USI связано аппаратное прерывание. В состав USI входит 4-битовый счетчик тактовых импульсов, управляющийся от регистра usrsR. USI можно использовать и в качестве трехпроводного SPI, и в качестве двухпроводного TWI, и дл-s.� имитации UART, и еще для ряда применений - например, тактовый счетчик совместно с TimerO может образовывать 1 2-разрядный таймер, с помощью USI также можно организовать дополнительное внешнее прерывание и т. п. Управ­ ляется сдвиг в регистре usшR либо «вручную» (пользовательской программой), ли­ бо от прерывания переполнения TimerO, либо от внешнего источника (что допуска­ ет функционирование устройства с USI в качестве ведомого). С USI связаны три внешних вывода: вход и выход данных (DI, DO) и ввод/вывод тактовых импульсов (USCK). USI так и не получил широкого признания, и к тому же в большинстве моделей, включая все семейство Mega, он вообще отсутствует, поэтому этот интерфейс мы в книге не рассматриваем, - на практике проще выбрать контроллер с наличием нужного порта или выполнить имитацию программным путем. Если хотите попро­ бовать USI для какого-нибудь экзотического применения, то в Tiny23 1 3 , например, нет ни SPI, ни TWI, зато есть и USART, и USI . Прерывания Возможность реагировать на события и аппаратно прерывать выполнение основной программы - важнейшая функция современных микроконтроллеров. Без нее МК никогда бы не заслужили звания «интеллектуальных устройств» и не вышли бы за уровень «навороченной» заготовки для создания сложных логических схем. На­ помним, что всю деятельность любого компьютерного устройства - от миниатюр­ ного смартфона и компьютерных «мозгов» автомобиля до мощной системы для обработки графики или управления сложным технологическим процессом - мож­ но представить в виде разветвленной системы реакций на различные события, которую осуществляет аппаратная часть совместно с операционной системой. Через обработчики нерегулярно возникающих событий (читай - через прерыва­ ния) реализуется 99% функциональности всего компьютерного устройства, и лишь небольшая ее часть представляет собой «плановое» выполнение линейного кода: в основном в начале и в конце текущего сеанса работы. Остальное время любая система проводит в ожидании событий, на которые нужно реагировать. В архитектуре IВМ РС аппаратные прерывания осуществляет специальный кон­ троллер прерываний, в МК же, в полном соответствии с концепцией «c o mp u ter- o n­ chip», эта функция является встроенной. Любое из периферийных устройств может вызывать свое прерывание, а чаще всего и не одно. В этом разделе мы рассмотрим

RkJQdWJsaXNoZXIy MTExODQxMg==