Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Общие сведения. Любой микроконтроллер серии AVR содержит несколько встроенных таймеров



Любой микроконтроллер серии AVR содержит несколько встроенных таймеров. Причем, по своему назначению их можно разделить на две категории. К первой категории относятся таймеры общего назначения. Вторую категорию составляет сторожевой таймер. Сторожевой таймер предназначен для автоматического перезапуска микроконтроллера в случае «зависания» его программы. Зависанием называют зацикливание программы в результате ошибки, допущенной программистом либо в результате действия внешней помехи. Для каждой микросхемы нужен всего один сторожевой таймер. В любом микроконтроллере AVR такой таймер имеется.

Таймеры общего назначения используются для формирования различных интервалов времени и прямоугольных импульсов заданной частоты. Кроме того, они могут работать в режиме счетчика и подсчитывать тактовые импульсы заданной частоты, измеряя, таким образом, длительность внешних сигналов, а так же при необходимости подсчитывать количество любых внешних импульсов. По этой причине данные таймеры называют: «таймеры/счетчики». В микросхемах AVR применяются как восьмиразрядные, так и шестнадцатиразрядные таймеры/счетчики. Их количество для разных микроконтроллеров изменяется от одного до четырех.

Все таймеры обозначаются числами от 0 до 3. Например, Timer/Counter0, Timer/Counter1 и т.д. В русскоязычной литературе их чаще именуют сокращенно T0, T1, T2, T3. Таймеры T0 и T2 в большинстве микроконтроллеров восьмиразрядные. Таймеры T1 и T3 - шестнадцатиразрядные. Таймер T0 имеется в любой микросхеме AVR. Остальные добавляются по мере усложнения модели.

Каждый восьмиразрядный таймер представляет собой один восьмиразрядный регистр, который для микроконтроллера является регистром ввода/вывода. Этот регистр хранит текущее значение таймера и называется счетным регистром. Шестнадцатиразрядные таймеры имеют шестнадцатиразрядный счетный регистр. Каждый счетный регистр имеет свое имя. Счетный регистр восьмиразрядного таймера именуется TCNTx. Где x - это номер таймера. Для таймера T0 регистр называется TCNT0. Для таймера T2 - TCNT2. Шестнадцатиразрядные регистры именуются похожим образом. Отличие в том, что каждый шестнадцатиразрядный счетный регистр для микроконтроллера представляет собой два регистра ввода/вывода. Один для хранения старших битов числа, а второй для хранения младших битов. К имени регистра старших разрядов добавляется буква H, а для регистра младших разрядов добавляется буква L. Таким образом, счетный регистр таймера T1 - это два регистра ввода/вывода: TCNT1H и TCNT1 L. Счетный регистр таймера T3 - это два регистра TCNT3 H и TCNT3 L.

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

16. Прерывания в микропроцессорных системах

В компьютерной системе прерывание — это запуск специальной подпрограммы (называемой «обработчиком прерывания» или «программой обслуживания прерывания»), который вызывается сигналом аппаратуры. На время выполнения этой подпрограммы реализация текущей программы останавливается. Термин «запрос на прерывание» (interrupt request) используется потому, что иногда программа отказывается подтвердить прерывание и выполнить обработчик прерывания немедленно.

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

Первый возможный ответ — «не реагировать на прерывание, пока не завершится выполнение текущей задачи» — реализуется путем запрещения (маскирования) обслуживания запроса прерывания. После завершения задачи возможен один из двух вариантов сброс маски и разрешение обслуживания, что приведет к вызову обработчика прерывания, или анализ значения битов («поллинг»), указывающих на поступление запросов прерывания и непос­редственное выполнение программы обслуживания без вызова обработчика прерывания Такой метод обработки прерываний используется, когда требу­ется обеспечить заданное время выполнения основной программы, так как любое прерывание может нарушить реализацию необходимого интерфейса.

Не рекомендуется длительное маскирование прерываний, так как в течение этого времени может произойти наложение нескольких событий, вызываю­щих прерывания, а распознаваться будет только одно Допустимая продолжи­тельность маскирования зависит от конкретного применения микроконтрол­лера, типа и частоты следования таких событий. Не рекомендуется запрещать прерывания на время большее, чем половина минимального ожидаемого периода следования событий, запрашивающих прерывания.

Обработчик прерывания всегда обеспечивает следующую последователь­ность действий

1. Сохранить содержимое регистров контекста

2. Сбросить контроллер прерываний и оборудование, вызвавшее запрос

3. Обработать данные

4. Восстановить содержимое регистров контекста

5. Вернуться к прерванной программе

Регистры контекста — это регистры, определяющие текущее состояние выполнения основной программы Обычно к их числу относятся программ­ный счетчик, регистры состояния и аккумуляторы Другие регистры процессора, такие как индексные регистры, могут быть использованы в процессе обработки прерывания поэтому их содержимое также необходимо сохра­нить Все остальные регистры являются специфическими для конкретного микроконтроллера и его применения

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

Вложенные прерывания сложны для реализации некоторыми типами мик­роконтроллеров, которые не имеют стека. Эти прерывания могут также выз­вать проблемы, связанные с переполнением стека Проблема переполнения актуальна для микроконтроллеров из-за ограниченного объема их памяти данных и стека последовательность вложенных прерываний может привести к тому, что в стек будет помещено больше данных, чем это допустимо

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

Восстановление регистров контекста и выполнение команды возврата из прерывания переводит процессор в состояние, в котором он находился до возникновения прерывания

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

Если содержимое регистра состояния сохраняется перед началом выпол­нения обработчика прерывания, то по команде возврата производится его автоматическое восстановление.

Если содержимое других регистров процессора изменяется при выполне­нии обслуживания прерывания, то оно также должно быть сохранено в памяти до изменения и восстановлено перед возвратом в основную программу. Обычно принято сохранять все регистры процессора, чтобы избежать не­предсказуемых ошибок, которые очень трудно локализовать.

Адрес, которым загружается в программный счетчик при переходе к обра­ботчику прерывания, называется «вектор прерывания». Существует несколь­ко типов векторов Адрес, который загружается в программный счетчик при запуске микроконтроллера (leset) называется «вектор сброса». Для различных прерывании могут быть заданы разные вектора, что избавляет программу обслуживания от необходимости определять причину прерывания. Использо­вание различными прерываниями одного вектора обычно не вызывает про­блем при работе микроконтроллеров, так как чаще всею микроконтроллер исполняет одну единственную программу. Этим микроконтроллер отличается от персонального компьютера, в процессе эксплуатации которого могут до­бавляться различные источники прерывании (Если Вы когда-либо подклю­чали два устройства к портам СОМ1 и COM3, то Вы представляете, о чем идет речь) В микроконтроллере, где аппаратная часть хорошо известна, не должно возникнуть каких либо проблем при совместном использовании век­торов прерывании

Существуют процессорные команды, которые могут быть использованы для имитации аппаратных прерывании. Наиболее очевидное использование этих команд — это вызов системных подпрограмм, которые располагаются в про­извольном месте памяти, him требуют для обращения к ним межсегментных переходов. Эта возможность реализована в микропроцессорах семейства Intel 186 и используется в базовой системе ввода-вывода BIOS (Basic Input/Output System) и операционной системе DOS персональных компьютеров для вызо­ва системных подпрограмм без необходимости фиксирования точки входа Вместо этого используются различные вектора прерывании, выбирающие команду, которая должна выполняться, когда происходит такое программ­ное прерывание

17. Классификация постоянных запоминающих устройств (ПЗУ)

ПЗУ используются для хранения постоянно выполняемых программ ЭВМ, а также для реализации произвольных булевых функций.

Классификация ПЗУ.

1. Масочные ПЗУ. Это ПЗУ, информация в которые записывается на заводе изготовителе. У таких микросхем на корпусе наносят обозначение о версии программного кода, который туда записан (в виде ревизии). На принципиальных схемах такие микросхемы обозначают как ROM (Read Only Memory), в названии имеет индекс РЕ.

2. ППЗУ - программируемые ПЗУ. Это ПЗУ с возможностью однократной записи информации пользователя. На принципиальных схемах обозначаются как PROM (Program ROM), в названии имеют индекс РТ.

3. РПЗУ - репрограммируемые ПЗУ. Эти ПЗУ допускают многократное программирование от 25 до 10,000 раз. Это микросхемы с электрическим стиранием. Использовать РПЗУ в качестве ОЗУ нельзя, поскольку скорость записи в РПЗУ, по сравнению с ОЗУ, очень низкая. На принципиальных схемах такие микросхемы обозначают как EEPROM (Electric Erase PROM), в названии имеют индекс РР. В последнее время в отдельный класс выделились микросхемы серии Flash PROM. Эта технология также подразумевает электрическое стирание информации из ПЗУ. Достоинства этих микросхем перед EEPROM - более высокая скорость записи данных. Однако память этого типа имеет меньший ресурс, количество циклов записи - до 1,000 циклов. Несмотря на этот недостаток, во всех современных компьютерных системах используется именно Flash PROM в качестве БИОС различных устройств.

4. РПЗУУФ - репрограммируемые ПЗУ с ультрафиолетовым стиранием. Микросхемы этого типа также предоставляют возможность многократной перезаписи, однако, в отличие от микросхем типа EEPROM, стирание информации из РПЗУУФ происходит под воздействием ультрафиолетового излучения. В настоящее время подобные микросхемы постепенно уступают свои позиции Flash PROM.

Упрощённая принципиальная схема ППЗУ.

Для примера рассмотрим принципиальную схему ПЗУ (см. рис.), имеющей 256 ячеек по 8 бит каждая. ПЗУ с таким объёмом ранимой информации называют 256*8.

ПЗУ имеет: входные сигналы А0 - А7 которые называются входами адреса и определяют адрес ячейки памяти с которой выполняются действия чтения и программирования, а также выходные сигналы D0 - D7 на которых появляется читаемая из ячейки информация. Основными составными частями ПЗУ можно считать дешифратор (DC) и матрицу транзисторных элементов. Каждой ячейке памяти соответствует свой выход дешифратора, который активизируется при поступлении на его вход соответствующего адреса. Активный уровень выхода дешифратора - единица. При появлении на соответствующем выходе дешифратора единицы все транзисторы, подключенные к этой линии базами, пытаются открыться. Удаётся это сделать только тем, у кого есть плавкие перемычки. И на соответствующей линии выхода появляется единица. На остальных выходах остаются нули. Таким образом, говорят, что операция программирования однократно программируемой ПЗУ - это операция прожигания. Пример подобной микросхемы - К155РЕ3 - 32*8. Обозначение указанной микросхемы на принципиальных схемах имеет следующий вид:

Приведённая микросхема имеет выходы с открытым коллектором. Кроме указанных выше, микросхема имеет входы чтения RD и сигнал выбора кристалла CS. Сигнал выбора микросхемы по существу является стробирующим входом дешифратора, расположенного внутри микросхемы ПЗУ.

Чтобы прочесть информацию из микросхемы с какой-либо ячейки ПЗУ, в начале подаются сигналы адреса и сигнал выбора микросхемы, который приравнивается к сигналу адреса (по иерархии значимости сигналов, необходимых для нормальной работы микросхемы ПЗУ). Сигнал выбора микросхемы выбирает целиком всю микросхему (т.е. подключает её), а сигнал адреса выбирает конкретную ячейку. Чтобы внутри микросхемы выполнилась дешифрация адреса, требуется некоторое время τ1 = 50 - 200 нс - время выборки. По истечению этого времени, на микросхему подают сигнал чтения RD, по которому на выходе начинают формироваться читаемые данные. Нормальные данные (т.е. полностью сформированные) появляются на выходе только через τ2 = 20 - 50 нс.

Таким образом, диаграмма сигналов выглядит следующим образом:

Использование ПЗУ для реализации произвольной булевой функции.

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

А10 А9 А1 А0 D7 D0
             
             
           
             

Булева функция задаётся таблицей, в которой перечислены все возможные комбинации входных переменных, количество таких комбинаций для n - переменных 2n. Карта прошивки ПЗУ в своей упорядоченной форме представляет собой упорядоченный набор аргументов, а выходы - её значения.

Расширение ПЗУ по выходам.

Расширение ПЗУ по выходам реализуется путём объединения нескольких микросхем, при котором адресные входы микросхем соединяются в параллель. При таком включении, каждая микросхема содержит часть карты прошивки ПЗУ, которая соответствует номерам выходов соответствующей микросхемы. Подобное включение может потребоваться, например, для расширения разрядности шины данных блока памяти, либо для реализации дискретного автомата с большим количеством выходов. Включение микросхем в этом случае будет следующее:

Расширение ПЗУ по входам (по адресу).

Очень часто, для организации блоков памяти используют не одну микросхему ПЗУ, а несколько. Такой подход обусловлен как требованиями к разрядности получаемой шины данных, так и требованиями к информационному объёму блока памяти. Другими словами, часто приходиться объединять несколько микросхем памяти определённой информационной ёмкости, для получения блока памяти с заданными параметрами. Кроме этого, необходимо отметить и тот факт, что номенклатурный ряд выпускаемых микросхем далеко не покрывает все возможные требования к информационному объёму, скорости работы и прочее.

Принимая во внимание вышесказанное, необходимо рассмотреть вопрос об объединении нескольких микросхем, с целью повышения информационной ёмкости формируемого блока. Расширение микросхем памяти по входам требует дополнительной логики, которая будет переключать микросхемы в зависимости от адреса, поступающего на блок памяти. Наличие указанной логики обусловлено тем, что микросхемы памяти, при объединении, имеют меньшее количество адресных входов, чем получаемый блок. Естественно, что остальные разряды подаваемого на блок памяти адреса необходимо также обрабатывать. Этим занимается дешифратор, который, в зависимости от старших разрядов адреса, выбирает соответствующую этому адресу микросхему памяти. Схема включения микросхем в этом случае будет иметь вид:

В приведённой схеме все выводы микросхем памяти включены параллельно (за исключением сигналов выбора кристалла). В каждый момент времени работает только одна микросхема памяти, а все остальные находятся в третьем состоянии.

18. Стек, память программ, EEPROM память микроконтроллеров AVR фирмы Atmel

Эта фирма производит два семейства МК: семейство АТ89, совместимое с фактическим промышленным контроллером MCS-51, и семейство высокопроизводительных RISC-микроконтроллеров AT90 собственной архитектуры.

Характерной особенностью микроконтроллеров фирмы Atmel является Flash память программ, что обеспечивает быстроту программирования и уменьшение цикла разработки приложений.

В 1997 г. фирма представила контроллеры семейства AVR AT90S, который содержал:

· мощный RISC-процессор с гарвардской архитектурой, обеспечивающей раздельный доступ к памяти программ и данных;

· АЛУ с аппаратным умножителем, 32 регистра общего назначения, порты, таймеры-счетчики, последовательные интерфейсы, АЦП, аналоговые компараторы;

· базовый набор из 120 команд, большинство которых выполняется за один машинный цикл. Производительность ряда моделей составляет 20 MIPS.

Микроконтроллеры AVR подразделяются на три серии:

· tiny AVR — МК в 8-выводном корпусе низкой стоимости;

· classic AVR — основная серия контроллеров с производительностью до 16 MIPS, имеющих Flash память программ объемом до 8 Кбайт и статическое ОЗУ данных 128...512 байт;

mega AVR — МК с производительностью до 6 MIPS для сложных приложений, требующих большого объема памяти (Flash ПЗУ до 128 Кбайт), ОЗУ до 4 Кбайт.

Стек — это особая область памяти данных, используемая процессором для временного хранения адресов возврата из подпрограмм, промежуточных резуль­татов вычислений и др. В микроконтроллерах PIC и некоторых микроконтролле­рах AVR стек реализован аппаратно — для этого выделено отдельное запоми­нающее устройство фиксированного объема в несколько (или несколько десятков) байт. Для микроконтроллеров AVR компиляторы языка С (например, при обра­щении к подпрограммам) могут также создавать один или более стеков программ­но, начиная с верхних адресов области SRAM.

Стек действует по принципу LIFO — "Last In, First Out", что означает "по­следним вошел, первым вышел". Это означает, что новые данные вначале поме­щаются на вершину (первый уровень) стека, а затем, с поступлением следующих данных, "проталкиваются" на его нижние уровни. Извлечение из стека происхо­дит в обратном порядке: вначале считываются данные, помещенные последними на вершину, после чего данные, размещенные на нижних уровнях, как бы "вытал­киваются" на один уровень вверх. Ячейка памяти, которая является в данный мо­мент вершиной стека, адресуется указателем стека (для AVR — регистровой па­рой SPL, SPH).

Поскольку область памяти данных, отводимая для программного стека, огра­ничивается только объемом памяти SRAM, при написании программ следует сле­дить за тем, чтобы стек не становился слишком большим, затирая полезные дан­ные.





Дата публикования: 2015-01-24; Прочитано: 648 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...