Задача: Использование модуля компаратора
Исходный материал: PIC16f628a, proteus Для начала заглянем в даташит и обратим внимание на регистр CMCON. C2OUT: Выходной бит компаратора 2 Если C2INV = 0: 1 = C2 VIN+ > C2 VIN- 0 = C2 VIN+ < C2 VINWhen C2INV = 1: 1 = C2 VIN+ < C2 VIN- 0 = C2 VIN+ > C2 VINbit C1OUT: Выходной бит компаратора 1 Если C1INV = 0: 1 = C1 VIN+ > C1 VIN- 0 = C1 VIN+ < C1 VINWhen C1INV = 1: 1 = C1 VIN+ < C1 VIN- 0 = C1 VIN+ > C1 VINbit C2INV: Инверсия выходного бита компаратора 2 1 = C2 инверсия 0 = C2 нет инверсии C1INV: Инверсия выходного бита компаратора 1 1 = C1 инверсия 0 = C1 нет инверсии CIS: Выбор входного пина компаратора в некоторых режимах Если CM<2:0>: = 001 Tогда: 1 = C1 VIN- подключен к RA3 0 = C1 VIN- подключен к RA0 Если CM<2:0> = 010 Тогда: 1 = C1 VIN- подключен к RA3 C2 VIN- подключен к RA2 0 = C1 VIN- подключен к RA0 C2 VIN- подключен к RA1 CM<2:0>: Выбор режимов компаратора
Режимы на рисунке ниже: Для этого эксперимента нам достаточно одного компаратора, поэтому выставим значение CM = 101
Полный код проекта: #include <htc.h> #define _XTAL_FREQ 4000000 #define LED RB0 __CONFIG(WDTDIS & UNPROTECT & MCLREN & LVPDIS & HS); void main(void) { CMCON = 0b10000101; TRISA = 0xFF; TRISB = 0x00; PORTB = 0; for (;;) { LED = C2OUT;} } На RA1 подано опорное напряжение 2 вольта, а на RA2 синусоида с размахом 5 вольт. Результат работы:
Источник: http://diymicro.ru/?p=75 |