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