problem med komparator i PIC12F683

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Johan.o
EF Sponsor
Inlägg: 2388
Blev medlem: 18 juni 2003, 01:08:50
Ort: Jönköping

problem med komparator i PIC12F683

Inlägg av Johan.o »

Jag har tänkt att använda den inbyggda komparatorn för att använda den som överstörm-detektering. Men jag får inte den att fungera. Jag började med att ställa in den för att jämföra yttre spänning mot den interna referesen på några volt.
Och pollar COUT i programmet. Om spänningen på ingången CIN- (GP1) överstiger den interna referensen så är tanken att COUT ska bli en etta och då ska jag stänga ner PWM-modulen som jag använder för att styra en transistor.

Jag visar nedan upp tre uttdrag ur min assembler-kod.
Villka är alla inställningar för komparatorn jag gjort, tacksam för tips på vad jag gjort fel.

(Kod i turordning);

Kod: Markera allt


        bsf			STATUS,RP0			; Access to bank 1

        movlw 		b'00110110'			;  GP1 = CS-ingång.	

;------- Comparator module settings	



	bsf			STATUS,RP0			; Access to bank 1 ;------

	movlw		b'10100111'			; Vref= ON,Low range, CV_ref = 0111

	movwf		VRCON	

	bcf			STATUS,RP0			; Access to bank 0

	movlw		b'00010100'			; Comparator Output inverted, COUT set = 0

	movwf		CMCON0

	movlw		b'00000000'			

	movwf		CMCON1	

;-------

hard_tuning_loop

	btfss		CMCON0,7			; Fault current?
 (bit 7 = COUT)
	goto		no_fault			; NO

	clrf		PWM_HI_B

	clrf		PWM_LO_B

	call		set_pwm

	goto		hard_tuning_loop

no_fault

För att förtydliga så i det sista kodavsnittet så pollar jag COUT, Jag testade att polla en digital ingång istället och då fungerade den delen av koden som det var tänkt. Det som ska hända är att den ställer pulsbredden på PWM-modulen till noll, om den detekterar att COUT =1.

Tacksam för hjälp! Under tiden funderar jag vidare och läser manualen för att försöka reda ut det själv. :)