В большинстве микроконтроллеров PIC среднего и верхнего уровней имеется отдельная EEPROM-память небольшого объема, управление и доступ к которой осуществляются посредством регистров специального назначения, как и для других периферийных устройств. Наличие встроенной энергонезависимой памяти дает программисту возможность считывать и модифицировать различные статические данные, такие как показания автомобильного одометра, которые должны сохраняться при отсутствии питания (см. Пример 12.3 на стр. 439). Разумеется, для этой цели можно воспользоваться и внешней микросхемой EEPROM, например из линейки 24ХХХ (см. Рис. 12.26 на стр. 439). Однако при небольшом объеме данных, требующих хранения, использование внутренней EEPROM увеличивает надежность устройства и уменьшает его стоимость, габаритные размеры и энергопотребление.
Так что приступим к изучению возможностей этой энергонезависимой памяти. После прочтения этой главы вы:
• Ознакомитесь с характеристиками модуля EEPROM.
• Узнаете, как выполняется чтение/запись данных из/в модуль EEPROM.
• Поймете, каким образом в некоторых моделях микроконтроллеров FLASH-память программ можно использовать для хранения долговременных данных.
• Сможете сравнить модуль EEPROM и FLASH-память программ в качестве устройства хранения долговременных данных.
Устаревший к настоящему моменту микроконтроллер PIC16C84, выпущенный в 1994 году, был первым микроконтроллером PIC, у которого память программ была сделана по технологии EEPROM. Как мы уже видели на Рис. 2.13 (стр. 42), электрически стираемое ППЗУ похоже на обычное СППЗУ (EPROM). однако для его стирания не требуется источник ультрафиолетового излучения. Несмотря на то что технология EEPROM более дорога, чем EPROM, ее использование для реализации памяти программ было оправдано повышенным удобством при разработке опытных образцов устройств, а также при использовании микроконтроллера в учебных целях и радиолюбительской практике. В то же время появился и модуль EEPROM-памяти данных, в котором, отдельно от обычной памяти данных микроконтроллера, могло храниться до 64 байт долговременных данных.
Микроконтроллер PIC16C84 и аналогичная ему модель с FLASH-памятью программ PIC16F84 долгое время оставались единственными представителями в линейке микроконтроллеров PIC, имеющими память EEPROM-типа, — до появления в 1998 году микроконтроллера PIC16F87X. В большинстве своем все микроконтроллеры среднего уровня, выпущенные после 2000 года, были либо совершенно новыми моделями с FLASH-памятью программ, либо аналогами своих предшественников линейки PIC16CXXX с памятью программ EPROM-типа. Все используемые в данной книге модели имеют FLASH-память программ и модуль EEPROM.
Прежде чем приступить к изучению этого модуля, будет полезно ознакомиться с приложениями, требующими использования энергонезависимой памяти. Хорошим примером такого приложения является смарт-карта (см. Рис. 12.1 на стр. 369). В этой карте должны храниться, помимо всего прочего, номер счета, PIN-код, даты начала и конца срока действия карты. Некоторые из этих данных, такие как номер счета, являются по сути дела фиксированными. А защищенные данные могут изменяться пользователем в любой момент времени с помощью терминала. Если карточка используется в качестве банковской, то должна быть предусмотрена возможность записи на счет посредством банкомата информации о доступном кредите, а также изменение этой информации после совершения оплаты. Размеры смарт-карт и требования, предъявляемые к стоимости используемых в них процессоров, таковы, что наличие интегрированной EEPROM-памяти данных жизненно необходимо.
На Рис. 15.1 показана логическая организация модуля EEPROM моделей PIC16F62X[186]. Матрица памяти модуля не имеет никакого отношения к обычным областям памяти программ и памяти данных. Доступ к ней осуществляется посредством четырех РСН, которые используются для указания адреса интересующего нас байта, для хранения считываемого или записываемого байта данных, а также для управления процессами чтения и записи.
Матрица EEPROM-памяти
Модуль EEPROM микроконтроллеров среднего уровня[187] поддерживает до 256 8-битных ячеек. В моделях PIC16F627/8, PIC16F873/4 и PIC12F629/75 реализовано только 128 младших ячеек. В моделях PIC16F648 и PIC16F876/7 реализованы все 256 ячеек. Вот основные параметры этого модуля:
• Не менее 1 000 000 (107 typ) циклов стирания/записи на ячейку при напряжении 5 В и температуре 25 °C[188].
• Максимальная длительность цикла стирания/записи — 8 мс (4 мс typ).
• Срок сохранности данных более 40 лет (100 лет для микроконтроллеров линейки PIC16F62X).
Рис. 15.1.
∙ EEADR (регистр адреса EEPROM)