Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / Lab_moto / 5.doc
Скачиваний:
12
Добавлен:
16.04.2013
Размер:
229.38 Кб
Скачать

Регистр входной фиксации (icr).

Регистр входной фиксации расположен по адресу $14-$15 и предназначен только для чтения. В этом регистре сохраняется значение счетчика в момент обнаружения на входе TCAP заданного сигнала. Таким образом, счетчик и регистр входной фиксации имеют одинаковое разрешение, равное четырем циклам внутренней синхронизации. Фиксация времени может осуществляться либо по переднему, либо по заднему фронту сигнала. Это задается программно через бит IEDG управляющего регистра. Значение в регистре ICR при фиксации будет на единицу больше значения счетчика в момент фиксации. Эта задержка необходима для внутренней синхронизации. RESET не оказывает влияния на содержимое регистра входной фиксации.

При обнаружении сигнала на выводе ТСАP, содержимое счетчика запоминается в ICR, и устанавливается флаг ICF в регистре статуса таймера (TSR). Кроме того, если установлен бит ICIE в регистре TCR, то в момент установки флага ICF произойдет прерывание ICI (Input Capture Interrupt).

При чтении старшего байта регистра ICR ($14) фиксация следующего значения запрещается до тех пор, пока не будет прочитан младший байт ($15). Чтение же младшего байта не влияет на возможность очередной входной фиксации.

Записывая время в моменты прихода фронтов входного сигнала, программа может определять период и ширину импульса входного сигнала. Для измерения периода необходимо зафиксировать два фронта одинаковой полярности, в то время как для измерения длительности импульса необходимо фиксировать два соседних фронта разной полярности.

Если предполагается, что измеряемая величина не превышает периода переполнения 16-битового счетчика (0.131 с), то измерения в этом случае довольно просты. В противном случае программе придется отслеживать переполнения счетчика.

Регистр выходного сравнения (ocr).

Регистр выходного сравнения расположен по адресу $16-$17 и используется для программирования какого-либо действия в определенное время (т. е. когда счетчик таймера достигнет определенного значения). Все биты регистра могут быть прочитаны и записаны в любой момент времени, и не изменяют свое состояние при RESET. Если в функции выходного сравнения нет необходимости, эти ячейки памяти могут использоваться для других целей. Значение в регистре выходного сравнения сравнивается со счетчиком при каждом его увеличении. Когда значения совпадают, устанавливается флаг OCF и уровень бита OLVL (см. регистр TSR статуса таймера) передается на вывод ТСМР. Кроме того, если установлен бит OCIE в регистре TCR, то в момент совпадения значений произойдет прерывание OCI (Output Compare Interrupt). При записи сначала в старший байт ОСR ($16) сравнение не будет производиться до тех пор, пока не будет записан младший байт ($17). При записи сначала в младший байт функция сравнения останется активной.

Одним из простейших примеров использования функции выходного сравнения является генерирование импульса определенной длительности. Сначала значение, соответствующее началу импульса записывается в OCR, а значение бита OLVL устанавливается в зависимости от требуемой полярности импульса. После того, как сравнение произошло (на выходе TCMP появился нужный нам уровень), необходимо перепрограммировать OCR и OLVL для автоматического изменения уровня сигнала на выходе TCMP при следующем сравнении. Для этого значение, соответствующее длительности импульса, необходимо сложить с первоначальным значением OCR, а результат снова записать в OCR. После этого программа может заниматься другой задачей, а формирование импульса на выходе TCMP будет закончено автоматически.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

Соседние файлы в папке Lab_moto