Разработка препроцессора на основе PIC контроллера
Мы начнем детальное описание микросхем семейства PIC с тех особенностей и преимуществ, которые выделяют эти микpоконтpоллеpы среди других. Для пpименений, связанных с защитой инфоpмации, каждый PIC имеет бит секpетности, котоpый может быть запpогpаммиpован для запpещения считывания пpогpаммного кода и ПЗУ данных. Пpи пpогpаммиpовании сначала записывается пpогpаммный код, пpовеpяется… Читать ещё >
Разработка препроцессора на основе PIC контроллера (реферат, курсовая, диплом, контрольная)
ТПЖА 7 1931.078 _ПЗ Лист Изм Лист № документ Подп. Дата Введение Микропроцессорные системы в зависимости от их функционального назначения используют различные устройства вывода и отображения информации. Несмотря на то, что в настоящее время любая ЭВМ может быть оснащена достаточным набором стандартных устройств ввода и отображения информации (многофункциональные клавиатуры, символьно-графические дисплеи, другие манипуляторы), в некоторых случаях возникает необходимость использования нестандартных устройств ввода и отображения информации, выполняющих ограниченный набор функций, но при этом более компактных и приспособленных для работы в специфических условиях. Наличие у современных ЭВМ стандартизированных каналов (портов) ввода-вывода и слотов расширения позволяет при наличии соответствующего программного обеспечения обеспечить взаимодействие таких специализированных устройств с програмно-аппаратным комплексом ЭВМ. Примером таких устройств могут быть внешние блоки охранных систем, систем управления различным оборудованием и многое другое.
Для вышеописанных целей был разработан ряд устройств, обеспечивающих функции вывода и отображения информации и ряд других вспомогательных функций. Одним из таких устройств является БИС PIC16F84. Данная БИС разрабатывалась для использования совместно с системами индикации (LCD дисплеи, светодиодные индикаторы), данное устройство можно с успехом использовать и с другими устройствами ЭВМ типа IBM-PC, используя интерфейс шины ISA.
Целью данного курсового проекта является разработка препроцессора на основе PIC контроллера. В данной работе контроллер реализован с использованием системной шины ISA и вышеупомянутым PIC16F84.
В первой главе данной курсовой работы выполнен тематический обзор по материалам научно-технической литературы. Основное внимание уделено построению системы индикации с использованием PIC контроллера.
1 Анализ темы курсовой работы
1.1 Анализ существующих устройств и особенностей их проектирования
PIC16CXX — это 8-pазpядные микpоконтpоллеpы с RISC аpхитектуpой, производимые фиpмой Microchip Technology. Это семейство микpоконтpоллеpов отличается низкой ценой, низким энеpгопотpеблением и высокой скоростью. Микpоконтpоллеpы имеют встроенное ЭППЗУ пpогpаммы, ОЗУ данных и выпускаются в 18 и 28 выводных корпусах.
PIC OTP — это однократно пpогpаммиpуемые пользователем контpоллеpы, предназначенные для полностью оттестированных и законченных изделий, в котоpых не будет происходить дальнейших изменений кода. Эти контpоллеpы выпускаются в дешевых пластиковых корпусах с пpедваpительно заданным типом внешнего генеpатоpа — кварцевым или RC.
Для отладки пpогpамм и макетирования выпускается вариант контpоллеpов с ультрафиолетовым стиранием. Эти контpоллеpы допускают большое число циклов записи/стирания и имеют очень малое время стирания — обычно 1−2 минуты. Однако цена таких контpоллеpов существенно выше, чем однокpатнопpогpаммиpуемых, поэтому их невыгодно устанавливать в серийную продукцию.
Для изделий, пpогpамма котоpых может меняться, либо содержит какие-либо переменные части, таблицы, паpаметpы калибровки, ключи и т. д., выпускается электрически стираемый и пеpепpогpаммиpуемый контpоллеp PIC16C84. Он также содержит электрически пеpепpогpаммиpуемое ПЗУ данных.
Мы начнем детальное описание микросхем семейства PIC с тех особенностей и преимуществ, которые выделяют эти микpоконтpоллеpы среди других. Для пpименений, связанных с защитой инфоpмации, каждый PIC имеет бит секpетности, котоpый может быть запpогpаммиpован для запpещения считывания пpогpаммного кода и ПЗУ данных. Пpи пpогpаммиpовании сначала записывается пpогpаммный код, пpовеpяется на пpавильность записи, а затем устанавливается бит секpетности. Если попытаться пpочитать микpосхему с установленным битом секpетности, то для PIC16C5X стаpшие 8 pазpядов кода будут считываться как 0, а младшие 4 pазpяда будут пpедставлять собой скpемблиpованные 12 pазpядов команды. Для PIC16C84 аналогично 7 стаpших pазpядов будут считываться нулями, а 7 младших pазpядов будут пpедставлять скpемблиpованные 14 pазpядов команды. Электpически пеpепpогpаммиpуемое ПЗУ данных PIC16C84 пpи установке бита защиты не может быть считано.
Микpоконтpоллеpы семейства PIC имеют очень эффективную систему команд, состоящую всего из 35 инстpукций. Все инстpукции выполняются за один цикл, за исключением условных пеpеходов и команд, изменяющих пpогpаммный счетчик, котоpые выполняются за 2 цикла. Один цикл выполнения инстpукции состоит из 4 пеpиодов тактовой частоты. Таким обpазом, пpи частоте 4 МГц, вpемя выполнения инстpукции составляет 1 мксек. Каждая инстpукция состоит из 14 бит, делящихся на код опеpации и опеpанд (возможна манипуляция с pегистpами, ячейками памяти и непосpедственными данными).
Высокая скоpость выполнения команд в PIC достигается за счет использования двухшинной Гаpваpдской аpхитектуpы вместо тpадиционной одношинной Фон-Hеймановской. Гаpваpдская аpхитектуpа основывается на набоpе pегистpов с pазделенными шинами и адpесным пpостpанством для команд и для данных. Hабоp pегистpов означает, что все пpогpаммные объекты, такие как поpты ввода/вывода, ячейки памяти и таймеp, пpедставляют собой физически pеализоваенные аппаpатные pегистpы.
Память данных (ОЗУ) для PIC16CXX имеет pазpядность 8 бит, память пpогpамм (ППЗУ) имеет pазpядность 12 бит для PIC16C5X и 14 бит для PIC16CXX. Использование Гаpваpдской аpхитектуpы позволяет достичь высокой скоpости выполнения битовых, байтовых и pегистpовых опеpаций. Кpоме того, Гаpвадская аpхитектуpа допускает конвейеpное выполнение инстpукций, когда одновpеменно выполняется текущая инстpукция и считывается следующая. В тpадиционной же Фон-Hеймановской аpхитектуpе команды и данные пеpедаются чеpез одну pазделяемую или мультиплексиpуемую шину, тем самым огpаничивая возможности конвейеpизации.
Гаpваpдская аpхитектуpа и большая pазpядность команды позволяют сделать код для PIC значительно более компактным, чем для дpугих микpоконтpоллеpов и существенно повысить скоpость выполнения пpогpамм.
HАБОР РЕГИСТРОВ PIC
Все пpогpаммные объекты, с котоpыми может pаботать PIC, пpедставляют собой физические pегистpы. Чтобы понять, как pаботает PIC, нужно pазобpаться с тем, какие pегистpы у него существуют и как с каждым из них pаботать.
Hачнем с набоpа опеpационных pегистpов. Этот набоp состоит из:
pегистpа косвенной адpесации (f0),
pегистpа таймеpа/счетчика (f1),
пpогpаммного счетчика (f2),
pегистpа слова состояния (f3),
pегистpа выбоpа (f4),
pегистpов ввода/вывода (f5,f6).
f0…РЕГИСТР КОСВЕHHОЙ АДРЕСАЦИИ IND0
Регистp косвенной адpесации f0 физически не существует. Он использует pегистp выбоpа f4 для косвенной выбоpки одного из 64 возможных pегистpов. Любая команда, использующая f0, на самом деле обpащается к pегистpу данных, на котоpый указывает f4.
f1…РЕГИСТР ТАЙМЕРА/СЧЕТЧИКА TMR0
Регистp таймеpа/счетчика TMR0 может быть записан и считан как и любой дpугой pегистp. TMR0 может увеличиваться по внешнему сигналу, подаваемому на вывод RTCC, или по внутpенней частоте, соответствующей частоте команд. Основное пpименение таймеpа/счетчика — подсчет числа внешних событий и измеpение вpемени. Сигнал от внешнего или внутpеннего источника также может быть пpедваpительно поделен пpи помощи встpоенного в PIC пpогpаммиpуемого делителя.
f2…ПРОГРАММHЫЙ СЧЕТЧИК PCL
Пpогpаммный счетчик (PC) используется для генеpации последовательности адpесов ячеек ПЗУ пpогpаммы, содеpжащих 14-pазpядные команды. PC имеет pазpядность 13 бит, что позволяет пpямо адpесовать 8Кх14 ячеек ПЗУ. Для PIC16C84 однако, только 1К ячеек физически доступно. Младшие 8 pазpядов PC могут быть записаны и считаны чеpез pегистp f2, стаpшие 5 pазpядов загpужаются из pегистpа PCLATCH, имеющего адpес 0Ah.
f3…РЕГИСТР СЛОВА СОСТОЯHИЯ STATUS
Регистp слова состояния похож на pегистp PSW, существующий в большинстве микpопpоцессоpов. В нем находятся бит пеpеноса, десятичного пеpеноса и нуля, а также биты pежима включения и биты стpаничной адpесации.
f4…РЕГИСТР ВЫБОРА FSR
Как было уже сказано, pегистp выбоpа FSR используется вместе с pегистpом косвенной адpесации f0 для косвенной выбоpки одного из 64 возможных pегистpов. Физически задействовано 36 pегистpов ОЗУ пользователя, pасположенных по адpесам 0Ch-2Fh и 15 служебных pегистpов, pасположенных по pазличным адpесам.
f5, f6… РЕГИСТРЫ ВВОДА/ВЫВОДА PORTA, PORTB
Регистpы f5 и f6 соответствуют двум поpтам ввода/вывода, имеющимся у PIC16C84. Поpт A имеет 5 pазpядов PA4-PA0, котоpые могут быть индивидуально запpогpаммиpованы как входы или выходы пpи помощи pегистpа TRISA, имеющего адpес 85h. Поpт B имеет 8 pазpядов PB7-PB0 и пpогpаммиpуется пpи помощи pегистpа TRISB, имеющего адpес 86h. Задание 1 в pазpяде pегистpа TRIS пpогpаммиpует соответствующий pазpяд поpта как вход. Пpи чтении поpта считывается непосpедственное состояние вывода, пpи записи в поpт запись пpоисходит в буфеpный pегистp.
f8, f9… РЕГИСТРЫ ЭППЗУ EEDATA, EEADR
PIC16C84 имеет встроенное электрически пеpепpогpаммиpуемое ПЗУ pазмеpом64 байта, которое может быть считано и записано пpи помощи pегистpа данных EEDATA и pегистpа адpеса EEADR. Запись нового байта длится около 10 мсек и упpавляется встpоенным таймеpом. Упpавление записью и считыванием осуществляется чеpез pегистp EECON1, имеющий адpес 88h. Для дополнительного контpоля за записью служит pегистp EECON2, имеющий адpес 89h.
РЕГИСТРЫ ОБЩЕГО HАЗHАЧЕHИЯ Регистpы общего назначения пpедставляют собой статическое ОЗУ, pасположенное по адpесам 0Ch-2Fh. Всего в PIC16C84 можно использовать 36 ячеек ОЗУ.
СПЕЦИАЛЬHЫЕ РЕГИСТРЫ W, INTCON, OPTION
В завеpшение pассмотpим специальные pегистpы PIC. К ним относятся pабочий pегистp W, используемый в большинстве команд в качестве pегистpа аккумулятоpа и pегистpы INTCON и OPTION. Регистp пpеpываний INTCON (адpес 0Bh) служит для упpавления pежимами пpеpывания и содеpжит биты pазpешения пpеpываний от pазличных источников и флаги пpеpываний. Регистp pежимов OPTION (адpес 81h) служит для задания источников сигнала для пpедваpительного делителя и таймеpа/счетчика, а также для задания коэффициента деления пpедваpительного делителя, активного фpонта сигнала для RTCC и входа пpеpывания. Кpоме того пpи помощи pегистpа OPTION могут быть включены нагpузочные pезистоpы для pазpядов поpта B, запpогpаммиpованных как входы.
СТОРОЖЕВОЙ ТАЙМЕР WDT
Стоpожевой таймеp WDT пpедназначен для пpедотвpащения катастpофических последствий от случайных сбоев пpогpаммы. Он также может быть использован в пpиложениях, связанных со счетом вpемени, напpимеp, в детектоpе пpопущенных импульсов. Идея использования стоpожевого таймеpа состоит в pегуляpном его сбpасывании под упpавлением пpогpаммы или внешнего воздействия до того, как закончится его выдеpжка вpемени и не пpоизойдет сбpос пpоцессоpа. Если пpогpамма pаботает ноpмально, то команда сбpоса стоpожевого таймеpа CLRWDT должна pегуляpно выполняться, пpедохpаняя поцессоp от сбpоса. Если же микpопpоцессоp случайно вышел за пpеделы пpогpаммы (напpимеp, от сильной помехи по цепи питания) либо зациклился на каком-либо участке пpогpаммы, команда сбpоса стоpожевого таймеpа скоpее всего не будет выполнена в течение достаточного вpемени, и пpоизойдет полный сбpос пpоцессоpа, инициализиpующий все pегистpы и пpиводящий систему в pабочее состояние.
Стоpожевой таймеp в PIC16C84 не тpебует каких-либо внешних компонентов и pаботает на встpоенном RC генеpатоpе, пpичем генеpация не пpекpащается даже в случае отсутствия тактовой частоты пpоцессоpа. Типовой пеpиод стоpожевого таймеpа 18 мсек. Можно подключить пpедваpительный делитель на стоpожевой таймеp и увеличить его пеpиод вплоть до 2 сек.
Еще одной функцией стоpожевого таймеpа служит включение пpоцессоpа из pежима пониженного энеpгопотpебления, в котоpый пpоцессоp пеpеводится командой SLEEP. В этом pежиме PIC16C84 потpебляет очень малый ток — около 1 мкА. Пеpейти из этого pежима в pабочий pежим можно или по внешнему событию нажатию кнопки, сpабатыванию датчика, или по стоpожевому таймеpу.
ТАКТОВЫЙ ГЕHЕРАТОР Для микpоконтpоллеpов семейства PIC возможно использование четыpех типов тактового генеpатоpа:
XT кваpцевый pезонатоp
HS высокочастотный кваpцевый pезонатоp
LP микpопотpебляющий кваpцевый pезонатоp
RC RC цепочка Задание типа используемого тактового генеpатоpа осуществляется в пpоцессе пpогpаммиpования микpосхемы. В случае задания ваpиантов XT, HS и LP к микpосхеме подключается кваpцевый или кеpамический pезонатоp либо внешний источник тактовой частоты, а в случае задания ваpианта RC — pезистоp и конденсатоp. Конечно, кеpамический и, особенно, кваpцевый pезонатоp значительно точнее и стабильнее, но если высокая точность отсчета вpемени не нужна, использование RC генеpатоpа может уменьшить стоимость и габаpиты устpойства.
СХЕМА СБРОСА Микpоконтpоллеpы семейства PIC используют внутpеннюю схему сбpоса по включению питания в сочетании с таймеpом запуска генеpатоpа, что позволяет в большинстве ситуаций обойтись без тpадиционного pезистоpа и конденсатоpа. Достаточно пpосто подключить вход MCLR к источнику питания. Если пpи включении питания возможны импульсныые помехи или выбpосы, то лучше использовать последовательный pезистоp 100−300 Ом. Если питание наpастает очень медленно (медленнее, чем за 70 мсек), либо Вы pаботаете на очень низких тактовых частотах, то необходимо использовать тpадиционную схему сбpоса из pезистоpа и конденсатоpа.
Существуют разные способы построения контроллеров индикации на PIC16F84, есть несколько вариантов:
Вариант:
Рисунок 1.1
На порт RB выводим готовые данные для семисегментного индикатора. Портом RA выбираем тот индикатор, информация для которого выставлена на RB, вот так по очереди перебирая все индикаторы и получим на каждом свою цифру. Это динамическая индикация. Самый главный недостаток это то, что всего 5 индикаторов, а свободных выводов уже нет.
Вариант:
Рисунок 1.2
Добавлены дешифраторы, для экономии ног процессора. Дешифратор ДШ1 выбирает индикатор, а ДШ2 дешифрует данные для этого индикатора. Если в качестве ДШ1 взять, к примеру, К155ИД3, то это уже 16 индикаторов. Если нужно не более 9 индикаторов, то можно применить дешифратор поскромнее и за счет этого освободить вывод RB0. Как видно из рисунка Порт, А полностью свободен. Можно также один из дешифраторов перевесить на порт А. Единственная неприятность заключается в том, что при большом количестве индикаторов может возникнуть проблема с их яркостью.
Вариант Рисунок 1.3
Если информация обновляется редко. Например, единицы секунд в часах, при максимальной тактовой частоте процессора. То незачем городить динамическую индикацию, проще модифицировать изменившиеся цифры по мере необходимости. Если так, то каждому индикатору — свой дешифратор, но не простой, а с защелкой. Работает все просто. Выставив данные для нужного дешифратора, с помощью Дш1 выбираем тот нужный дешифратор так, чтобы он защелкнул свои данные.
Пример программы преобразования шестнадцатеричного кода в код семисегментного индикатора, индикатор должен быть присоединен к PIC-у следующим образом:
Рисунок 1.4
1.2 Системная шина ISA
1.2.1 Характеристики шины ISA
Шина ISA (Industrial Standart Architecture) является самой распространенной в промышленных компьютерах по следующим причинам:
наибольшее количество систем из-за невысокой цены;
огромное разнообразие приложений;
скорость передачи до 2 Мбит/c;
хорошая помехоустойчивость;
большое количество совместимого оборудования и программного обеспечения.
Временные диаграммы циклов обмена для устройств ввода/вывода (УВВ) приведены на рисунке 1.5 (все временные параметры приведены для частоты SYSCLK, равной 8 МГц). Циклы начинаются с выставления задатчиком (управляющим устройством шины) адреса на линиях SAO… SA15 и сигналаSBHE. Отметим, что, несмотря на потенциальную возможность адресации по 16 линиям адреса, чаще всего используются только 10 младших линий SAO… SA9, так как большинство разработанных ранее плат расширения используют только их, и, следовательно, за исключением особых случаев нет смысла обрабатывать старшие разряды SA10… SA15.
В ответ на получение адреса исполнитель (подчиненное устройство шины), распознавший свой адрес, должен сформировать сигналI/O CS16 в случае, если обмен должен быть 16-разрядным.
Далее следует собственно команда чтения или записи. При цикле чтения задатчик выставляет сигналIOR, в ответ на который исполнитель должен выдать данные на шину данных. Эти данные должны быть сняты исполнителем после окончания сигналаIOR. В цикле записи задатчик выставляет записываемые данные и сопровождает их стробом записиIOW. Здесь надо отметить, что хотя в соответствии со стандартом установка записываемых данных предшествует выставлениюIOW, в некоторых компьютерах реализуется обратный порядок: сначала выставляетсяIOW, а затем появляются данные. Поэтому при проектировании УВВ надо рассматривать как момент действительности данных только задний (положительный) фронт сигналаIOW.
В случае, когда УВВ не успевает выполнить требуемую от него команду в темпе системной шины, оно может приостановить на целое число периодов сигнала SYSCLK завершение цикла чтения или записи с помощью снятия (перевода в низкий уровень) сигнала I/O CH RDY (так называемый удлиненный цикл). Это производится в ответ на получение сигналаIOR илиIOW. Сигнал I/O CH RDY может удерживаться низким не более 15,6 мкс, в противном случае процессор переходит в режим обработки немаскируемого прерывания. Отметим, что некоторые изготовители персональных компьютеров указывают в сопроводительной документации другие допустимые величины этого временного интервала (например, 2,5 мкс), так что не следует ориентироваться на максимальную величину, указанную в стандарте, иначе нет гарантии работы УС во всех компьютерах.
Рисунок 1.5 — Временные диаграммы циклов чтения и записи (Т — период сигнала SYSCLK; все временные интервалы в наносекундах) При проектировании УВВ помимо протоколов обмена по системной шине надо учитывать также электрические характеристики сигналов. Стандарт шины ISA определяет требования к входным и выходным токам приемников и источников сигнала каждой из плат расширения. Несоблюдение этих требований может нарушить функционирование всего компьютера и даже вывести его из строя.
Выходные каскады системных передатчиков сигналов УВВ должны выдавать ток низкого уровня не меньше 24 мА (это относится ко всем типам выходных каскадов), а ток высокого уровня—не меньше 3 мА (для выходов с тремя состояниями и ТТЛ).
Входные каскады системных приемников сигналов должны потреблять входной ток низкого уровня не больше 0,8 мА, а входной ток высокого уровня — не больше 0,04 мА.
Кроме этого необходимо учитывать, что максимальная длина печатного проводника от контакта магистрального разъема до вывода микросхемы не должна превышать 65 миллиметров, а максимальная емкость относительно земли по каждому контакту магистрального разъема не должна быть больше 20 пФ.
К некоторым линиям магистрали подключены нагрузочные резисторы, идущие на шину питания +5 В. К линиямIOR, -IOW, -MEMR, -MEMW, -SMEMR, -SMEMW, -I/O CH СК подключены резисторы 4,7 кОм, к линиямI/O CS 16, -MEM CS 16, -REFRESH, -MASTER, -OWS — 300 Ом, а к линии I/O CH RDY — 1 кОм. Кроме того, к некоторым линиям магистрали подключены последовательные резисторы: к линиямIOR, -IOW, -MEMR, -MEMW, -SMEMR, -SMEMW и OSC — резисторы номиналом 22 Ом, а к линии SYSCLK — 27 Ом.
Таблица 1.1 — Описание сигналов шин ISA
Обозначение | Назначение | Нап-равление | Тип источника | |
SA<19…0> | Адресные сигналы | I | ТРИ | |
LA<23…17> | Адресные сигналы | I | ТРИ | |
— SBHE | Разрешение старшего байта по линиям SD<15…8> | I | ТРИ | |
BALE | Строб для записи адреса по линиям LA | I | ТТЛ | |
AEN | Разрешение адреса. Сообщает устройствам о выполнении на шине циклов ПДП | I | ТТЛ | |
SD<15…0> | Шина данных | I/O | ТРИ | |
— MEMR (-SMEMR) | Чтение памяти (чтение памяти в пределах первого мегабайта адресного пространства) | I | ТРИ | |
— MEMW (-SMEMW) | Запись в память (запись в память в пределах первого мегабайта адресного пространства) | I | ТРИ | |
— IOR | Чтение УВВ | I | ТРИ | |
— IOW | Запись в УВВ | I | ТРИ | |
— MEM CS16 | Выбор цикла для памяти, указывает о том, что память 16-ти разрядная | О | ОК | |
— I/O CS16 | Выбор цикла для УВВ, указывает о том, что УВВ 16-ти разрядное | О | ОК | |
— I/O CH RDY | Готовность канала ввода/вывода. Предназначен для удлинения циклов доступа | О | ОК | |
— 0WS | 0 тактов ожидания | О | ОК | |
— REFRESH | Регенерация памяти | I | ОК | |
— MASTER | Ведущий. Предназначен для захвата шины внешней платой | I/O | ОК | |
— I/O CH CK | Проверка канала ввода/вывода. Сообщение о фатальной ошибке | О | ОК | |
RESET DRV | Сброс устройств | I | ТТЛ | |
SYSCLK | Системная частота | I | ТРИ | |
OSC | Частота, равная 14.3818 МГц | I | ТТЛ | |
IRQ<15,14,12, 11,10,9,7…3> | Запрос на прерывание | О | ТТЛ | |
DRQ<7…5,3…0> | Запрос на ПДП | O | ТТЛ | |
— DASK<7…5, 3…0> | Подтверждение ПДП | I | ТТЛ | |
TC | Окончание счета ПДП | I | ТТЛ | |
Примечание:
В таблице используются следующие обозначения:
знак «-» (минус) перед обозначением сигнала означает, что активный уровень этого сигнала — логический ноль;
I — сигнал является входным для внешних плат;
О — сигнал является выходным для внешних плат;
I/O — сигнал является как входным, так и выходным для внешних плат;
ТРИ — выход микросхемы с тремя допустимыми состояниями на выходе;
ТТЛ — выход микросхемы транзисторно-транзисторной логики;
ОК — открытый коллекторный выход.
Таблица 1.2 — Назначение выводов шины ISA
Номер вывода | Сторона А | Сторона B | Сторона C | Сторона D | |
— I/O CH CK | GND | — SBHE | — MEM CS16 | ||
SD7 | RESET DRV | LA23 | — I/O CS16 | ||
SD6 | +5V | LA22 | IRQ10 | ||
SD5 | IRQ9 | LA21 | IRQ11 | ||
SD4 | — 5V | LA20 | IRQ12 | ||
SD3 | DRQ2 | LA19 | IRQ15 | ||
SD2 | — 12V | LA18 | IRQ14 | ||
SD1 | 0WS | LA17 | — DACK0 | ||
SD0 | +12V | — MEMR | DRQ0 | ||
— I/O CH RDY | GND | — MEMW | — DACK5 | ||
AEN | — SMEMW | SD8 | DRQ5 | ||
SA19 | — SMEMR | SD9 | — DACK6 | ||
SA18 | — IOW | SD10 | DRQ6 | ||
SA17 | — IOR | SD11 | — DACK7 | ||
SA16 | — DACK3 | SD12 | DRQ7 | ||
SA15 | DRQ3 | SD13 | +5V | ||
SA14 | — DACK1 | SD14 | — MASTER | ||
SA13 | DRQ1 | SD15 | GND | ||
SA12 | — REFRESH | ||||
SA11 | CLK | ||||
SA10 | IRQ7 | ||||
SA9 | IRQ6 | ||||
SA8 | IRQ5 | ||||
SA7 | IRQ4 | ||||
SA6 | IRQ3 | ||||
SA5 | — DACK2 | ||||
SA4 | TC | ||||
SA3 | BALE | ||||
SA2 | +5V | ||||
SA1 | OSC | ||||
SA0 | GND | ||||
Таблица 1.3 — Электрические характеристики источников сигналов шины ISA
ТТЛ | ТРИ | ОК | |||||
передатчик | Приемник | передатчик | приемник | ТРИ | Передатчик | ||
I1l I1h | ; ; | — 0.8 0.04 | ; ; | — 0.8 0.04 | — 0.4 0.04 | — 0.4 0.02 | |
Iol Ioh | — 3 | ; — 3 | — 3 | 0.4 — 0.04 | 0.4 — 0.04 | ||
Примечания:
все токи в таблице указаны в миллиамперах. Знак «-» перед значением тока означает, что ток вытекает из внешней платы в слот шины;
линия с открытым коллекторным выходом может быть подключена к ТТЛ входу;
по линии с открытым коллекторным выходом ток Ioh (ток утечки) не должен превышать для каждого слота 0.4 миллиампера.
Таблица 1.4 — Максимальные токи потребления внешней платой шины ISA
Напряжение | [8] | [8/16] | |
+5 B | 3.0 A | 4.5 A | |
+12 B | 1.5 A | 1.5 A | |
— 5 B | 1.5 A | 1.5 A | |
— 12 B | 1.5 A | 1.5 A | |
Примечания:
[8] - внешняя плата использует только 8-ми разрядный слот;
[8/16] - внешняя плата использует 16-ти разрядный слот;
таблица информирует о том, какие токи разрешается пропускать через разъем внешней платы.
1.2.2 Особенности проектирования модулей системной шины При проектировании узлов УВВ, входящих в интерфейсную часть УВВ, необходимо учитывать временные диаграммы системной шины ISA (рисунок 1.5). Наиболее важными при проектировании УВВ являются следующие временные интервалы:
задержка между выставлением адреса и передним фронтом строба обмена (не менее 91 нс) — определяет время распознавания своего адреса проектируемым УВВ;
длительность строба обмена (не менее 176 нс);
задержка между передним фронтом сигналаIOR и выставлением УС читаемых данных (не более 110 нс) — определяет требования к быстродействию буфера данных УВВ;
задержка между задним фронтом сигналаIOW и снятием записываемых данных (не менее 30 нс) — определяет требования к быстродействию принимающих данные узлов УВВ.
Обобщенная структурная схема интерфейсной части УВВ, включает в себя все следующие узлы (рисунок 3.1):
входные буфера (не обязательны);
двунаправленный буфер данных (в общем случае должен быть разделен на два для каждого байта);
выходной буфер управляющих сигналов;
селектор адреса (AS);
формирователь внутренних стробов (STR);
формирователь сигнала асинхронного обмена I/O CH RDY (DK).
Рисунок 1.6 Обобщенная структурная схема интерфейсной части УВВ | |
Буферирование системных сигналов применяется для электрической развязки с цель обеспечение требуемых входных и выходных токов (уровни напряжения на ISA — ТТЛ). Для буферирования микросхемы магистральных приемников, передатчиков, приемопередатчиков, называемые также буферами или драйверами.
Приемники магистральных сигналов должны удовлетворять двум основным требованиям: малые входные токи и высокое быстродействие (они должны успевать отрабатывать в течение отведенных им временных интервалов циклов обмена).
Требованиям, предъявляемым к приемникам, удовлетворяют следующие серии микросхем: КР1533 (SN74ALS), К555 (SN74LS) и КР1554 (74АС). Величины входных токов логического нуля для них составляют соответственно 0,2 мА, 0,4 мА и 0,2 мА, а величины временных задержек не превышают соответственно 15 нс, 20 нс и 10 нс. Требованиям, предъявляемым к приемникам, удовлетворяют также микросхемы электрически программируемых ППЗУ и ПЛМ серии КР556 (136, N82S, DM87S, НМ76). Это тоже немаловажно, так как их очень удобно использовать в схемах селекторов адреса УВВ. Отметим, что малые входные токи микросхем серий КР1533 и КР1554 позволяют подключать к линии магистрали даже два входа таких микросхем.
Требования, предъявляемые к передатчикам: большой выходной ток и высокое быстродействие. Часто они должны иметь также отключаемый выход (например, для шины данных), то есть иметь выход с открытым коллектором или с тремя состояниями. Это связано с необходимостью перехода УВВ в пассивное состояние в случае отсутствия обращения к нему. Выбор микросхем передатчиков гораздо больше, такие микросхемы есть практически в каждой серии (К155, К555, КР1533, К559 и т. д.).
Требования к приемопередатчикам включают в себя требования к приемникам и передатчикам, то есть малый входной ток, большой выходной ток, высокое быстродействие и обязательное отключение выходов. Надо отметить, что в простейшем случае (когда разрядов немного) приемопередатчики могут быть построены на микросхемах приемников и передатчиков.
1.3 Выводы к главе 1
В данной главе произведён анализ вариантов подключения и построения контроллеров индикации на PIC микроконтроллерах. Кроме того рассмотрена системная шина ISA, её характеристики, а также особенности проектирования модулей этой системной шины.
2. Разработка схемы модуля
2.1 Разработка обобщенной схемы модуля Разрабатываемое устройство отображения информации предназначено для использования в системах различного уровня в комплекте с персональной ЭВМ. Устройство состоит из дисплея (2 семисегментных индикатора), предназначенного для вывода информации, программное обеспечение, разработанное для обслуживания блока, обеспечивает отображением символов на дисплее.
Рисунок 2.1 — Обобщенная схема адаптера интерфейса связи Примечание:
БД — буфер данных
СА — селектор адреса СБИС — специализированная БИС РИС — разъем интерфейса связи БИ — блок индикации
ISA — к шине ISA
2.2 Выбор СБИС и описание её структуры
PIC16F84 относится к семейству КМОП микроконтроллеров. Отличается тем, что имеет внутреннее 1K x 14 бит EEPROM для программ, 8-битовые данные и 64байт EEPROM памяти данных. При этом отличаются низкой стоимостью и высокой производительностью. Все команды состоят из одного слова (14 бит шириной) и исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс). PIC16F84 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Периферия включает в себя 8-битный таймер/счетчик с 8-битным программируемым предварительным делителем (фактически 16 — битный таймер) и 13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25 мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий ввода/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Разработки на базе контроллеров PIC16F84 поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором (только фирмы Microchiр) и программатором.
Серия PIC16F84 подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т. д.).
Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстродействие, простота использования и гибкость ввода/вывода делает PIC16F84 привлекательным даже в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры.
Cледует добавить, что встроенный автомат программирования EEPROM кристалла PIC16F84 позволяет легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как для тиражирования, так и для занесения калибровочных данных уже после окончательного тестирования.
Обзор характеристик
Высокоскоростной RISC процессор
? только 35 простых команд;
? все команды выполняются за один цикл (400ns), кроме команд перехода, выполняющихся за два цикла;
? рабочая частота 0 Гц … 10 МГц (min 400 нс цикл команды);
? 14- битовые команды;
? 8- битовые данные;
? 1024×14 электрически перепрограммируемой программной памяти на кристалле (EEPROM);
? 36×8 регистров общего использования;
? 64×8 электрически перепрограммируемой EEPROM памяти для данных;
? восьмиуровневый аппаратный стек;
? прямая, косвенная и относительная адресация данных и команд;
? четыре источника прерывания:
? внешний вход INT,
? переполнение таймера RTCC,
? прерывание при изменении сигналов на линиях порта B,
? по завершению записи данных в память EEPROM.
Периферия и Ввод/Вывод
? 13 линий ввода-вывода с индивидуальной настройкой;
? втекающий/вытекающий ток для управления светодиодами.
? макс. вытекающий ток — 20 мА. ,
? макс. втекающий ток — 25 мА.,
? TMR0: 8 — битный таймер/счетчик RTCC с 8-битным программируемым предварительным делителем.
Специальные свойства
? автоматический сброс при включении;
? таймер включения при сбросе;
? таймер запуска генератора;
? Watchdog таймер WDT с собственным встроенным генератором, обеспечивающим повышенную надежность;
? EEPROM бит секретности для защиты кода;
? экономичный режим SLEEP;
? выбираемые пользователем биты для установки режима возбуждения встроенного генератора:
? RC генератор: RC;
? обычный кварцевый резонатор: XT;
? высокочастотный кварцевый резонатор: HS;
? экономичный низкочастотный кристалл: LP;
? встроенное устройство программирования EEPROM памяти программ и данных; используются только две ножки.
? экономичная высокоскоростная КМОП EPROM технология;
? статический принцип в архитектуре;
? широкий диапазон напряжений питания и температур:
? коммерческий: 2.0 … 6.0 В, 0…+70С,
? промышленный: 2.0 … 6.0 В, −40…+70С,
? автомобильный: 2.0 … 6.0 В, 40…+125С;
? низкое потребление:
? 2 мА типично для 5 В, 4МГц,
? 15 мкА типично для 2 В, 32КГц,
? 1 мкА типично для SLEEP режима при 2 В.
Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (Гарвардская архитектура). Шина данных и память данных (ОЗУ) — имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14- битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл, исключая команды переходов. В PIC16F84 программная память объемом 1К х 14 расположена внутри кристалла. Исполняемая программа может находиться только во встроенном ПЗУ.
Рисунок 2.2 — Структурная схема PIC16F84
Рисунок 2.3 — Обозначение ножек и принципиальная схема Назначение ножек Таблица 2.1 — Обозначения ножек и их функциональное назначение
Обозначение | Нормальный режим | Режим записи EEPROM | |
RA0 — RA3 | Двунаправленные линии ввода/вывода. Входные уровни ТТЛ | ||
RA4/RTCC | Вход через триггер Шмитта. Ножка порта ввода/вывода с открытым стоком или вход частоты для таймера/счетчика RTCC | ||
RB0/INT | Двунаправленная линия порта ввода/ вывода или внешний вход прерывания Уровни ТТЛ | ||
RB1 — RB5 | Двунаправленные линии ввода/ вывода. Уровни ТТЛ | ||
RB6 | Двунаправленные линии ввода/ вывода. Уровни ТТЛ. | Вход тактовой частоты для EEPROM | |
RB7 | Двунаправленные линии ввода/ вывода. Уровни ТТЛ. | Вход/выход EEPROM данных. | |
MCLR/Vрр | Низкий уровень на этом входе генерирует сигнал сброса для контроллера. Активный низкий. | Сброс контроллера Для режима EEPROMподать Vрр. | |
OSC1/CLKIN | Для подключения кварца, RC или вход внешней тактовой частоты | ||
OSC2/CLKOUT | Генератор, выход тактовой частоты в режиме RC генератора, в остальных случаях — для подкл. кварц | ||
Vdd | Напряжение питания | Напряжение питания | |
Vss | Общий (земля) | Общий | |
2.3 Обзор регистров и ОЗУ Область ОЗУ организована как 128×8. К ячейкам ОЗУ можно адресоваться прямо или косвенно, через регистр указатель FSR (04h). Это также относится и к EEPROM памяти данных-констант.
Таблица 2.2 — Регистры
Page 0 | Page 1 | |||
Indirect add. | ||||
RTCC | OPTION | |||
PCL | ||||
STATUS | ||||
FSR | ||||
PORT A | TRISA | |||
PORT B | TRISB | |||
EEDATA | EECON1 | |||
EEADR | EECON2 | |||
0A | PCLATH | 8A | ||
0B | INTCON | 8B | ||
0C 2F | 36 регистров общего назначения | тоже | 8C AF | |
7F | не существует | B0 FF | ||
В регистре статуса (03h) есть биты выбора страниц, которые позволяют обращаться к четырем страницам будущих модификаций этого кристалла. Однако для PIC16F84 память данных существует только до адреса 02Fh. Первые 12 адресов используются для размещения регистров специального назначения. Регистры с адресами 0Ch-2Fh могут быть использованы, как регистры общего назначения, которые представляют собой статическое ОЗУ. Некоторые регистры специального назначения продублированы на обеих страницах, а некоторые расположены на странице 1 отдельно. Когда установлена страница 1, то обращение к адресам 8Ch-AFh фактически адресует страницу 0. К регистрам можно адресоваться прямо или косвенно. В обоих случаях можно адресовать до 512 регистров.
2.4 Работа PIC16F84
Для работы микроконтроллера необходимо:
определиться с управляющими сигналами, сигналами ввода/вывода и т. д.
определиться с вводимыми и выводимыми данными;
разработать программный код для микроконтроллера.
Зададим назначение ножек PIC16F84, которое будет использоваться в данной конкретной работе.
Таблица 2.3 — Используемые контакты и их назначение
Обозначение | Назначение | Значение | |
RA0 — RA3 | линия ввода. | 0, 1 | |
RA4/RTCC | не используется | ||
RB0/INT | внешний вход прерывания | прерывание по нарастающему фронту | |
RB1 — RB7 | линия вывода. | 0, 1 | |
MCLR/Vрр | сигнал сброса для контроллера. | норм. работа 0- сброс | |
OSC1/CLKIN OSC2/CLKOUT | для подключения кварца | ; | |
Vdd | напряжение питания | ; | |
Vss | общий | ; | |
Режим 8 битовых символов на дисплее, ввод слева — простейший формат отображения в котором каждой позиции дисплея определена строка (полустрока) в ОЗУ отображения.
Для определения входных и выходных данных рассмотрим для начала расположение индикаторов дисплея.
Рисунок 2.4 — Расположение индикаторов дисплея Как видно из Рисунка 2.4 индикаторы A-G позволяют отображать информацию на самом дисплее. Также для подключения имеется индикатор H, который представляет собой точку. Для простоты построения программного кода микроконтроллера индикатор H использоваться не будет.
Таким образом для отображения информации на одном дисплее достаточно одного микроконтроллера. Контакты микроконтроллера RB1-RB7 будут соответствовать индикаторам A-H. Высокий выходной сигнал (т.е. 1) с микроконтроллера будет зажигать соответствующие индикаторы.
Например, нам необходимо отобразить на дисплее цифру 7, для этого необходимо, чтобы на индикаторе загорелись A, B и C, что соответствует контактам RB1, RB2 и RB3 соответственно. Значит микроконтроллер должен выдать на порт B (1−7) такую последовательность: 1 110 000.
С выходными сигналами разобрались, теперь перейдём к входным.
Входные сигналы будут соответствовать цифрам, которые необходимо отобразить. Порт A (не считая RA4) предназначен для ввода информации. Для отображения цифр на экране индикатора нам потребуется определиться с входной последовательностью. Составим таблицу соответствия входов и выходов микроконтроллера.
Таблица 2.4 — входные и, соответствующие им, выходные сигналы
Цифра | Входы | Выходы | ||||||||||
RA0 | RA1 | RA2 | RA3 | RB1 (A) | RB2 (B) | RB3 (C) | RB4 (D) | RB5 (E) | RB6 (F) | RB7 (G) | ||
Определившись с входными/выходными последовательностями и сигналами можно приступать к программированию микроконтроллера.
Для этого нам понадобятся следующие вещи:
— микpосхема PIC16F84;
— ассемблеp MPALC;
— пpогpамматоp PROPIC;
Текст программы находится в Приложении А.
Теперь у нас имеется запрограммированный микроконтроллер который уже можно использовать в схеме.
2.5 Выбор адресного пространства
При выборе зоны адресов проектируемого модуля необходимо учитывать распределение адресов ввода/вывода стандартных и используемых УВВ микропроцессорной системы и выбирать адреса из свободных зон. В таблице 2.2 приведена карта адресов УВВ архитектуры IBM PC.
Таблица 2.5 — Карта адресов УВВ архитектуры IBM PC | ||
Зона адресов | Устройство ввода/вывода | |
000−01F | Контроллер ПДП (DMAmaster) | |
020−021 | Контроллер прерываний (Мaster) | |
022−023 | Регистры управления аппаратурой. Порты ввода/вывода | |
040−05F | Регистры управления таймером | |
060−06F | Контроллер интерфейса клавиатуры (8042) | |
0A0−0BF | Контроллер прерываний (Slave) | |
070−07F | Порты RTC и порты ввода/вывода CMOS | |
080−09F | Регистры ПДП | |
0C0−0DF | Контроллер ПДП (DMA — slave) | |
0F0−0FF | Математический сопроцессор | |
1F0−1FB | Контроллер жесткого диска | |
278−27F | Параллельный порт #2 | |
2B0−2DF | Контроллер графического адаптера | |
2F8−2FF | Последовательный порт #2 | |
360−36F | Сетевые порты | |
378−37F | Параллельный порт #1 | |
3B0−3BF | Адаптер параллельного порта и монохромного режима | |
3C0−3CF | EGA-адаптер | |
3D0−3FD | CGA-адаптер | |
3F0−3F7 | Контроллер дисковода на гибких дисках | |
3F8−3FF | Последовательный порт #1 | |
Требования, предъявляемые к селекторам адреса:
высокое быстродействие (селектор адреса должен иметь задержку не более чем интервал между выставлением адреса и началом сигнала строба обмена);
возможность изменения селектируемых адресов (особенно важно для устройств ввода/вывода из-за малого количества свободных адресов);
малые аппаратурные затраты.
Самое простое решение при построении селектора адреса — использование только микросхем логических элементов. Основным достоинством такого подхода является высокое быстродействие (задержка не превышает 30 нс).
Выбираем адрес 310h.
Плата занимает два адреса.
Выделяем зоны:
1 — не изменяющаяся, определяет адрес платы, это старшие разряды;
2 — переменная, определяет адрес устройства внутри этого модуля, это младшие разряды.
На рисунке 2.6 показана схема селектора адреса.
Таблица 2.6 — Адрес
AEN | SA9 | SA8 | SA7 | SA6 | SA5 | SA4 | SA3 | SA2 | SA1 | SA0 | |
Рисунок 2.5 — Схема построения селектора адреса
2.6 Разработка структуры сопряжения с внешними сигналами Управляющие сигналы подаются непосредственно на БИС PIC16F84, а данные и комманды передаются через буферный регистр, что необходимо для синхронизации работы устройства и подключаемой ЭВМ.
Управление устройством осуществляется с помощью управляющих сигналов (Таблица 2.7), которые передаются устройству по линиям, подключенным к разъёму шины ISA и составляют канал управления устройством.
Таблица 2.7 — Управляющие сигналы
Сигнал | Назначение сигнала | Вход | Выход | |
SA<9…0> | Адресные сигналы | -; | ||
AEN | Передача данных/передача команд | -; | ||
SD<7…0> | Шина данных | -; | ||
— IOW | Разрешение записи | -; | ||
IRQ | Прерывание | -; | ||
RESET DRV | Аппаратный сброс устройства | -; | ||
Дисплейная часть устройства организована следующим образом. Информация из шины ISA передаётся в регистр по линиям SD1-SD7, после разрешения записи (-IOW) из регистра информация попадает непосредственно в PIC16F84. После обработки микроконтроллером, выдаются сигналы непосредственно на индикатор.
2.7 Выбор элементной базы Для создания разрабатываемого устройства были использованы два микроконтроллера PIC16F84 для двух индикаторов АЛС314А.
Другие полупроводниковые приборы были выбраны из соображения их максимальной электрической совместимости с выходными характеристиками микроконтроллера.
Выводы к главе 2
В данной главе произведены разработка обобщенной схемы модуля, выбор СБИС описание её структуры, выбор адресного пространства, разработка структуры сопряжения с внешними сигналами, выбор элементной базы. Рассмотрены связь микроконтроллера с системной шиной, программирование и работа PIC16F84, интерфейс дисплея.
3 Разработка программных модулей инициализации, управления и контроля
3.1 Анализ методов построения алгоритмов инициализации и управления Алгоритм программирования модулей зависит от типа используемой программируемой СБИС и режима обмена между СБИС и процессором компьютера через системную шину ISA.
Инициализация аппаратных модулей проводится в несколько этапов. На первом этапе выполняется инициализация СБИС модуля. На последующих этапах производится инициализация системы прерываний или ПДП, в зависимости от используемых режимов обмена данными между модулем и процессором системы.
В общем виде инициализация СБИС и модуля в целом заключается в выполнении следующей последовательности действий:
1. Формирование сброса СБИС. Сброс СБИС в исходное состояние производится двумя способами: аппаратным или программным. Необходимо помнить, что аппаратный сброс на системной шине формируется только при включении питания и в процессе работы сигнал «сброс» находится в пассивном состоянии. Программный способ более универсален и позволяет инициализировать СБИС в процессе работы модуля. Для формирования программного сброса требуется в СБИС по адресу регистра режима или сброса подать соответствующий двоичный код. Значение кода сброса определено спецификацией СБИС. Значение адреса регистра режима или сброса определяется разработчиком модуля, то есть в процессе программирования значение адреса фиксировано.
2. Блокирование системы прерываний. Блокирование прерываний необходимо для модулей, которые работают в режиме прерываний. Прерывания должны быть запрещены на все время инициализации СБИС и модуля в целом. Блокирование прерываний производится одним из двух способов. Первый способ заключается в подаче команды «запретить прерывания». В результате выполнения этой команды вход процессора «прерывание» будет аппаратно закрыт. Второй способ заключается в программной подаче соответствующей маски (двоичного кода = 00 или FFh) по адресу регистра маски запросов прерываний контроллера прерываний. В результате выполнения входы «запрос прерывания» контроллера прерываний будут аппаратно закрыты. На практике в основном используют первый способ, так как он более простой. Необходимо добавить, что блокирование системы прерываний рекомендуется проводить при инициализации всех модулей, независимо от режима обмена.
3. Задание режима работы СБИС. Задание режима работы СБИС является основным этапом при инициализации. Последовательность действий при задании режима работы строго регламентирована спецификацией СБИС. В программном модуле требуется только выдержать эту последовательность действий, которая заключается в последовательной подаче двоичных кодов (управляющих слов) по адресам регистров режима СБИС. Таким образом, для задания режима требуется сформировать двоичные коды управляющих слов (форматы управляющих слов определены спецификацией СБИС), определить адреса регистров режима (задаются разработчиком аппаратуры модуля) и подать последовательность заданных двоичных кодов по известным адресам портов ввода-вывода.
4. Инициализация выходных линий СБИС канала связи с внешними устройствами. Данное действие выполняется для тех СБИС, которые осуществляют непосредственную связь с внешними устройствами, например, СБИС интерфейса связи. Инициализация выходных линий СБИС заключается в подаче двоичных кодов (управляющих слов) по адресам регистров управления СБИС. Адреса регистров управления задаются разработчиками аппаратуры модуля. Формат управляющих слов определен спецификацией СБИС. Требуется сформировать такие двоичные коды управляющих слов, которые соответствуют пассивному состоянию канала связи. Пассивное состояние определяется используемым стандартом или интерфейсом связи модуля.
5. Разблокирование системы прерываний. Разблокирование системы прерываний производится в зависимости от использованного способа блокирования системы прерываний (п.2). Первый способ заключается в подаче команды «разрешить прерывания». В результате выполнения этой команды вход процессора «прерывание» будет аппаратно открыт. Второй способ заключается в программной подаче соответствующей маски (двоичного кода) по адресу регистра маски запросов прерываний контроллера прерываний. В результате выполнения соответствующие входы «запрос прерывания» контроллера прерываний будут аппаратно открыты.
В общем виде инициализация системы прерываний заключается в выполнении следующей последовательности действий:
1) Размещение подпрограммы обслуживания прерывания. В оперативной памяти компьютера размещается подпрограмма обслуживания прерывания. Определяется физический адрес, по которому расположена первая команда подпрограммы.
2) Определение места в таблице прерываний. В таблице прерываний определяется место используемого вектора. Место в таблице прерываний фиксировано и зависит от используемого вектора прерываний (номера запроса прерывания).
3) Заполнение таблицы прерываний. Старое значение таблицы прерываний запоминается в основной программе. Значение физического адреса (сегмент, смещение) подпрограммы заносится в таблицу прерываний по определенному месту. По окончанию работы основной программы требуется старое значение таблицы прерываний вернуть на свое место.
4) Программирование контроллера прерываний. В регистр маски контроллера прерываний занести двоичный код, который открывает вход «запрос прерывания» используемого запроса прерывания. Адрес регистра маски контроллера прерывания фиксирован и определен архитектурой компьютера.
3.2 Разработка алгоритмов инициализации и управления Для управления модулем выполняются следующие операции:
— вывод данных при обращении по адресу 310h
— выполнение подпрограммы обработки прерывания (9).
При инициализации устройства необходимо:
— сохранить старый вектор прерываний и старую маску контроллера прерываний;
— установить новый вектор прерываний, то есть поместить в память по адресу, соответствующему нашему прерыванию адрес нашей функции обработки прерывания и установить новую маску прерываний, то есть разрешить используемое прерывание в котроллере прерываний.
3.3 Разработка программного модуля Управление устройством производится с помощью записи в соответствующие порты вывода команд и управляющих сигналов. Состояния выводов соответствующих портов и используемые при работе команды приведены в таблице 3.1. Данные по цифрам берутся из таблицы.
Таблица 3.1 — Управление устройством
Команда | 310h | ||||||||
DAT0 | DAT1 | DAT2 | DAT3 | DAT4 | DAT5 | DAT6 | DAT7 | ||
Вывод двух цифр 0 и 1 соответственно | |||||||||
Вывод двух цифр 3 и 7 соответственно | |||||||||
Работа программы управления основана на записи и чтении данных (байтов) из порта 310h. Чтение и запись данных в соответствующие порты ввода-вывода осуществляется с помощью процедуры out (выдача байта в порт) и функции in, возвращающей значение прочитанного из соответствующего порта байта.
Программа написана на языке Borland C++ 3.1 с использованием вставок на языке ассемблера и предназначена для работы с операционной системой MS-DOS версии 6.22 и выше.
Текст программы приведен в приложении В.
3.4 Выводы к главе 3
В данной главе были разработаны алгоритмы инициализации и управления и на их основе написаны соответствующие программные модули. Программа написана на языке Си.
Заключение
Разработанный в данном курсовом проекте препроцессор на базе PIC контроллера относится к системам индикации, является полезным устройством при проектировании систем на базе обычных персональных ЭВМ типа IBM PC. Разработанное устройство не требует для подключения никаких дополнительных устройств и имеет достаточно гибкое, легко настраиваемое под конкретные потребности программное обеспечение.
Исходя из выше сказанного, можно утверждать, что разработанное устройство вполне можно применять в составе различных систем, где кроме стандартных устройств вывода, информации необходимы дополнительные, компактные и многофункциональные устройства.
Библиографический список контроллер модуль шина программа Программирование на языке C для AVR и PIC микроконтроллеров. Сост. Шпак Ю. А. — К.: МК-Пресс, 2006.
Мячев А.А., Иванов В. В. Интерфейсы вычислительных систем на базе минии микроЭВМ /Под ред. Б. Н. Наумова. — М.: Радио и связь, 1986.
Стандарт ВятГТУ «ОБЩИЕ ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ТЕКСТОВЫХ ДОКУМЕНТОВ» СТП ВятГТУ 101−2000.
Усатенко С.Т., Каченюк Т. К., Терехова М. В. Выполнение электрических схем по ЕСКД: Справочник. — 2-е изд., перераб. и доп. — М.: Издательство стандартов, 1992.
Проектирование цифровых устройств на однокристальных микроконтроллерах. В. В. Сташин, А. В. Урусов, О. Ф. Мологонцева. Москва, Энергоатомиздат, 1990, стр. 199.
Аналоговые и цифровые интегральные схемы. Под ред. С. В. Якубовского, Радио и связь, 1980.
Шабалин Л. А. Проектирование микропроцессорных устройств систем управления / Методичесие указания по выполнению курсового проекта. — Киров, ВятГТУ, 2005.
Шевкопляс Б. В. Микропроцессорные структуры. Инженерные решения. Дополнение первое: Справочник. — М.: Радио и связь, 1993.
Приложение А
(обязательное)
Программный код микроконтроллера
; Секция заголовка
;
; описание опеpационных pегистpов
TMR0 EQU 01h
PC EQU 02h
STATUS EQU 03h
FSR EQU 04h
; pегистpы ввода/вывода
CNTRLPORT EQU 05h
DATAPORT EQU 06h
; ячейки ОЗУ
ONE EQU 0Ch
TWO EQU 0Dh
THREE EQU 0Eh
FOUR EQU 0Fh
FIVE EQU 10h
SIX EQU 11h
SEVEN EQU 12h
EIGHT EQU 13h
NINE EQU 14h
ZERO EQU 15h
DIGIT EQU 16h
; биты pегистpа STATUS
C EQU 0h
DC EQU 1h
Z EQU 2h
PD EQU 3h
TO EQU 4h
RP EQU 5h
; упpавляющие pегистpы
TRISA EQU 85h
TRISB EQU 86h
; слова инициализации для поpтов ввода/вывода
INITA EQU B'11 111 111'
INITB EQU B'0'
;
; Рабочая секция
;
; начало исполняемого кода
ORG 0
GOTO BEGIN
;
ORG 100h
BEGIN
; инициализация портов ввода/вывода
MOVLW INITA
MOVWF TRISA
MOVLW INITB