Микроконтроллеры для систем автоматики - часть 14

 

  Главная      Учебники - Производство     

 

поиск по сайту           правообладателям

 

 

 

 

 

 

 

 

 

содержание   ..  12  13  14  15   ..

 

 

Микроконтроллеры для систем автоматики - часть 14

 

 

 

55 

запрещаются.  Программа  пользователя  может  вновь  установить  этот  бит,  разрешив 
вложенные  прерывания.  Инструкция  возвращения  из  подпрограммы  обслуживания 
прерывания reti также устанавливает бит I в регистре статуса SREG, разрешая дальнейшие 
прерывания. 

Биты ISCxx в  регистре MCUCR описывают  уровни  и  фронты  прерывающих 

сигналов на контактах INT0 и INT1. 

º 

Биты 3, 2 - ISC11, ISC10 (Interrupt Sense Control 1 bit 1 and bit 0):  биты 
активизации  входа INT1.  Уровень  и  фронты  на  ножке INT1,  которые 
инициируют  прерывание,  определены  в  таблице 5.6. Импульсы  короче 
одного такта не гарантируют генерирование прерывания.  

Таблица 7.2.  

Активизация параметров входа INT1 (INT0) 

ISC11 

(ISC01) 

ISC10 

(ISC00) 

 Описание 

0 0 

Низкий уровень сигнала INT1 (INT0) генерирует запрос на 
прерывание. 

Любое логическое изменение на INT1 (INT0) генерирует 
запрос на прерывание. 

1 0 

Задний фронт импульса на INT1 (INT0) генерирует запрос 
на прерывание. 

Передний фронт сигнала на INT1 (INT0) генерирует запрос 
на прерывание. 

º 

Биты  1, 0 – ISC01, ISC00 (Interrupt Sense Control 1 bit 1 and bit 0):  биты 
активизации входа INT0. Работают аналогично битам ISC11, ISC10. 

В  регистре  маскирования  прерываний GIMSK содержатся  флаги  внешних 

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

º 

Бит 7 - INT1:  внешнее  прерывание INT1  разрешено.  Если  бит INT1 
установлен и бит I в регистре статуса SREG также равен 1, то внешний вход 
запроса на прерывание INT1 становится активным.  

º 

Бит 6 - INT0: внешнее  прерывание INT0 разрешено.  Если  бит INT0 
установлен и бит I в регистре статуса SREG также равен 1, то внешний вход 
запроса на прерывание INT0 становится активным.  

8. ЭНЕРГОНЕЗАВИСИМАЯ ПАМЯТЬ ДАННЫХ 

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

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

 

56 

устанавливаются  специальные  прерывания  по  завершению  записи EEPROM (EEPROM 
Write Complete
).  Случайная  запись  в EEPROM предотвращается  выполнением 
специальных  процедур.  Для  работы  с EEPROM в  структуре  микроконтроллера  всегда 
предусматривается несколько регистров, хранящих адрес ячейки памяти, данные, команды 
и  флаги  состояния  памяти.  Например,  микроконтроллеру ATmega163  для  записи  байта 
данных в EEPROM необходимо 1.9 - 3.8 мс. В процессе работы с памятью он использует 
(рис. 8.1): 

º 

регистр статуса микроконтроллера SREG,  

º 

два адресных регистра EEARH и EEARL (EEPROM Address Registers), 

º 

регистр данных EEDR (EEPROM Data Register), 

º 

регистр управления EECR (EEPROM Control Register).  

 

   7 6 5 4  3  2 1 0 

SREG $3F 

($5F) 

 

 

 

 

 

 

 

EEARH $1F ($3F) 

- EEAR8 

EEARL $1E($3E)  EEAR7 EEAR6 EEAR5 EEAR4  EEAR3  EEAR2 EEAR1 EEAR0 

EEDR $1D ($3D)  EEDR7 EEDR6 EEDR5 EEDR4  EEDR3  EEDR2 EEDR1 EEDR0 
EECR $1C ($3C) 

 EERIE 

EEMWE 

EEWE EERE 

 

Рис. 8.1. Регистры, задействованные в управлении EEPROM 

Регистры  адреса EEPROM (EEPROM Address Registers) EEARH и EEARL 

позволяют адресовать 512 байт памяти пространства EEPROM. 

º 

Бит 0 регистра EEARH и  биты 7….0 регистра - EEARL - EEAR8…EEAR0 
(EEPROM address) образуют 9 битный адрес ячейки памяти. 

Начальные значения EEAR8….EEARO не определены. Обращаться за данными к 

EEPROM можно только после записи адреса. 

Регистр  данных EEDR (EEPROM Data Register)  хранит  данные  для  записи  в 

EEPROM  при  выполнении  операции  записи  или  данные,  считанные  из EEPROM, при 
выполнении операции чтения. 

º 

Биты 7 .. EEDR7…. EEDR0 (EEPROM Data) - данные EEPROM. 

Регистр  управления EECR (EEPROM Control Register)  предназначен  для 

управления записью и чтением EEPROM. 

º 

Бит 3 – EERIE (EEPROM Ready Interrupt Enable) - разрешение прерывания по 
готовности EEPROM. При установленных в состояние 1 бите EERIE и I-бите 
регистра SREG разрешается  прерывание  по  готовности EEPROM. При 
очищенном  бите EERIE прерывание  запрещено.  Запрос  прерывания  по 
готовности EEPROM при очищенном бите EEWE генерируется непрерывно. 
Вектор прерывания EE_RDY имеет адрес $1E. 

º 

Бит – EEMWE (EEPROM Master Write Enable) - управление  разрешением 
записи EEPROM. Бит EEMWE определяет,  будет  ли  установленный  в 
состояние 1 бит EEWE разрешать запись в EEPROM. При установленном в 
состояние  1  бите EEMWE установка  бита EEWE приведет  к  записи  в 
EEPROM  по  заданному  адресу.  Если  же  бит EEMWE будет  находиться  в 
состоянии 0, то  установка  бита EEWE никакого  эффекта  не  окажет. 
Установленный  программным  путем  бит EEMWE аппаратно  очищается 
через четыре тактовых цикла.  

 

57 

º 

Бит  1 – EEWE (EEPROM Write Enable) - разрешение  записи EEPROM. 
Сигнал  разрешения  записи EEPROM EEWE является  стробом  записи  в 
EEPROM.  Запись  установленных  данных  по  установленному  адресу 
EEPROM  выполняется  по  установке  бита EEWE. При  этом  бит EEMWE 
обязательно  должен  быть  в  состоянии  1,  иначе  запись  не  произойдет. 
Процесс 

записи EEPROM выполняется 

следующей 

процедурой 

(очередность выполнения пунктов 2 и 3 значения не имеет): 

Подождать сброса бита EEWE в состояние 0.  

Записать новый адрес в EEAR (при необходимости).  

Записать новые данные (при необходимости).  

Установить в состояние 1 бит EEMWE регистра EECR.  

В  течение  четырех  тактовых  циклов  после  установки EEMWE 
установить в состояние 1 бит EEWE.  

По  истечении  времени  записи  (типовое  значение 2,5 мс  при  напряжении 
питания Vcc = 5 В)  бит EEWE аппаратно  очищается.  Пользовательское 
программное  обеспечение  может  тестировать  состояние  этого  бита  для 
определения  момента  сброса  его  в 0, чтобы  начать  запись  следующего 
байта. После установки бита EEWE процессорное ядро, прежде чем начать 
выполнение следующей команды, останавливается на два тактовых цикла.  

º 

Бит 0 – EERE (EEPROM Read Enable) - разрешение чтения EEPROM. Сигнал 
разрешения  чтения EERE является  стробом  чтения EEPROM. Бит EERE 
должен быть установлен после записи в регистр EEAR требуемого адреса. 
После  аппаратной  очистки  бита EERE считываемые  данные  будут 
располагаться  в  регистре EEDR. Считывание  байта  данных  выполняется 
одной  командой  и  не  требует  опроса  бита EERE. При  установленном  бите 
EERE CPU останавливается на четыре тактовых цикла, прежде чем начнет 
выполнение  следующей  команды.  Пользователю  необходимо  тестировать 
состояние бита EEWE перед началом операции чтения. Если новые данные 
или  адрес  будут  записываться  в  регистры  ввода/вывода EEPROM в  то 
время, когда будет выполняться операция записи, то операция записи будет 
прервана и результат записи будет неопределенным.  

Содержимое EEPROM может быть разрушено при снижении напряжения питания 

V

cc

 до уровня, при котором процессорное ядро и EEPROM работают неправильно.  

Разрушение  данных EEPROM происходит  по  двум  причинам.  Во-первых,  для 

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

Разрушения данных можно предотвратить при следующих условиях: 

º 

Во  время  снижения  напряжения  питания  аппаратно  удерживать  сигнал 
сброса #RESET в активном (низком) состоянии. 

º  

В 

период 

снижения 

напряжения 

питания 

переводить 

ядро 

микроконтроллера  в  режиме  пониженного  энергопотребления  (Power Down 
Sleep).
  

º 

Сохранять  константы  в Flash-памяти  программ,  если  нет  необходимости 
изменять их программно. Flash память не изменяется процессорным ядром 
и, следовательно, не может быть повреждена.  

 

58 

9. ПОРТЫ ВВОДА-ВЫВОДА 

9.1. Организация ввода/вывода 

Порты  ввода-вывода  обеспечивают  ввод  и  вывод  данных  в  параллельном 

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

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

º 

однонаправленными,  предназначенными  только  для  выполнения  одной  из 
операций (ввод или вывод) по всем линиям; 

º 

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

º 

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

Последний  вариант  построения  схемы  порта  в  настоящее  время  наиболее 

распространен. Например, микроконтроллер ATmega163 имеет 32 линии ввода-вывода с 
индивидуальной настройкой, сгруппированных в 4 параллельных порта: порт А порт В, порт 
С,  порт D. Направление  передачи  данных  любого  вывода  любого  порта  может  быть 
изменено    независимо  от  направлений  других  выводов.  Для  работы  с  портами  в 
микроконтроллере предусмотрено 12 регистров, по три на каждый из портов (рис. 5.8): 

º 

регистры данных (Data Register): PORTA , PORTB, PORTC и PORTD; 

º 

регистры  направления  (Data Direction Register): DDRA, DDRB, DDRC и 
DDRD; 

º 

регистры входных контактов (Port A Input Pins): PINA; PINB, PINC и PIND. 

Все  выводы  портов  имеют  индивидуальные  подтягивающие  резисторы  (pull-up 

resistors).  Для  подключения  этих  резисторов  в  регистре  специальных  функций 
ввода/вывода SFIOR (Special Function Input Output Register) предусмотрен бит PUD (Pull-up 
Disabled).  

 

 

 

 

 

 

 

 

содержание   ..  12  13  14  15   ..