Page 30 - 6486
P. 30
2. Вимірювання з декількох каналів не може відбуватись
одночасно. В будь-який момент часу можлива робота лише з
одною, конкретно вибраною лінією АЦП за допомогою регістру
АDМUХ. Якщо пристрій працює ще з одним каналом АЦП, то
достатньо на початку програми в блокові налаштувати потрібний
канал. В противному разі потрібно буде перед кожним
вимірюванням переналаштовувати регістр АDМUХ для вибору
потрібного каналу.
З. При виборі зовнішнього опорного джерела напруги
потрібно щоб відповідні виводи МК були до нього приєднані в
схемі (вивода АVСС і АREF).
Вимірювання рівня вхідної напруги на каналі РА2 та
виведення значення на LCD)
Дана програма ініціалізує LCD, проводить вимірювання
вхідного аналогового сигналу на каналі РА2 і виводить на екран в
першому рядку назву вибраного каналу, а в другому - виміряне
значення рівня сигналу.
/*
Target MCU:
ATmega16 Target
Device: AVR-
Easy
*/
#include <avr/io.h>
#include <util/delay.h>
#include “LCD.C” //Бібліотека для роботи з РК-екраном
unsigned long u=0; unsigned long voltage=0; unsigned char i;
unsigned char text[] = {‘-‘, 0x3D, 0x20, ‘A’, ‘D’, ‘C’, 0x20, ‘P’, ‘A’, ‘2’, 0x20, 0x3D,
0x3D, ‘-‘, 0x20,0x20 };
//===== Функція зчитування даних з попереднього вибраного каналу АЦП
unsigned int getACD(void)
{ unsigned int v; //локальна змінна
ADCSRA|=(1<<ADSC); //почати перетворення
while ((ADCSRA&_BV(ADIF))==0x00); //Чекаємо закінчення перетворення
v=(ADCL|ADCH<<8); //Зчитуємо значення АЦП
return v;
}
//Головна программа int main(void)
30