Samou4ka » 🐞 AVR.Начинающим » SFIOR — регистр специальных функций ввода вывода МК AVR

SFIOR — регистр специальных функций ввода вывода МК AVR

Когда описывал разную периферию обратил внимание, что биты регистра SFIOR описываются в разных местах даташита, а это может оказаться не очень удобным. Не так часто конечно он используется, я бы даже сказал редко, но все же решил сделать короткую заметку об этом регистре, может кому сгодится. Итак, SFIOR (special function input output regester) — регистр специальных функций ввода вывода. В этой заметке опишу регистр МК ATmega16 и в каком разделе даташита биты описываются. У него задействованы почти все биты регистра. У других микроконтроллеров функции битов будут те же самые, но некоторые биты могут не использоваться.

SFIOR

Биты 7:5 — ADTS2:ADTS0: выбор источника запуска АЦП. Если ADATE=1 регистра ADCSRA, то значение записанное в эти биты будет определять источник запуска преобразований АЦП. Преобразование будет запускаться на растущем фронте выбранного флага прерывания (т.е. при установке в «1»). Раздел даташита Analog to Digital Converter.

Бит 3 — ACME: включение мультиплексора аналогового компаратора. Если в этот бит записан «0» — вход компаратора AIN1 подключен к ножке микроконтроллера AIN1, а если «1», тогда AIN1 может быть подключен к любому входу АЦП микроконтроллера (при условии, что АЦП выключен — бит ADEN=0 регистра ADCSRA). Раздел даташита Analog Comparator.

Бит 2 — PUD: отключение подтягивающих резисторов. Если бит установлен, то подтягивающие резисторы отключены не зависимо от того, что записано в DDRx и PORTx. Раздел даташита I/O Ports.

Бит 1 — PSR2: сброс предделителя таймера/счетчика2. Если этот бит установить в «1» — предделитель таймера/счетчика2 будет сброшен. Этот бит будет очищен аппаратно после подтверждения операции (буквально на следующем такте). Запись «0» в этот бит ни к чему не приведет. Раздел даташита 8-bit Timer/Counter2 with PWM and Asynchronous Operation.

Бит 0 — PSR10: сброс делителя частоты таймера/счетчика1 и таймера/счетчика0. Если этот бит установлен в «1» — предделитель таймера/счетчика1 и таймер/счетчика0 будет сброшен. Этот бит будет очищен аппаратно после подтверждения операции. Запись «0» ни к чему не приведет. Чтение этого бита всегда будет возвращать «0». Следует отметить, что ТС1 и ТС0 используют совместно один и тот же предделитель и сброс делителя повлияет на оба таймера. Раздел даташита Timer/Counter0 and Timer/Counter1 Prescalers.

Предделитель работает не зависимо от того включен таймер или выключен. Если мы запускаем таймер с каким-нибудь предделителем, например 256, то первый такт на таймер может прийти не через 256 импульсов, а меньше, т.к. при запуске таймера на этом предделителе могло пройти какое-то количество импульсов. Сброс предделителей нужен для того, чтобы мы точно знали, что в этот момент мы начинаем наш счет с нуля. Но к этому нужно подходить аккуратно. А то, например, сбрасывая все время один таймер, второй с большим предделителем может и не сработать никогда.

Как вам статья? Ваша реакция:
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
Расскажите друзьям:
Оцените статью:

Один комметарий

  • Спасибо! Оч пригодилась статья.

    нет, как раз это все спользуется.. И даже не редко. Даже в самых простых задачах.

Оставить комментарий