ТОП 10:

Примусова установка результату порівняння



В режимах генерації імпульсів без ШІМ у формувачі імпульсів результат порівняння може бути встановлений безпосередньо через біт примусової установки результату порівняння FOC0. Примусова установка результату порівняння компаратора не призводить до встановлення мітки OCF0 або скидання/перезавантаження таймера, але впливає на стан виходу OC0, який буде встановлюватися, скидатися або перемикатися (інвертуватися) залежно від обраної установки біт COM01, COM00.

Результат порівняння блокується записом в TCNT0

Якщо CPU здійснює запис в регістр TCNT0, то результат порівняння буде ігноруватися на наступному такті синхронізації таймера, навіть якщо таймер зупинений. Ця функція дозволяє встановити в регістрі OCR0 те ж значення, що і в TCNT0 без генерації запиту на переривання, якщо дозволено тактування таймера-лічильника.

Використання блоку порівняння

Оскільки запис в TCNT0 блокує будь-які дії по результату порівняння на один такт синхронізації таймера незалежно від режиму роботи, то при зміні TCNT0 при використанні каналу порівняння (незалежно працює синхронізація таймера чи ні) необхідно врахувати такі особливості. Якщо в регістр TCNT0 записано значення рівне OCR0, то ігнорування збігу призведе до генерації некоректною форми сигналу. За аналогією слід уникати записи в TCNT0 значення рівного нижньої межі (0x00), якщо лічильник працює як віднімаючий.

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

Врахуйте, що біти COM01, COM00 не містять схеми подвійної буферизації і на будь-які зміни реагують миттєво.

Блок формування вихідного сигналу

Біти завдання режиму формування вихідного сигналу (COM01: 0) мають подвійне призначення. З одного боку біти COM01, COM00 використовуються формувачем сигналу і визначають який логічний стан повинен бути на виході OC0 при виникненні наступного збігу. З іншого боку, біти COM01, COM00 використовуються для дозволу/заборони альтернативної функції виходу порту OC0. На рисунку представлена спрощена логічна схема, на яку впливають біти COM01, COM00. На малюнку показані тільки ті регістри управління портом вводу-виводу (DDR і PORT), на які впливають біти COM01, COM00.

Функція лінії універсального порту вводу-виводу замінюється на функцію виходу формувача сигналу OC0, якщо хоча б один з біт COM01, COM00 встановлений (логіка АБО). Однак, управлінням напрямку виводу OC0 (вхід або вихід) в цьому випадку залишається за відповідним бітом регістра напрямку даних порту В (DDRB.4). Щоб значення регістра OC0 передавалося на вихід OC0 необхідно налаштувати дану лінію на вивід (встановити біт DDRB.4). Управління вводом альтернативної функції не залежить від режиму генерації сигналу.

Схемотехніка вихідної логіки дозволяє ініціалізувати стан регістра OC0 перед дозволом налаштування виводу OC0 в якості виходу. Зверніть увагу, що в деяких режимах роботах є зарезервовані стану біт COM01, COM00.

Режими генерації сигналу

Значення біт COM01: 0 задає різні режими формування вихідного сигналу, які в свою чергу залежать від обраного режиму роботи таймера. Таймер-лічильник 0 може бути переведений в нормальний режим, в режим скидання таймера при збігу або в один з режимів з генерацією ШІМ-сигналів. Загальним для всіх режимів є невиконання будь-яких дій з виводом OC0 при виконанні умови порівняння, якщо обидва біта COM01, COM00 дорівнюють нулю.

Після установки біт COM01, COM00 вони вступають в силу тільки після першого збігу який слідує за цією установкою. Для режимів без ШІМ установки можуть бути негайно активізовані за допомогою стробуючого біту FOC0.

Режими роботи таймера-лічильника 0

Режим роботи таймера, у т.ч. поведінка таймера-лічильника і пов'язаного з ним виходу формувача сигналу, задається комбінацією біт, які задають режим роботи таймера (WGM01, WGM00) і режим формування вихідного сигналу (COM01, COM00).. При цьому біти завдання режиму формування вихідного сигналу не впливають на алгоритм рахунку, тому що алгоритм рахунку залежить тільки від стану біт задання режиму роботи таймера. В режимах з ШІМ біти COM01, COM00 дозволяють включити/відключити інверсію на генеруючому ШІМ-виході (тобто вибрати ШІМ з інверсією або ШІМ без інверсії). Для режимів без ШІМ біти COM01: 0 визначають яку дію необхідно виконати при виконанні умови порівняння: скинути, встановити або інвертувати вихід.

Нормальний режим роботи

Найпростішим режимом роботи є нормальний режим (WGM01, WGM00 = 0b00). В даному режимі лічильник працює як додаючий (інкреметований), при цьому скид лічильника не виконується. Переповнення лічильника відбувається при переході через максимальне 8-розр.. число (верхня межа = 0xFF) до нижньої межі лічби (0x00). У нормальному режимі роботи мітка переповнення таймера-лічильника TOV0 буде встановлений на тому ж такті синхронізації, коли TCNT0 прийме нульове значення. Фактично, мітка переповнення TOV0 є дев'ятим бітом таймера-лічильника за тим винятком, що він тільки встановлюється і не скидається. Однак програмно ця властивість може бути використана для підвищення роздільної здатності таймера, якщо використовувати переривання по переповненню таймера, при виникненні якого мітка TOV0 скидається автоматично. Для нормального режиму роботи не існує яких-небудь особливих ситуацій пов'язаних із записом нового стану лічильника, коли потрібно було б врахувати запобіжні заходи.

Блок порівняння може використовуватися для генерації переривань. Не рекомендується використовувати вихід OC0 для генерації сигналів в нормальному режимі роботи, тому що в в цьому випадку буде витрачена значна частина процесорного часу.

Режим скидання таймера при збігу (CTC)

В режимі СТС (WGM01, WGM00 = 0b10) регістр OCR0 використовується для задання роздільної здатності лічильника. Якщо заданий режим CTC і значення лічильника (TCNT0) збігається зі значенням регістру OCR0, то лічильник обнулюється (TCNT0 = 0). Таким чином, OCR0 задає вершину лічби лічильника, а, отже, і його роздільну здатність. В даному режимі забезпечується більш широкий діапазон регулювання частоти генерованих прямокутних імпульсів. Він також спрощує роботу лічильника зовнішніх подій.

Тимчасова діаграма для режиму СТС показана на рисунку. Значення лічильника (TCNT0) інкрементується до тих пір, поки воно не стане рівним значенню в OCR0, після чого лічильник (TCNT0) обнулюється.

За допомогою мітки OCF0 переривання може генеруватися кожного разу, коли лічильник досягає своєї верхньої межі лічби. Якщо робота переривання дозволена, то процедура обробки переривання може використовуватися для оновлення значення вершини лічби. Однак, задання значення вершини лічби близького до значення нижньої межі лічби, коли лічильник працює без дільника частоти або з малим значенням дільника частоти, необхідно виконувати з особливою обережністю, тому що в режимі СТС немає подвійної буферизації. Якщо значення, записане в OCR0, менше поточного значення TCNT0, то скидання лічильника за умовою збігу настане, коли він досягне максимального значення (0xFF), потім перейде в початковий стан 0x00 і досягне нового значення OCR0.

Для генерації сигналу в режимі CTC вихід компаратора OC0 може використовуватися для зміни логічного рівня при кожному збігу, для чого необхідно задати режим перемикання (COM01, COM00 = 0b01). Значення OC0 буде присутній на виводі порту, тільки якщо для даного виводу задано вихідний напрямок. Максимальна частота генерованого сигналу дорівнює fOC0 = fclk_I/O/2, якщо OCR0 = 0x00. Для інших значень OCR0 частоту генерованого сигналу можна визначити за формулою:

де змінна N задає коефіцієнт розподілу дільника частоти (1, 8, 32, 64, 128, 256 або 1024).

Також як і для нормального режиму роботи, мітка TOV0 встановлюється на тому ж такті таймера, коли його значення змінюється з 0xFF на 0x00.

Режим швидкої ШІМ

Режим швидкої широтно-імпульсної модуляції (WGM01, WGM00 = 0b11) дозволяє генерувати високочастотні ШІМ-сигнали.

Опис роботи цього режиму для даного мікроконтролера наведено у повному описі мікроконтролера.[48]







Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.232.51.69 (0.007 с.)