TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: kronocher en 29 de Abril de 2006, 23:46:13

Título: comunicacion serial PIC16f877
Publicado por: kronocher en 29 de Abril de 2006, 23:46:13
hola , tengo el siguiente codigo:

CONF_TX ;(subrutina para configuar el modulo TX)

 call BANCO_1
 bsf TXSTA,BRGH    ; VELOCIDAD ALTA PARA SPBRG 
 movlw d'70'       ; 64(70) PARA 9600 BAUDIO XTAL DE 10MHZ
 movwf SPBRG;
 bcf TXSTA,SYNC     ;
 bcf PIE1,TXIE      ; Habilitar/Deshabilitar interrupcion , asegurarse dek GIE y PIEIE de INTCON esten enableados
 bcf TXSTA,TX9      ; 1=9 bit , 0=8 bit
 bsf TXSTA,TXEN     ; habilita el TX, y se TXIF en 1 (registro vacio)
                    ;  si el 9 bit esta habilitado, se debe cargar en TX9D
 call BANCO_0
 bsf RCSTA, SPEN
 return
;*************************************************************************************************
TRANSMITIR ;
 call BANCO_1
TX_ESPERA_1
 btfss TXSTA,TRMT
 goto TX_ESPERA_1
 call BANCO_0
  return
;*************************************************************************************************
; programa principal

principal

 call CONF_TX

incio
 call BANCO_0
 movlw 'H'
 movwf TXREG
 call TRANSMITIR      
 movlw 'O'
 movwf TXREG
 call TRANSMITIR
goto incio
end

;-----------------------
el problema esta en que los datos se transmite bien hasta cierto momento , pero luego la Pc comienza a recibirlo los datos incorretamente e desordenado , por cierto el reloj es de 10 MHZ,
estoy creyendo que es por la velocidad del micro, como solamente se dedica a transmitir esos datos...
ayuda porfavor...
Título: Re: comunicacion serial PIC16f877
Publicado por: LabPIC en 30 de Abril de 2006, 14:58:13
Hola kronocher  :-)

Creo que el problema radica en el numero que cargas al SPBRG, tienes que cargarle d'64', ya que con el d'70' el porcentaje de error se hace es mas grande y creo que alli radica el problema, pues la Pc no recibe los datos a una velocidad constante siempre  :mrgreen:.

SALUDOS DESDE MÉXICO :mrgreen:
Título: Re: comunicacion serial PIC16f877
Publicado por: maunix en 02 de Mayo de 2006, 18:00:06
kronocher  si el código es tal cual no funcionará , al menos no en ese orden.

Creo que te faltan algunas partes ¿puedes postearlo todo? Asi podremos ver donde te equivocas.

Lo que dice LabPic creo que es un muy buen consejo, para que usar otro baudeaje si el adecuado lo puedes lograr con 64d.  De todas formas no estoy seguro que ahí radique totalmente el problema porque el BaudRate Generator se reinicia con cada byte transmitido y debieras tener problemas constantemente, así que te sugiero nuevamente que postees el código completo.

Saludos