Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Читання й запис в енергонезалежну пам'ять

Регістри доступу до енергонезалежної пам'яті (EEPROM) розташовані в просторі введення/виведення.

Час запису лежить у діапазоні 2,5-4 мс і залежить від напруги живлення. Це самотактована функція яка, однак, дозволяє користувачеві визначити, чи можна записувати наступний байт. Якщо програма користувача робить запис в енергонезалежну пам'ять, повинно бути вжито деякі запобіжні заходи. При використанні в джерелі живлення конденсаторів великої ємності, напруга живлення наростає й спадає досить повільно. Це приводить до того, що процесор якийсь час працює при напрузі живлення нижче мінімуму достатнього для нормальної роботи схем тактування. При цьому ЦПП може здійснювати небажані переходи, потрапляючи на частини програми, що проводять запис в EEPROM. У таких випадках, для захисту вмісту EEPROM, необхідно використовувати зовнішні схеми, які формують сигнал скидання при зменшенні напруги живлення.

Для захисту від небажаного запису в EEPROM необхідно додержуватися деяких правил, які буде розглянуто нижче, при описі керуючого регістра енергонезалежної пам'яті.

При записі або читанні EEPROM процесор призупиняється на 2 машинних цикли до початку виконання наступної команди.

EEPROM Address Register (EEARH, EEARL)

Біт $1F ($3F) R/W Поч.знач. EEARH
- - - EEAR8
R R R R/W

 

Біт $1E ($3E) R/W Поч.знач. EEARL
EEAR7 EEAR6 EEAR1 EEAR0
R/W R/W R/W R/W

 

Рис. 7.1 - Регістри адреси EEPROM (EEARH, EEARL)

 

Біти 7-1 регістра EEARH зарезервовані. В AT90S8535 ці біти зарезервовані й завжди читаються як 0.

Біт 0 регістра EEARH і біти 7-0 регістра EEARL - Адреса EEPROM. Адресний регістр EEPROM задає адресу в 512-байтному просторі EEPROM. Байти даних EEPROM адресуються лінійно в діапазоні 0..512.

EEPROM Data Register (EEDR)

РЕГІСТР ДАНИХ EEPROM - EEDR

Біт $1D ($3D) R/W Поч.знач. EEDR
MSB - - LSB
R/W R/W R/W R/W

Рис. 7.2 - Регістр даних EEPROM (EEDR)

 

Біти 7..0 - EEDR7..0 - Дані EEPROM. Для операції запису регістр EEDR містить дані, які будуть записані в EEPROM за адресою в регістрі EEAR. Для операції читання в цей регістр читаються дані, прочитані з EEPROM за адресою в регістрі EEAR.

EEPROM Control Register (EECR)

Біт $1C($3C) R/W Поч.знач. EECR
- - - - EERIE EEMWE EEWE EERE
R R R R R R/W R/W R/W

 

Рис. 7.3 - Регістр керування EEPROM (EECR)

 

Біти 7..4 - зарезервовані. В AT90S8535 ці біти зарезервовані й завжди читаються як 0.

Біт 3 - EERIE (EEPROM Ready Interrupt Enable). Дозвіл переривання від EEPROM. Даний розряд управляє генерацією переривання, що виникає при завершенні циклу запису в EEPROM. Якщо цей розряд установлений в «1», переривання дозволені (якщо прапорець I регістра SREG також установлений в «1»). При скинутому розряді EEWE переривання генерується постійно.

Біт 2 - EEMWE (EEPROM Master Write Enable). Керування дозволом запису. Цей біт визначає, чи будуть записані дані при установці EEWE. Якщо біт EEMWE установлений, при установці EEWE дані записуються по обраній адресі EEPROM. Якщо цей біт скинутий, установка EEWE не має ефекту. Після програмної установки цей біт скидається апаратно через чотири такти процесора.

Біт 1 - EEWE (EEPROM Write Enable). Дозвіл запису в EEPROM. Сигнал EEWE є стробом запису в EEPROM. Після установки правильні адреси й даних для запису в EEPROM необхідно встановити біт EEWE. При записі "1" у біт EEWE повинен бути встановлений біт EEMWE, тоді відбувається запис в EEPROM.

Біт 0 - EERE (EEPROM Read Enable). Дозвіл читання з EEPROM. Сигнал EERE є стробом читання з EEPROM. Після установки потрібної адреси в регістрі EEAR, необхідно встановити біт EERE. Після того як біт EERE буде апаратно очищений, у регістрі EEDR. Читання EEPROM займає одну команду й не вимагає відстеження біта EERE. При установці біта EERE, ЦПП зупиняється на два цикли перед тим як буде виконана наступна команда. Перед читанням користувач повинен перевіряти стан біта EEWE, якщо регістри даних або адреси змінюються під час операції запису, запис в осередок переривається й результат операції запису стає невизначеним.

Таким чином, для запису в EEPROM повинна дотримуватися наступна послідовність:

1. Чекаємо обнуління прапорця EEWE регістра EECR (готовності EEPROM до прийому нових даних).

2. Записуємо адресу в EEAR (не обов'язково)

3. Записуємо дані в EEDR (не обов'язково)

4. Установлюємо в 1 біт EEMWE регістра EECR

5. Не пізніше чим через 4 такти після установки EEMWE установлюємо EEWE.

Після того як час запису мине (типово 2,5 мс для Vcc=5В і 4мс для Vcc=2,7В), біт EEWE очищається апаратно. Користувач може відслідковувати цей біт і очікувати його установки в нуль, перед тим як записувати наступний байт. При установці EEWE, ЦПП зупиняється на два цикли перед виконанням наступної команди.

При записі в EEPROM можуть бути викликані проблеми, викликані перериваннями:

1. При виникненні переривання між 4 і 5 кроками описаної послідовності запис в EEPROM буде зірвана, тому що за час обробки переривання прапорець EEMWE скинеться в «0».

Якщо в підпрограмі обробки переривання, що виникло під час запису в EEPROM, також відбувається звертання до неї, то буде змінений вміст регістрів адреси й даних EEPROM. У результаті перший запис (перерваний) буде зірваний.

Для запобігання описаних проблем настійно рекомендується забороняти всі переривання (скидати біт I регістра SREG) при виконанні пунктів 2-5 описаної вище послідовності.

Процедура читання даних з EEPROM набагато простіше, ніж процедура запису. Після завантаження необхідної адреси в регістр EEAR (EEARH:EEARL) програма повинна встановити в «1» розряд EERE регістра EECR. Коли запитані дані будуть перебувати в регістрі даних EEDR, відбудеться апаратне скидання цього розряду.

Операція читання з EEPROM завжди виконується за один машинний цикл. Крім того, після установки розряду EERE в «1» процесор пропускає 4 машинних цикли перед початком виконання наступної інструкції. Тому стежити в програмі за станом розряду EERE немає ніякої необхідності.

Єдине, на що потрібно звернути увагу при читанні з ЕЕРROM, - це стан прапорця EEWE. Перед виконанням читання необхідно переконатися, що цей прапорець скинутий. У противному випадку в результаті завантаження в регістри нових значень адреси й даних під час запису й EEPROM, процедура запису буде перервана, а результат цього запису - не визначений.




Переглядів: 994

<== попередня сторінка | наступна сторінка ==>
Watchdog Timer Control Register (WDTCR) | Запобіжні заходи при роботі з EEPROM

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.016 сек.