Поиск по сайту: |
|
По базе: |
|
Главная страница > Применение > Микроконтроллеров > AVR |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Рекомендации по применению 8-разрядных микроконтроллеров AVRAVR053: Калибровка внутреннего RC-генератораОтличительные особенности:
ВведениеВ данных «Рекомендациях…» описывается быстрый и точный метод для калибровки внутреннего RC-генератора. В состав входит легко адаптируемый исходный код калибровочной программы, которая может использоваться совместно с любым микроконтроллером, у которого имеется встроенный RC-генератор. Данная программа позволяет выполнять калибровку с помощью отладочных средств для AVR-микроконтроллеров STK500, AVRISP или JTAGICE. Также могут использоваться калибровочные системы сторонних производителей, в т.ч. на основе промышленных программаторов. Большинство существующих AVR-микроконтроллеров предлагают возможность работать от внутреннего RC-генератора. Частота внутреннего RC-генератора может быть откалибрована в большинстве AVR-микроконтроллеров с точностью ?1% относительно частоты, указанной в технических характеристиках на микроконтроллер. Такая возможность повышает гибкость и снижает стоимость решения по сравнению с использованием внешнего генератора. Заводская калибровка Atmel выполняется при фиксированном рабочем напряжении и температуре (25°C и типично при 5В). Поскольку частота внутреннего RC-генератора зависит от рабочего напряжения и температуры, то может понадобиться дополнительная калибровка для специфических условий проектируемого приложения. Дополнительная калибровка может выполняться при необходимости увеличить точность по сравнению со стандартной калибровкой, учесть специфические рабочие напряжения и температуру или даже настроить генератор на другую частоту. Рассматриваемый калибровочный метод длится на долю секунды дольше по сравнению со считыванием калибровочного байта из сигнатурной строки и записи его в память микроконтроллера. Таким образом, общее время программирования практически не изменяется при выполнении калибровки как шага программирования при производстве. Обратите внимание, что в некоторых системах важно выполнять реально-временную калибровку генератора. Данное желательно в приложениях, где точность частоты синхронизации необходимо поддерживать во всем температурном диапазоне и она должна быть независима от рабочего напряжения. В этом случае часовой кварцевый резонатор может быть надежным и недорогим решением. Однако в данных рекомендациях реально-временная калибровка не рассматривается. В конце данного документа Вы найдете руководство по быстрому старту. Принцип действия внутреннего RC-генератораНа стадии производства внутренний RC-генератор калибруется при напряжении питания 5В или 3,3В. Точная информация по напряжению, при котором выполнялась калибровка, приводится в документации на каждый тип микроконтроллера. Точность калибровки составляет +/-3 или +/-10% (также необходимо уточнить в документации). Если точности стандартной заводской калибровки недостаточно, то имеется возможность выполнить дополнительную калибровку RC-генератора. В этом случае возможно достигнуть точности частоты генератора в пределах +/-1% (+/-2% для микроконтроллеров, у которых точность стандартной калибровки 10%). Таким образом, дополнительная калибровка может улучшить точность или адаптировать частоту генератора. Выбор синхронизацииДля выбора источника синхронизации в микроконтроллерах AVR предусмотрены перепрограммируемые конфигурационные биты. Для активизации внутреннего RC-генератора необходимо запрограммировать соответствующее состояние этих бит. Какие именно биты должны быть запрограммированы, а какие нет, необходимо уточнить в документации на микроконтроллер. Основная частотаВ последующих разделах представлен обзор внутренних RC-генераторов AVR-микроконтроллеров. Некоторые AVR-микроконтроллеры имеют только один RC-генератор, а другие до 4 выборочных генератора. Диапазон частот составляет от 1 МГц до 9,6 МГц. Для обеспечения высокой точности внутреннего RC-генератора в память ввода-вывода включен регистр калибровки генератора OSCCAL. Регистр OSCCAL является однобайтным. Назначением данного регистра является настройка частоты генератора. Данная настройка используется при калибровке RC-генератора. Значение заводского калибровочного байта Atmel хранится в строке сигнатуры микроконтроллера. Калибровочный байт может варьироваться среди микроконтроллеров, т.к. частота RC-генератора зависима от технологии производства. Если микроконтроллер имеет более одного генератора, то значения калибровочных байт для каждого RC-генератора хранятся в строке сигнатуры. Калибровочный байт RC-генератора, используемого по умолчанию, в большинстве микроконтроллеров автоматически считывается из строки сигнатуры и копируется в регистр OSCCAL при подаче питания. Например, у микроконтроллера ATmega8 по умолчанию активизирован внутренний RC-генератор с частотой 1МГц и при подаче питания калибровочный байт этого генератора автоматически загружается в регистр калибровки генератора. Если посредством конфигурационных бит выбран генератор 4МГц вместо используемого по умолчанию, то в программе необходимо предусмотреть ручную загрузку калибровочного байта этого генератора в регистр OSCCAL. С помощью средств для программирования может быть считано значение калибровочного байта генератора 4МГц, а затем сохранено во флэш-память или ЭСППЗУ. Далее уже в программе необходимо предусмотреть считывание калибровочного байта и его копирование в регистр OSCCAL в процессе выполнения программы. В дополнение к настройке частоты генератора посредством регистра OSCCAL у некоторых микроконтроллеров предусмотрен предделитель системной синхронизации. Регистр предделителя (CLKPR) может использоваться для масштабирования системной синхронизации с предопределенными коэффициентами деления в коде двоичного дополнения. Кроме того, на данный предделитель можно повлиять посредством конфигурационных бит. Если запрограммировать бит CKDIV8, то CLKPR будет делить системную синхронизацию на 8. Это может понадобиться, если необходимо гарантировать работу микроконтроллера на частоте ниже номинальной. CLKPR может быть изменен во время выполнения программы для внутреннего изменения частоты синхронизации. Основная частота генератора определена как немасштабированная частота генератора. Обзор RC-генераторовВ процессе развития AVR-микроконтроллеров в них встраивались различные RC-генераторы. Обзор микроконтроллеров и их RC-генераторов представлен в таблице 1. Перечень, представленный ниже, отсортирован по типу генераторов, что в какой-то мере соответствует дате выпуска. В таблице представлены только микроконтроллеры с регулируемыми генераторами. Таблица 1 – Частота генераторов различных версий и особенности микроконтроллеров
Прим.: 1. XDIV - название регистра предделителя. Версии генераторов 1.хЭто самые ранние версии внутренних RC-генераторов AVR-микроконтроллеров, в которых была предусмотрена калибровка. Частотный диапазон этих генераторов составляет 1.2МГц…1.6МГц. Калибровочный байт хранится в строке сигнатуры, но автоматически не загружается при подаче питания. Загрузку регистра OSCCAL необходимо предусмотреть в программе. Частота генератора этих версий существенно зависит от рабочих напряжения и температуры. Версия генераторов 2.хДанные генераторы поставляются с частотой 1 МГц. Влияние рабочей температуры и напряжения на частоту генератора существенно снижено по сравнению с версией 1.x. Версии генераторов 3.хДанные версии появились одновременно с первыми микроконтроллерами, выпущенных по технологии 35.5k. Системный генератор расширен для генерации нескольких частот. В состав микроконтроллера включено четыре различных RC-генератора с частотами 1, 2, 4 и 8МГц. В данных версиях предусмотрена автоматическое копирование калибровочного байта генератора 1МГц из строки сигнатуры. В связи с наличием 4 различных RC-генераторов также 4 различных калибровочных байта записаны в строке сигнатуры. Если необходимо использовать другой генератор (не 1MHz), то в программе необходимо предусмотреть загрузку регистра OSCCAL соответствующим калибровочным байтом. Версии генераторов 4.хВ версии 4.0 предлагается один генератор частотой 8МГц. В остальных генераторах версий 4.x предлагается две частоты 4 и 8 МГц для микроконтроллера ATtiny2313, а также 4.8 и 9.6MHz для ATtiny13. Регистр OSCCAL измен таким образом, чтобы только 7 разрядов использовались для настройки частоты выбранного генератора. Старший разряд не используется. Предусмотрены функции автоматического копирования калибровочного байта генератора по умолчанию и предделение системной синхронизации. Версия генераторов 5.хВ версии 5.0 предлагается один генератор частотой 8 МГц. Для настройки генератора используются все 8 разрядов регистра OSCCAL. Предусмотрены автоматическое копирование калибровочного значения и предделитель системной синхронизации. Регистр OSCCAL разделен на две части. Старший разряд регистра OSCCAL выбирает один из двух перекрывающихся частотных диапазонов, а 7 младших разрядов используются для настройки частоты в пределах выбранного диапазона. Характеристики генераторовЧастота внутреннего RC-генератора зависит от температуры и от рабочего напряжения. Пример такой зависимости представлен на рисунке 1, на котором показана частота RC-генератора на 8МГц микроконтроллера ATmega169. Как видно из данного рисунка частота увеличивается с увеличением температуры и слегка снижается при увеличении рабочего напряжения. Данные характеристики отличаются для разных типов микроконтроллеров. Подробности по интересующему типу микроконтроллера необходимо искать в документации на него.
Все микроконтроллеры с регулируемыми генераторами содержат регистр OSCCAL для настройки частоты генератора. Увеличение значения в OSCCAL приводит к «псевдомонотонному» увеличению частоты. Причиной употребления термина «псевдомонотонный» является то, что при некоторых единичных приращениях значения OSCCAL частота не будет увеличиваться или будет слегка снижаться. Но при следующем единичном увеличении рост частоты возобновится. Другими словами, увеличение значения регистра OSCCAL на 1 не увеличивает частоту, но увеличение значения OSCCAL на 2 будет всегда увеличивать частоту. Данную информацию важно учесть при поиске наилучшего калибровочного значения для достижения заданной частоты. Пример псевдомонотонности зависимости между значением OSCCAL и частотой RC-генератора на 8МГц микроконтроллера ATmega169 приведен на рисунке 2. Обратите внимание, что в микроконтроллере ATmega169 используется только 7 разрядов регистра OSCCAL. Таким образом, максимальной частоте соответствует значение OSCCAL = 128.
Для всех регулируемых генераторов очень важно учесть, что не рекомендуется настраивать генератор на частоту, отличающуюся более чем на 10% от основной, приведенной в технических характеристиках на микроконтроллер в документации. Причиной этому является зависимость внутренней синхронизации микроконтроллера от частоты RC-генератора. Зная фундаментальные характеристики RC-генераторов есть возможность создать эффективную калибровочную процедуру, которая калибрует RC-генератор на заданную частоту, которая отличается не более чем на 10% от основной, при любом рабочем напряжении и температуре с точностью +/-1%. Реализация калибровкиДанный раздел разделен на описание протокола калибровки и описания программы. Протокол может быть адаптирован под любые средства тестирования или программирования для создания калибровочной системы. Соответственно, инструментальные средства Atmel для микроконтроллеров AVR, в т.ч. STK500, AVRISP, JTAGICE и JTAGICE mkII, подходят для этих целей. Использование данных средств для выполнения калибровки описано далее. Калибровка при использовании STK500, AVRISP, JTAGICE и JTAGICE mkII поддерживается только в версии с командной строкой. Калибровка выполняется под управлением AVR Studio версии 4.11 SP1 (или выше). Самая свежая версия AVR Studio может быть найдена по ссылке http://www.gaw.ru/html.cgi/txt/soft/avr/astudio.htm. Протокол калибровкиПротокол калибровки выполнен простым и быстрым, что позволяет его эффективно использовать в производственных условиях. Выводы, задействованные для программирования микроконтроллеров (интерфейс ISP или при наличии JTAG), используются для калибровки, поэтому они должны быть доступны в конечном изделии или на печатной плате. Для калибровки используется два вывода: MOSI и MISO интерфейса ISP или TDI и TDO интерфейса JTAG. Для упрощения описания в дальнейшем указываются только MOSI и MISO, хотя вместо них можно использовать TDI и TDO. Основная идея заключается в том, что программатор генерирует калибровочную синхронизацию и что микроконтроллер использует ее как эталон для калибровки внутреннего RC-генератора. После завершения калибровки микроконтроллер сигнализирует программатору «ОК» по линии MISO. Программатор отвечает за включение подтягивающего резистора на линии MISO, а микроконтроллер отвечает за включение подтягивающего резистора на линии MOSI. Этим гарантируется маловероятность влияния шумов на калибровку. Программатор может использовать 1024 такта синхронизации в качестве максимального времени калибровки, т.к. процедурой калибровки гарантируется завершение калибровки за указанное число тактов. Процедура калибровки выполняет следующие шаги:
Необходимо скопировать калибровочный байт из ЭСППЗУ в регистр во время выполнения программы. Процедура, выполняющая это, должна быть предусмотрена в конечной программе для микроконтроллера. Калибровочная программаКалибровочный код написан на ассемблере для AVR Studio 4.11 с инсталлированным калибровочным пакетом. Калибровочная программа структурирована таким образом, что она может быть легко изменена под использование любого микроконтроллера из таблицы 1. Кроме того, может быть изменен интерфейс калибровки. Все требуемые изменения выполняются в корневом файле “RC_Calibration.asm” при использовании для калибровки инструментальных средств для AVR. Корневой файл ссылается на (включает) следующие фалы:
Структура кода калибровки разработана с учетом простоты его изменения под желаемый тип микроконтроллера и интерфейс. Кроме того, широкое использование макросов гарантирует минимальность размеров кода. Конечное решение также гарантирует, что для поддержки новых микроконтроллеров и интерфейсов понадобиться минимум усилий. Метод двоичного поискаПоиск основан на методе двоичного поиска или иначе на методе декомпозиции (разделения):
Метод определения частоты генератораСравнение частот калибровочной синхронизации и внутреннего RC-генератора выполняется с помощью 8-разрядного таймера-счетчика 0 (TC0). 8-разрядный таймер используется в связи с тем, что он присутствует во всех микроконтроллерах с регулируемыми RC-генераторами. Идея заключается в определении отсчета таймера за 40 тактов калибровочной синхронизации и сравнении полученного значения с предустановленными порогами. Частота калибровочной синхронизации в существующей реализации задается в файле-описании интерфейса. Метод определения частоты генератора показан в виде блок-схемы на рисунке 3.
В целях охвата полного диапазона частот генератора от 1 до 9,6 МГц выполняется проверка флага переполнения ТС0 (OVF) для увеличения разрядности таймера с 8 до 16. Флаг OVF проверяется каждый полупериод калибровочной синхронизации, чем гарантируется детекция всех переполнений таймера. Относительно 16-разрядного разрешения реализованного таймера следует заметить, что наихудший случай по переполнению таймера возникает при использовании генератора на 9,6МГц и загрузке в регистр OSCCAL значения 0xFF. В этом случае, генератор работает с вдвое большей частотой, а таймер дойдет до значения 23541, что с запасом охватывает 16-разрядный таймер. Аналогичным образом необходимо рассмотреть случай минимальной частоты. Минимально возможная частота генерируется при записи в OSCCAL значения 0x00. В этом случае результирующая частота вдвое меньше от номинальной. Поскольку состояние флага OVF проверяется каждый полупериод, то потенциально потребуется не более 7 тактов ЦПУ на манипуляцию с флагом OVF и детекцию следующего фронта синхронизации (при заданной частоте 1 МГц). Данное временное ограничение выполняется, если флаг OVF не установлен, в случае же его установки потребуется 8 тактов. Это может привести к небольшой ошибке в детекции синхронизации, но не повлияет на конечный результат: генератор будет корректно определен как слишком медленный. Благодаря использованию метода двоичного поиска вряд ли придется столкнуться с данными крайностями. Однако их рассмотрение может быть уместно при модифицировании калибровочного метода. Корректировка неточностей синхронизацииПоскольку для детекции фронтов калибровочной синхронизации нет возможности использовать прерывания, то используется метод опроса. Как следствие применения данного метода фронт может быть детектирован с задержкой до 2 тактов ЦПУ. Потенциально это может стать причиной невозможности достичь 1%-ую точность калибровки. Для компенсации данной потенциальной временной ошибки пределы сжаты на 2 отсчета таймера (2 такта ЦПУ). Все вычисления порогов и констант выполняются препроцессором, который использует 32-разрядную точность при использовании AVRASM и 64-разрядную точность при использовании AVRASM2. Калибровочная программа не учитывает неточности источника калибровочной синхронизации. См. раздел “Точность калибровочной синхронизации ”в данном документе, чтобы узнать подробности по минимизации данного эффекта. Использование STK500, AVRISP, JTAGICE или JTAGICE mkII для калибровкиПредставленный исходный код калибровочной программы и командные файлы выполнены в качестве примера того, как использовать STK500, AVRISP, JTAGICE или JTAGICE mkII для выполнения калибровки. Для использования программы в составе другой калибровочной системы потребуются максимум незначительные изменения исходной программы. Ассемблирование калибровочной программыИсходный код калибровочной программы и командные файлы выполнены в качестве примера того, как использовать STK500, AVRISP, JTAGICE или JTAGICE mkII для выполнения калибровки. Для использования калибровочной программы в составе другой калибровочной системы понадобится внести незначительные изменения или же изменения вовсе не потребуются. Ассемблирование калибровочной прошивкиКорневой файл калибровочной программы называется RC_Calibration.asm. Данный файл включен в ассемблерный проект в AVR Studio 4.11 SP1 (или выше). В данном файле добавляется целевой микроконтроллер и желаемый калибровочный интерфейс: STK500, AVRISP, JTAGICE или JTAGICE mkII. Кроме того, предусмотрена возможность задания желаемой точности калибровки и желаемой частоты целевого микроконтроллера. После выполнения данных действий необходимо выполнить сборку проекта для генерации двоичного файла “rc_calib.hex”. Данный файл используется для калибровки микроконтроллера. Обратите внимание, что очень важно соблюсти правильную установку конфигурационных бит перед калибровкой. Иными словами, невозможно откалибровать микроконтроллер на частоту 8 МГц, если с помощью конфигурационных бит выбран 1МГц-ый RC-генератор. Использование инструментальных средств с управлением через командную строкуПоддержка калибровки у STK500, AVRISP, JTAGICE и JTAGICE mkII в настоящее время возможна только через интерфейс командной строки (AVR Studio 4.11 SP1 или выше). Программный пакет, который обеспечивает данную поддержку можно найти по ссылке http://www.gaw.ru/html.cgi/txt/soft/avr/astudio.htm. Необходимо проинсталлировать пакет по поддержке калибровки.В состав пакета входят новые прошивки для инструментальных средств, которые необходимы для разрешения калибровки. Обновление прошивки инициируется автоматически при первом соединении инструментального средства с AVR Studio 4.11 SP1 (или выше). Альтернативно обновление может быть выполнено вручную, как описано в помощи к AVR Studio. В состав исходного кода входят три командных файла. В этих файлах показывается, как использовать интерфейс командной строки для программирования калибровочного кода в целевой микроконтроллер, выполнить калибровку, а затем перепрограммировать микроконтроллер конечной прошивкой. Три командных файла управляют калибровкой ATmega16 посредством STK500/ISP, JTAGICE и JTAGICE mkII, соответственно. Изучите данные командные файлы и интегрированную помощь в AVR Studio, чтобы понять, как использовать инструментарий командной строки STK500/ISP, JTAGICE и JTAGICE mkII. В таблице 2 представлен перечень новых команд для exe-файлов, касающихся выполнения калибровки. Таблица 2 – Специфические опции калибровки нового генератора в stk500.exe и jtagice.exe
Добавление поддержки новых микроконтроллеровДля добавления поддержки нового микроконтроллера необходимо только скопировать файл-описание для похожего микроконтроллера (желательно совместимый по расположению выводов) и адаптировать его под характеристики нового микроконтроллера. Приведенный ниже перечень может использоваться для адаптирования файла к новому микроконтроллеру. В качестве примера используется ATmega8535.
Характеристики калибровочной программыПри написании кода достигалась его максимальная эффективность. Весь процесс калибровки должен быть достаточно быстрым. Таким образом, к характеристикам относятся размер калибровочной прошивки и длительность калибровки. Калибровочная прошивка занимает 183…240 байт, а фактический размер зависит от типа выбранного микроконтроллера и интерфейса. Таким образом, программирование данной прошивки выполняется очень быстро. Процедура калибровки завершается менее чем за 1024 калибровочных такта. Минимальная продолжительность зависит от длительности нахождения подходящего значения OSCCAL и времени записи ЭСППЗУ. В предлагаемом исполнении при использовании STK500.exe или JTAGICE.exe калибровка завершается не более чем за 32 мс. Точность калибровочной синхронизацииТочность калибровки существенно зависит от точности внешней калибровочной синхронизации. Частота калибровочной синхронизации, генерируемая инструментальными средствами для AVR, может варьироваться. Поэтому, очень важно измерить с высокой точностью генерируемую частоту и указать ее в исходном файле-описании интерфейса. Поскольку частота резонаторов зависит от рабочего напряжения и температуры, то измерение частоты необходимо выполнять при тех же условиях, что и при выполнении калибровки. Руководство по быстрому освоению калибровки внутреннего RC-генератораДля быстрого освоения калибровки одного из поддерживаемых микроконтроллеров рекомендуется придерживаться следующей последовательности.
Командный файл также может быть модифицирован для программирования выборочной прошивки аналогично test.hex после калибровки. Следует понимать, что новое калибровочное значение должно быть загружено в регистр OSCCAL во время выполнения программы. Документация:
промышленные полы, полиуретановые полы
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|