Для чего необходимы шины таймера

Основные шины компьютера

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

Что такое шина компьютера

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

Виды системных шин

Все шины компьютера можно разделить за их предназначением на несколько типов. Вот они:

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

Вот наиболее распространенные типы шин в компьютере для расширений:

А теперь давайте более подробно разберем все эти шины персональных компьютеров.

Шина ISA

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Раньше это был наиболее распространенный тип шины расширения. Он был разработан компанией IBM для использования в компьютере IBM PC-XT. Эта шина имела разрядность 8 бит. Это значит что можно было передавать 8 бит или один байт за один раз. Шина работала с тактовой частотой 4,77 МГц.

Для процессора 80286 на базе IBM PC-AT была сделана модификация конструкции шины, и теперь она могла передавать 16 бит данных за раз. Иногда 16 битную версию шины ISA называют AT.

Шина MCA

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Компания IBM разработала эту шину в качестве замены для ISA, для компьютера PS/2, который вышел в 1987 году. Шина получила еще больше усовершенствований по сравнению с ISA. Например, была увеличена частота до 10 МГц, а это привело к увеличению скорости, а также шина могла передавать 16 или 32 бит данных за раз.

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

Одним из преимуществ этой шины было то, что подключаемые устройства имели свое программное обеспечение, а это значит что требовалось минимальное вмешательство пользователя для настройки. Шина MCA уже не поддерживала карты ISA и IBM решила брать деньги от других производителей за использование этой технологии, это сделало ее непопулярной с сейчас она нигде не используется.

Шина EISA

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Эта шина была разработана группой производителей в качестве альтернативы для MCA. Шина была приспособлена для передачи данных по 32 битному каналу с возможностью доступа к 4 Гб памяти. Подобно MCA для каждой карты использовался микропроцессор, и была возможность установить драйвера с помощью диска. Но шина все еще работала на частоте 8 МГц для поддержки карт ISA.

Слоты EISA в два раза глубже чем ISA, если вставляется карта ISA, то она использует только верхний ряд разъемов, а EISA использует все разъемы. Карты EISA были дорогими и использовались обычно на серверах.

Шина VESA

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Шина VESA была разработана для стандартизации способов передачи видеосигнала и решить проблему попыток каждого производителя придумать свою шину.

Шина VESA имеет 32 битный канал передачи данных и может работать на частоте 25 и 33 МГц. Она работала на той же тактовой частоте, что и центральный процессор. Но это стало проблемой, частота процессора увеличивается и должна была расти скорость видеокарт, а чем быстрее периферийные устройства, тем они дороже. Из-за этой проблемы шина VESA со временем была заменена на PCI.

Слоты VESA имели дополнительные наборы разъемов, а поэтому сами карты были крупными. Тем не менее сохранялась совместимость с ISA.

Шина PCI

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

В PCI можно использовать технологию Plug and Play (PnP). Все карты PCI поддерживают PnP. Это значит, что пользователь может подключить новую карту, включить компьютер и она будет автоматически распознана и настроена.

Также тут поддерживается управление шиной, есть некоторые возможности обработки данных, поэтому процессор тратит меньше времени на их обработку. Большинство PCI карт работают на напряжении 5 Вольт, но есть карты, которым нужно 3 Вольта.

Шина AGP

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Необходимость передачи видео высокого качества с большой скоростью привела к разработке AGP. Accelerated Graphics Port (AGP) подключается к процессору и работает со скоростью шины процессора. Это значит, что видеосигналы будут намного быстрее передаваться на видеокарту для обработки.

PCI-Express

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Это модифицированная версия стандарта PCI, которая вышла в 2002 году. Особенность этой шины в том что вместо параллельного подключения всех устройств к шине используется подключение точка-точка, между двумя устройствами. Таких подключений может быть до 16.

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

PC Card

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Шина Personal Computer Memory Card Industry Association (PCICIA) была создана для стандартизации шин передачи данных в портативных компьютерах.

Шина SCSI

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Шина SCSI была разработана М. Шугартом и стандартизирована в 1986 году. Эта шина используется для подключения различных устройств для хранения данных, таких как жесткие диски, DVD приводы и так далее, а также принтеры и сканеры. Целью этого стандарта было обеспечить единый интерфейс для управления всеми запоминающими устройствами на максимальной скорости.

Шина USB

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Это стандарт внешней шины, который поддерживает скорость передачи данных до 12 Мбит/сек. Один порт USB (Universal Serial Bus) позволяет подключить до 127 периферийных устройств, таких как мыши, модемы, клавиатуры, и другие устройства USB. Также поддерживается горячее удаление и вставка оборудования. На данный момент существуют такие внешние шины компьютера USB, это USB 1.0, USB 2.0, USB 3.0, USB 3.1 и USB Type-C.

USB 1.0 был выпущен в 1996 году и поддерживал скорость передачи данных до 1,5 Мбит/сек. Стандарт USB 1.1 уже поддерживал скорость 12 Мбит/сек для таких устройств, как жесткие диски.

USB 3.0 появился в 2008 году и поднял стандарт скорости еще выше, теперь данные могут передаваться со скоростью 5 Гбит/сек. Также было увеличено количество устройств, которые можно питать от одного порта. USB 3.1 был выпущен в 2013 и тут уже поддерживалась скорость до 10 Гбит/с. Также для этой версии был разработан компактный разъем Type-C, к которому коннектор может подключаться любой стороной.

Выводы

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

На завершение небольшое видео про шины и интерфейсы компьютера:

Источник

Виртуальное время. Часть 1: источники времени в компьютере

Человек, имеющий одни часы, твердо знает, который час. Человек, имеющий несколько часов, ни в чём не уверен.
Закон Сегала

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймера

Требования на источники времени

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

Обзор таймеров в архитектуре PC

Источников времени в системе может быть несколько. Прикладные программы редко обращаются к каким-либо из них напрямую. Вместо этого используются всевозможные API, предлагаемые использованным языком программирования (например, C++11 &lt chrono &gt), средой исполнения (например, gettimeofday из POSIX или QueryPerformanceCounter на MS Windows), или даже системными вызовами используемой операционной системы.

Самой ОС также необходимо знать время и уметь отмерять его отрезки для планирования работы пользовательских потоков, учёта потреблённых ими ресурсов, профилировки производительности, управления энергопотреблением и т.п. При этом сама ОС работает напрямую с интерфейсами, предоставляемыми аппаратурой. Так как таймеров присутствует много, современные ОС умеют выбирать один «центрально» используемый в начале загрузки, исходя из своих представлений о «качестве» обнаруженных устройств (например, на некоторых системах часть таймеров может быть занесена в «чёрный список» из-за известных проблем в работе) или же настроек пользователя (параметр clocksource у ядра Linux и опции useplatformclock, tscsyncpolicy, disabledynamictick у BCDEDIT в Windows).
Опишу наиболее часто встречаемые устройства, являющиеся часами и таймерами в PC.

Общераспространённые

Часы реального времени (Real Time Clock, RTC) — источник текущей даты и времени для нужд ОС. Типичное разрешение этого таймера — одна секунда. Все системы, удовлетворяющие стандарту ACPI, имеют чип RTC, совместимый с Motorola MC146818, присутствовавшем в оригинальном IBM PC/AT с 1984 года. В современных системах RTC обычно интегрирован в набор системной логики южного моста на материнской плате (что означает довольно большую задержку при чтении). Энергонезависимость этого таймера обеспечивается специальной батарейкой. Принципы программирования RTC вызывают ностальгию по BCD-числам и проблеме Y2K.

Programmable Interval Timer (PIT) 8253 или 8254 от Intel — стандартный счётчик и таймер, имеющийся в PC с самого начала существования этой платформы (1981 год). Как и RTC, изначально был отдельной микросхемой, а ныне является частью системной логики. Довольно интересное устройство, содержащее три таймера (хотя последние два всегда были зарезервированы под задачи обновления ОЗУ и работу PC-спикера соответственно) и позволяющее запрограммировать их в различные режимы: периодические прерывания, однократное (one-shot) прерывание по таймауту, меандр и т.д.

Первый канал PIT до сих пор может использоваться ОС как источник прерываний для работы вытесняющего планировщика задач. Однако по современным меркам он не очень удобен в работе: низкая частота осциллятора 1193181,8 Гц (странное значение — это историческое наследие от частоты развёртки NTSC), ширина счётчика всего 16 бит (частое переполнение) при ширине регистров статуса и команд всего в восемь бит (т.е. приходится передавать или читать значение по частям), да и доступ к регистрам через медленный и негибкий механизм PIO (команды IN/OUT процессора).

Local APIC (advanced programmable interrupt controller), встроенный во все современные процессоры Intel (начиная с архитектуры P54C) и который в своём составе имеет ещё и таймер. Более того, каждый логический процессор имеет свой собственный LAPIC, что может быть удобно для выполнения работы, локальной для текущего ядра, без необходимости управления ресурсами. Однако, данное устройство не имеет фиксированной известной частоты; последняя скорее привязана к частоте ядра. Поэтому перед использованием программе необходимо её вычислить (калибровать), а для этого нужно дополнительное референсное устройство. Режимы, поддерживаемые LAPIC: однократное прерывание, периодические прерывание, и период, определяемый TSC.

Таймер в составе ACPI, почему-то называемый Performance Monitoring Timer (PMTIMER) — ещё одно устройство, которое поддерживается всеми системами, реализующими стандарт ACPI, с 1996 года. Данный таймер имеет частоту 3.579545 МГц, ширина регистра-счётчика может быть 24 или 32 бита. Сам таймер всегда активен при включенном питании системы и не зависит от режима работы центрального процессора.

High Precision Event Timer (HPET) — устройство, созданное как замена устаревшему PIT. Согласно стандарту, HPET должен содержать осциллятор, работающий с фиксированной частотой по крайней мере в 10 МГц, величину которой можно программно прочитать из его статусного регистра, и монотонно увеличивающий значение счётчик шириной в 64 бита. Также он должен содержать минимум три компаратора шириной в 32 или 64 бита, которые и используются для генерации прерываний по истечении запрограммированных периодов времени. Как и PIT, он способен работать в периодическом режиме или в режиме однократного прерывания. При этом метод его программирования (MMIO вместо PIO) удобнее и быстрее, чем у PIT, что вместе с повышенным разрешением, позволяет задавать интервалы более точно и с меньшей задержкой. Требуемая стабильность генератора равна 0,05% для интервалов длиннее 1 мс и 0,2% для промежутков короче 100 мкс; много это или мало — зависит от приложений.

Несмотря на то, что HPET уже давно присутствует в PC (с 2005 года), операционные системы не торопятся начать его использовать. Частично это вызвано не самым удобным способом задания интервалов с помощью возрастающего счётчика вместо убывающего — из-за немгновенности операций существует риск «не успеть» и задать событие в прошлом. Зачастую ОС используют таймер из APIC или PMTIMER, или же функциональность TSC, использующую такты процессора в качестве источника времени.

Трудная судьба инструкции RDTSC

История TSC достаточно интересна и поучительна, чтобы остановиться на ней подольше.
Сама идея очень прозрачная — использовать в качестве источника времени сам процессор, а точнее его тактовый генератор. Текущий номер такта сохраняется в регистре TSC (timestamp counter).
С помощью TSC можно как узнавать время от начала работы, так и замерять интервалы времени с помощью двух чтений. TSC также работает как будильник в связке с APIC в режиме TSC deadline.

Что ж, TSC — вполне естественная штука с простой логикой и простым сценарием использования, которая должна обладать многими полезными свойствами: высокое разрешение (один такт ЦПУ), низкая задержка при чтении (десятки тактов), редкие переполнения (64-битного счётчика должно хватать минимум на 10 лет), монотонность чтений (ведь счётчик всегда увеличивает своё значение), равномерность (процессор всегда работает), согласованность с другими таймерами (при старте системы можно выставить нужное значение записью в MSR).
Разве что-то могло пойти не так? На пути к успешному использованию TSC в качестве основного средства измерения времени в PC встала последующая эволюция процессоров. Новые возможности, появившиеся в процессорах после Pentium, «испортили» RDTSC и много лет мешали использовать её как основной таймер в популярных ОС. Так, в 2006 году один из Linux-разработчиков Ingo Molnar писал:

Мы наблюдали, что в течение 10 лет ни одной реализации gettimeofday, основанной на TSC и работающей в общем случае, не было написано (а я написал первую версию для Pentium, так что и я в этом повинен), и что лучше мы обойдёмся без неё.

We just observed that in the past 10 years no generally working TSC-based gettimeofday was written (and i wrote the first version of it for the Pentium, so the blame is on me too), and that we might be better off without it.

Отмечу, что со временем в архитектуру IA-32 вносились коррективы, устранявшие проявившиеся недостатки, и в настоящий момент TSC может (пока опять не сломали) быть использован в том качестве, в котором он задумывался.

Прочие устройства

Выше я описал наиболее часто распространённые и используемые устройства по определению времени. Конечно же, конкретные системы могут иметь дополнительные устройства, уникальные для процессора, интегрированной логики или даже в форме специализированных периферийных устройств (например, сверхточные атомные часы). Степень их доступности из программ зависит от того, существует ли драйвер для конкретного устройства в выбранной ОС. Так, пробежавшись по исходникам Linux, я нашёл как минимум ещё два поддерживаемых источника времени для сборок x86: устройство NatSemi SCx200 в системах AMD Geode, и Cyclone для систем IBM x440. К сожалению, в Интернете не очень много документации по ним.

Заключение

Я надеюсь, что из этой заметки стало понятно, что работа со временем внутри компьютера на системном уровне на самом деле далека от тривиальной. Требования к устройствам, поставляющим время, зависят от решаемой задачи, и не всегда легко найти полностью подходящий вариант. При этом сами устройства зачастую содержат «архитектурные особенности», способные сломать голову несчастному программисту.
Однако это всё архитектурная присказка к симуляционной сказке. На самом деле мне хотелось рассказать о том, как можно моделировать весь этот зоопарк устройств. В следующей статье я опишу, как проявляется капризная природа времени при создании виртуальных окружений — симуляторов и мониторов виртуальных машин. Спасибо за внимание!

Источник

Изучение таймеров микроконтроллера

Методическое указание к лабораторной работе на учебном стенде LESO1.

1 Цель работы

2 Предварительная подготовка к работе

3 Краткие теоретические сведения

3.1 Общие сведения о таймерах

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

Как правило, в микропроцессорной системе в качестве генератора частоты выступает генератор внутренней синхронизации микроконтроллера. Частота генератора задает минимальный временной промежуток, который может определять таймер. Интервалы времени, задаваемые с помощью таймера, могут иметь строго определенные дискретные значения. Разрядность цифрового счётчика таймера определяет максимальный интервал времени, который может задать таймер.

Обычно в микропроцессорных системах используются 16-тиразрядные таймеры, для подключения такого таймера к 8-миразрядному процессору требуется два параллельных порта. Кроме того, необходим выделенный порт для управления таймером: таймер нужно включать и выключать, определять, не возникало ли переполнение таймера. Факт переполнения запоминается в дополнительном триггере, подключенном к выходу переноса счетчика таймера. Этот триггер называется флагом переполнения таймера. Бит включения и выключения таймера и флаг переполнения таймера подключают к системной шине микропроцессора через отдельный порт ввода-вывода. Структурная схема таймера в самом общем виде показана на рисунке 1. Каждый из портов ввода-вывода отображается во внутреннем адресном пространстве микропроцессора, и имеет свой отдельный адрес.

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймераРисунок 1 – Структурная схема таймера

Если же требуется установить меньший интервал времени, то перед запуском таймера в его регистры можно записать начальный код, и тогда счет начнется не с нуля, а с записанного кода, и счетчику потребуется меньше времени для переполнения. В этом случае время работы таймера TT определяется по формуле:

где: Code – код, записанный в таймер до его запуска, TT – Время работы таймера, TG – период колебаний задающего генератора, n – разрядность таймера.

Если же требуется сформировать интервал времени больший, чем максимальное время переполнения, то таймер можно запустить несколько раз в цикле. В этом случае временной интервал определяется как:

где N – количество итераций цикла, TT – время срабатывания таймера.

3.2 Таймеры-счетчики микроконтроллера ADuC842

Микроконтроллер ADuC842 имеет три 16-разрядных таймера-счетчика: Таймер 0, Таймер 1 и Таймер 2. Структура и режимы работы таймеров-счетчиков соответствуют общим принципам архитектуры MCS-51. Каждый таймер-счетчик содержит по два 8-битных регистра THx и TLx (x = 0, 1, и 2).

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

В режиме таймера регистр TLx увеличивает свое значение на единицу каждый машинный цикл. Поскольку машинный цикл однотактового ядра состоит из одного тактового периода, то максимальная скорость счета равна тактовой частоте ядра.

В режиме счетчика, регистр TLx увеличивает свое значение на единицу при переходе уровня из высокого в низкий на соответствующем внешнем выводе микроконтроллера: T0, T1 или T2. Когда на внешнем выводе один машинный цикл держится высокий логический уровень, а уже в следующем цикле – низкий, тогда регистр таймера увеличивает свое значение на единицу. Таким образом, для распознавания перехода из “1” в “0” требуется два такта внутреннего генератора микроконтроллера, это значит, что максимальная скорость счета может составить половину частоты внутреннего тактового генератора.

Таймеры 0 и 1 обслуживаются регистром режима TMOD и регистром управления TCON.

TMOD – регистр конфигурации Таймера 1 и Таймера 0.
SFR адрес 0x89.
Значение после подачи питания 0x00.
Регистр не имеет битовой адресации.

Таблица 1 – Описание бит регистра TMOD

номермнемоникаописание
7GATEБит управления таймером 1.
При GATE = 1 для работы необходимо условие TR1 = 1 и INT1# = 1.
При GATE = 0 Таймер 1 работает всегда, когда TR1 = 1.
6C/T#Бит выбора типа событий для Таймера 1.
При C/T# = 1 он работает как счетчик (вход с внешнего вывода T1P3.5), при С/T# = 0 — как таймер (вход с внутреннего генератора).
5M1M1, M0 биты определяют режим работы таймера 1

M1M0
00TH1 работает как 8-битный таймер-счетчик, TL1 выступает в качестве делителя частоты на 32
0116-битный таймер-счетчик, TH1 и TL1 включены последовательно.
108-битный таймер-счетчик с автоперезагрузкой, TH1 удерживает значение, которое загружается в TL1 всякий раз при переполнении TL1.
11Таймер-счетчик 1 остановлен.
4M0
3GATEБит управления таймером 0.
При GATE = 1 для работы необходимо условие TR0 = 1 и INT0# = 1.
При GATE = 0 Таймер 0 работает всегда, когда TR0 = 1.
2C/T#Бит выбора типа событий для Таймера 0.
При C/T# = 1 он работает как счетчик (вход с внешнего вывода T0P3.4), при С/T# = 0 — как таймер (вход с внутреннего генератора).
1M1M1, M0 биты определяют режим работы таймера 0

M1M0
00TH0 работает как 8-битный таймер-счетчик, TL0 выступает в качестве делителя частоты на 32
0116-битный таймер-счетчик, TH0 и TL0 включены последовательно.
108-битный таймер-счетчик с автоперезагрузкой, TH1 удерживает значение, которое загружается в TL0 всякий раз при переполнении TL0.
11TL0 используется в качестве 8-битного таймера-счетчика со стандартными битами управления Таймера 0. TH0 используется только в качестве 8-битного счетчика, управление происходит стандартными битами управления таймера 1.
0M0

TCON – регистр управления Таймера 1 и Таймера 0.
SFR адрес 0x88.
Значение после подачи питания 0x00.
Регистр имеет битовую адресацию.

Таблица 2 – Описание бит регистра TCON

номермнемоникаописание
7TF1Флаг переполнения Таймера 1. Устанавливается аппаратно при переполнении счетного регистра таймера. Очищается аппаратно при передаче управления на процедуру обработки прерывания.
6TR1Бит запуска Таймера 1. При TR1 = 1 счет разрешен.
5TF0Флаг переполнения Таймера 0. Устанавливается аппаратно при переполнении счетного регистра таймера. Очищается аппаратно при передаче управления на процедуру обработки прерывания.
4TR0Бит запуска Таймера 0. При TR0 = 1 счет разрешен.
3IE1Флаг внешнего прерывания 1 (INT1#) Устанавливается аппаратно при падающем фронте или при нулевом уровне на внешней ножке INT1#, зависит от состояния бита IT1. Очищается аппаратно при передаче управления на процедуру обработки прерывания.
2IT1Бит выбора типа активного сигнала на входе INT1#. При IТ1 = 1 активным является переход из высокого в низкий, при IТ1 = 0 активным является низкий уровень сигнала.
1IE0Флаг внешнего прерывания 1 (INT0#) Устанавливается аппаратно при падающем фронте или при нулевом уровне на внешней ножке INT0#, зависит от состояния бита IT0. Очищается аппаратно при передаче управления на процедуру обработки прерывания.
0IT0Бит выбора типа активного сигнала на входе INT1#. При IТ0 = 1 активным является переход из высокого в низкий, при IТ0 = 0 активным является низкий уровень сигнала.

Каждый таймер содержит два 8-битных регистра, которые могут быть использованы как независимые регистры или скомбинированы в одиночные 16-битные регистры в зависимости от режима работы таймера.
TH0 и TL0 – старший и младший байт Таймера 0.
SFR адрес – 0x8C и 0x8A, соответственно.
TH1 и TL1 – старший и младший байт Таймера 1.
SFR адрес – 0x8D и 0x8B, соответственно.

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймераРисунок 2 – Адреса регистров SFR таймеров

3.3 Режимы работы Таймера 1 и 0

Для выбора нулевого режима следует установить биты M1 = 0 и M0 = 0 регистра TMOD. В этом режиме таймер-счетчик сконфигурирован как 13 битный счетный регистр. Этот счётчик состоит из 8 бит регистра ТНх и младших 5 бит регистра TLx, где x в обозначении регистра заменяется на 0 или 1 в зависимости от того таймера, которым мы управляем. Старшие 3 бита регистров TLx не определены и игнорируются. Установка запускающего таймер флага TR0 или TR1 не очищает эти регистры. Работе таймера 0 или таймера 1 в режиме 0 соответствует схема:

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймераРисунок 3 – Структурная схема таймера в режиме 0 (для Таймера 0)

Переполнение таймера происходит, когда единицы в каждом разряде меняются нулями, при этом флаг переполнения TFx устанавливается в единицу. Флаг TFx может быть использован для прерывания. К входу счетчика подключен источник сигналов, когда TRx = 1 и выполняется одно из условий Gate = 0 или INTx = 1. В этом случае удобно управлять таймером через флаг TRx. В случае, когда Gate = 1 таймер может управляться с внешнего вывода микроконтроллера INTx, такая возможность позволяет измерять длительность импульсов. Измеряемый импульс должен подаваться на вход INTx. Тип источника тактовых импульсов определяется флагом C/T#, когда флаг установлен (С/Т# = 1), сигнал на счетчик подается с внешнего вывода микросхемы Tx, если флаг сброшен (С/Т# = 0) – с внутреннего тактового генератора. Флаг TRx контролируется через регистр специальной функции TCON, флаги Gate и С/Т# – через TMOD.

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

Для выбора первого режима следует установить биты M1 = 0 и M0 = 1 регистра TMOD. В первом режиме работы таймер работает как шестнадцатиразрядный счётчик. Режим 1 похож на режим 0, за исключением того, что в регистрах таймера используются все 16 бит. В этом режиме регистры ТНх и TLx также включены друг за другом. Работе таймера 0 или таймера 1 в режиме 1 соответствует схема:

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймераРисунок 4 – Структурная схема таймера в режиме 1 (для Таймера 0)

Нулевой и первый режимы работы Таймеров 0 и 1 предназначены для формирования одиночного интервала времени. Если возникает необходимость формировать последовательность интервалов времени для периодических процессов, то загрузка регистров THx и TLx для задания нужного интервала времени производится программно, что для коротких интервалов времени может привести к значительным затратам процессорного времени.

Для формирования последовательности одинаковых интервалов времени используется режим работы таймера с перезагрузкой – режим 2. Для выбора второго режима следует установить биты M1 = 1 и M0 = 0 регистра TMOD. В режиме 2 регистр таймера TLx работает как 8-битный счетчик с автоматической перезагрузкой начального значения из регистра ТНх в регистр TLx. Переполнение регистра TLx не только устанавливает флаг TFx, но и загружает регистр TLx содержимым регистра ТНх, который предварительно инициализируется программно. Перезагрузка не изменяет содержимое регистра ТНх. Работе таймера 0 или таймера 1 в режиме 2 соответствует схема:

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймераРисунок 5 – Структурная схема таймера в режиме 2 (для Таймера 0)

Для таймеров 0 и 1 третий режим различается. Таймер 1 в режиме 3 просто хранит свое значение – такой же эффект как при TR1 = 0. Таймер 0 в режиме 3 работает как два независимых счетчика, это показано на рисунке 6. Регистр TL0 использует биты управления таймера 0: С/Т#, GATE, TR0 и TF0. Регистр ТН0 работает только в режиме таймера, и использует биты TR1 и TF1 таймера 1.

Для чего необходимы шины таймера. Смотреть фото Для чего необходимы шины таймера. Смотреть картинку Для чего необходимы шины таймера. Картинка про Для чего необходимы шины таймера. Фото Для чего необходимы шины таймераРисунок 6 – Структурная схема таймера в режиме 3 (для Таймера 0)

Работа таймера TL0. разрешается, если бит TR0 = 1, а таймера TH0 – если бит TR1 = 1. Таймер 1 при работе таймера 0 в режиме 3 постоянно включен.

Этот режим работы позволяет реализовать два независимых таймера, если таймер 1 используется для работы последовательного порта. В микроконтроллере ADuC842 для синхронизации последовательного порта принято использовать специально для этого выделенный четвертый таймер (Таймер 3), поэтому этот режим мало чем интересен.

3.4 Особенность работы тактового генератора ADuC842

Встроенный генератор микроконтроллера ADuC842 предназначен для работы с кварцевым резонатором 32.768 кГц. Для формирования тактов синхронизации процессора используется умножитель частоты: система фазовой автоподстройки частоты (ФАПЧ) и управляемый делитель. С помощью системы ФАПЧ частота тактового генератора умножается на 512, что соответствует 16,777216 МГц. Делитель же настраивается на фиксированные коэффициенты деления (1, 2, 4, 8, 16, 32, 64, 128). При включении микроконтроллера по умолчанию установлен делитель 8, что соответствует частоте 16,777216/8 = 2,097152(МГц). Изменить этот делитель можно через регистр PLLCON.

3.5 Способы программной реализации работы таймера

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

Допустим, тактовый генератор сконфигурирован для генерации с частотой 1МГц, а нам требуется сформировать временные интервалы 3500 мкс. В этом случае на вход таймера будут поступать импульсы с периодом 1мкс. Для 16-битного счетчика максимальное время переполнения составит 65536 мкс. Для формирования меньшего интервала времени в счетчики таймера следует загрузить начальное значение Code. Из формулы 1 выразим Code:

Счетчик таймера состоит из двух отдельных 8-битных счетчиков THx и TLx, поэтому полученное значение Code следует расщепить на два отдельных байта. Сделать это можно разными способами. Можно с помощью калькулятора перевести число Code из десятеричной системы счисления в шестнадцатеричную: 6203610 = F2 5416. Тогда старший байт THx будет равен F216, а младший TLx равен 5416.

При расщеплении константы можно воспользоваться делением на 256, тогда:

Операция деления числа на 256 эквивалентна сдвигу этого числа на 8 разрядов вправо, тогда приведенный участок программы можно записать так:

Существует иной способ загрузки начального значения в таймер. Число, которое необходимо загружать в таймер, можно найти как отношение требуемого интервала времени, 3500мкс, и периода импульсов на входе таймера, 1мкс. Так как таймер суммирующий, то в регистры таймера будем загружать отрицательное число с абсолютным значением, равным требуемому отношению. Для выделения старшего байта из 16-разрядного числа используем функцию сдвига этого числа на 8 разрядов вправо, тогда соответствующий код программы будет выглядеть следующим образом:

После того как регистром TMOD установлен режим работы и загружены начальные значения счетчиков, можно запускать таймер. Для этого в бит запуска TRx следует записать логическую единицу. Теперь в тело основного цикла нужно включить участок программы, который будет ожидать окончания работы таймера и только после этого приступать к выполнению следующего прохода по циклу. Это можно сделать с помощью команды, которая будет проверять флаг переполнения таймера TFx. Затем необходимо снова задать следующий интервал времени. Следует помнить, что перед запуском таймера, следует обнулить флаг переполнения. Ниже приведен один из вариантов программы, реализующей задержку на 3,5 мс.

Для формирования временных интервалов большей длительности данный участок программы можно запустить в цикле необходимое количество раз.

4 Задание к работе в лаборатории

Таблица 3 – Варианты заданий

номер вариантаномер таймеравремя таймерапериод сигнала ТT
1таймер 05 мс2 с
2таймер 115 мс3 с
3таймер 010 мс4 с
4таймер 125 мс5 с
5таймер 030 мс6 с
6таймер 114 мс7 с
7таймер 020 мс8 с
8таймер 112,5 мс9 с
9таймер 040 мс10 с
10таймер 14 мс11 с
11таймер 030 мс12 с
12таймер 132,5 мс13 с
13таймер 017.5 мс14 с
14таймер 17,5 мс15 с
15таймер 010 мс16 с

5 Указания к составлению отчета

Отчет должен содержать:

Схемы, а также отчет в целом, выполняются согласно нормам ЕСКД.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *