Мікроконтролер в цьому експерименті я використовую з внутрішнім тактовим генератором, що працює на частоті 4 МГц У цьому випадку слово конфігурації 0x3F18 Для проведення експерименту я використовую програму ISIS, а для створення програми мікроконтролера Flowcode У програмі Flowcode немає вбудованих механізмів, потрібних мені для роботи Але є можливість зробити вставки на мову Сі Вставки будуть дуже прості

Генератор можна реалізувати на основі програмованого джерела опорного напруги Управління цим джерелом здійснюється (саме час заглянути в datasheet) Через регістр VRCON

У мікроконтролерів є багато спеціальних регістрів для управління всім, що входить до складу мікроконтролера Кожен регістр – це, по суті, деяка комірка памяті Щоб спростити запамятовування безликих (Що визначаються адресою) осередків, їм присвоюють імена, які якось нагадують функції цих регістрів

Отже, створюємо програму, в якій крок за кроком будемо збільшувати опорна напруга Для цього будемо інкрементіровать (збільшувати на одиницю) зміст регістра VRCON У силу особливостей, про які можна прочитати в довідці до мікроконтролера, роботи джерела опорного напруги в регістр слід занести початкове значення Кінцеве значення визначиться кількістю допустимих кроків щодо збільшення напруги

Рис 2812 Програма формування пилкоподібної напруги

Після ініціалізації програми, що полягає в одній команді на мові Сі (не забудьте крапку з комою в кінці), Ми переходимо в нескінченний цикл Він починається з «обнулення» попереднього проходу ще одного, рахункового циклу

Лічильний цикл (цикл for) виконується 16 разів Після виходу з циклу і відбувається «обнулення» регістра VRCON

Рис 2813 Вставка підготовки до проходу наступного циклу

У цій вставці всього три команди Дві з них – це переключення між банками памяті, регістр VRCON знаходиться в другому банку памяті

Рис 2814 Формування «пили»

І в цьому блоці, фактично, одна команда – збільшення на одиницю вмісту регістра Таким чином, ми використовували всього три команди (майже дві, решта допоміжні) Якщо тепер не забути задати слово конфігурації і виставити робочу частоту, то можна транслювати програму І оцінити можливості цього рішення, відтворюючи програму в ISIS, де формується сигнал зявиться на виході RA2 (позначеному як VREF)

Рис 2815 Сигнал сканування

Ми отримали сигнал «сканування» Є два обмеження, які впливають на властивості нашого осцилографа Перше – напруга сигналу менше 5 В Це обмеження не настільки істотно: ми можемо використовувати вхідний підсилювач, виконаний на мікросхемі операційного підсилювача, який одночасно перетворює різнополярних вхідний сигнал в сигнал, що змінюється від 0 до 5 В

Друге обмеження більш істотно Проміжки часу між повторним зчитуванням визначать частоту перевіряється сигналу, тобто, визначать верхню граничну частоту роботи осцилографа Припустимо, що ми будемо потім відновлювати сигнал за отриманими значеннями відліків Щоб він був схожий на перевірявся сигнал, нам буде потрібно, скажімо, 20 відліків Якщо кожен відлік займає 250 мкс, то 20 відліків займуть 5 мс З цього випливає, що ми зможемо відновити вигляд синусоїдального сигналу з частотою 200 Гц Сигнали з більшою частотою будуть дуже мало схожі на синусоїду

Причин виникнення цього обмеження декілька: ми використовували не максимальну робочу частоту мікроконтролера, яка може бути в 5 разів вище ми використовували зручний для створення програми мову, але кількість команд для виконання кожного кроку може бути більше необхідних, ніж у випадку кодування програми в машинних кодах (або на асемблері)

І ще одне: точність вимірювання імпульсів визначається кількістю кроків на весь діапазон напруг Якщо максимальна напруга сканування 2 В, то кожен крок приблизно 100 мВ Це автоматично вносить помилку в вид відновленої кривої

Джерело: Гололобов ВН, – Самовчитель гри на паяльнику (Про електроніці для школярів і не тільки), – Москва 2012