Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Перший спосіб



У режимі частотоміра прилад працює за широко відомим методом вимірювання PIC-микроконтролером числа коливань в одиницю часу з дорахунком попереднього дільника, що і забезпечує такі високі показники. [ AN592, Stan D’Souza. Frequency Counter Using PIC16C5X. Microchip Technology Inc. 1997 ]

Мікроконтролер PIC16Fxxx має в своєму складі восьмирозрядний модуль таймера (ТМR0), який може використовуватися з восьмирозрядним переддільником. Останній функціонує асихронно, тому таймер здатний рахувати частоту сигналів значно вище за частоту генератора мікроконтролера, яка рівна 4 Мгц. Мінімальний час високого і низького рівнів вхідного сигналу — 10 нс, що дозволяє модулю ТМR0 функціонувати від зовнішнього сигналу частотою до 50 Мгц. Переддільник задіяний для підвищення точності вимірювань. Оскільки його граничний коефіцієнт ділення рівний 256, максимальна роздільна здатність лічильника складає 16 двійкових розрядів. Проте повністю вміст переддільника неможливо рахувати програмно, подібно до регістра. Тому щоб забезпечити роздільну здатність вимірювання 16 розрядів — 8 старших розрядів прочитуються з ТМR0, а 8 молодших — з переддільника.

Рис.1 Блок-схема модуля мікроконтролера TIMER0.

Вимірюваний сигнал поступає на вивід RA4, що є входом зовнішнього сигналу (T0CKI) таймера TMR0. Цей вивід сполучений з виводом порта RB0, перемиканням якого здійснюється управління режимом рахунку. Перед вимірюванням проводиться скидання TMR0 (при цьому скидається і переддільник).

Для вимірювання вивід RB0 конфігурується як вхід на точні інтервали часу, що дозволяє зовнішньому сигналу поступати на вхід таймера. Відлік тривалості інтервалів здійснюється "зашитою" в мікроконтролер програмою і виконується як точна тимчасова затримка. Після закінчення підпрограми, TMR0 припиняє роботу, оскільки на RA4 встановлюється низький рівень, і зовнішній сигнал перестає поступати на його вхід.

Частина даних зберігається в TMR0. Їх ми можемо зчитати. А дані з прескалера так просто не отримати (їх не можна отримати прямим чином). Тому використовується наступна процедура. Зчитується накопичене 16–розрядне значення числа періодів вхідного сигналу: у старших 8 розрядів записується вміст TMR0, а в молодших — переддільника. Для отримання значення переддільника виконується підпрограма (на виводі RA4 асемблерними командами BSF і BCF перемикається вихідний рівень, тобто програмно формується послідовність коротких імпульсів). Кожен імпульс інкрементує (збільшує значення на одиницю) переддільник і лічильник імпульсів N, після чого перевіряється вміст TMR0, щоб визначити, чи збільшилося воно. Якщо воно зросло на 1, восьмирозрядне значення переддільника визначається по вмісту лічильника імпульсів N як . Далі 16–розрядне двійкове значення частоти перетворюється в 8–розрядне десяткове.





Дата публикования: 2014-12-28; Прочитано: 198 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...