СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть
Вернуться   СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть > Техника > Уголок радиолюбителя
Уголок радиолюбителя Форумы любителей электроники. См. также Железнодорожная связь, Электронная аппаратура ЖАТ
Закладки ДневникиПоддержка Сообщество Комментарии к фото Сообщения за день
Ответить в этой теме   Перейти в раздел этой темы   Translate to English    
 
Translate to English В мои закладки Подписка на тему по электронной почте Отправить другу по электронной почте Опции темы Поиск в этой теме
Старый 13.10.2015, 22:37   #1 (ссылка)
V.I.P.
 
Аватар для poster333

Регистрация: 14.05.2015
Сообщений: 255
Поблагодарил: 0 раз(а)
Поблагодарили 8 раз(а)
Фотоальбомы: не добавлял
Репутация: 0

Тема: [08-2015] Средства генерации, счёта импульсов и формирования временных интервалов в ATxmega


Средства генерации, счёта импульсов и формирования временных интервалов в ATxmega

А. САВЧЕНКО, пос. Зеленоградский Московской обл.

Эта статья продолжает серию материалов того же автора об архитектуре микроконтроллеров семейства ATxmega.

В микроконтроллерах ATxmega серии АЗ имеются восемь таймеров-счётчиков — по два на каждый из портов С D, Е, Е Основой для них стал довольно удачный шестнадцатиразрядный таймер-счётчик микроконтроллеров ATmega, который получил ряд полезных усовершенствований.

Все эти таймеры-счётчики абсолютно идентичны между собой в функциональном плане, но подразделяются на два типа — ТСхО и ТСх1, где х — символическое имя порта, с которым ассоциирован таймер-счётчик. Различие в том, что ТСхО имеют по четыре канала захвата-сравнения, подключаемых к линиям 0—3 своего порта, а в ТСх1 — всего два таких канала, которые подключаются к линиям 4 и 5. Их предшественник — шестнадцатиразрядный таймер-счётчик микроконтроллера семейства ATmega — хорошо описан в [1], поэтому в предлагаемой статье речь пойдёт только об отличиях от него, присущих таймеру-счётчику ATxmega.

Упрощённая структура таймера-счётчика представлена на рис. 1. Он может работать в следующих режимах: нормальном (NORMAL), генерации сигналов заданной частоты (FRQ) и генерации ШИМ-сигналов (PWM). Функционирование таймера-счётчика в этих режимах хорошо освещено в [2, 3], поэтому здесь не описывается.

Очень полезное усовершенствование — введение в структуру таймера-счётчика регистра периода (PER) для хранения значения модуля счёта. В ходе работы счётчика содержимое его счёт ного регистра CNT изменяется от 0 до содержимого регистра PER в ходе прямого счёта и от содержимого регистра PER до 0 в ходе обратного счёта.

Загружая новые значения в регистр PER, можно "на лету" изменять модуль счёта. Это существенно расширяет возможности таймера-счетчика, например, при генерации импульсных последовательностей и ШИМ-сигналов.

Тактировать счётчик можно как сигналами тактовой частоты периферийных устройств микроконтроллера , так и сигналами, поступающими из системы событий. При этом сигналы событий могут использоваться не толь ко для тактирования, но и для управления работой таймера-счётчика, заставляя его, например, выполнять захват, сравнение или квадратурную дешифрацию, которая рассматривалась в статье [4].


Загрузка новых значений в регистр PER и регистры каналов захвата-сравнения CCA—CCD обычно происходит немедленно после их выдачи программой, однако в ряде случаев немедленное обновление нежелательно, поскольку может вызвать кратковременное появление так называемых "странных сигналов", например, нелогичное изменение длительности формируемых импульсов. Природу такого явления иллюстрирует рис. 2.

Допустим, в регистр периода записано значение PERI, поэтому содержимое счётного регистра CNT циклически изменяется от 0 до этого значения. В момент времени, происходит перезагрузка регистра периода значением PER2 При PER2>PER1 нарушения в работе счётчика не происходит — CNT досчитает до значения PER2, обнулится и начнёт новый цикл счёта той же длительности.

Но в момент времени производится перезагрузка регистра PER значением PER3. На этот раз PER3<PER2. Теперь логика управления ждёт выполнения условия CNT = PER3, чтобы обнулить счётчик. Однако в текущем цикле счёта это равенство не будет выполнено, если в момент времени значение CNT уже было больше PER3. Поэтому счетчик будет считать до переполнения, которое наступит после 65535-го тактового импульса, обнулится самостоятельно и лишь после этого начнёт выполнять циклы счёта от 0 до PER3.

Подобное явление может иметь место при перезагрузке не только регистра периода, но и регистров каналов захвата-сравнения. Для исключения этих ситуаций в таймере-счётчике предусмотрена двойная буферизация загружаемых значений с помощью буферных регистров периода PERBUF и захвата-сравнения CCnBUF.

При двойной буферизации новое значение предела счёта загружают не в основной, а в буферный регистр. Ситуация, представленная на рис. 2, принимает вид, показанный на рис. 3. При загрузке регистра PERBUF, которую производят в моменты времени , содержимое регистра PER не изменяется. Поэтому не меняется длительность выполняемых в это время циклов счёта. Но в моменты a одновременно с обнулением счётного регистра происходит перенос значения из регистра PERBUF в регистр PER, поэтому последующие циклы выполняются уже с НОВЫМ периодом. Более подробно механизм двойной буферизации рассмотрен в [3].

При необходимости два 16-разряд-ных таймера-счётчика могут быть объединены в один 32-разрядный с помощью системы событий микроконтроллера. Переполнение "младшего" таймера-счётчика генеоирует событие, которое через канал системы событий поступает в качестве тактирующего сигнала на "старший" таймер-счётчик.

Каждый таймер-счётчик микроконтроллера может генерировать запросы прерывания и события. Условия их генерации одинаковы:

— переполнение (переход от максимального значения к нулевому) 8 ходе прямого счёта или переопустошение (переход от нулевого значения к максимальному) в ходе обратного счёта;

— захват текущего состояния счётного регистра в регистр захвата или равенство текущего значения в счётном регистре значению, загруженному в регистр сравнения (фиксируется каждым из каналов);

— переполнение буфера при использовании любого из каналов захвата-сравнения в режиме захвата.

Таймер-счётчик принимает три программные команды управления, с помощью которых можно незамедлительно изменить его состояние. Команда обновления вызывает те же действия, что и достижение значением в счётном регистре условия обновления. Она может быть заблокирована, если установлен разряд блокировки обновления. Команда повторного старта выполняет принудительный перезапуск текущего периода генерации импульсов, а команда начальной установки позволяет инициализировать все регистры таймера-счётчика начальными значениями. Эта команда исполняется только при условии выключенного состояния таймера счётчика.

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

Первый из них — модуль повышения разрешающей способности Hi-Res (Hi-Resoiution). Он предназначен для повышения разрешающей способности таймера-счётчика по времени в режимах генерации импульсов заданной частоты и ШИМ.

Основа модуля — двухразрядный счётчик, тактируемый сигналом CLKPER4 (см. рис. 3 в [5]), частота которого в четыре раза выше частоты С1_КРЕН. При работе в режиме Hi-Res гаймер-счётчик тактируется сигналом CLKPER, однако с каждым тактовым импульсом значение в регистре CNT изменяется не на одну, а на четыре единицы (увеличивается при прямом счёте или уменьшается при обратном). При этом содержимое двух младших разрядов не изменяется.

Результат счёта "склеивается" из 14- ги старших разрядов таймера-счётчика и двух разрядов дополнительного счётчика Hi-Res, которые становятся двумя младшими разрядами 16-разрядного результата счёта. Результат получается правильным, поскольку тактовые последовательности строго
синхронизированы. Разрешающая способность по времени в режиме Hi-Res улучшается в четыре раза.

В режиме Hi-Res+ к 14-ти старшим разрядам счётного регистра добавляют три разряда дополнительного счётчика, который теперь использует оба (нарастающий и спадающий) перепада импульсов частотой . Поэтому разрешающая способность по времени улучшается в восемь раз.

Микроконтроллер имеет четыре блока Hi-Res — по одному на каждый из портов, оснащённых таймерами-счётчиками.

Ещё один, предназначенный для расширения возможностей таймера-счётчика, модуль микроконтроллера — AWeX (Auvanced Waveform extension — узел улучшения формы сигнала). Он расширяет возможности таймера-счётчика в режимах генерации импульсов и упрощает реализацию функций управления мощными двухтактными преобразователями напряжения и электродвигателями различных типов — асинхронных, шаговых, коммутируемых реактивных (SR) и бесщёточных постоянного тока (BLDC).

В микроконтроллере имеются два модуля AWeX, которые работают только с нулевыми таймерами-счётчиками портов С и Е. Каждый из них реализует две функции:

— формирует сигналы управления двухтактными импульсными преобразователями напряжения различного назначения со вставкой в выходные импульсные последовательности интервалов "мёртвого времени", что позволяет упростить создание этих узлов и управление их работой;

— генерирует цифровые шаблоны, которые дают возможность управлять электродвигателями, требующими коммутации обмоток по сложным алгоритмам. Следует иметь в виду, что формируемые микроконтроллером сигналы выводятся через линии порта с невысокой нагрузочной способностью и требуют дополнительного усиления, а для управления верхними ключами полумо-стовых и мостовых преобразователей ещё и применения специализированных драйверов.

В деталях работа модуля AWeX описана в [2, 3].

Управление таймером-счётчиком в BASCOM AVR


Для конфигурирования таймеров-счетчиков в системе разработки про-
грамм BASCOM AVR предназначена директива Config ТСху, где х — символическое имя порта, с которым ассоциирован таймер-счётчик; у — тип таймера-счётчика (0 или 1). Полное описание этой директивы приведено в разделе "Помощь" BASCOM AVR. Она позволяет задать большинство необходимых для настройки таймера-счётчика параметров, а недостающие параметры загружаются в программно-доступные регистры таймера-счётчика, основные из которых перечислены ниже.

1.Шестнадцатиразрядные регистры.

PER — уже упоминавшийся выше регистр периода.

CCA, ССВ, ССС, CCD — регистры каналов захвата-сравнения нулевого таймера-счётчика (в имеющем лишь два канала захвата-сравнения первом таймере-счётчике только регистры ССА и ССВ).

2. Восьмиразрядные регистры.

CTRLA — регистр управления А.

Разряды 4—7 не используются, их чтение возвращает нули.

CLKSEL[3:0] (разряды 3—0) — выбор источника тактовых импульсов для таймера-счётчика в соответствии с табл. 1.

CTRLB — регистр управления В.

CCDEN (разряд 7), CCCEN (разряд 6), CCBEN (разряд 5), CCAEN (разряд 4) — разрешения работы каналов захвата-сравнения. Чтобы выходной импульсный сигнал был выведен на линию порта ввода—вывода, необходимо записать 1 в соответствующий разряд этого регистра. Кроме того, линия ввода—вывода должна быть настроена как выход.

Разряд 3 не используется, читается как 0.

WGMODE[2:Oj (разряды 2—0) — код режима работы таймера-счётчика в соответствии с табл. 2.


CTRLD — регистр управления D. EVACT[2:0] (разряды 7—5) — код реакции таймера-счётчика на событие в соответствии с табл. 3


EVDLY (разряд 4) — единица в этом разряде приводит к задержке сигнала выбранного источника на один период . Эта возможность специально предусмотрена для правильного функционирования составного 32-разряд-ного таймера-счётчика и необходима для компенсации задержки распространения сигнала, образующейся в результате каскадирования двух счётчиков.

EVSEL[3:0] (разряды 3—0) — выоор источника событий в соответствии с табл. 4.


CTRLF — регистр управления F.

Разряды 7—4 не используются.

CMD[1:0] (разряды 3, 2) — код программной команды управления таймером-счётчиком в соответствии с табл, 5.

LUPD (оазряд 1) — блокировка обновления.

DIR (разряд 0) — направление счёта: 0 — прямой, 1 — обратный.

CTRLFSET — установка единиц в регистре CTRLF.

CTRLFCLR — установка нулей в регистре CTRLF.

С регистром CTRLF, как и с некоторыми другими регистрами таймера-счётчика, связаны два регистра установки. Оба они абсолютно идентичны по структуре, но выполняют по отношению к регистру CTRLF противоположные действия: единица в оазряде регистра CTRLFSET устанавливает такое же значение в соответствующем разряде регистра CTRLF, а единица в разряде регистра CTRLFCLR, наоборот обнуляет его. Так сделано для того, чтобы избежать применения к регистру CTRLF операции "чтение—модификация—запись”.

INTFLAGS — регистр флагов прерываний.

CCDIF (разряд 7), CCCIF (разряд 6), CCBIF (разряд 5), CCAIF (разряд 4) — флаги запросов прерывания от каналов захвата-сравнения. В режиме захвата флаг устанавливается, когда в соответствующем регистре блока сравнения появляется захваченная информация. Флаг снимается чтением соответствующего регистра захвата. Переход по вектору прерывания к снятию флага не приводит.

В остальных режимах флаг устанавливается при совпадении значений в регистре CNT и соответствующем регистре сравнения. Он автоматически снимается при переходе по вектору прерывания.

Разряды 3, 2 не используются, при чтении возвращают 0.

ERRIF (разряд 1) — флаг прерывания по ошибке. В режимах генерации импульсов заданной частоты и ШИМ этот флаг устанавливается, если узлом аварийной защиты блока AWeX обнаружена некорректная работа. Флаг ERRIF никогда не устанавливается у таймеров-счётчиков, для которых не предусмотрен блок AWeX. В режиме захвата флаг ERRIF сигнализирует о переполнении буфера в любом из каналов захвата-сравнения, а в режиме управляемой событиями квадратурной дешифрации он свидетельствует о подаче некорректного индексного сигнала Флаг ERRIF автоматически снимается при переходе по соответствующему вектору прерывания.

OVF (разряд 0) — флаг прерывания по переполнению/переопустошению счётного регистра. Он автоматически снимается при переходе по соответствующему вектору прерывания.

Любой из Флагов прерывания можно снять записью в него единицы.

Примеры работы с таймером-счётчиком


В рассматриваемых далэе примерах предполагается, что тактовая частота CLKper равна 32 МГц.

Пример 1. Вывести на линию PD2 прямоугольные импульсы частотой 75 кГц.

Для этого необходимо выполнить следующее:

— выбрать нужный таймер-счётчик и перевести его в режим генерации импульсов заданной частоты;

— рассчитать необходимое значение модуля счёта и занести его в нужный регистр захвата-сравнения;

— настроить линию PD2 на выход.

Задачу будем решать с помощью

таймера TCD0, так как его каналы захвата-сравнения подключены к линиям 1—3 порта D. К нужной второй линии подключён канал ССВ.

Частота следования импульсов на выходе таймера-счётчика, согласно [3], равна


где N — коэффициент предварительного деления частоты (см. описание регистра CTRLA); ССп —значение в нужном регистре канала захвата-сравнения, для нашего случая в регистр ССВ следует записать число


Чтобы вычислить его, необходимо задаться одним из возможных (см. табл. 1) и при этом допустимых, исходя из решаемой задачи, значением N. Если вычисленное значение ССВ получилось дробным, его округляют до ближайшего целого. Чтобы уменьшить ошибку округления, следует выбирать N минимально возможным.

Например, при N = 8 и вычисленном значении ССВ = 25,6(6) принимаем ССВ =26, что даёт ошибку 1,3 %. При N = 1 и вычисленном ССВ = 212,3(3) принимаем ССВ = 212, чем уменьшаем ошибку до 0,15%. Выбираем последний вариант и составляем программу:


Пример 2. Настроить таймер-счётчик на генерацию широтно-модулированной импульсной последовательности в режиме двунаправленного счёта (условие обновления — CNT=0) с двойной буферизацией, разрешающей способностью 6 разрядов и частотой 62,5 кГц. Вывести сигнал на вывод РС4.

Для формирования этого сигнала следует использовать канал захвата-сравнения А (регистр ССА) таймера-счётчика ТСС1. При двунаправленном счёте действуют следующие соотношения [3].

—требуемое значение модуля счёта, хранимое в регистре периода

где m — разрешающая способность, разрядов. Для m = 6 получаем PER = 63;

— частота следования импульсов

где N — коэффициент предварительного деления частоты (см. регистр CTRLA). Зная значение PER, легко подсчитать. что N = 4.

Осталось разобраться с двойной буферизацией. В рассмотренной выше информации о структуре программнодоступных регистров отсутствуют какие-либо сведения о том, как включить этот режим. Не предусмотрены соответствующие параметры и в директивах конфигурации таймера-счётчика. Как быть? Всё просто — двойная буферизация будет автоматически включена, если вместо регистра PER загрузить значение периода в регистр PERBUF.

Теперь можно приступать к программированию;


На этом настройка таймера-счётчика закончена. Теперь значением в регистре ССА можно задавать требуемый коэф- II фициент заполнения импульсов. Сле- I дующая строка установит его равным приблизительно 50 %:

Необходимо лишь следить, чтобы в процессе работы программы число в регистре ССА не превысило значения в регистре PER.

ЛИТЕРАТУРА

1. Евстифеев А. В. Микроконтроллеры AVR семейств Tiny и Меда фирмы At.nel. — М.: "Додэка-ХХГ, 2008.

2. Xmega A. Manual. — URL: http://www. atmel.com/lmages/doc8077.pdf (28.03.15).

3. Руководство по 8-битным AVR-микроконтроллерам XMEGA А. — URL: http://www. gaw.ru/html.cgi/txt/aoc/micros/avr/arh_x mega a (28.03.15).

4. Савченко А. Система событий микроконтроллеров ATxmega. — Радио, 20'5, № 2, с. 24-27.

5. Савченко А. Система синхронизации микроконтроллера ATxmega и её настройка средствами BASCOM AVR. — Радио, 2015, № 7, с. 27-29.
poster333 вне форума   Цитировать 0
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[07-2015] Система синхронизации микроконтроллера ATxmega и её настройка средствами BASCOM AVR poster333 Уголок радиолюбителя 0 08.10.2015 00:30
[06-2015] Особенности портов ввода-вывода микроконтроллера ATxmega и их настройка средствами BASCOM AVR poster333 Уголок радиолюбителя 0 06.10.2015 03:05
[РЖД ТВ] Минтранс предложил заложить средства в бюджет на 2015-2017 годы на финансирование проекта ВСМ rzd.ru Новости на сети дорог 0 22.06.2014 03:04
[07-2010] Средства генерации сжатого воздуха на сортировочных горках Admin xx3 0 17.06.2011 11:13
Р 32.178-2001 Рекомендации по метрологии. Методика расчета межкалибровочных интервалов шаблонов, применяемых на федеральном железнодорожном транспорте Admin ОСТы 0 04.05.2011 15:51

Ответить в этой теме   Перейти в раздел этой темы   Translate to English

Возможно вас заинтересует информация по следующим меткам (темам):
,


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.



Часовой пояс GMT +3, время: 21:10.

Яндекс.Метрика Справочник 
сцбист.ру сцбист.рф

СЦБИСТ (ранее назывался: Форум СЦБистов - Railway Automation Forum) - крупнейший сайт работников локомотивного хозяйства, движенцев, эсцебистов, путейцев, контактников, вагонников, связистов, проводников, работников ЦФТО, ИВЦ железных дорог, дистанций погрузочно-разгрузочных работ и других железнодорожников.
Связь с администрацией сайта: admin@scbist.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 
Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC Перевод: zCarot