Аналоговый компаратор и мультиплексор

Материал из Automata.

(Различия между версиями)
Перейти к: навигация, поиск
м
м (Полностью удалено содержимое страницы)
Строка 1: Строка 1:
-
#include <stdint.h>
 
-
#include <avr/io.h>
 
-
#include <avr/interrupt.h>
 
-
//логическая переменная состояния РС7;
 
-
static volatile uint8_t status = 0;
 
- 
-
//обработчик прерывания от компаратора;
 
-
ISR (ANA_COMP_vect)
 
-
{
 
-
if (status == 0) {//если напряжения на выводе PC7 нет, то
 
-
PORTB |= 0x01;//подаем на него логическую "1" и
 
-
status = 1;//запаминаем новое состояние;
 
-
} else {//если есть, то
 
-
PORTB &= 0xfe;//подаем на вывод логический "0" и
 
-
status = 0;//запаминаем новое состояние;
 
-
};
 
-
}
 
- 
-
//главная функция;
 
-
int main (void)
 
-
{
 
-
DDRB = 0xff;//настраиваем выводы порта В на выход;
 
-
PORTB = 0x00;//без подачи напряжения;
 
-
DDRC = 0xff;//настраиваем выводы порта С на выход;
 
-
PORTC = 0x00;//без подачи напряжения;
 
-
ADMUX = 0x07;//выход мультиплексора модуля АЦП - вывод PC7;
 
-
SFIOR = _BV(ACME);//устанавливаем в качестве инвертирующего входа компаратора выход мультиплексора модуля АЦП;
 
-
ACSR = _BV(ACBG) | _BV(ACIE);//выбираем внутреннее опорное напряжение и разрешаем прерывания от компаратора;
 
-
SREG = 0x80;//глобальное разрешение прерываний;
 
-
}
 

Версия 13:04, 9 февраля 2010

Личные инструменты
Микроконтроллеры