Autor Tema: USART 16F627  (Leído 1721 veces)

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

Desconectado waltermet

  • PIC10
  • *
  • Mensajes: 25
USART 16F627
« en: 04 de Febrero de 2004, 07:44:00 »
Les comento un pequeño gran problema que tengo tratando de manejar la usart : creo haber hecho todos los pasos como para que funcione según el DS pero no funciona y no me estoy dando cuenta cual es el error. Les paso un pequeño programa de prueba que hice:
        include "modedefs.bas"
        define osc 4
        RCSTA=%10010000
        TXSTA=%00000100
        PIE1=%00000000
        x var byte
ini:   if PIR1.5=1 THEN x=RCREG
        if x=$A0 then
            high portB.5
        else
            low portB.5
        endif
        goto ini

Desde ya Muchas Gracias.
Saludos,
Waltermet

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: USART 16F627
« Respuesta #1 en: 04 de Febrero de 2004, 14:04:00 »
Que tal Waltermert,
S¿Para usar el USART de forma Asincrona (por lo que veo en tu codigo) tienes en PB PLUS comandos con aplicacion directa, como HRSIN,HSerin, pero si quieres emplear codigos de ensamblador, tienes mal configurado el registro d transmision, ya que no tienes activado el registro de habilitamiento de transmision:
TXSTA=%00000100 (TU CODIGO) <--- ESTO SE LEE ASI:
MODO ASNICRONO,DE 8 BITS, TRANSMISION DESHABILITADA,ASINCRONO,NO SE USA,BRGH EN ALTO,ESTADO DEL REGISTRO TRS LLENO,NOVENO BIT EN CERO(NO USADO).
La forma correcta es habilitando la transmision,:
TXSTA=%00100100 <--- OK!
LA RECEPCION ESTA BIEN HABILITASTE LOS PUERTOS DE LA USART Y UNA RECEPCION CONTINUA. .
Ahora ya puedes recibir y transmitir con ese usart
Otra cosa, tienes deshabiltadas las interrupciones del PIE, por lo tanto no tendras respuesta de las banderas de llenado y vacion de el pin de transmision y recepcion (OJO con eso) veo que stas usando como referencia eso y no tienes activadas las interrupciones no te va avisar jamas ya que las tienes deshabilitadas:
PIE1.5=1 <---- HABIL  INT DE RECPTOR
PIE1.4=1 <--- HABIL INT DE TRANS (en lugar de esta puedes usar el estado de llenado del TSR (TXSTA.1) Y ESTE SI LO PUEDES BORRAR TU VIA SOFTWARE, LAS INTERRUPCIONES NO.
Lee a  CONCIENCIA el usao de cada estado en interrupciones del DS , para que no tengas estos inconvenientes, o si ya estas usando el PB PLUS o pro usa el comando directo con los defines y declares necesarios para evitar error, ademas creo que te hara falta establecer la velocidad de recepcion o por lo menos no lo veo en tu codigo, para eso usas el comando SPBRG= x
este valor de x en decimal viene en las tablas del Ds del Micro que uses y depende de el estado de BRGH(alto o bajo) y de tu Oscilador en tu pic,

Saludos

Desconectado waltermet

  • PIC10
  • *
  • Mensajes: 25
RE: USART 16F627
« Respuesta #2 en: 05 de Febrero de 2004, 06:44:00 »
Lager te paso el programita con el cual al fin y al cabo funciona la RX y TX con USART:

        include "modedefs.bas"
        define osc 4
        SPBRG=%00110100
        x var byte
        RCSTA=%10010000
        TXSTA=%00100100
        PIE1=%00000000
        If PIR1.5=1 then
            x=RCREG
            TXREG=x
        endif

Con este prog -es de prueba-  cada vez que recibís un dato es reenviado por TX. Es verdad, me había olvidado el SPBRG y para el caso de la transmisión faltaba habilitar, tal como bien observaste, el bit TXEN pero en aquel prog solo empleé el TXSTA para setear el bit BRGH porque lo que más me importaba era que recibiera.

Ahora deberé seguir rompiéndome la cabeza para hacer lograr que ande el resto del prog. De paso te comento, estoy haciendo un equipo de desplazamiento lineal sobre un riel en ambas direcciones, con dos velocidades, comandado por un teclado serie. Para ello empleo un motor de CC y para saber la posición del mismo lo hago a través de un encoder -símil al de los mouse-. Y es aquí donde radica el problema ya que debo hacer el prog lo más chico posible para no perder ninguna cuenta del encoder. Por eso decidí utilizar la USART cuando antes empleaba los comandos SERIN2 y SEROUT2.

Muchas Gracias
Saludos,
Waltermet
 

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: USART 16F627
« Respuesta #3 en: 05 de Febrero de 2004, 18:12:00 »
Que onda Waltermert,
me da gusto que ya este funcionando tu codigo, y en eso tienes toda la razon, para cotejar un compilado mucho menor, no hay como el asm, yo en lo personal tambien uso asm para usar las usart de estos bichos, no tiene gran ciencia, siempre y cuando se indique todo sin olvidar los detalles que lo conforman. Esta interesante tu proyecto, haber si cuando lo termines lo subes para que todos los colegas que formamos parte este foro aprendamos cosas nuevas.
Saludos pana!!