Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОМТ (на редактировании).doc
Скачиваний:
31
Добавлен:
17.05.2015
Размер:
3.86 Mб
Скачать

Содержание отчета

В отчете необходимо привести скриншот (скриншоты) основного окна программы MPLAB для различных этапов написания и отладки программы (по заданию преподавателя).

Контрольные вопросы

  1. Назначение программы MPLAB.

  2. Какое окно Вы вызовете для просмотра ячеек энергонезависимого ПЗУ?

  3. В процессе отладки вам необходимо наблюдать состояние бита 3 ячейки памяти по адресу 0x73. Ваши действия?

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

  5. В лабораторной работе была рассмотрена конфигурационная ячейка настройки тактового генератора. Какие еще существуют конфигурационные ячейки? Каково их назначение?

Лабораторная работа 2 Изучение запоминающих устройств микроконтроллеровPic-micro

Цель работы: изучение работы и программирование памяти микроконтроллера PIC16F873A.

В состав микроконтроллера PIC16F873A входит четыре вида запоминающих устройств: 14-разрядная FLASH память программ, объемом 4096 слов, 192 ячейки 8-разрядной статической оперативной памяти данных, 128 ячеек 8-разрядной энергонезависимой EEPROM памяти данных и восьмиуровневый аппаратный стек.

FLASH память программ

Память программ предназначена для хранения кода исполняемой программы и неизменяемых данных, то есть констант. Чтение и запись информации из FLASH памяти программ осуществляются аналогично чтению и записи информации в энергонезависимую EEPROM память данных, и будут рассмотрены ниже. Запись программы во FLASH память осуществляется с помощью программатора-отладчика PICkit 2, для этого используются три вывода микроконтроллера: PGD – вход данных, PGC – вход синхронизации и PGM – вход выбора режима низковольтного программирования.

Карта памяти программ микроконтроллера PIC16F873A приведена на рис. 2.1.

Рис. 2.1. Организация FLASH памяти программ

Оперативная память данных – регистровый файл.

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

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

Рис. 2.2 Организация оперативной памяти данных

Вся память данных распределена между регистрами общего и специального назначения и разделена на четыре банка. Первые 32 ячейки в каждом банке зарезервированы под РСН, а 96 ячеек банка 0 и банка 1 занимают РОН. Выбор активного банка осуществляется изменением соответствующих разрядов регистра STATUS: RP0 и RP1 при прямой адресации, или IRP при косвенной.

Карта оперативной памяти данных приведена на рис. 2.2.

Следует отметить, что обращение к РСН в программе возможно, как путем указания их фактического шестнадцатеричного адреса, так и путем указания их символьного имени. В последнем случае в состав исходного текста программы необходимо включить директиву Ассемблера #include p16f873a.inc,подключающую файл соответствия символьных обозначений числовым значениям адресов для данного микроконтроллера. Символьными именами можно обозначать и отдельные биты РСН.

Энергонезависимая память данных EEPROM

Энергонезависимая EEPROM память данных предназначена для хранения информации, которая должна сохраняться даже при отключении электропитания микроконтроллера. EEPROM память может быть перезаписана большее количество раз по сравнению с FLASH. Минимальное число циклов стирание/запись EEPROM составляет 100 тысяч, а FLASH памяти – всего 1 тысяча.

Карта памяти EEPROM приведена на рис. 2.3.

Рис. 2.3. Организация энергонезависимой

памяти данных EEPROM

Для чтения и записи информации в EEPROM память данных и во FLASH память программ используются регистры специального назначения: EEDATA – регистр данных (младший байт данных при обращении к 14-разрядной памяти программ), EEDATH – старший байт данных при обращении к памяти программ, EEADR – регистр адреса (младший байт адреса при обращении к 4К памяти программ), EEADRH – старший байт адреса при обращении к памяти программ, EECON1 – первый регистр управления EEPROM (FLASH), EECON2 – второй регистр управления EEPROM (FLASH), INTCON – регистр управления прерываниями, PIE2 – второй регистр разрешения прерываний и PIR2 –второй регистр флагов прерываний.

Для чтения данных из EEPROM необходимо выполнить следующую последовательность действий:

– записать адрес необходимой ячейки памяти в регистр EEADR;

– сбросить в «0» бит EEPGD в регистре EECON1;

– инициировать операцию чтения путем установки в «1» бита RD в регистре EECON1;

– считать полученные данные из регистра EEDATA.

Чтение данных из FLASH памяти программ осуществляется аналогично, последовательность действий при этом немного сложней:

– записать младший байт адреса необходимой ячейки в регистр EEADR, а старший – в регистр EEADRH;

– установить в «1» бит EEPGD в регистре EECON1;

– инициировать операцию чтения путем установки в «1» бита RD в регистре EECON1;

– сформировать выдержку времени длительностью два машинных цикла, например путем выполнения двух холостых команд NOP;

– считать младший байт полученных данных из регистра EEDATA, а старший – из регистра EEDATH.

Последовательность действий при записи информации в EEPROM следующая:

  1. Проверить состояние бита WR в регистре EECON1 и убедиться, что он равен «0», те есть в настоящий момент не производится запись в EEPROM либо FLASH.

  2. Записать адрес нужной ячейки в регистр EEADR.

  3. Записать данные в ячейку EEDATA.

  4. Сбросить в «0» бит EEPGD в регистре EECON1.

  5. Установить в «1» бит WREN в регистре EECON1, разрешив запись в EEPROM.

  6. Запретить прерывания, если они были разрешены.

  7. Выполнить обязательную последовательность из пяти команд.

– записать значение H'55' в регистр EECON2 (две команды, сначала запись в W, затем в EECON2).

– записать значение H'AA' в регистр EECON2 (две команды, сначала запись в W, затем в EECON2).

– установить в «1» бит WR в регистре EECON1.

  1. Разрешить прерывания, если это необходимо.

  2. Сбросить в «0» бит WREN в регистре EECON1.

  3. По окончании цикла записи автоматически сбрасывается в «0» бит WR регистра EECON1 и взведется в «1» флаг прерывания EEIF в регистре PIR2 (сбрасывается программно).

Не смотря на то, что флаг прерывания взводится после окончания каждого цикла записи обработка прерываний будет инициирована только в том случае если они разрешены установкой в «1» битов GIE и PEIE регистра INTCON и не маскированы (бит EEIE в регистре PIE2 взведен).

Стек

Стеком называется область оперативной памяти, организованная по принципу «первым вошел – последним вышел». В микроконтроллерах PIC16 стек используется исключительно для хранения адресов возврата из подпрограмм. В отличии от других микропроцессоров и микроконтроллеров, в микроконтроллерах PIC16 запись данных на стек не предусматривается. Выбор очередной свободной ячейки стековой памяти осуществляется автоматически, указатель стека программно не доступен.

Стек имеет всего восемь 13-разрядных ячеек статической оперативной памяти (рис. 2.4.), следовательно в программе для микроконтроллера PIC16 не должно быть более восьми вложенных подпрограмм, с учетом обработчиков (драйверов) прерываний.

Рис. 2.4. Организация стековой памяти