Hi Bert,
I re-enabled hserout out in the ISR again, and these are the TMR1 counts I'm getting for successive comparator2 interrupts with an audio input of 82.4Hz (the lowest note/frequency on a standard tuning electric guitar)...
42947
42995
42946
42998
42944
43003
42960
43012
42964
43022
42974
43032
42991
42948
18932
18559
42953
43012
42955
43005
42957
43001
42943
A couple of dodgy ones in there, but those aside, the TMR1 counts are coming in lower at about 43,000?
Code:@ __CONFIG _CONFIG1, _FCMEN_OFF & _FOSC_INTOSC & _WDTE_OFF & _MCLRE_OFF & _CP_ON & _IESO_OFF & _BOREN_OFF & _PWRTE_OFF @ __CONFIG _CONFIG2, _PLLEN_OFF & _STVREN_OFF & _LVP_OFF DEFINE OSC 16 INCLUDE "DT_INTS-14.bas" INCLUDE "ReEnterPBP.bas" ' Include if using PBP interrupts DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0 DEFINE HSER_CLROERR 1 ' Clear overflow automatically DEFINE HSER_SPBRG 25 ' 38400 Baud @ 16MHz, 0.16% SPBRGH = 0 BAUDCON.3 = 1 ' Enable 16 bit baudrate generator '16F1828 Pin settings.... ' PIN# NAME USE & CONNECTION ' 1 Vdd +5VDC power supply TRISA.5 = 0' 2 RA5 TRISA.4 = 1' 3 RA4 TRISA.3 = 1' 4 RA3 TRISC.5 = 0' 5 RC5 TRISC.4 = 0' 6 RC4 C2OUT TRISC.3 = 1' 7 RC3 TRISC.6 = 0' 8 RC6 TRISC.7 = 0' 9 RC7 TRISB.7 = 0' 10 RB7 TRISB.6 = 1' 11 RB6 TRISB.5 = 1' 12 RB5 TRISB.4 = 1' 13 RB4 TRISC.2 = 1' 14 RC2 TRISC.1 = 1' 15 RC1 C12IN1- (FREQ DETECT) TRISC.0 = 1' 16 RC0 TRISA.2 = 0' 17 RA2 TRISA.1 = 0' 18 RA1 TRISA.0 = 0' 19 RA0 ' 20 Vss Ground ANSELA = 0 ANSELC = 0 APFCON0.2 = 0 'put hserout onto RB7 pin 10 (Pickit 2 RX pin) '------------------------------------------------------------------------- Osccon = %01111010 'sets the internal oscillator CPSCON0 = 0 ' capacitive sense module off CM1CON0 = 0 ' comparator1 module off CM2CON0.7 = 1 ' comparator2 on. CM2CON0.5 = 1 'enable the output on a pin CM2CON0.4 = 1 'invert the polarity CM2CON0.1 = 1 'ENABLE HYSTERISIS CM2CON1.7 = 1' enable interrupts on _+ve going transition CM2CON1.5 = 0 ' set comparator comparison input pin to the DAC CM2CON1.4 = 1 ' set comparator comparison input pin to the DAC CM2CON1.1 = 0 'SELECT C12IN1- (PIN 15, RC1) CM2CON1.0 = 1 'SELECT C12IN1- (PIN 15, RC1) DACCON0.7 = 1 ' DAC ON DACCON0.6 = 1 ' DAC ON DACCON0.5 = 0 'put the output of the DAC o the DAC out pin DACCON0.3 = 0 'SET DAC +VE REFERENCE REFERENCE TO VCC DACCON0.2 = 0 'SET DAC +VE REFERENCE REFERENCE TO VCC DACCON1 = %00000001 'sets the DAC voltage output to be very low (to use for the comparator to compare against. OPTION_REG.7 = 0 ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler CMP2_INT, _CMP2_Interrupt, ASM, YES endm INT_CREATE ; Creates the interrupt processor ENDASM TMR1 = 0 T1CON = %00000111 @ INT_ENABLE CMP2_INT ; Enable 'Int On Change' interrupts loop1: PAUSE 1 GOTO loop1 'Interrupt+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CMP2_Interrupt: ' COMPARATOR2 INTERRUPT. @ INT_DISABLE CMP2_INT BSR=0 hserout [dec tmr1,13,10] toggle portc.7 TMR1=0 @ INT_ENABLE CMP2_INT @ INT_RETURN




Bookmarks