Программируемый интервальный таймер


СОДЕРЖАНИЕ:

Центральная шина

В центральную шину входят шина адреса, шина данных и шина управления.

Шина адреса — 16-разрядная, направленная от микропроцессора, выполняет 2 функции: передачу адреса ячейки памяти при обращении к памяти, максимально возможный объём которой составляет 65536 байт и передачу адреса внешнего устройства при выполнении команд IN и OUT. В этом случае 8-разрядный УВВ появляется на выводах A0 — A7 и дублируется на выводах A8 — A15. Фактически для передачи адреса УВВ используется только 8разрядов, поэтому можно адресовать 256 различных внешних УВВ.

Шина данных — 8-разрядная шина, выполняет 2 функции: передачу управляющего слова и обмен данными между регистрами микропроцессора и блоками МПС.

Шина управления состоит из 4 линий. По этим линиям передаются сигналы: MEMW — запись в память, MEMR — чтение памяти, RESET — сброс или начальная установка, CLK — последовательность импульсов, снимаемая с выхода С1тактового генератора. Сигналы MEMW и MEMR указывают также на чтение или запись регистров периферийных БИС.

Программируемый интервальный таймер

Программируемый интервальный таймер (ПИТ) БИС КР580ВИ53 предназначен для организации работы МПС в режиме реального времени:

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

ПИТ содержит три 16-разрядных счетчика, каждый из которых может работать в одном из шести режимов:

Рисунок 1.9 — Интерфейс программируемого таймера.

Рисунок 1.10 — Формат управляющего слова таймера.

  • 0 — программируемая задержка;
  • 1 — программируемый одновибратор;
  • 2 — программируемый делитель частоты;
  • 3 — генератор меандра;
  • 4 — строб с программным запуском;
  • 5 — строб с аппаратным запуском.

Рисунок 1.11 — Условное графическое обозначение КР580ВИ53

Назначение выводов БИС КР580ВИ53.

C0 — C2 — входы тактовых сигналов. Подключены к выходу С1 тактового генератора.

СE0 — СE2 — входы разрешения или запуска счёта. Если CE=1, то счёт разрешён. Эти входы подключены к +5В.

А0 — А1- адресация регистров БИС. Подключены к младшим разрядам шины адреса.

RD — чтение регистров. Подключен к сигналу MEMR шины управления.

WR- запись в регистры. Подключен к сигналу MEMW шины управления.

D0 — D7 — информационные входы/выходы. Подключаются к шине данных. OUT0 — OUT2 — выходы таймера. На них появляются сигналы, формируемые таймером.

Программируемый интервальный таймер.

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

СЕ – сигнал резрешения счета.

Рг Р.Р. – регистр режима работы.

Таблица истинности для операции на шине:

А1 А Операции
х х х х х х Операций нет Нет операций
Запись в сч.0 Чтение в сч.0
Запись в сч.1 Чтение в сч.1
Запись в сч.2 Чтение в сч.2
Загрузка упр. слова режима работы
Нет операции

Все 3 счетчика, вход.в состав микросхемы, работают независимо др.от др. Это 16 разрядные вычитающие счетчики.

Каждый переход из 1 в 0 уменьшает на 1 счетчик. Обычно сч.считает от начального значения до 0. И формирует выходной сигнал OUT, зависящий от режима работы сч.

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

Управление работы сч.осущ-ся одним словом режима работы:

Д7 Д6 Д5 Д4 Д3 Д2 Д1 Д

Д-задает код, который задает счетчик:0-счит-т в двоичном коде, 1-двоичнодесятичном.

Д4, Д5 – определяет, как производится чтение/запись.

00-спец.команда фиксации счетчика (чтение на лету).

01-Только младший байт.

11-2 байта (сначала млад.,затем стар.).

Д6, Д7-для какого сч.производится.

00-выбор рг режима работы сч.0.

01-выбор рг режима работы сч.1.

10-выбор рг режима работы сч.2.

11-для 8254 команда чтения состояния таймера.

dev64

Programming

Работа с программируемым интервальным таймером (PIT) в ядре ОС

Галерея

Сегодня про настройку таймера. Речь про Intel-архитектуру. В системе имеются несколько таймеров. Каждый применим для своих нужд. Таймер в CMOS хранит календарное время, есть еще PIT (Program Interval Timer), выдающий IRQ0 и управляющий динамиком. Кроме упомянутых, внутри новых процессоров есть новый таймер где-то в APIC. Я пока APIC не занимаюсь, настройка календарного времени тоже не самый актуальный вопрос. Актуальным для экспериментов является реализация переключения процессов, а также реализация функций типа sleep(), позволяющих приостановку текущего выполняемого треда по таймеру. Для этого подходит (используется в большинстве ОС PIT). Про PIC много деталей можно найти здесь: http://wiki.osdev.org/PIT.

Немного фактов про PIT (Программируемый Интервальный Таймер):

  • интервальный таймер имеет задающий генератор с частотой 1.1931816666 MHz (6 в периоде).
  • интервальный таймер позволяет получать меньшие частоты путем деления вышеописанной частоты
  • деление осуществляется за счет двухбайтного беззнакового счетчика, с диапозоном значений 0-65535. Т.к. на ноль делить нельзя, то 0 означает 65536
  • у таймера 3 канала, из которых программно используемыми могут быть два: 0 и 2
  • выходной сигнал канала 0 интервального таймера подключен к контроллеру прерываний PIC, таким образом, что он генерирует IRQ0. После загрузки BIOS настраивает канал 0 счетчиком 65535 или 0, что дает частоту 18.2065 Hz (прерывание IRQ0 каждые 54.9254 миллисекунды).
  • Канал 0 в разных режимах может выдавать либо периодические прерывания с частотой выше 18.2 Hz, либо отдельные прерывания. Обычно 0 канал используется для получения прерываний, для переключения тредов и задач.
  • Канал 2 подключен к динамику. Бит 5-й порта 0x61 может читаться для получения значения выходного сигнала на таймере. Подробнее про программирование 2-го канала таймера можно найти здесь: http://wiki.osdev.org/PC_Speaker

Управление интервальным таймером.

Для генерации прерываний применяется 0-й канал таймера. Для работы с нулевым каналом таймера используются 2 порта:

  • 0x40 — порт данных
  • 0x43 — управляющий порт

Через порт 0x40 можно записать значение делителя частоты. Биты управляющего порта 0x43 перечислены ниже. Для настройки таймера, производится запись в контрольный регистр 0x43 и следом в регистр 0x40.

// @see http://wiki.osdev.org/PIT
Bits Usage
6 and 7 Select channel :
0 0 = Channel 0
0 1 = Channel 1
1 0 = Channel 2
1 1 = Read-back command (8254 only)
4 and 5 Access mode :
0 0 = Latch count value command
0 1 = Access mode: lobyte only
1 0 = Access mode: hibyte only
1 1 = Access mode: lobyte/hibyte
1 to 3 Operating mode :
0 0 0 = Mode 0 (interrupt on terminal count)
0 0 1 = Mode 1 (hardware re-triggerable one-shot)
0 1 0 = Mode 2 (rate generator)
0 1 1 = Mode 3 (square wave generator)
1 0 0 = Mode 4 (software triggered strobe)
1 0 1 = Mode 5 (hardware triggered strobe)
1 1 0 = Mode 2 (rate generator, same as 010b)
1 1 1 = Mode 3 (square wave generator, same as 011b)
0 BCD/Binary mode: 0 = 16-bit binary, 1 = four-digit BCD

Пример кода, настраивающего таймер на срабатывание примерно 100 раз в секунду. Использую макро, поскольку не вижу смысла для однократно применяемого кода делать функцию. Вызов макро выглядит как-то поудобнее.

Статья http://wiki.osdev.org/PIT рассказывает также про тонкий подсчет времени. После настройки таймера, вышеприведенным способом, начнет срабатывать IRQ0 примерно 100 раз в секунду. Подвох в том, что срабатывать таймер будет слегка чаще, чем 100 раз в секунду. Частота PIT 1193181,66666 точно на 100 не делится. Остается остаток. Остаток 81,6666 (6 в периоде).

Т.е. получается каждые 11931 изменения внутреннего счетчика таймера происходит IRQ0. Но до 1 секунды остаются еще 81,6666 срабатывания внутреннего таймера. Постепенно разница будет накапливаться. Через 2 секунды (200 срабатываний IRQ0) накопятся уже 163,332, через 3 — 244.999 и т.д. Т.е. через 1193100/81,6666 срабатываний IRQ0 накопится 1 неучтенная миллисекунда. Несложный подсчет на калькуляторе дает, что это 14609,507.

Как эту величину учесть целочисленно? Берутся 2 32-битные ячейки. В одной хранятся миллисекунды, во второй некоторая целая величина, вызывающая переполнение каждые 14609,507 сложений ее саму с собой. Иными словами нужно во 2-ю ячейку положить 2^32/14609,507 = 293984,41

Делаем собственный таймер для спорта

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

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

Как устроен интервальный таймер

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

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

Основа страницы

Возь­мём стан­дарт­ный шаб­лон стра­ни­цы:

Теперь пора­бо­та­ем со слу­жеб­ным раз­де­лом .. и напол­ним его нуж­ны­ми коман­да­ми:

Под­клю­ча­ем там же фрейм­ворк jQuery, кото­рый упро­стит нам рабо­ту с тай­ме­ром и его ком­по­нен­та­ми:

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

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

Звук мы взя­ли где-то из интер­не­та и поло­жи­ли в ту же пап­ку, что и наша про­грам­ма.

Что­бы мы мог­ли менять вре­мя и пара­мет­ры тре­ни­ров­ки, сде­ла­ем фор­му и раз­ме­стим все наши ком­по­нен­ты на ней.

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

Тег — это кон­тей­нер, как бы про­зрач­ная обёрт­ка для сво­е­го содер­жи­мо­го. С его помо­щью мы можем отдель­но настро­ить внеш­ний вид и пове­де­ние наше­го тек­ста. Теперь у наше­го заго­лов­ка есть внут­рен­нее имя «Secret» и класс «timer_types_btn» , кото­рый пока ещё нигде не про­пи­сан.

На этом эта­пе у нас будет пустая стра­ни­ца с над­пи­сью «Интер­валь­ный тай­мер». Пока что ниче­го инте­рес­но­го.

Интерфейс

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

Пер­вое, что мы в него доба­вим — интер­фейс настро­ек тре­ни­ров­ки, где мож­но будет выбрать вре­мя и коли­че­ство повто­ре­ний. Сна­ча­ла доба­вим в него настрой­ку вре­ме­ни на упраж­не­ния:

Внут­ри это­го бло­ка у нас три раз­де­ла: один отве­ча­ет за мину­ты, вто­рой — за двое­то­чие, тре­тий — за секун­ды. Свой­ство contenteditable=»true» озна­ча­ет, что этот кон­тент мож­но изме­нять, щёл­кая мыш­кой и вво­дя свои зна­че­ния.

Так же доба­вим бло­ки коли­че­ства под­хо­дов и вре­ме­ни отды­ха:

Встав­ля­ем это всё в нашу панель настро­ек и смот­рим, что полу­чи­лось:

Табло для отсчёта времени и кнопки

Для боль­шо­го таб­ло исполь­зу­ем тот же код, что и для пане­ли настро­ек, толь­ко при­ме­ним потом дру­гой класс оформ­ле­ния:

Кноп­ки сде­ла­ем с помо­щью стан­дарт­но­го тега . Каж­дой кноп­ке при­сво­им своё имя и иден­ти­фи­ка­тор, что­бы мож­но было с ними рабо­тать из скрип­та:

Вот наш интер­фейс. Ста­вим его в фор­му на стра­ни­це и смот­рим на резуль­тат:

Настраиваем внешний вид

Оче­вид­но, что тай­мер наш выгля­дит скром­но­ва­то. Нуж­но его офор­мить. Для это­го исполь­зу­ем CSS — сти­ли оформ­ле­ния эле­мен­тов на стра­ни­це.

Как вы помни­те, CSS-стили мож­но выно­сить в отдель­ный файл, а мож­но писать в раз­де­ле с помо­щью тега

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

Теперь напол­ним наш скрипт. Нач­нём с пере­мен­ных:

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

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

Ну и доба­вим эсте­ти­ки в про­грам­му — для кра­со­ты будем ста­вить пер­вым ноль, если чис­ло минут или секунд мень­ше девя­ти:

Отдель­ной функ­ци­ей сде­ла­ем отоб­ра­же­ние вре­ме­ни на таб­ло. Там как раз и при­го­дит­ся наша функ­ция, кото­рая пере­во­дит секун­ды в мину­ты:

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

Продолжение скрипта: обрабатываем нажатия на кнопки

Нач­нём с кноп­ки «Старт». Логи­ка рабо­ты такая: сле­дим за тем, в каком режи­ме рабо­та­ет тай­мер, не забы­вая скры­вать «Старт» и пока­зы­вать «Пау­зу» после запус­ка. Как толь­ко пере­шли к отды­ху или сно­ва к тре­ни­ров­ке — вклю­ча­ем зву­ко­вой сиг­нал. Если все тре­ни­ров­ки про­шли, но мы сно­ва нажа­ли «Старт», нач­нём всё сна­ча­ла:

Теперь оче­редь кноп­ки «Пау­за». Она появ­ля­ет­ся в тот момент, когда мы нажи­ма­ем на кноп­ку «Старт», кото­рая сра­зу исче­за­ет. Логи­ка чуть дру­гая: при каж­дом нажа­тии мы про­сто оста­нав­ли­ва­ем интер­вал и тоже вклю­ча­ем звук, что­бы обо­зна­чить сме­ну режи­ма:

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

Теперь соби­ра­ем скрипт в один файл, сохра­ня­ем, обнов­ля­ем нашу стра­ни­цу и нажи­ма­ем на «Старт». Всё, успех — тай­мер начал отсчёт:

Diplom Consult.ru

На рисунке 28 показана схема ПИТ К580ВИ53.

Рисунок 28 — Схема программируемого интервального таймера

В состав таймера входят три независимых 16-разрядных вычитающих счетчика, схема управления вводом—выводом, регистры режимов работы счетчиков и буфер ШД, через который осуществляется обмен информацией между МП и таймером. Счетчики ПИТ могут работать в диапазоне частот от 0 до 2 МГц в двоичном и двоично-десятичном кодах.

Через буфер ШД в счетчики ПИТ можно загрузить начальные значения по сигналам ЗП и считать текущее значение по сигналам ЧТ, Входными считаемыми сигналами для счетчиков являются сигналы Вх, по заднему фронту которых счетчики выполняют операцию декрементирования сво­его содержимого. До тех пор, пока на ПИТ не подан сигнал , операции записи и чтения невозможны, однако сигнал на работу счетчиков влияния не оказывает. Сигналы на входы А1-0 подаются с соответствующих линий ША и адресуют один из внутренних регистров ПИТ.

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

Формат управляющего слова показан на рисунке 29.

Функции управляющих и адресных входных сигналов перечислены в таблице 7.

Двухразрядное поле ВР1-0 выбора регистра режима адресует регистр режима для счетчиков 0, 1 или 2. Поле ЧЗ1-0 чтения/записи определяет порядок считывания текущего значения адресуемого счетчика или загрузки в него начального значения. В поле РЖ1-0 кодируется один из шести возможных режимов работы адресуемого счетчика. И, наконец, разряд К определяет код, в котором работает счетчик.

Каждый электрик должен знать:  Электрик не прошел аттестацию — возможные последствия

Рисунок 29 — Формат управляющего слова

Таблица 7 — Функции управляющих и адресных входных сигналов

5 РАЗРАБОТКА ИНТЕРФЕЙСА И УТОЧНЕННОЙ СТРУКТУРНОЙ

СХЕМЫ МИКРОПРОЦЕСОРНОЙ СИСТЕМЫ

5.1 Буферный регистр КР580ИР82

Буферизация шин необходима для повышения их нагрузочной способности по току и емкости. Применение регистров КР580ИР82 в качестве буфера увеличивает нагрузочную способность линий ША до 32 мА и 300 пФ. Один из разрядов регистра (выводы 5, 15) использован для буферизации линии сигнала , который управляет режимом записи-считывания.

Рисунок 30 – УГО регистра КР580ИР82

Запись информации осуществляют по стробу, подаваемому на вход СЕ (вывод 11), либо при наличии на этом входе постоянного уровня логической 1. Считывание информации возможно при наличии на входе ОЕ (вывод 9) сигнала с уровнем логического 0. При =1 выходы принимают третье состояние.

5.2 Шинный формирователь к580ва86

Сопряжение модулей микросхем, входящих в микропроцессорную систему, с шиной данных реализовано на микросхемах шинных формирователей К580ВА86.

Рисунок 31 — Шинный формирователь К580ВА86

Передача информации обеспечивается при сигнале с уровнем логического 0 на входе СS. При наличии на входе СS сигнала с уровнем логической 1 все выходы переходят в третье состояние. Сигнал снимается с выхода ОЕ буферного регистра КР580ИР82.

Направление передачи информации зависит от сигнала . При = 0 информация с выходов микросхем поступает в шину данных, при =1 из шины данных на входы микросхем.

5.3 Подключение микросхем, входящих в микропроцессорную систему, к

шинам адреса и данных

Подключение микросхем, входящих в микропроцессорную систему, к шинам адреса и данных посредством буферного регистра и шинного формирователя представим на примере подключения модуля ОЗУ.

Подключение модуля ОЗУ представлено на рисунке 32.

Рисунок 32- Подключение ОЗУ к шинам адреса и данных

5.4 Разработка структурной схемы

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

Структурная схема приведена в приложении А.

В результате курсового проектирования в соответствии с заданным вариантом разработана микропроцессорная система на базе микроконтроллера К1816ВЕ48. На основании анализа функционирования данного микроконтроллера разработан процессорный модуль и интерфейс микропроцессорной системы.

В соответствии с техническим заданием разработана подсистема памяти на базе БИС ОЗУ К537РУ8 БИС ПЗУ К556РТ6.

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

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

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

Горбунов В.Л. Микропроцессоры. Основы построения микроЭВМ / В.Л.Горбунов, Д.И.Панфилов, Д.Л. Преснухин. – М.: Высшая школа, 1986.

Грицюк С.Н., Власов В.В. Методические указания к курсовому проектированию по дисциплине «Микропроцессорные устройства систем управления» / С.Н. Грицюк, В.В. Власов. – Саратов, 2006.

Каган Б.М. Основы проектирования микропроцессорных устройств автоматики / Б.М.Каган, В.В.Сташин. – М.: Энергоатомиздат, 1990.

Лебедев О.Н. Микросхемы памяти и их применение / О.Н. Лебедев. – М.: Радио и связь, 1990.

Новиков Ю.В., Скоробогатов П.К. Основы микропроцессорной техники / Ю.В. Новиков, П.К. Скоробогатов. – М.: ИНТУИТ.РУ, 2003.

Сташин В.В. Проектирование цифровых устройств на однокристальных микроконтроллерах / В.В.Сташин, А.В.Урусов, О.Ф.Мологонцева. – М.: Энергоатомиздат, 1990. – 224с.

Хвощ С.Т., Варлинский Н.Н. Микропроцессоры и микроЭВМ в системах автоматического управления: справочник / С.Т. Хвощ, Н.Н. Варлинский, Е.А. Попов. – Л.: — Машиностроение, 1987.

Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы / Н.Н. Щелкунов, А.П. Дианов. — М.: Радио и связь, 1989.

1 Структура микроконтроллера К1816ВЕ48 66

2 Карта адресов оперативной памяти микропроцессора 67

3 Функциональная схема портов ввода – вывода Р1 и Р2 68


4 Цоколевка корпуса ОЗУ К537РУ8 и схема

подключения ОЗУ к шинам адреса и данных 69

5 Цоколевка корпуса ПЗУ К556РТ6 и схема

подключения ПЗУ к шинам адреса и данных 70

6 Распределение сигналов периферийного адаптера КР580ВВ55

по интерфейсным линиям и схема подключения ППА к шинам

адреса и данных 71

7 Схема программируемого контроллера прерываний К580ВН59.

Каскадное соединение ПКП 72

8 Схема программируемого интервального таймера К580ВИ53.

Схема подключения программируемого интервального таймера

к шинам адреса и данных 73

9 Структурная схема микропроцессорной системы 74

Программируемые интервальные таймеры

Программируемые интервальные таймеры (ПИТ, PIT) выполняют операции, связанные с временами, частотами и интервалами. ПИТ ВИ54 серий К1821 и К1860 (аналог микросхемы Intel 8254), входящий также в состав современных интегрированных периферийных СБИС и библиотек для СБИС программируемой логики, — трехканальный, содержит три 16-разрядных счетчика с независимыми режимами работы при изменениях входной частоты от нулевой до 10 МГц (для разных модификаций максимальные частоты 5; 8 и 10 МГц). Таймеры могут работать в шести режимах в двоичной или двоично-десятичной системах счисления.

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

Шинные формирователи

Шинные формирователи (ШФ), называемые также приемопередатчиками, шинными драйверами или магистральными вентиль-буферами, включаются между источником информации и шиной. Они усиливают сигналы по мощности при работе на шину, отключают источник информации от шины, когда он не участвует в обмене, формируют при необходимости требуемые] уровни сигналов логической 1 или 0. Двунаправленные ШФ позволяют в зависимости от сигнала управления передавать сигналы в шину или, напротив, принимать их с шины и передавать приемнику данных.

Различные ШФ отличаются не только разрядностью, но и передачей сигналов в прямом или инвертированном виде (ШФИ), а также прямым или инверсными сигналами разрешения работы. Отличаются они и электрическими характеристиками. Рассмотрим ШФ более подробно.

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

Для решения данной проблемы были спроектированы и широко используются специальные цифровые устройства комбинационного типа – шинные приёмопередатчики (шинные формирователи, шинные драйверы и т.п.). Иногда говорят, что это магистральные устройства.

Магистральные (шинные) приемопередающие формирователи ‑это специализированные цифровые устройства,предназначенные для согласования входов-выходов других цифровых устройств в узлах передачи данных и для управления направлением передачи данных в шинах.

Классифицировать ШФ можно по направлению передачи информации:

— однонаправленные шинные драйверы (здесь данные передаются в одном направлении, т. е. определенные выводы микросхемы являются входными и определенные ‑ выходными);

— двунаправленные шинные драйверы (здесь одни и те же выходы могут быть как входными, так и выходными).

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

Рис. 2 УГО шинного формирователя типа К589АП16 (а), КР531АП2 (б).

Шинные формирователи могут иметь следующие УГО, соответственно для ИМС типа К589АП16 (рис. 2а) и ИМС типа КР531АП2 (рис. 2б). На рисунках: вход ВК (ЕВ) – вход выборки кристалла, выходы С1…С4 (DO) — выходы информации, В1…В4 (DB) – Входы/выходы реверсивной передачи, А1…А4 (DI) – входы информации, УВ (EO) – вход управления выдакей.

Схема шинного формирователя типа К589АП16 приведена на рисунке 3.

Из рисунка видно, в состав схемы входят буферные устройства Б1, Б2 и двухвходовые элементы И с инверсными входами.

При установке на входе ВК уровня лог. 1 на выходах элементов И1 и И2 устанавливается уровень лог. 0. Все буферные устройства Б1 и Б2 устанавливаются в закрытое состояние, и независимо от уровня сигнала на управляющем входе УВ информация через ШФ не передается.

Рис. 3. Схема шинного формирователя типа К589АП16

При установке на входе ВК уровня лог. 0 в зависимости от значения сигнала на входе УВ открывается одна из групп буферов (Б1 или Б2), и информация передается через буферы, устанавливаемые в открытое состояние, а именно: если на входе УВ действует уровень лог. 0, происходит передача от входа А к выходу В (открыты буферы Б1, буферы Б2 закрыты); при действии на входе УВ уровня лог. 1 происходит передача от входа В к выходу С (открыты буферы Б2, буферы Б1 закрыты).

Рис. 4 Схема двунаправленного шинного формирователя

При объединении выводов А и С, как показано на рисунке 4, ШФ обеспечивает управляемую передачу в два направления. Если УВ=0, то передача осущест­вляется в направлении от входа А к выходу В (выходы С отключены); если УВ=1, то передача осуществляется в обратном направ­лении от входа В к выходу С.

Помимо этого, шинные драйверы могут иметь третье состояние выходов (состояние высокого импеданса Z) и открытый коллекторный выход (ОК).

На рисунке 5б показано использование ШФ в качестве буферного устройства между ЗУ и двунаправленной шиной данных. Связь с шиной данных осуществ­ляется через двунаправленный вывод В ШФ. При записи в ЗУ данные с вывода В ШФ при УВ=1 передаются на выход С, при чтении данные из ЗУ принимаются на вход А, с которого они при УВ=0 передаются на выход В. Аналогичные функции выполняет ШФ в схеме на рисунке 5.34б, обеспечивая связь выходной шины дан­ных Д и входной шины В процессора с двунаправленной шиной внешнего устройства.

Рис. 5. Применение шинных формирователей:
а – двунаправленная шина, б – буферное устройство

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

К основным параметрам ШФ относятся: потребляемая мощность, время задержки, напряжение питания.

Буферные регистры

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

Через порты ввода данные от ВУ поступают в магистраль, а через порты вывода данные с магистрали передаются тому или иному модулю. Порты ввода-вывода могут выполнять обе указанные операции.

В МПК К580 имеются восьмиразрядные буферные регистры ИР82 и ИР83 (инвертирующий) — аналоги зарубежных ИС Intel 8282 и 8283.

Таким образом, интерфейсные БИС в «железе» реализуют обмен информацией различных узлов МПС и внешних устройств.

3. Проектирование микроконтроллеров и микропроцессоров

Основные положения

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

В настоящее время наибольшее распространение получил методологический прием, при котором весь цикл разработки микроконтроллеров рассматривается как последовательность трех фаз проектирования:

1) анализ задачи и выбор (и/или разработка) АС микроконтроллера,

2) разработка прикладного ПО микроконтроллера,

3) комплексирование АС и ПО в прототипе микроконтроллера и его отладка.

Фаза разработки ПО, то есть фаза получения прикладного программного продукта (ППП), в свою очередь разбивается на два существенно различных этапа: «от постановки задачи к исходной программе», «от исходной программы к объектному модулю».

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

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

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

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

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

Если задача уже поставлена, то наиболее трудоемкой и сложной (из-за тесной связанности с областью приложения будущей программы) стадией работы является стадия формирования алгоритма решения поставленной задачи. Вся последующая работа по преобразованию алгоритма в машинные коды – это просто совокупность процессов трансляции. Реализация этих процессов опирается на системное ПО. Вследствие этого собственно программирование требует только около 10 % общих трудозатрат. Отсюда видно, что основную творческую нагрузку при разработке прикладного ПО микроконтроллеров несет не профессиональный программист, а программирующий профессионал – специалист в данной предметной области знаний. Ориентация на разработку ППП для микроконтроллеров силами программирующих профессионалов получает распространение еще и потому, что в условиях быстро дешевеющей памяти изменились стиль и технология разработки программ. Экономят теперь уже не память микроконтроллеров, а время разработчика ПО, то есть сокращают сроки разработки изделия.

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.

ПРОГРАММИРУЕМЫЙ ИНТЕРВАЛЬНЫЙ ТАЙМЕР

Русско-английский перевод ПРОГРАММИРУЕМЫЙ ИНТЕРВАЛЬНЫЙ ТАЙМЕР

Русско-Английский толковый словарь терминов и сокращений по ВТ, Интернету и программированию. Russian-English explanatory dictionary of terms and abbreviations of computer engineering, Internet and programming. 2012

Еще значения слова и перевод ПРОГРАММИРУЕМЫЙ ИНТЕРВАЛЬНЫЙ ТАЙМЕР с английского на русский язык в англо-русских словарях и с русского на английский язык в русско-английских словарях.

More meanings of this word and English-Russian, Russian-English translations for the word «ПРОГРАММИРУЕМЫЙ ИНТЕРВАЛЬНЫЙ ТАЙМЕР» in dictionaries.

  • ПРОГРАММИРУЕМЫЙ — adj. programmed
    Russian-English Dictionary of the Mathematical Sciences
  • ТАЙМЕР — Timer
    Русско-Американский Английский словарь
  • ТАЙМЕР — beeper
    Русско-Английский словарь общей тематики
  • ПРОГРАММИРУЕМЫЙ — programmable
    Русско-Английский словарь общей тематики
  • ПРОГРАММИРУЕМЫЙ — adj. programmable
    Russian-English Edic
  • ИНТЕРВАЛЬНЫЙ — интервальный указатель: range index
    Russian-English Edic
  • ТАЙМЕР — timer
    Русско-Английский словарь по машиностроению и автоматизации производства
  • ПРОГРАММИРУЕМЫЙ — programmable
    Русско-Английский словарь по машиностроению и автоматизации производства
  • ТАЙМЕР — timed control, timing mechanism, timer
    Русско-Английский словарь по строительству и новым строительным технологиям
  • ТАЙМЕР — time clock
    Русско-Английский экономический словарь
  • ИНТЕРВАЛЬНЫЙ — interval
    Русско-Английский экономический словарь
  • ТАЙМЕР — time clock
    Современный Русско-Английский словарь по машиностроению и автоматизации производства
  • ПРОГРАММИРУЕМЫЙ — soft
    Современный Русско-Английский словарь по машиностроению и автоматизации производства
  • ТАЙМЕР — timer
    Русско-Английский толковый словарь терминов и сокращений по ВТ, Интернету и программированию
  • ПРОГРАММИРУЕМЫЙ — 1) programmable 2) soft
    Русско-Английский толковый словарь терминов и сокращений по ВТ, Интернету и программированию
  • ТАЙМЕР — муж. beeper timer
    Большой Русско-Английский словарь
  • ПРОГРАММИРУЕМЫЙ — прил. programmable programmed
    Большой Русско-Английский словарь
  • ИНТЕРВАЛЬНЫЙ — прил. interval interval
    Большой Русско-Английский словарь
  • ТАЙМЕР — таймер timer
    Русско-Английский словарь Сократ
  • ПРОГРАММИРУЕМЫЙ — программируемый programmed
    Русско-Английский словарь Сократ
  • ИНТЕРВАЛЬНЫЙ — интервальный interval
    Русско-Английский словарь Сократ
  • INTERVAL TIMER — 1. интервальный таймер, датчик временных интервалов 2. реле (выдержки) времени
    Большой Англо-Русский словарь
  • INTERVAL TIMER — интервальный таймер; датчик временных интервалов; реле выдержки времени; счётчик-таймер
    Большой Англо-Русский политехнический словарь
  • INTERVAL TIMER — интервальный таймер; датчик временных интервалов; реле выдержки времени; счётчик-таймер
    Большой Англо-Русский политехнический словарь — РУССО
  • WDT — [Watch Dog Timer] сторожевой программируемый таймер, проф. будильник
    Большой Англо-Русский словарь
  • WDT — [Watch Dog Timer] сторожевой программируемый таймер, проф. будильник
    Большой Англо-Русский словарь
  • WATCHDOG TIMER — 1. сторожевой таймер 2. контрольное реле времени
    Большой Англо-Русский словарь
  • WAITABLE TIMER — таймер ожидания
    Большой Англо-Русский словарь
  • TIMING DEVICE — 1. устройство выдержки времени; реле времени 2. блок синхронизации 3. отметчик времени; счетчик времени; таймер
    Большой Англо-Русский словарь
  • TIMING CIRCUIT — 1. схема синхронизации 2. схема тактового генератора; таймер
    Большой Англо-Русский словарь
  • TIMER CLOCK — датчик времени, таймер
    Большой Англо-Русский словарь
  • TIMER-SUPERVISOR — управляющий таймер
    Большой Англо-Русский словарь
  • TIMER — сущ. 1) хронометрист (на скачках) 2) а) часы; хронометр Syn : chronometer б) тех. таймер, регулятор выдержки времени хронометражист часы; …
    Большой Англо-Русский словарь
  • TIME CLOCK — таймер табельныеnчасы
    Большой Англо-Русский словарь
  • TEMPORAL RISK — мат. временный [интервальный] риск
    Большой Англо-Русский словарь
  • RANGE INDEX — интервальный указатель
    Большой Англо-Русский словарь
  • PROGRAMMED-CONTROLLED MEANS — маш. 1. устройство программного управления 2. программируемый командоаппарат, программируемый контроллер, ПК
    Большой Англо-Русский словарь
  • PROGRAMMED — программируемый; запрограммированный запрограммированный — * instruction программированное обучение programmed вчт. программируемый
Каждый электрик должен знать:  Как выбрать электрогриль для дома в 2020 году и какой лучше

вчт. программный
Большой Англо-Русский словарь

  • PROGRAMMABLE PERIPHERAL INTERFACE — программируемый периферийный интерфейс; программируемый интерфейс периферийного (внешнего) устройства
    Большой Англо-Русский словарь
  • PROGRAMMABLE — прил. программируемый (компьютерное) программируемый; поддающийся программированию с программным управлением programmable вчт. программируемый vendor

    вчт. программируемый поставщиком
    Большой Англо-Русский словарь

  • LCU — I сокр. [line controller unit] блок контроллера линии (передачи) II сокр. [local control unit] программируемый командоаппарат, программируемый контроллер, ПК
    Большой Англо-Русский словарь
  • LCU — I сокр. [line controller unit] блок контроллера линии (передачи) II сокр. [local control unit] программируемый командоаппарат, программируемый контроллер, ПК
    Большой Англо-Русский словарь
  • INTERVAL PREDICTION — интервальный прогноз
    Большой Англо-Русский словарь
  • INTERVAL ORDER — мат. интервальный порядок
    Большой Англо-Русский словарь
  • INTERVAL GRAPH — мат. интервальный граф, граф интервалов
    Большой Англо-Русский словарь
  • INTERVAL ANALYSIS — интервальный анализ, интервальная арифметика
    Большой Англо-Русский словарь
  • INTERNAL TIMER — встроенный таймер
    Большой Англо-Русский словарь
  • INTELLIGENT PERIPHERAL INTERFACE — программируемый периферийный интерфейс; программируемый интерфейс периферийного (внешнего) устройства
    Большой Англо-Русский словарь
  • HUMP RAIL BRAKE — вагонный замедлитель верхней позиции; интервальный вагонный замедлитель
    Большой Англо-Русский словарь
  • FSE — сокр. [fractionally spaced equalizer] дробно-интервальный корректор
    Большой Англо-Русский словарь
  • FSE — сокр. [fractionally spaced equalizer] дробно-интервальный корректор
    Большой Англо-Русский словарь
  • FRACTIONALLY SPACED EQUALIZER — дробно-интервальный корректор
    Большой Англо-Русский словарь
  • DELAY-MAKE TIMER — таймер задержки
    Большой Англо-Русский словарь
  • COUNTER-TIMER — счетчик-таймер счетчик-таймер
    Большой Англо-Русский словарь
  • CLOCK — I 1. сущ. 1) часы (стенные, настольные, башенные) like a clock 2) разг. счетчик taximeter, speedometer, milometer 3) время It …
    Большой Англо-Русский словарь
  • SEQUENCER — 1) устройство задания последовательности ( операций ) 2) контроллер последовательности ( микрокоманд ) 3) указатель следования ( в базах данных …
    Большой Англо-Русский политехнический словарь
  • RANGE INDEX — указатель интервала, интервальный индекс
    Большой Англо-Русский политехнический словарь
  • PROGRAMMED-CONTROLLED MEANS — машиностр. 1) устройство программного управления 2) программируемый командоаппарат, программируемый контроллер, ПК
    Большой Англо-Русский политехнический словарь
  • PROGRAMMABLE PERIPHERAL INTERFACE — программируемый периферийный интерфейс; программируемый интерфейс периферийного (внешнего) устройства
    Большой Англо-Русский политехнический словарь
  • PROGRAMMABLE CONTROLLER — 1) программируемое устройство управления; программируемый контроллер 2) программируемый контроллер, ПК
    Большой Англо-Русский политехнический словарь
  • PLC — I сокр. от power-line communications ВЧ-связь по ЛЭП II сокр. от programmable logic control 1) программируемая логика электроавтоматики 2) интеллектуальный …
    Большой Англо-Русский политехнический словарь
  • PIC — I сокр. от personal identification code персональный (идентификационный) код II сокр. от programmable interface controller программируемый контроллер интерфейса III сокр. …
    Большой Англо-Русский политехнический словарь
  • PCI — I сокр. от production control information швейн. информация о контроле за ходом производства II сокр. от programmable communications interface программируемый …
    Большой Англо-Русский политехнический словарь
  • LCU — I сокр. от line controller unit блок контроллера линии (передачи) II сокр. от local control unit программируемый командоаппарат, программируемый контроллер, …
    Большой Англо-Русский политехнический словарь
  • Интервальный таймер для тренировок: выбор редакции

    В современных реалиях без смартфона сложно представить даже занятия в тренажерном зале. Если вы ходите в фитнес клуб, вы либо уже используете таймер для тренировок, либо постоянно видите тех, кто между подходами внимательно следит за временем с помощью смартфона. Это не просто удобно, это необходимо, если вы хотите заниматься эффективно и оптимизировать проведенное в спортзале время.

    По запросам «интервальный таймер» или «таймер для тренировок» Play Market выдаст вам кучу результатов. Далеко не все программы написаны людьми, которые сами являются энтузиастами силовых или кардио тренировок. Зачастую в процессе использования вылезают недостатки, из-за которых приложение хочется не просто выключить, а удалить.

    Редакция Five-Inches протестировала немало программ, среди которых были как отдельные Табата таймеры, так и универсальные приложения с возможностью создавать таймеры для интервальных тренировок с произвольными интервалами. В конечном итоге мы остановились на одной программе, о которой расскажем во второй части статьи.

    Приложение для тренировок: критерии выбора

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

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

    Индивидуальные интервальные таймеры

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

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

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

    3. При создании нового интервального таймера должна быть возможность задать дополнительный интервал для начального отсчета. Скажем, продолжительностью 10 секунд. В последующем этот интервал не повторяется, что отличает его от рабочих отрезков.

    4. Самих интервалов в таймере может быть сколько угодно. Для круговых тренировок вам может понадобиться 4, 5 или 7 интервалов разной продолжительности в одном круге. Конечно, такое бывает редко, но что плохого в том, что приложение дает вам такую опцию. Количество кругов, разумеется, вы тоже выставляете самостоятельно. И быстро редактируете в случае необходимости.


    Индикация интервалов

    1. Индикация интервалов на экране должна быть предельно четкой. Цифры (секунды, минуты) должны быть видны с большого расстояния. Цвет рабочих отрезков и периодов отдыха в таймере для интервальных тренировок должен отличаться, причем хорошо бы иметь возможность выбрать свой цвет. Поверьте, будут тренировки, на которых это выручит.

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

    2. Таймер для тренировок должен давать возможность включать обратный голосовой отсчет перед каждым новым интервалом. Три, два, один — затем «гонг» или другой выбранный вами звуковой сигнал. С обратным отсчетом намного удобнее, чем без него, проверено!

    3. Звук в таймере для интервальных тренировок должен быть громким и нормальным. К сожалению, в некоторых приложениях он либо тихий, либо просто ужасно неприятный. В идеале должна быть возможность выбрать звуковой сигнал.

    И в качестве дополнительных пожеланий к таймеру для интервальных тренировок:

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

    Интервальный таймер Gymboss Interval Timer

    Перепробовав несколько десятков приложений с интервальными и Табата таймерами, я остановился на Gymboss Interval Timer от разработчика Gymboss LLC. Как вы уже могли догадаться, приложение соответствует всем перечисленным требованиям. У него есть недостатки, но эти недостатки еще не испортили мне ни одного подхода!

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

    В качестве бонуса разработчики добавили еще одну опцию — возможность прописывать название упражнения (вида активности) для каждого интервала. Если создаете таймер для круговых тренировок, опция может пригодиться. Конечно, сложно представить ситуацию, в которой вы забываете, какое упражнение идет следующим, но вдруг… Название упражнения все время отображается в верхней части экрана во время обратного отчета времени.

    Осталось сказать о том, что это приложение для тренировок доступно как для Android, так и для iOS. У меня оно благополучно стоит на Samsung и на iPhone, работает без проблем на обеих программных платформах. На этом все, удачных вам тренировок!

    Программируемый таймер

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

    Отсчёт выдержки начинают с нажатия на кнопку «Старт», при этом её нельзя удерживать нажатой более 2 с. Длительности выдержки и паузы могут быть заданы в пределах от 1 до 255 единиц отсчёта времени (секунд или минут). Минимальный отсчитываемый интервал времени равен 1 с, максимальный — 4 ч 15 мин. Число циклов выдержка/пауза может быть задано от 0 (однократная выдержка) до 255 либо неограниченным.

    Все установленные параметры работы таймера хранятся в EEPROM его микроконтроллера и могут быть изменены в любую сторону с помощью DIP-переключателей и отдельной кнопки записи в EEPROM.

    Для удобства таймер оснащён световой и звуковой сигнализацией. Питать его можно от сетевого адаптера с выходным постоянным напряжением 15. 20 В или от аккумуляторной батареи напряжением 12 В.

    Схема таймера изображена на рис. 1. Его основа — микроконтроллер ATmega8L-8PU [1, 2]. Источник тактового сигнала — внутренний RC-генератор микроконтроллера частотой 1 МГц. Для повышения точности отсчёта интервалов времени применено тактирование внутреннего таймера-счётчика T/C2 микроконтроллера от встроенного генератора с внешним кварцевым резонатором ZQ1 частотой 32768 Гц. При включённом предварительном делителе частоты на 128 восьмиразрядный таймер T/C2 переполняется каждую секунду и генерирует запрос прерывания.

    Рис. 1. Схема таймера

    Исполнительным устройством таймера служит реле K1, которым управляет сигнал с вывода PC5 микроконтроллера через ключ на транзисторе VT1.

    Контакты реле выведены на зажимную колодку XT 1 и могут управлять внешними устройствами, в том числе питающимися от сети

    Звуковые сигналы подаёт электромагнитный излучатель звука HA1 (со встроенным звуковым генератором), которым управляет сигнал с выхода PC4 микроконтроллера.

    Напряжение питания +5 В подано на микроконтроллер с выхода интегрального стабилизатора DA2, на вход которого напряжение + 12 В поступает либо с гнез-даXS1 через интегральный стабилизатор DA1, либо от аккумуляторной батареи, подключённой к контактам 2 и 1 зажимной колодки XT1. Источник питания выбирают перестановкой перемычки S1.

    Светодиод HL1 зелёного свечения сигнализирует о наличии питающего напряжения. По характеру свечения светодиода HL2 красного цвета видно, в каком состоянии находится таймер. Во время отсчёта выдержки программа включает светодиод HL2 на 1,5 с и выключает его на 0,25 с, во время отсчёта паузы — наоборот. По завершении рабочего цикла светодиод HL2 гаснет.

    DIP-выключатели SA1-SA8 предназначены для задания длительности выдержки, длительности паузы и числа циклов выдержка-пауза. Такими же выключателями SA9-SA12 выбирают, согласно таблице, задаваемый параметр. В этой таблице указаны также адреса ячеек EEPROM микроконтроллера, хранящих соответствующие параметры.

    Счёт времени в секундах

    Счёт времени в минутах

    Огр. циклический режим

    Непр. циклический режим

    3 — замкнутое (ON) , Р — разомкнутое (OFF), X — произвольное

    Параметры набирают на DIP-выключателях SA1-SA8 в двоичном формате, что доставляет некоторые неудобства. Для перевода десятичных чисел в двоичные можно воспользоваться «Калькулятором» Windows. Чтобы записать набранную на DIP-выключателях информацию в EEPROM, достаточно нажать на кнопку SB1. Стартует таймер при нажатии на кнопку SB2.

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

    Диоды VD1, VD3 защищают прибор от ошибочной полярности подключения источников питания, диод VD2 — защита от ЭДС самоиндукции, возникающей при коммутации обмотки реле.

    Звуковая сигнализация таймера работает следующим образом. При удержании кнопки SB2 нажатой менее 2 с раздаётся короткий (0,1 с) звуковой сигнал, означающий, что отсчёт времени начался. Если используется ограниченный циклический режим, то сразу по завершении заданного числа циклов прозвучит сигнал длительностью 2 с. Если кнопку SB2 удерживать нажатой более 2 с, прозвучат пять сигналов длительностью 0,1 с, после чего таймер вернётся в исходное состояние.

    Об успешной записи установленного параметра в EEPROM сигнализируют два звуковых сигнала длительностью по 0,1 с. Если произошла ошибка (например, ошибочно задана нулевая продолжительность выдержки, чего быть не должно), прозвучит сигнал длительностью 1 с. Услышав его, следует проверить положение DIP-выключателей SA1-SA8.

    Таймер собран на плате из фольгированного стеклотекстолита толщиной 1,5 мм размерами 84×55 мм, чертёж которой показан на рис. 2. Транзистор 2SC945 можно заменить на КТ3102 с любым буквенным индексом или другой c аналогичными параметрами. Светодиоды можно использовать любые повышенной яркости, свечение которых хорошо заметно уже при токе 2. 3 мА. Реле K1 — JZC-22F, но можно использовать и другое с катушкой на 12 В, подходящее по коммутируемому напряжению и току и по размерам.

    Рис. 2. Чертёж печатной платы таймера

    Рис. 3. Плата в сборе

    Коды из прилагаемого к статье файла CL-TIMER.hex должны быть загружены в программную память микроконтроллера. Разряды его конфигурации SUT0, SUT1, CKSEL1, CKSEL2, CKSEL3, BODEN, BODLEVEL должны быть запрограммированы (установлены в состояние 0). Последние два из перечисленных разрядов включают в микроконтроллере внутренний детектор провалов напряжения питания и устанавливают порог его срабатывания равным 4 В. Это предотвращает сбои записи в EEPROM при пониженном напряжении питания.

    Каждый электрик должен знать:  Почему греется зарядное устройство

    Перед первым запуском таймера в EEPROM микроконтроллера из файла CL-TIMER.eep записывают следующие параметры: длительность выдержки — 10 с, длительность паузы — 10 с, число циклов — 3, режим работы — ограниченный циклический. В дальнейшем их можно будет изменить.

    Задавая параметры, следует учитывать, что рабочий цикл таймера — сумма длительности выдержки и длительности паузы. Число циклов может быть и нулевым. Это означает, что реле K1 однократно включится на заданное время выдержки. Чтобы включить реле N раз, нужно задать N-1 рабочих циклов. Вот несколько примеров установки параметров.

    Пример 1. Длительность выдержки — 10 с, длительность паузы — 8 с, режим работы — ограниченный циклический, число циклов — 5.

    Начните с перевода всех чисел в двоичную систему счисления:

    Пример 2. Длительность выдержки — 4 с, длительность паузы — 3 с, непрерывный циклический режим. 410 = 000001002, 310 = 000000112.

    Включите таймер. Замкните выключатель SA11 и разомкните SA12 (непрерывный циклический режим). Разомкните SA9 и замкните SA10 (длительность выдержки). На выключателях SA1 -SA8 наберите код 00000100 — SA3 разомкнут, остальные замкнуты. Нажмите на кнопку SB1, прослушайте два коротких сигнала.

    Далее замкните выключатель SA9 и разомкните SA10 (длительность паузы). Наберите на выключателях SA1-SA8 код 00000011 — SA1 и SA2 разомкнуты, остальные замкнуты. Нажмите на кнопку SB1. Должны прозвучать два коротких сигнала. Выключите и вновь включите питание. Таймер готов к работе с новыми значениями параметров.

    Пример 3. Выдержка — 20 мин, однократно. 2010 = 000101002.

    Включив таймер, разомкните выключатель SA11 (единица отсчёта времени — минута) и замкните SA12 (ограниченный циклический режим), разомкните SA9 и замкните SA10 (длительность выдержки). На выключателях SA1 -SA8 наберите код 00010100 — SA3 и SA5 разомкнуты, остальные замкнуты. Нажмите на кнопку SB1. Должны прозвучать два коротких сигнала.

    Разомкните выключатели SA9 и SA10 (число циклов). Наберите на выключателях SA1-SA8 код 00000000 (все выключатели замкнуты). Нажмите на кнопку SA1 и прослушайте два коротких сигнала. Выключите и вновь включите питание. Таймер готов к работе с новыми значениями параметров.

    Программа микроконтроллера имеется здесь.

    1. Евстифеев А. В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL. — М.: Додэка-XXI, 2008.

    2. ATMega8, ATMega8L 8-bit AVR with 8K Bytes In-System Programmable Flash. — URL: http://ww1 .microchip.com/downloads/en/ DeviceDoc/Atmel-2486-8 — b it — AVR -microcontroller-ATmega8_L_datasheet.pdf (10.05.2020).

    Автор: В. Геронда, г. Свердловск Луганской обл., Украина

    Мнения читателей

    Нет комментариев. Ваш комментарий будет первый.

    Вы можете оставить свой комментарий, мнение или вопрос по приведенному вышематериалу:

    Привет студент

    Кафедра промышленной электроники и

    КУРСОВОЙ ПРОЕКТ

    По дисциплине ЭМПТ

    Программируемый таймер

    Кафедра промышленной электроники и

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

    Программа микроконтроллера была написана и отлаживалась с помощью прикладной программы MPLAB IDE.

    Проект содержит 5 рисунков, 4 таблицы и 2 приложения.

    1 Функциональная спецификация и системные требования

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

    При включении наше устройство будет работать в режиме ввода значения времени. Последовательно нажимая на кнопку «+5», можно будет выставить нужный интервал времени для обратного отсчета. В режиме ввода значения времени результат будет выводиться на индикаторы. В качестве индикаторов будут использоваться 2

    Как и разработка любого устройства, разработка МПУ начинается с разработки структурной схемы.

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

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

    Информация от МК к специализированному контроллеру MC14489BP передается по последовательному синхронному интерфейсу, состоящему из трех линий:

    — RE1 (DATA IN) – данные;

    — RE0 (Clk) — синхроимпульсы;

    — RB3 (-CS) – выборка кристалла.

    Структурная схема устройства для контроля за значением параметра приведена на рисунке 1.

    2 Системно-алгоритмическое проектирование

    В соответствии с принятыми решениями МК должен выполнять большинство основных функций МПУ, включая:

    1) обратный отсчет времени

    2) выставление времени кнопкой «+5» и запуск программы кнопкой «Пуск»;

    3) вывод результата отсчета времени на цифровые индикаторы;

    4) вывод сигнала на вкл./выкл. Какого-либо устройства.

    Теперь необходимо решить, какие функции будут выполняться аппаратно периферийными модулями МК, а какие функции будут выполняться программой. Первая функция, несомненно, реализуется аппаратно встроенным в МК модулем 8-разрядный таймер/счетчик TMR0 с 8-разрядным программируемым предделителем. Для функций 2, 3 и 4 подойдет аппаратно-программная реализация.

    3 Разработка аппаратных средств

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

    Выберем из имеющихся в учебно-отладочном стенде элементов и узлов, необходимые для данной задачи. Кроме МК и элементов цепей питания потребуются:

    — две кнопки (например, R1 – «+5», R2- «Пуск» );

    — элементы, обеспечивающие работу цифровых индикаторов;

    Полученная принципиальная схема МПУ приведена в приложении Б.

    В соответствии со схемой МПУ сигналы Data_in и Clk должны формироваться на линиях 1 и 0 порта PORTE, сигнал CS на линии 3 порта PORTB. Поэтому эти линии портов необходимо настроить на вывод. Для настройки модуля PORTE воспользуемся таблицей 1. Настройка линий на ввод-вывод определяется содержимым управляющего регистра TRISB2-TRISB0). Так как линии порта PORTE могут использоваться, как аналоговые входы, то следует также выполнить их настройку для работы в режиме цифровых линий.

    Таблица 1 – Регистры и биты, связанные с работой PORTE

    Рег. напр. данныхPORTE

    Сформируем константы для загрузки в управляющие регистры:

    — b’00000100′ — PORTE (3 — вывод).

    Диаграммы сигналов CS, CLK, а также форматы слова конфигурации для MC14489BP и слов данных приведены на рисунке 2. Слово конфигурации длиной один байт определяет:

    — режим потребляемой мощности (C0);

    — режимы декодирования разрядов (С1 – С7).

    Определим управляющее слово для отображения символов шестнадцатиричного алфавита в нормальном режиме потребляемой мощности INIT_MC14489=b’00000001′.

    В соответствии с электрической схемой МПУ кнопка «Пуск» подключена к линии 2 порта PORTB. Кнопка «+5» подключена к линии 1 порта PORTB. Обозначим соответствующие разряды порта RB1 и RB2. Активному (нажатому) состоянию кнопки соответствует низкий потенциал на линии порта PORTB. Пассивному (отжатому) состоянию кнопки соответствует высокий потенциал, который обеспечивается встроенными подтягивающими резисторами. Включаются подтягивающие резисторы установкой разряда –RBPU=0 в регистре OPTION_REG. Для настройки модуля PORTB воспользуемся таблицей 2. Настройка линий определяется содержимым управляющего регистра TRISB.

    Таблица 2 – Регистры и биты, связанные с работой PORTB

    Регистр направления данных PORTB

    Сформируем константы для загрузки в управляющие регистры:

    — b’11110111′ — PORTB (линия 3 — вывод, остальные ввод);

    -b’10000111′ — OPTION_REG(включить подтягивающие резисторы).

    Функциональная схема модуля TMR0 приведена на рисунке 3.

    Рисунок 3- Функциональная схема модуля TMR0.

    Коэффициент деления определяется значениями разрядов PS2:PS0. Максимальное значение коэффициента деления частоты 1:256 получается при

    = 111. При переполнении таймера устанавливается флаг T0IF (регистр INTCON<>2). После анализа флага, его необходимо сбросить. Если тактовая частота МК F=3.6864 МГц, то интервал времени между двумя переполнениями таймера составит:

    ТTMR = 4×2 8 ×2 8 /F = 4×256×256/3,6864×10 6 = 71,11 мс.

    Для настройки модуля TMR0 воспользуемся таблицей 4.

    Таблица 4 – Регистры и биты, связанные с работой TMR0

    Управляющее слово TMR0 находится в регистре OPTION_REG:

    — бит 5 T0CS выбирает источник тактового сигнала (1 = внешний источник с вывода RA4/T0CKI, 0 = внутренний источник CLKOUT;

    — бит 4 T0SE выбирает фронт приращения TMR0 при внешнем тактовом сигнале;

    — бит 3 PSA выбирает включение предделителя (1 = предделитель включен перед WDT, 0 = предделитель включен перед TMR0);

    — биты 2-0 PS2:PS0 задают коэффициент деления предделителя (000 = 1:2, 001 = 1:4, 010 = 1:8, 011 = 1:16, 100 = 1:32, 101 = 1:64, 110 = 1:128, 111 = 1:256).

    Формируем управляющее слово OPTION_REG = b’01000111′.

    4 Разработка программы для МПУ

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

    • Реакцию на нажатие кнопки «+1»;
    • Реакция на нажатие кнопки «Пуск»;
    • Реакция на запуск таймера TMR0;

    4)Реакция на переполнение таймера.

    Есть 2 метода решения данной проблемы: метод по прерыванию и метод опроса. В своей программе я выбрал метод опроса. Для этого я постоянно опрашиваю кнопку «+5» и кнопку «Пуск» , причем сначала кнопку «+5». Нажатие на кнопку «+5» означает начало программы и выставления времени . После задания времени опрашиваем вторую кнопку и если на нее нажали то запускается таймер и начинает отсчет времени. Опрос кнопок прекращается и во время отсчета времени МК не реагирует ни на какие внешние события до окончании выставленного времени.

    Сначала составим алгоритм программы, в соответствии с которым будем писать текст программы. Алгоритм приведен на рисунке 4.

    Перейдем к формированию исходного текста основной программы. Текст основной программы должен начинаться с директивы установки адреса сброса 0x000. Чтобы использовать средства внутрисхемной отладки, следующей командой должна быть nop. Необходимо выполнить инициализацию всех используемых встроенных модулей МК, контроллера PIC16F877 и ячеек памяти.

    Рассмотренные действия должны выполняться однократно после включения или сброса МПУ. Последующие действия должны повторяться. В теле цикла необходимо формировать и выводить информацию о текущем времени в последовательном коде в блок индикации, опрашивать линии порта ввода, выбирать режим работы и корректировать показания текущего времени. Так как МПУ должен однократно реагировать на нажатие любой из кнопок, то переход на начало цикла возможен только после отпускания кнопки. Поэтому опрос каждой кнопки должен выполняться дважды: сначала анализ на нажатое состояние, а затем анализ на отжатое состояние. Будем опрашивать состояние кнопок последовательно: сначала кнопку «+5», затем кнопку «Пуск».

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

    ORG 0x000 ;вектор сброса

    goto Begin ;переход на начало программы

    ;Здесь будут находиться все подпрограммы

    ;операторы инициализации модулей МК

    ;операторы инициализации PIC16F877

    ;операторы инициализации ячеек памяти

    bt1 btfsc PORTB,1; запрос кнопки «+5» (нажата?)

    Release call D15ms

    addwf Cnt,W; сравнить с числом 65

    btfss STATUS,C ;если =65, то

    btfsc PORTB,2; опрос кнопки «Пуск»

    Информация, выводимая в контроллер индикаторов, должна быть представлена в последовательном коде. Информационное слово состоит из 24 разрядов, из них младшие 20 разрядов (D0 – D19) содержат пять тетрад кода отображаемых символов, разряды D20 – D22 управляют сегментами h (точка), разряд D23 – управляет яркостью свечения сегментов .Так как используются только четыре индикатора, то разряды D16-D19 можно задавать произвольно.

    Так как данные должны передаваться в последовательном коде, необходим буфер данных IndVal, используемый как сдвигающий регистр, и счетчик разрядов CntInd. Тогда вывод одного байта можно свести к загрузке буфера IndVal, инициализации счетчика CntInd и последовательности сдвигов буфера влево, пока CntInd ≠ 0. После сдвига выводимый разряд байта будет находиться в разряде STATUS . При этом каждый сдвиг должен сопровождаться формированием фронта синхроимпульса Clk. При условии, что байт находится в аккумуляторе w, алгоритм вывода можно представить в виде подпрограммы Send8:

    Send8 bcf Clk ;Clk:=0

    movwf IndVal ;переслать w в буфер

    movlw 8 ;загрузить счетчик разрядов

    sendloop bcf Data_in ;установить 0

    rlf IndVal,f ;сдвиг влево

    btfsc STATUS,C ;анализ флага С

    bsf Data_in ;установить 1, если С=1

    bsf Clk ;сформировать импульс

    Процесс вывода информации можно представить, как последовательный вывод трех восьмиразрядных слов при выборе контроллера MC14489 (Cs=0):

    Display bcf CS ;Cs:=0

    movf R0,0 ;загрузить R0

    call Send8 ;вывести на индикатор

    movf R1,w ;загрузить R1

    call Send8 ;вывести на индикатор

    movf R2,w ;загрузить R2

    call Send8 ;вывести на индикатор

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

    movwf Cnt ;загрузить счетчик переполнений

    clrf TMR0 ;сброс TMR0

    T71ms btfss INTCON,T0IF

    goto T71ms ;ожидание переполнения таймера

    decfsz Cnt,f ;время задержки истекло?

    return ;возврат в основную программу

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

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

    movlw b’00000000′ ; pull-up B

    Операторы инициализации контроллера MC14489:

    Операторы инициализации ячеек памяти:

    clrf R0 ;сброс индикаторов

    5 Автономная отладка программы

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

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

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

    В нашем случае, как для разработки программы, так и для автономной ее отладки использовался специализированный пакет программ MPLAB IDE фирмы Microchip.

    Для того чтобы проверить временные промежутки включения и выключения программируемого таймера, поставим точки останов в окне Stopwatch, полученные значения равны 1 секунде при выключении таймера, следовательно, таймер настроен правильно.

    Далее для отладки программы применим быстрый пошаговый режим прогона программы – Animate, при этом проверялось содержимое регистров R0..R2.

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

    6 Комплексная отладка микропроцессорной системы

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

    Существуют пять основных приемов комплексной отладки микропроцессорной системы:

    1) останов функционирования системы при возникновении определенного события;

    2) чтение (изменение) содержимого памяти или регистров системы;

    3) пошаговое отслеживание поведения системы;

    4) отслеживание поведения системы в реальном времени;

    5) временное согласование программ.

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

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