Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
черновик.doc
Скачиваний:
6
Добавлен:
14.09.2019
Размер:
1.16 Mб
Скачать

2.3.2 Логіка скидання

Логіка скидання призначена для переведення мікроконтролера в початковий стан зі свідомо відомими параметрами роботи. Джерело скидання мікроконтролера може бути ідентифіковане за допомогою бітів стану. Особливості логіки скидання дозволяють понизити вартість пристрою і збільшити його надійність-мікроконтролера середнього сімейства розрізняють наступні види скидання :

  • скидання по включенню живлення (POR);

  • скидання по сигналу - MCLR в нормальному режимі роботи;

  • скидання по сигналу - MCLR в режимі SLEEP;

  • скидання по переповнюванню WDT в нормальному режимі;

  • скидання по зниженню напруги живлення (BOR);

  • скидання помилково паритету (PER).

2.3.3 Центральний процесор (cpu)

ЦПУ можна розглядати як "мізки" мікроконтролера. ЦПУ відповідає за вибірку команди з пам'яті програм, її детектування і виконання Іноді ЦПУ працює спільно з АЛУ. щоб виконати арифметичні або логічні операції. ЦПУ управляє шиною адреси пам'яті програм і пам'яті даних, а також зверненням до стека.

Кожен цикл команди (Tcy) складається з чотирьох тактів (Q1 - Q4). Такт Q дорівнює по тривалості періоду тактового генератора (Tosc). Такти Q забезпечують жорстку синхронізацію декодування, читання даних, обробки даних, записи результата для кожного циклу команди. На рисунку 2.2 показано співвідношення тактів Q до циклу команди.

Цикл команди (Tcy), що складається з 4-х тактів, узагальнено виглядає таким чином:

-Q1:детектування команди або примусової порожньої операції (NOP)

-Q2 операція читання даних або відсутність операції

-Q3:обробка даних

-Q4:операція запису даних або відсутність операції

Рисунок 2.2- Співвідношення тактів Q до циклу команди

2.3.4 Логічний пристрій (АЛУ)

Мікроконтролери PICmicro MCU містять 8-розрядний універсальний арифметичний модуль (АЛУ) і 8 - розрядний робочий регістр (W). АЛУ виконує арифметичні і булеві операції між робочим регістром і будь-яким регістром пам'яті даних.

8-ми розрядне АЛУ може виконувати складання, віднімання, порозрядне зрушення і логічні операції. Арифметичні операції виконуються за принципом доповнення до двох, якщо не вказано інакше. У командах з двома операндами: перший операнд знаходиться в робочому регістрі W, а другий операнд розташований в регістрі пам'яті даних або константа. У командах з одним операндом: операндом є регістр W або регістр пам'яті даних.

Регістр W - 8-розрядний робочий регістр, що не адресується, який використовується в операціях АЛУ. залежно від типу команди і результат команди АЛУ може впливати на наступні прапори стану в регістрі STATUS : перенесення (С), напівперенесення (DC), прапор нульового результату (Z). Біти З і DC працюють як біти позики і десяткової позики при виконанні команд віднімання. Приклади дивитеся в описі команд SUBWF і SUBLW.

2.3.5 Організація пам'яті

Мікроконтролери середнього сімейства мають 13-розрядний лічильник команд, здатний адресувати 8К х 14 слів пам'яті програм, і 14-розрядна шина даних пам'яті програм. Усі команди мікроконтролера складаються з 14-розрядного слова, тому мікроконтролер з об'ємом пам'яті програм 8К х 14 може містити 8К команд.

Це дозволяє легко визначити достатність об'єму пам'яті програм для бажаного застосування

Уся пам'ять програм раздепена на 4 сторінки по 2Кслов кожна (0000h-07FFh. 0800h - 0FFFrt, 1000h-17FFh. 1800h-1FFFh). На малюнку 6-1 показана карта пам'яті програм і 8-рівневий апаратний стек. Залежно від типу мікроконтролера, тільки деяка частина доступної пам'яті програм реалізована апаратно (дивитеся технічну документацію на конкретний мікроконтролер)

Для переходу між сторінками пам'яті програм необхідно змінити старші біти регістра лічильника команд PC. записом в регістр спеціального призначення PCLATH (старший байт лічильника команд). Змінивши значення регістра PCLATH і виконавши команду галудження, лічильник команд PC перетне межу сторінки пам'яті програм без додаткового втручання користувача.

Для мікроконтролерів, що мають пам'ять програм менше 8К слів, звернення до пам'яті програм вище фактично реапизованного значення приведе до циклічної адресації. Наприклад, в микроконтроплере з пам'яттю програм 4Кслов і спробі переходу за адресою l7FFh перехід буде виконаний за адресою 07FFh. У мікроконтролерах з пам'яттю програм 2Кслов управління сторінками пам'яті не вимагається.

Регістр EECON1 містить біти управління непрямого запису/читання EEPROM пам'яті даних і FLASH пам'яті програм. Регістр EECON2 фізично не реалізований, він використовується тільки при операціях запису з метою запобігання випадковому запису.

Значення біта EEPGD в регістрі EECON1 визначає тип пам'яті, до якої буде виконано звернення. Якщо EEPGD = 0, то операції відносяться до EEPROM пам'яті даних. Коли EEPGD=1, звернення відбувається до FLASH пам'яті програм. У операції читання використовується тільки один додатковий біт RD, що ініціалізував операцію читання з вказаної пам'яті. Встановивши біт RD в 'V, значення елементу пам'яті буде доступне в регістрі даних. Біт RD не може бути скинутий програмно в '0 ', він скидається автоматично після закінчення операції читання. При читанні з EEPROM пам'яті дані будуть доступні в регістрі EEDATA в наступному машинному циклі, після установки біта RD. При читанні з FLASH пам'яті програм дані будуть доступні в регістрі EEDATA : EEDATH на другому машинному циклі, полі установки біта RD.

У операції запису використовується два службових біта WR. WREN і два біта статусу WRERR. EEIF. Біт WREN застосовується для дозволу/заборони операції запису (WREN = 0 - операція запису заборонена). Перед виконанням запису біт WREN необхідно встановити в '1'. Біт WR призначений для ініціалізації запису, він апаратно скидається в '0' після закінчення операції запису. Прапор переривання EEIF встановлюється в Т після закінчення запису. Цей прапор має бути скинутий програмно в '0' перед установкою біта WR.

Для читання з EEPROM пам'яті необхідно тільки записати адресу в регістр EEADR і скинути біт EEPGD в 'О'. Після установки в Т біта RD дані будуть доступні в регістрі EEDATA на наступному машинному циклі. Дані в регістрі EEDATA зберігаються до виконання наступної операції читання або запису в EEDATA.

Рекомендована послідовність дій при читанні з EEPROM пам'яті даних :

- записати адресу в регістр EЕADR. Перевірте, що записана адреса коректна для цього типу мікро контролера;

- скинути в '0' біт EEPGD для звернення до EEPROM пам'яті даних;

- ініціалізувати операцію читання установкою біта RD в '1';

- прочитати дані з регістра EEDATA.

Запис даних в EEPROM пам'ять дещо складніша за читання. Адреса осередку EEPROM пам'яті і записувані дані мають бути помішані у відповідні регістри спеціального призначення, біт EEPGD скидається в 'О'. Біт WREN повинен завжди дорівнювати нулю, окрім безпосереднього запису в EEPROM пам'ять. Біт WR може бути встановлений в 'V тільки, якщо біт WREN був встановлений в попередніх командах, тобто біти WR, WREN не можуть встановлюватися в Т однією командою. Біт WREN має бути скинутий в '0' після ініціалізації запису (на процес запису він не впливає).

Перед записом в EEPROM пам'ять має бути виконана обов'язкова послідовність команд, що запобіже випадковому запису. Обов'язкова послідовність виконується при вимкнених перериваннях.

Рекомендована послідовність дій при записі в EEPROM пам'ять:

- якщо крок 10 не був виконаний, то необхідно перевірити, що не відбувається запис (WR=0).

- записати адресу в регістр EEADR. Перевірте, що записана адреса коректна для цього типу мікроконтролера.

- записати 8-розрядне значення в регістр EEDATA.

- скинути в '0' біт EEPGD для звернення до EEPROM пам'яті даних.

- встановити біт WREN в 'I'. дозволивши запис в EEPROM пам'ять.

- сзаборонити переривання, якщо вони дозволені.

- виконати обов'язкову послідовність з п'яти команд:- запис значення 55п 8 регістр EECON2 (дві команди, спочатку в W потім в EECON2);

- запис значення ААп в регістр EECON2 (дві команди, спочатку в W потім в EECON2);

- встановити біт WR в Т;

- дозволити переривання (якщо необхідно);

- скинути біт WREN в '0';

- після завершення циклу запису скидається в '0' біт WR, встановлюється в '1' прапор

-переривання EEIF (скидається програмно). Якщо крок 1 не виконується, то необхідно перевірити стан бітів EEIF, WR перед початком запису.

У мікроконтролерах PIC16F7X апларатно не перевіряється значення, збережене при записі. Рекомендується повіряти фактично записане значення контрольним читанням. Особливо перевірку запису необхідно виконувати при можливому вичерпанні гарантованого числа циклів стирання/запису.