I'm very confused.
I think that settings are ok, but some its very strange. I changed the PIC with another one, but the same results.
PIC config & settings :
Code:
OSCCON = %01101010 'sets the internal oscillator to 4Mhz
DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 100
ADCON0 = %00000000
ADCON1 = %00000000
FVRCON = %00000000
CM1CON0 = 0 ' COMPARATORS OFF
CM1CON1 = 0
CM2CON0 = 0 ' COMPARATORS OFF
CM2CON1 = 0
CPSCON0 = 0 'CAPACTIVE SENSE MODULE OFF
RCSTA.7 = 0 'SERIAL PORT OFF
TRISA = %00000011 'PORTA.0 and PORTA.1 set Input
TRISB = %00000000
TRISC = %10000100 ' PORTC.7 and PORTC.2 input
ANSELA = %00000011 ' AN0 and AN1 set analog
ANSELB = %00000000
ANSELC = %00000100 ' AN6 set analog
OPTION_REG.7 = %00000001 'WPU enable ; Fosc/4; Prescaler 1/4
WPUA = %00000000
WPUB = %00000000
WPUC = %10000000 ' enable WPUC.7
porta = 0
portb = 0
portc = 0
inh1 var portc.4
inh2 var portc.0
adval var byte
duty1 var byte
Here work all 4 HPWM:
Code:
main:
adcin 0 , adval '(or adcin 1 , adval)
pause 10
duty1 = adval
hpwm 1 , duty1, 2000
hpwm 2 , duty1, 2000
hpwm 3 , duty1, 2000
hpwm 4 , duty1, 2000
goto main
end
Here works fine HPWM(2,3,4):
Code:
main:
adcin 6 , adval
pause 10
duty1 = adval
hpwm 2 , duty1, 2000
hpwm 3 , duty1, 2000
hpwm 4 , duty1, 2000
goto main
end
Here AN6 toggled to digital input (why ??):
Code:
main:
adcin 6 , adval
pause 10
duty1 = adval
hpwm 1 , duty1, 2000
hpwm 2 , duty1, 2000
hpwm 3 , duty1, 2000
hpwm 4 , duty1, 2000
goto main
end
I tried to set manually all 4 CCP , frequency doesn't matter (2-4khz is enough for me) , maxim duty cycle measured with a osciloscope is 99,7 % . What is very strange , after some time, the AN6 toggle from analog to digital input. I hope that manual settings are ok.
Code:
T2CON = %00000100 ' Timer2 ON
PR2 = 255
CCP1CON = %00001100
CCP2CON = %00001100
CCP3CON = %00001100
CCP4CON = %00001100
pause 200
'========================PROGRAM=============================
main:
adcin 6 , adval
pause 10
CCPR1L = adval
CCPR2L = adval
CCPR3L = adval
CCPR4L = adval
goto main
end
So, If I add HPWM1 in main program , AN6 toggle instantly from analog input to digital input. If I set manual CCP , AN6 toggle from analog to digital after some time.
I tried with 16F1938 , the same program, with different analog inputs and all work ok.
Bookmarks