Autor Tema: Comunicacion por USART...que estoy haciendo mal?? (SOLUCIONADO)  (Leído 4675 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cegus

  • PIC10
  • *
  • Mensajes: 7
Comunicacion por USART...que estoy haciendo mal?? (SOLUCIONADO)
« en: 09 de Julio de 2009, 23:10:18 »
buenas a todos!...
Les planteo mi  problema, estoy haciendo un programa en ASM mediante el cual el PIC 16F877 muestre en la PC la temperatura, hasta aca todo bien! y cuando se presione una "letra" cualquiera desde la PC, el PIC debe de "APAGAR" los dispositivos conectados a el, y no hacer nada hasta que se presione un "numero"!...lal apretar un "numero" este vuelva a lo que estaba haciendo anteriormente...el problema ocurre que el PIC envia un cierto numero de veces a la PC y luego ya entra a la rutina de  "APAGAR" sin que yo haya apretado ninguna tecla, y al apretar un "numero" este vuelve a enviar un par de veces y luego vuelve a entrar en la rutina de apagar sin que yo haya apretado nada!...

En el proteus funciona bien, pero en el hardware real se comporta asi como les comento...hace una semana que estoy con este tema y no logro ver que estoy haciendo mal y ya me esta sacando canas verdes!!...

Adjunto mi codigo!

Muchas gracias!
« Última modificación: 24 de Julio de 2009, 10:29:48 por cegus »

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #1 en: 10 de Julio de 2009, 06:53:05 »


http://www.todopic.com.ar/foros/index.php?topic=26493.0

En este hilo reciente se trato este tema y se puso una rutina que funciona bien para la USART del 16f877, ademas comprobada, espero que te sirva, fijate que curiosamente TX se configura como entrada y no como salida.

tapi8

Desconectado cegus

  • PIC10
  • *
  • Mensajes: 7
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #2 en: 10 de Julio de 2009, 11:09:52 »
Muchas gracias Tapi8 por responder!

Yo no sabia que el pin Tx y RX debian de configurarse como entradas!!...

Yo configuraba el Pin TX como salida y el PIN Rx como entrada...
voy a probar con eso a ver si me funciona!

pero lo raro es que Tx un par de veces y luego deja de TX...sera por la configuracion de pines??...

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #3 en: 10 de Julio de 2009, 11:33:24 »
Por lo que dicen en ese hilo es la propia USART la que en el momento de la transmision la configura como salida, yo hasta que lo vi en ese hilo tampoco lo sabia, mira que quien la pone Alogic_on dice que lleva tiempo usandola y nunca le fallo.

tapi8

Desconectado cegus

  • PIC10
  • *
  • Mensajes: 7
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #4 en: 10 de Julio de 2009, 11:37:31 »
acabo de probar cambiar los pines RX y TX poniendolos como entrada y nada, se comporta lo mismo!
Envia un par de veces y luego entra en la rutina de apagar sin que yo le de la orden!! eso es lo raro!!...
Yo he hecho un programita "ECO" que me muestre en el hyperterminal lo envio por el teclado y me funciono, pero al aplicar a mi programa no me anda!
pues solamente cuando yo "apriete una tecla del teclado" el entre en la rutina de "apagar" y el entra en la rutina sin que yo apriete nada!!

gracias!

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #5 en: 10 de Julio de 2009, 13:42:42 »
Tal vez tengas un problema en el soft de tu PC. Está enviando un dato que puede ser cualquiera, y el PIC lo toma como si fuese una tecla presionada.
Deberías fijarte el estado de la comunicación con la PC y el PIC.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #6 en: 10 de Julio de 2009, 13:49:39 »
Podrías hacer un programita más sencillo que reciba y envíe datos al PC para asegurarte que eso funciona bien y lo has configurado todo correctamente :wink:
No contesto mensajes privados, las consultas en el foro

Desconectado cegus

  • PIC10
  • *
  • Mensajes: 7
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #7 en: 10 de Julio de 2009, 17:06:31 »
gracias Suky y leon pic por responder!


utilizo el hyperterminal como interfaz en la PC, primeramente hice un programa que solo enviara datos a la PC, y funciono, luego hice un programa que reciba datos desde la PC y me lo mostrara en el LCD y tambien me funciono....pero al mezclar las cosas no me funciono!

No utilizo ninguna interrupcion, lo unico que hago es preguntar cual es el estado del flag PIR1,RCIF, si esta a "1" es por que se esta queriendo TX desde la PC hacia el PIC, entonces entra en la rutina "APAGA" , y entiendo yo que eso deberia ocurrir solo cuando presione una tecla, pero este envia un par de veces y luego entra solito!
hasta que presione un "numero" y ahi sale envia un par de veces y luego vuelve a entrar!

le adjunto mi simulacion a ver si se entiende mejor lo que quiero lograr!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #8 en: 10 de Julio de 2009, 18:28:29 »
 :undecided: No se si yo o que, pero no puede entender como es el ciclo del programa :8} Y así es muy difícil encontrar algún problema. Tendrás que diferenciar bien las rutinas, el programa principal, mas o menos un orden, así se te va a ser y nos va a ser más fácil encontrar el problema :wink:
No contesto mensajes privados, las consultas en el foro

Desconectado cegus

  • PIC10
  • *
  • Mensajes: 7
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #9 en: 10 de Julio de 2009, 19:23:20 »
muchas gracias Suky por tu ayuda! y si, la verdad es un poco largo el programita y ademas tiene vaaaaarias rutinas!...

Mi duda va mas o menos por aca, esta bien hacer esto:?

                   btfsc   PIR1,RCIF     ; Verifica el estado del flag para ver si se dese enviar algo al PIC
         goto    apaga        ; Apaga todo

mi pregunta es porque entra en la rutina "apaga" si la bandera esta a cero, es decir no presione ninguna tecla, o tal vez no le guste que lo haga dentro un ciclo continuo??...

Voy a tratar de ordenar un poco mas el programa!...

muchas gracias!

Desconectado om@r

  • PIC12
  • **
  • Mensajes: 86
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #10 en: 10 de Julio de 2009, 19:49:46 »
Hola ,yo siempre hasta ahora use la RX con interrupcion pero creo
que tu rutina podria ser algo como esto... si es que le pregustas si hay un dato...
 
DATO  BTFSS   PIR1,RCIF ;preguntas si hay dato
          GOTO    $-1           ;sigues preguntando ,esto es un ejemplo porque podria salir luego de un tiempo si quieres...
          BCF       PIR1,RCIF  ;borras la bandera
          MOVF     RCREG,W  ;si hay dato lo vuelcas a W para trabajar con el ,sigues con tu progarama
          RETURN
« Última modificación: 10 de Julio de 2009, 20:06:37 por om@r »

Desconectado sansanoloko

  • PIC10
  • *
  • Mensajes: 48
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #11 en: 11 de Julio de 2009, 12:08:41 »
Hola a todos!
Personalmente recomiendo gestionar la recepción o la transmisión (o ambas) mediante interrupciones, así la tarea de recibir y validar uno o más datos puede ser transparente para el programa principal, igual que transmitir uno o muchos bytes como es el caso de las cadenas de caracteres ascii.

Además hay que preocuparse del detalle de los flags TXIF y RCIF, ya sea por interrupción o no. Cuando se leen dichos flags esperando que sean "1" generalmente se hace en un bucle (o esperando que generen una interrupción). En el momento que el flag se pone en "1" se sale del bucle (o se invoca el servicio de interrupción), hay que forzar SIEMPRE, manualmente el flag a cero (con un BCF), ya que el hardware que gestiona los flags (USART) solo los pone a "1" para aviso de evento RX/TX, y deja al programa la mision de limpiar los flags como "acusando recibo" del aviso de evento.

Espero sirva mi aporte, y saludos a quienes nos leen.

Desconectado cegus

  • PIC10
  • *
  • Mensajes: 7
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #12 en: 11 de Julio de 2009, 15:16:22 »
muchas gracias todos por sus comentarios y por su ayuda!!

Voy a tomarme el fin de semana para trabajar en el a ver si resuelvo el inconveniente teniendo en cuenta sus recomendaciones!

y les aviso como me fue y si consegui solucionarlo!

Un cordial saludo!

Desconectado cegus

  • PIC10
  • *
  • Mensajes: 7
Re: Comunicacion por USART...que estoy haciendo mal??
« Respuesta #13 en: 24 de Julio de 2009, 10:25:12 »
buenas a todos!

les comento que solucione ya el problema que tenia con la comunicacion serial, resulta que como utilizaba el protocolo 485, el problema era que no estaba bien configurado el pin -RE/DE del integrado, y eso me estaba creando conflictos...
era una tonteria pero me llevo dias darme cuenta de ese detalle!....ahora anda de maravillas!!

muchas gracias a todos!

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Comunicacion por USART...que estoy haciendo mal?? (SOLUCIONADO)
« Respuesta #14 en: 25 de Julio de 2009, 06:22:35 »
Me alegro que lo slucionaras, la mayoria de las veces las cosas tontas son las que mas problemas dan, y las mas dificiles de diagnosticar.

saludos tapi8