TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: mikelzuru en 07 de Junio de 2006, 06:28:31

Título: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: mikelzuru en 07 de Junio de 2006, 06:28:31
buenas yo estoy con el mismo problema de conectar un pic16f876, la cosa es que consigo mandar del pic al pc sin ningun problema, en el hyperterminal me aparece todo lo que he mandado, mi problema es al recibir. He configurado el pic para que cuando reciba un dato del pc salte una interrupcion, y en el vector de interrupcion he hecho que envie un caracter al pc, vamos que intento hacer un eco pero mandando un caracter cualkiera que ponga yo manualmente, no el que me mande el pc. La cosa es q cuando pongo el hyperterminal, en la pantalla me recibe el caracter que deberia de mandar yo en el vector de interrupcion, es decir el caracter sale continuamente en pantalla, sin que yo le mande nada no deberia saltar la interrupcion uqe manda el caracter, pero por lo que parece es como si yo estuviera mandando algo constantemente. Aki va el codigo a ver si alguien puede decirme donde esta el fallo, seguramente estara en la configuracion pero yo no lo veo:

;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>

ORG 04H ;Vector de interrupcion

INTER btfss PIR1,RCIF ;¿Interrupcion por recepcion?
goto VOLVER ;No. Falsa interrupcion
bcf PIR1,RCIF ;Si. Reponer Flag
movlw b'10000000' ;Envia el caracter, valor binario
movwf TXREG ; del codigo ascii
VOLVER retfie

;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>

INICIO clrf PORTB ;Limpia salidas
clrf PORTC

bsf RCSTA,SPEN ;se activa la USART
bsf STATUS,RP0 ;Cambio al banco 1 ------------------
bcf STATUS,RP1
clrf TRISA ;Puerta A como salida
clrf TRISB ;Puerta B como salida
movlw 80H ;RC7/Rx entrada,
movwf TRISC ;RC6/Tx salida y RC5 Salida.
movlw 04H ;Configuracion USART
movwf TXSTA ;y activacion de transmision
movlw .25 ;9600 baudios
movwf SPBRG
bsf PIE1,RCIE ;Habilitacion interrupcion RX
bcf STATUS,RP0 ;Cambio al banco 0 -----------------
;clrf PORTB ;Limpia salidas
;clrf PORTC
bsf RCSTA,SPEN ;se activa la USART

movlw b'10010000' ;Configuracion de la usart
movwf RCSTA ;para recepcion continua

bsf STATUS,RP0 ;Cambio al banco 1 -------------
bcf STATUS,RP1
bsf TXSTA,TXEN ;Habilita la transmision

bcf STATUS,RP0 ;Cambio al banco 0 ------------------
movlw 0C0H ;Habilitacion para las
movwf INTCON ;interrupciones generales

Bukle goto Bukle

espero vuestra respuesta gracias, saludos

P.D: He escrito este mensaje en mas de un hilo porque no sabia exactamente donde habia q ponerlo
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: maunix en 07 de Junio de 2006, 06:40:56
Código: ASM
  1. ;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>
  2.  
  3.         ORG 04H ;Vector de interrupcion
  4.  
  5. INTER  
  6.         btfss   PIR1,RCIF ;¿Interrupcion por recepcion?
  7.         goto    VOLVER ;No. Falsa interrupcion
  8.         movf    PIR1,RCIF       ; >>>>>> LINEA MODIFICADA <<<<<
  9.         movlw   b'10000000' ;Envia el caracter, valor binario
  10.         movwf   TXREG ; del codigo ascii
  11. VOLVER retfie

Antes de seguir revisando el código fijate lo que haces aqui.

El flag de usart no se borra con un bcf PIR1,RCIF sino "leyendo" el dato del RCREG.

Hacer bcf PIR1,RCIF no hará nada, el flag seguirá seteado (por más que algún que otro simulador te lo marque como que se borró)

Modificalo para que quede así:


Código: ASM
  1. ;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>
  2.  
  3.         ORG 04H ;Vector de interrupcion
  4.  
  5. INTER  
  6.         btfss   PIR1,RCIF ;¿Interrupcion por recepcion?
  7.         goto    VOLVER ;No. Falsa interrupcion
  8.         movf    RCREG,W       ; >>>>>> LINEA MODIFICADA <<<<<
  9.         movlw   b'10000000' ;Envia el caracter, valor binario
  10.         movwf   TXREG ; del codigo ascii
  11. VOLVER retfie


Otro punto, el TRISC<7> y el TRISC<6> ambos deben estar en 1 para que sean "pines de usart", el pin TX no se debe poner como "salida".

También debes habilitar el RCSTA,CREN (continuous receive) para que sigas reicibiendo datos.

Todo esto está explicado en el datasheet.


Saludos
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: mikelzuru en 07 de Junio de 2006, 09:53:25
gracias, maunix, pues he puesto el RC7 TX a 1, y el movf  RCREG,W , por cierto el RCSTA ya estaba configurado de antes para recepcion continua
aqui --> movlw   90H      ;Configuracion de la usart
      movwf   RCSTA     ;para recepcion continua
es necesario habilitarlo de nuevo al terminar la interrupcion??
y sisuiendo mi pregunta anterior, ahora que he corregido lo que tu me has dicho, el programa sigue sin esperar a recibir el caracter, ya que nada mas iniciar el programa escribe en el hyperterminal el caracter de la interrupcion, porq puede ser esto??
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: Chaly29 en 07 de Junio de 2006, 10:14:12
Hola mikelzuru, veo que as puesto 4 veces el mismo mensaje en todo el foro, por favor realices sola un post por pregunta, para no hacer más complicada la busqueda de una respuesta, por lo tanto tambien te pediría que borraras los demas post que as realizado ya que no posees respuestas.

Un saludo.

Atte. CARLOS.

Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: mikelzuru en 07 de Junio de 2006, 10:22:30
de acuerdo , pido disculpas, es la primera vez que posteaba aki y no estaba seguro de en que hilo me contestarian, ya estan los mensajes borrados, perdon de nuevo, y sigo esperando la respuesta, a ver si alguien puede ayudarme, se lo agradeceria mucho, gracias y saludos :)
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: Chaly29 en 07 de Junio de 2006, 10:32:45
Hola mikelzuru, gracias por ayudar a la mantencion del foro, con respecto a donde postear una pregunta lo que debes pensar es en cual de los sub-foros estaría más hacertada colocarla (en este caso yo lo hubiera colocado en este o en el de almacen del asembler) y hacer tu pregunta en solo un sub foro, por la respuesta no te preocupes ya que los participantes no se limitan a mirar un solo subforo por lo tanto seguro que la gran mayoria de ellos vera tu post, y de seguro si alguien sabe la respuesta te la responderá.

Por lo tanto y en base a lo anterior llegamos a la conclusión de que poniendo más post no conseguiras más respuestas, y solo colocando 1 nos ayudas a mantener el foro lo más ordenado posible, te agradesco nuevamente tu atención y este post no lo coloco con la intencion de retarte, solo para intentar explicarte de como debes postear en este foro ya que e podido darme cuenta de que eres nuevo por estos lugares.

Gracias y bienvenido al foro, un saludo.

Atte. CARLOS.

Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: maunix en 07 de Junio de 2006, 12:00:51
gracias, maunix, pues he puesto el RC7 TX a 1, y el movf  RCREG,W ,

El TX es el RC6 cuidado con eso.  TRISC<6> y TRISC<7> ambos deben estar en 1.

por cierto el RCSTA ya estaba configurado de antes para recepcion continua
aqui --> movlw   90H      ;Configuracion de la usart
      movwf   RCSTA     ;para recepcion continua
es necesario habilitarlo de nuevo al terminar la interrupcion??

Perdón, se me pasó por alto, estas en lo correcto.   NO, no es necesario rehabilitarlo al terminar la interrupción.

Saludos

Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: LabPIC en 07 de Junio de 2006, 12:32:28
Hola compañero, has habilitado el bit RCIE (PIE1<5>), PEIE (INTCON<6>), GIE(INTCON<7>). Asegurate de setearlos.

Salaudos LabPIC  :mrgreen:
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: mikelzuru en 07 de Junio de 2006, 17:32:52
Chaly29 gracias por la bienvenida, no tome como un reto ni mucho menos tu post, para eso estan los moderadores, gracias por la atencion.Siguiendo con mi duda...

Hola compañero, has habilitado el bit RCIE (PIE1<5>), PEIE (INTCON<6>), GIE(INTCON<7>). Asegurate de setearlos.

ya estan seteados si te fijas en el programa del primer post al hacer:
movlw 0C0H ;Habilitacion para las
movwf INTCON ;interrupciones generales
0C0H  ---> 11000000

y tambien esta : bsf PIE1,RCIE ;Habilitacion interrupcion RX

por lo que maunix me decia...

El TX es el RC6 cuidado con eso.  TRISC<6> y TRISC<7> ambos deben estar en 1.

confusion mia, tendre que probar a poner el TRISC<6> en 1, al principio lo puse como 0 porque es una salida de datos, pero bueno, por lo que parece el resto del programa esta bien configurado, si os dais cuenta de algun fallo mas en la configuracion os gradeceria q me lo dijerais, yo probare ahora cambiando la pata Tx y ya comentare el resultado, gracias y saludos :-)
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: maunix en 07 de Junio de 2006, 19:00:18
confusion mia, tendre que probar a poner el TRISC<6> en 1, al principio lo puse como 0 porque es una salida de datos, pero bueno, por lo que parece el resto del programa esta bien configurado, si os dais cuenta de algun fallo mas en la configuracion os gradeceria q me lo dijerais, yo probare ahora cambiando la pata Tx y ya comentare el resultado, gracias y saludos :-)

Así a priori no he detectado nada mas.  Haz la prueba y comentanos tus resultados y vemos en que te podemos seguir ayudando.

Saludos
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: mikelzuru en 09 de Junio de 2006, 09:28:14
pues no consigo nada, he configurado todo segun lo que hemos hablado hasta ahora, y la interrupcion sigue saltando nada mas comenzar el programa, no espera a que se mande ningun dato del ordenador, sigo mirando pero no encuentro el fallo, me desesperooo  :-/ , si preferis que ponga el codigo completo lo pongo asi os asegurais de que todo este bien, seguire mirando, aver si me echais un cable por favor, gracias y saludos
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: pibe en 09 de Junio de 2006, 09:35:09
Si, mejor que subas todo el programa.

Yo cuando algo me falla empiezo a meterle LEDS para saber donde se queda trabado o donde deja de hacer lo que yo pretendo.
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: maunix en 09 de Junio de 2006, 09:47:44
pues no consigo nada, he configurado todo segun lo que hemos hablado hasta ahora, y la interrupcion sigue saltando nada mas comenzar el programa, no espera a que se mande ningun dato del ordenador, sigo mirando pero no encuentro el fallo, me desesperooo  :-/ , si preferis que ponga el codigo completo lo pongo asi os asegurais de que todo este bien, seguire mirando, aver si me echais un cable por favor, gracias y saludos

Fijate si al encender el PIC o conectarle el cable de la PC tienes el pin de RX en bajo.  Si es así tienes un problema de hardware.

Saludos
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: mikelzuru en 19 de Junio de 2006, 14:54:23

Fijate si al encender el PIC o conectarle el cable de la PC tienes el pin de RX en bajo.  Si es así tienes un problema de hardware.

Saludos


Pues tenias razon, la cosa es q habia una conexion  (q no la habia hecho yo pero bueno) :mrgreen: q ponia la pata de RX y la del max232 a 0, y por eso no recibia nada, pero ya esa solucionado y funciona, gracias por la ayuda a todos, para cualquier otra duda ya se donde postear, gracias otra vez y saludos
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: maunix en 19 de Junio de 2006, 20:28:05

Fijate si al encender el PIC o conectarle el cable de la PC tienes el pin de RX en bajo.  Si es así tienes un problema de hardware.

Saludos


Pues tenias razon, la cosa es q habia una conexion  (q no la habia hecho yo pero bueno) :mrgreen: q ponia la pata de RX y la del max232 a 0, y por eso no recibia nada, pero ya esa solucionado y funciona, gracias por la ayuda a todos, para cualquier otra duda ya se donde postear, gracias otra vez y saludos

Bueno me alegro haber acertado en el problema que tenías. 

Claro que aquí estamos siempre que podemos para responder a las dudas.

Saludos


Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: aamoros79 en 20 de Junio de 2006, 06:56:41
porque hay que poner rc6 y rc7 a 1?
si uno es de recepcion de datos y el otro de transmision de datos, es decir, uno de entrada y otro de salida no deberia ser uno a 0 y el otro a 1?

yo estoy utilizando un 16f876a

en el datasheet del 16f876a pone:
PORTC is an 8-bit wide, bi-directional port. The corresponding
data direction register is TRISC. Setting a
TRISC bit (= 1) will make the corresponding PORTC
pin an input (i.e., put the corresponding output driver in
a Hi-Impedance mode). Clearing a TRISC bit (= 0) will
make the corresponding PORTC pin an output (i.e., put
the contents of the output latch on the selected pin).
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: maunix en 20 de Junio de 2006, 08:14:51
porque hay que poner rc6 y rc7 a 1?
si uno es de recepcion de datos y el otro de transmision de datos, es decir, uno de entrada y otro de salida no deberia ser uno a 0 y el otro a 1?

yo estoy utilizando un 16f876a

en el datasheet del 16f876a pone:
PORTC is an 8-bit wide, bi-directional port. The corresponding
data direction register is TRISC. Setting a
TRISC bit (= 1) will make the corresponding PORTC
pin an input (i.e., put the corresponding output driver in
a Hi-Impedance mode). Clearing a TRISC bit (= 0) will
make the corresponding PORTC pin an output (i.e., put
the contents of the output latch on the selected pin).

El porqué como tu pretendes que te sea respondido no lo sabremos al menos que trabajemos en Microchip.

Lo cierto es que Microchip te dice que para usarlo como pin de usart, lo tienes que poner como '1' por más que sea salida. 

Si lo usas como '0' lo puedes usar como salida convencional pero no como usart.

Saludos
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: aamoros79 en 20 de Junio de 2006, 09:10:00
gracias maunix
no tenia idea que habia que ponerlos a 1 los dos, yo pona uno a 0 y el otro a 1, asi no me iba la transmision!
he estado buscando en la datasheet y no he encontrado donde pone que hay que ponerlos a 1 por eso era mi pregunta
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: maunix en 20 de Junio de 2006, 14:54:54
gracias maunix
no tenia idea que habia que ponerlos a 1 los dos, yo pona uno a 0 y el otro a 1, asi no me iba la transmision!
he estado buscando en la datasheet y no he encontrado donde pone que hay que ponerlos a 1 por eso era mi pregunta

Lo he visto en todos los datasheet que he leído, en la sección de USART

Dime que datasheet estás leyendo y te ayudo a encontrarlo.

Saludos
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: aamoros79 en 21 de Junio de 2006, 07:48:26
creo que lo he encontrado

en datasheet pic16f87xa
pagina109

"Bit SPEN (RCSTA<7>) and bits TRISC<7:6> have to
be set in order to configure pins RC6/TX/CK and
RC7/RX/DT as the Universal Synchronous Asynchronous
Receiver Transmitter."

es esto?
muchas gracias maunix
Título: Re: Necesito ayuda, conexion pic16f876 mediante rs232 al pc
Publicado por: maunix en 21 de Junio de 2006, 08:28:41
creo que lo he encontrado

en datasheet pic16f87xa
pagina109

"Bit SPEN (RCSTA<7>) and bits TRISC<7:6> have to
be set in order to configure pins RC6/TX/CK and
RC7/RX/DT as the Universal Synchronous Asynchronous
Receiver Transmitter."

es esto?
muchas gracias maunix

Si aamoros79 , es exactamente eso.  :) :)