Buenas tardes,
Cuando intento simular un diseño en proteus, me encuentro con el siguiente fallo:
[PIC16 ADC] PC=0x000E. ADC conversion clock period [5e-07] is possibly invalid for device clock frecuency
He estado en varios foros y he corregido pequeños detalles, pero me sigo encontrando en el mismo atolladero.
El micro es el PIC16F877, frecuencia de reloj de 4MHz y el codigo es el que sigue:
Capdat
banksel ADCON0
movlw b'01000001' ; fosc 8, RA0 analogico
movwf ADCON0
; Incializacion convertidor AD. Justificado a la izquierda, todos los PORTA como entrada analogica
banksel ADCON1
movlw b'00001110' ;Justificado a la izquierda, canal 0, modulo habilitado
movwf ADCON1
call Demora_20us ; Esperamos el tiempo de adquisicion necesario
; Comenzamos la conversion AD
banksel ADCON0
bsf ADCON0,2
; Esperamos que acabe la conversion
espera
btfsc ADCON0,2
goto espera
; Guardamos el valor despues de la conversion en la variable ls_adc.
banksel ADRESH
movf ADRESH,0 ; Despues de finalizar la conversion AD el valor en ADRESH se guarda en el Reg W
; y el valor en ADRESL se omite, esa precision no es necesaria.
banksel ls_adc
movwf ls_adc ; valor en W Reg. se escribe en la variable ls_adc
RETURN
Demora_20us
movlw 0x05
movwf Contador ; iniciamos contador
Repeticion
decfsz Contador,1 ; Decrementa Contador en 1
goto Repeticion ; Si no es cero repetimos el ciclo
RETURN
Alguna idea de como poder solventarlo?
Un saludo.
Cuando intento simular un diseño en proteus, me encuentro con el siguiente fallo:
[PIC16 ADC] PC=0x000E. ADC conversion clock period [5e-07] is possibly invalid for device clock frecuency
He estado en varios foros y he corregido pequeños detalles, pero me sigo encontrando en el mismo atolladero.
El micro es el PIC16F877, frecuencia de reloj de 4MHz y el codigo es el que sigue:
Capdat
banksel ADCON0
movlw b'01000001' ; fosc 8, RA0 analogico
movwf ADCON0
; Incializacion convertidor AD. Justificado a la izquierda, todos los PORTA como entrada analogica
banksel ADCON1
movlw b'00001110' ;Justificado a la izquierda, canal 0, modulo habilitado
movwf ADCON1
call Demora_20us ; Esperamos el tiempo de adquisicion necesario
; Comenzamos la conversion AD
banksel ADCON0
bsf ADCON0,2
; Esperamos que acabe la conversion
espera
btfsc ADCON0,2
goto espera
; Guardamos el valor despues de la conversion en la variable ls_adc.
banksel ADRESH
movf ADRESH,0 ; Despues de finalizar la conversion AD el valor en ADRESH se guarda en el Reg W
; y el valor en ADRESL se omite, esa precision no es necesaria.
banksel ls_adc
movwf ls_adc ; valor en W Reg. se escribe en la variable ls_adc
RETURN
Demora_20us
movlw 0x05
movwf Contador ; iniciamos contador
Repeticion
decfsz Contador,1 ; Decrementa Contador en 1
goto Repeticion ; Si no es cero repetimos el ciclo
RETURN
Alguna idea de como poder solventarlo?
Un saludo.