Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ

реклама

 




Мероприятия:




Таймер 2: Примеры применения сбора данных

В приведенных ниже примерах программного кода и рисунках с 26 по 30 продемонстрированы функциональные возможности Таймера 2. Во всех примерах предполагается, что длительности импульсов и периоды сигналов не превышают 216 периодов входных синхроимпульсов и регистр захвата содержит желаемый результат.

Измерение длительности низкого импульса

Для измерения длительности первого полного обнаруженного низкого импульса на выводе T2P Таймер 2 должен быть настроен для работы в однократном режиме, стробирование должно быть задано по высокому уровню, а захват данных - по нарастающему фронту. Бит CPRL2 может быть установлен для формирования перезагрузки по нарастающему фронту.


; ------------------ Исходное состояние: T2R = T2V = T2C = 0000h ------------------------
MOVE 	T2CFG, #00000010b 	; T2CI =0 (вход sysclk/N)
				; T2DIV[2:0] =000 (/1)
				; T2MD =0 (16-разрядный)
				; CCF[1:0] =01 (нарастающий фронт)
				; C/T2 =0 (таймер/захват)
MOVE 	T2CNA, #10100111b 	; ET2 =1 (разрешение прерывания от Таймера 2)
				; T2OE[0] =0 (вход)
				; T2POL[0] =1 (уровень сигнала стробирования = '1')
				; TR2L:TR2 =00 (не запускать таймер)
				; CPRL2 =1 (перезагрузка по фронту захвата)
				; SS2 =1 (однократный режим)
				; G2EN =1 (активизация стробирования)
; ------------------ Прерывание TCC2: Длительность = T2C

Измерение длительности низкого импульса
Рисунок 26. Пример применения Таймера 2 - Измерение длительности низкого импульса

Многократное измерение длительности высокого импульса

Для многократного измерения длительности высокого импульса на выводе T2P, Таймер 2 может быть настроен для работы в однократном режиме с задержкой запуска, стробирование по низкому уровню сигнала, захват по спадающему фронту. Бит CPRL2 может быть установлен для формирования перезагрузки по каждому спадающему фронту.

; ------------------ Исходное состояние: T2R = T2V = T2C = 0000h ------------------------
MOVE 	T2CFG, #00000100b 	; T2CI =0 (вход sysclk/N)
				; T2DIV[2:0] =000 (/1)
				; T2MD =0 (16-разрядный)
				; CCF[1:0] =10 (спадающий фронт)
				; C/T2 =0 (таймер/захват)
MOVE 	T2CNA, #10001111b 	; ET2 =1 (разрешение прерывания от Таймера 2)
				; T2OE[0] =0 (вход)
				; T2POL[0] =0 (уровень сигнала стробирования = '0')
				; TR2L:TR2 =01 (условие однократного запуска Таймера 2)
				; CPRL2 =1 (перезагрузка по фронту захвата)
				; SS2 =1 (однократный режим)
				; G2EN =1 (активизация стробирования)
; ------------------ Прерывание TCC2: Длительность = T2C

Измерение длительности высокого импульса
Рисунок 27. Пример применения Таймера 2 - Измерение длительности высокого импульса

Измерение периода

Чтобы измерить период присутствующего на выводе T2P сигнала Таймер 2 должен быть настроен на работу в однократном режиме захвата, стробирование должно быть отключено, для захвата может быть выбран любой фронт (определяется битами CCF [1:0]). Бит CPRL2 может быть установлен на перезагрузку при каждом фронте захвата данных.

;------------------Исходное состояние: T2R = T2V = T2C = 0000h------------------------
MOVE	T2CFG, *00000100b; T2CI =0 (вход sysclk/N)
				; T2DIV [2:0] =000 (/1)
				; T2MD =0 (16-разрядный)
				; CCF [1:0] =10 (спадающий фронт)
				; C/T2 =0 (таймер/захват)
MOVE	T2CNA, *10000110b; ET2 =1 (разрешение прерывания от Таймера 2)
				; T2OE [0] =0 (вход)
				; T2POL [0] =0 (уровень сигнала стробирования = '0')
				; TR2L:TR2 =00 (Таймер 2 не запускается)
				; CPRL2 =1 (перезагрузка по фронту захвата)
				; SS2 =1 (однократный режим)
				; G2EN =0 (стробирование отключено)
;------------------ Прерывание TCC2: Период = T2C

измерение периода сигнала
Рисунок 28. Пример применения Таймера 2 - измерение периода сигнала

Неоднократное измерение скважности

Чтобы измерить скважность присутствующего на выводе T2P сигнала Таймер 2 должен быть настроен на однократный режим с задержкой перед запуском и захватом по обоим фронтам. Биты CPRL2 должны установлены в 1 для осуществления перезагрузки по каждому фронту. Для предотвращения перезагрузки на одном из фронтов необходимо активизировать стробирование. Бит T2POL [0] определяет, по какому фронту начинается/заканчивается цикл захвата и по какому фронту не надо производить перезагрузку.

;------------------Исходное состояние: T2R = T2V = T2C = 0000h------------------------
MOVE	T2CFG, *00000110b; T2CI =0 (вход sysclk/N)
				; T2DIV [2:0] =000 (/1)
				; T2MD =0 (16-разрядный)
				; CCF [1:0] =11 (оба фронта)
				; C/T2 =0 (таймер/захват)
MOVE	T2CNA, *10101111b; ET2 =1 (разрешение прерывания от Таймера 2)
				; T2OE [0] =0 (вход)
				; T2POL [0] =1 (блокировка перезагрузки по нарастающему 
				  фронту
				; однократный цикл начинается/заканчивается по спадающему 
				  фронту)
				; TR2L:TR2 =01 (запуск Таймера 2 в однократном режиме)
				; CPRL2 =1 (перезагрузка по фронту захвата)
				; SS2 =1 (однократный режим)
				; G2EN =1 (разрешение стробирования)
;------------------Прерывание TCC2: Длительность низкого импульса =T2C
;-------------------Прерывание TCC2: Период = T2C

измерение скважности
Рисунок 29. Пример применения Таймера 2 - измерение скважности

Переполнение/прерывание по истечении заданного периода

Чтобы прерывание формировалось только тогда, когда на выводе T2P присутствует низкий сигнал в течении некоторого заданного временного интервала, Таймер 2 может быть настроен на работу в режиме стробирующего сравнения с инициализацией начального значения, соответствующего заданной длительности.

;------------------Исходное состояние: T2R = T2V = T2C = 0000h------------------------
MOVE	T2V, *1234h	; Переполнение после того, как на входе T2P низкий уровень 
(10000h - 01234h) T2CLK циклов
MOVE	T2CFG, *01110000b; T2CI =0 (вход sysclk/N)
				; T2DIV [2:0] =111 (/128)
				; T2MD =0 (16-разрядный)
				; CCF [1:0] =00 (фронты не определены)
				; C/T2 =0 (таймер/сравнение)
MOVE	T2CNA, *10101001b; ET2 =1 (активизация прерывания от Таймера 2)
				; T2OE [0] =0 (вход)
				; T2POL [0] =1 (уровень сигнала стробирования = '1')
				; TR2L:TR2 =01 (Запуск таймера 2)
				; CPRL2 =0 (захват не возможен)
				; SS2 =0 (не однократный режим)
				; G2EN =1 (активизация стробирования)
;------------------Прерывание TF2: Превышен заданный период

Переполнение/прерывание по истечении заданного периода
Рисунок 30. Пример применения Таймера 2 - Переполнение/прерывание по истечении заданного периода



<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники