Меню

16 разрядных таймера счетчика



16 разрядных таймера счетчика

16-разрядные таймеры-счетчики 1 и 3

16-разрядные таймеры-счетчики предназначены для точного задания временных интервалов, генерации прямоугольных импульсов и измерения временных характеристик импульсных сигналов.

Основные отличительные особенности:

  • 16-разрядные счетчики (в т.ч. возможность организации 16-разр. ШИМ)
  • Три раздельных блока сравнения
  • Двойная буферизация регистров порога сравнения (OCR)
  • Один блок захвата
  • Подавитель шума на входе блока захвата
  • Режим сброса таймера при совпадении с порогом сравнения (автоматическая перезагрузка)
  • Широтно-импульсная модуляция без генерации ложных импульсов при записи нового порога сравнения в OCR (двойная буферизация) и фазовая коррекция
  • Переменный период ШИМ
  • Частотный генератор
  • Счетчик внешних событий
  • 10 самостоятельных источников прерываний (TOV1, OCF1A, OCF1B, OCF1C, ICF1, TOV3, OCF3A, OCF3B, OCF3C и ICF3)

Ограничения на режим совместимости с ATmega103

Обратите внимание, что в режиме совместимости с ATmega103 доступен только один 16-разр. таймер-счетчик (таймер-счетчик 1). Кроме того, в режиме совместимости с ATmega103 таймер-счетчик 1 имеет только два регистра порогов сравнения (OCR1A и OCR1B).

Введение

В виду идентичности таймеров 1 и 3 в данном разделе используется общая форма записи. Так индекс “n” заменяет номер таймера-счетчика (1 или 3), а “x” заменяет наименование канала сравнения (A,B или C). Однако при программировании необходимо использовать фактические номера и наименования. Например, для записи нового состояния таймера-счетчика 1 в программе необходимо указывать TCNT1.

Укрупненная функциональная схема 16-разр. таймера-счетчика показана на рисунке 46. Если требуется конкретизировать расположение того или иного вывода см. “Расположение выводов”. Регистры ввода-вывода, а также биты или линии ввода-вывода, к которым организован доступ от ЦПУ, выделены жирной линией. Описание регистров, расположение и назначение бит данных таймеров представлены в параграфе “Описание регистров 16-разр. таймеров-счетчиков”.


Рисунок 46- Функциональная схема 16-разр. таймера-счетчика

Прим.: Расположение и назначение выводов таймеров-счетчиков 1 и 3 см. на рисунке 1, таблице 30 и таблице 39.

Регистр таймера-счетчика (TCNTn), регистры порогов сравнения (OCRnA/B/C), a также регистр захвата (ICRn) являются 16-разрядными регистрами. В связи с этим, во время доступа к этим регистрам должна быть соблюдена специальная процедура (см. Доступ к 16-разр. регистрам). Регистры управления таймером (TCCRnA/B/C) являются 8-разр. регистрами, поэтому, доступ к ним со стороны ЦПУ не связан с какими-либо ограничениями. Все сигналы запросов на прерывание представлены в регистре флагов прерываний таймеров (TIFR) и регистре флагов расширенных прерываний (ETIFR). Все прерывания индивидуально маскируются регистром макси прерываний таймеров (TIMSK) и регистром маски расширенных прерываний (ETIMSK). Регистры (E)TIFR и (E)TIMSK не представлены на функциональной схеме, т.к. они совместно используются другими таймерами микроконтроллера.

Таймер-счетчик может тактироваться внутренне через предделитель или внешне тактовым источником, подключенным к выводу Tn. Блок выбора тактового источника позволяет выбрать тактовый источник и фронт, по которому будет изменяться состояние таймера-счетчика. Если тактовый источник не задан, то таймер-счетчик находится в неактивном состоянии. Сигнал на выходе блока выбора тактового источника является тактовым сигналом таймера (clkTn).

Читайте также:  Установка газового фильтра перед счетчиком

Значение регистров порогов сравнения (OCRnA/B/C) непрерывно сравнивается со значением счетчика. Результат сравнения может использоваться для генерации прямоугольных импульсов с ШИМ или с переменной частотой на выходах OCnA/B/C. См. также “Блоки сравнения”. В случае определения совпадения значений сравниваемых регистров устанавливается соответствующий флаг прерываний (OCFnA/B/C), который в свою очередь может служить источником прерывания.

Регистр захвата позволяет запомнить состояние таймера-счетчика при возникновении заданного внешнего события (фронт внешнего сигнала) на входе захвата фронта ICPn или на выводах аналогового компаратора (см. “Аналоговый компаратор”). На входе захвата фронта предусмотрена схема цифровой фильтрации (подавитель шума) для снижения риска срабатывания схемы захвата от помехи. Верхний предел или максимальное значение таймера-счетчика в зависимости от режима работы таймера могут определяться значением в OCRnA, ICRn или иметь фиксированные значения. Если OCRnA задает верхний предел счета в режиме ШИМ, то он не может использоваться для генерации ШИМ-сигналов. Однако верхний предел в этом случае имеет двойную буферизацию, тем самым допуская изменение его значения в произвольный момент времени. Если верхний предел счета является постоянным значением, то альтернативно можно использовать регистр ICRn, освобождая регистр OCRnA для функции широтно-импульсной модуляции.

Некоторые определения и их сокращенные наименования, которые интенсивно используются в этом разделе, представлены в таблице 57.

Таблица 57 – Определения

НП (нижний предел) Счетчик достигает нулевого значения (0х0000)
МАКС (максимальное значение) Счетчик достигает максимального значения 0xFFFF (десятич. 65535)
ВП (верхний предел) Счетчик достигает верхнего предела счета (вершина счета). В качестве вершины счета могут выступать фиксированные значения 0x00FF, 0x01FF, 0x03FF или содержимое регистров OCRnA или ICRn.

По сравнению с предыдущими версиями 16-разр. таймеров-счетчиков данные таймеры доработаны и улучшены. Совместимость этих таймеров соблюдается по следующим позициям:

  • Адреса всех регистров, связанных с 16-разр. таймером-счетчиком, в т.ч. регистры прерываний таймеров.
  • Расположение бит внутри всех регистров 16-разр. таймеров, в т.ч. регистры прерываний таймеров
  • Векторы прерываний

У следующих управляющих бит изменены наименования, но сохранено назначение и расположение в регистре:

  • PWMn0 заменен на WGMn0.
  • PWMn1 заменен на WGMn1.
  • CTCn заменен на WGMn2.

Ниже приведены регистры, которые были добавлены к 16-разр. таймеру-счетчику:

  • Регистр управления таймером-счетчиком С (TCCRnC).
  • Регистр С порога сравнения, OCRnCH и OCRnCL (или OCRnC).

Следующие биты добавлены в регистры управления 16-разр. таймером-счетчиком:

  • COM1C1, COM1C0 добавлены в TCCR1A.
  • FOCnA, FOCnB и FOCnC добавлены в новый регистр TCCRnC.
  • WGMn3 добавлен в TCCRnB.
  • Добавлены флаг прерываний и биты маски прерываний для канала сравнения С. Некоторые усовершенствования в ряде случаев затрагивают вопрос совместимости.

Источник

Схема

Логика программы

Структура проекта

Проект состоит из 4-ех программных модулей.
bcd.c – содержит функцию для перевода 16-ти разрядных двоичных чисел в двоично-десятичные. На ней мы останавливаться не будем.
timer.c – содержит функцию инициализации таймера Т1, обработчик прерывания по событию захват и функцию возвращающую содержимое буфера.
lcd_lib.c – библиотека для работы с символьным дисплеем.
main.c — основная программа.

Читайте также:  Счетчики меркурий 236 арт 01

Рассмотрим содержимое модуля timer.c

Инициализация таймера/счетчика Т1

void TIM_Init( void )
<
TIMSK = (1
volatile unsigned int
tachBuf = 0; //буфер

#pragma vector=TIMER1_CAPT_vect
__interrupt void Timer1Capt( void )
<
TCNT1 = 0; //обнуляем счетный регистр
tachBuf = ICR1; //сохраняем значение регистра захвата в буфере
>

volatile unsigned int tachBuf = 0;
unsigned long tachFltr = 0;
unsigned char count = 0;

//прерывание по событию захват
#pragma vector=TIMER1_CAPT_vect
__interrupt void Timer1Capt( void )
<
TCNT1 = 0;

//накапливаем 8 измерений и вычисляем среднее арифметическое
tachFltr += ICR1;
count++;
if (count == 8)
<
tachBuf = ( unsigned int )(tachFltr >> 3);
tachFltr = 0;
count = 0;
>
>

Функция, возвращающая содержимое буфера

__monitor unsigned int TIM_GetTachBuf( void )
<
unsigned int tmp = tachBuf;
tachBuf = 0;
return tmp;
>

Основная программа

//****************************************************
// Author(s). Pashgan http://ChipEnable.Ru
// Target(s). ATMega8535
// Compiler. IAR 5.11A
// Description.: Таймер Т1. Прерывание по событию захват.
// Простой частотомер на AVR
// Data. 13.02.10
//*****************************************************
#include
#include
#include «lcd_lib.h»
#include «bcd.h»
#include «timer.h»

int main( void )
<
unsigned int tachValue;

PORTD = 0xff;
DDRD = 0x00;

__enable_interrupt ();
while (1) <
__delay_cycles (1000000);

//берем “захваченное” значение и выводим его на lcd
tachValue = TIM_GetTachBuf();
LCD_Goto(0,1);
BCD_5IntLcd(tachValue);

//вычисляем значение частоты и выводим его на lcd
tachValue = ( unsigned int ) (8000000UL/tachValue);
LCD_Goto(0,0);
BCD_5IntLcd(tachValue);
>
return 0;
>

tachValue = ( unsigned int ) (8000000UL/tachValue);

UL – указание компилятору, что тип констаныт unsigned long. Конечно, он и сам может догадаться, но это не будет лишним.
(unsigned int) – указание компилятору преобразовать результат вычисления к типу unsigned int.

Погрешность

20 __interrupt void Timer1Capt(void)
\ Timer1Capt:
21 <
\ 00000000 93AA ST -Y, R26
\ 00000002 939A ST -Y, R25
\ 00000004 938A ST -Y, R24
\ 00000006 93FA ST -Y, R31
\ 00000008 93EA ST -Y, R30
\ 0000000A 934A ST -Y, R20
\ 0000000C 933A ST -Y, R19
\ 0000000E 932A ST -Y, R18
\ 00000010 931A ST -Y, R17
\ 00000012 930A ST -Y, R16
\ 00000014 B74F IN R20, 0x3F
22 TCNT1 = 0;
\ 00000016 E000 LDI R16, 0
\ 00000018 BD0D OUT 0x2D, R16
\ 0000001A BD0C OUT 0x2C, R16
.

34 тактам и это время мы не учитываем при расчете частоты.

Исправим этот момент.

volatile unsigned int tachBuf = 0;
unsigned long tachFltr = 0;
unsigned char count = 0;
#define ERROR 34

//прерывание по событию захват
#pragma vector=TIMER1_CAPT_vect
__interrupt void Timer1Capt( void )
<
TCNT1 = 0;

tachFltr += (ICR1 + ERROR);
count++;
if (count == 8)
<
tachBuf = ( unsigned int )(tachFltr >> 3);
tachFltr = 0;
count = 0;
>
>

Прошиваем микроконтроллер и снова проверяем частотомер. Ого, намного лучше.

Читайте также:  Лампы после счетчика или до

Файлы

Если честно, я так и сделал. Но это нисколько не обесценивает вышеизложенного объяснения.

Источник

Таймеры и реле времени

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: 24

Max подключаемая мощность: 3,5 кВт

Принцип работы: механический

  • Удобен: сохраняет настройки при отключении электричества и выключении

Max число включений: 8

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max подключаемая мощность: 3,5 кВт

Принцип работы: электронный

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: 48

Max подключаемая мощность: 3,5 кВт

Принцип работы: механический

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: 10

Max подключаемая мощность: 3,5 кВт

Принцип работы: электронный

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: 99

Max подключаемая мощность: 3,5 кВт

Принцип работы: электронный

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: 20

Max подключаемая мощность: 3,5 кВт

Принцип работы: электронный

  • Функционален: одновременно программируется до 8 операций от 1 мин до 168 ч

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Принцип работы: электронный

Max число включений: 99 в сутки

Номинальное напряжение: 220 (230) В

Номинальный ток: 6 А

Max подключаемая мощность: 2,2 кВт

Принцип работы: электронный

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: 48

Max подключаемая мощность: 3,5 кВт

Принцип работы: механический

  • Эффект присутствия хозяев: программируется на 24 ч и управляется дистанционно

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: до 48 в сутки

Max подключаемая мощность: 3,5 кВт

Принцип работы: механический

  • Простая в настройке – программы задаются механически при помощи диска

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max подключаемая мощность: 3,5 кВт

Принцип работы: механический

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: 48 в сутки

Max подключаемая мощность: 3,5 кВт

Принцип работы: механический

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max подключаемая мощность: 3,52 кВт

Принцип работы: электронный

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: 56 в неделю

Max подключаемая мощность: 3,5 кВт

Принцип работы: электронный

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: до 140 в неделю

Max подключаемая мощность: 1,8 кВт

Принцип работы: электронный

Max число включений: 16 в сутки

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max подключаемая мощность: 3,52 кВт

Принцип работы: электронный

Номинальное напряжение: 220 (230) В

Номинальный ток: 16 А

Max число включений: 10 в сутки/70 в неделю

Источник

Счетчики и показания © 2022
Внимание! Информация, опубликованная на сайте, носит исключительно ознакомительный характер и не является рекомендацией к применению.

Adblock
detector
Сортировать по: Отображать по: товаров