TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: tino078 en 09 de Noviembre de 2011, 22:21:33
-
Estoy realizando la comunicacion serial entre el pc y este pic(16f873A) , lo que pasa es que aveces recibe el dato y otra veces no y no se a que se debe, si alguien me pudiese ayudar se lo agradeceria
-
Hola, si pudieses especificar un poco más que compilador utilizas, como es la comunicación...
Porque puede ser por bastantes razones, así a priori la velocidad puede ser excesiva, pero danos un poco más de información para que podamos ayudarte mejor.
-
GRACIAS POR QUE QUERER AYUDARME.Estoy utilizando un reloj de 4Mhz, por lo tanto le he cargado al registro SPBRG un 25 para una velocidad de 9600, estoy programando en asm,en paralelo un compañero lo esta realizando en C y le sucede el mismo por ejemplo envió el numero 15, y lo recibe correctamente un 30% otras veces un 60% pero no mas.Estoy compilando con MPLAB y el programador ICP01-V1
CUALQUIER INDICIO DE AYUDA LO AGRADECERÍA
-
aquí dejo el codigo, aunque no creo que sea problema porque si no nunca podria recibir ningún dato nunca
LIST P=16F873A
RADIX HEX
INCLUDE P16F873A.INC
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC&_LVP_OFF&_DEBUG_OFF
dato equ 0x20
contador equ 0x22
BANK0 MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
BANK1 MACRO
BSF STATUS,RP0
BCF STATUS,RP1
ENDM
RESET org 0x00
goto INICIO
org 0x04
goto ISR
org 0x05
INICIO
clrf PORTB
clrf RCREG
BANK1
movlw b'00000000'
movwf TRISB
movlw b'00000100'
movwf TXSTA
movlw d'25' ; 25
movwf SPBRG
bsf PIE1,RCIE
BANK0
movlw b'11000000'
movwf INTCON ;habilita perifericos
bsf RCSTA,SPEN ;permite tx,rx
bcf RCSTA,RX9 ; 8 bits datos
bsf RCSTA,CREN ; recepcion
bucle
nop
goto bucle
ISR
BANK0
btfsc RCSTA,OERR
goto errrsoverr
btfsc RCSTA,FERR
goto errrframe
btfss PIR1,RCIF
retfie
movf RCREG,W
movwf dato
sublw d'15'
btfss STATUS,Z
goto opc_2
bsf PORTB,7
goto fin
opc_2
movf dato,W
sublw d'5'
btfss STATUS,Z
goto opc_3
bsf PORTB,6
goto fin
opc_3
movf dato,W
sublw d'1'
btfss STATUS,Z
goto fin
bsf PORTB,5
fin
retfie
errrsoverr
bcf RCSTA,CREN
bsf RCSTA,CREN
retfie
errrframe
movf RCREG,0
retfie
end
-
Buenas tino078, a mi me pasó la semana pasada algo muy parecido... échale un ojo a la tabla esta... el problema lo tienes en el oscilador de 4MHz que utilizas, que al querer transmitir a 9600bps, el pic no puede hacer los timmings exactos necesarios para poder tramsnitir de forma sincronizada. Yo te aconsejo utilizar un oscilador de 3.6864MHz, que a esa velocidad no vas e tener error
Saludos