El clock del micro es de 10 MHz (HS), no uso el pll
Lo intento simular poniendo en el registro de recepcion RCREG1 un dato y ver si se activa el flag de recepcion. Pero cuando lo hago el RC1IF nunca se activa
¿Hay alguna forma mejor de activar el flag de recepcion?
Uso MPLAB IDE v7.40
y MPLAB SIN
Te propongo revisar tu código, y armarte un pequeño que subiré para recibir y responder por usart en un 18F.
Saludos
El trisc<6> esta a cero porque es el pin de TX y para configurarlo como salida debo ponerlo a "0"
He revisado tu programa. y la configuración del pin RX y TX las pones las dos a uno. Cuando deberia ser "1" y "0", para que esos pines trabajaran como entrada y salida respectivamente.
También he visto que realizas un control de errores. Por lo demas me parece muy interesante,
Un saludo, gracias por tu programa.
con este programita consigo recorrer todos los caracteres ASCII y enviarlos. Lo he simulado y funciona porque consigo generar el archivo .txt de salida con esos datos. El problema es que no consigo visualizarlo por el hyperterminal.
Supongo con el programita que nos has pasado puedo simular el programa sin necesidad de conectar el pic al ordenador fisicamente
????
Encontre un error bien gordo en mi programa. Resulta que al activar la interrupcion por recepcion del puerto serie antes de configurar la UART pues salta la interrupcion sin entrar en la configuracion de la UART.
Ahora el problema que tengo es que estoy viendo que solo coge el primer dato de recpcion y despues no salta mas el RC1IF porque no entran mas datos a pesar de tener en el archivo para leer mas datos.
Código: ASM
TELECOMANDO bcf PIE1,RC1IE ;deshabilitamos interrupción de recepción EUSART_1 movf RCREG1,W movwf CABECERA_PAQUETE bcf RCSTA1,CREN ;limpiamos posibles errores bsf RCSTA1,CREN ;deshabilitando y habilitando CREN FIN_TELECOMANDO btfss PIR1,RC1IF ;testeamos si el buffer de RX lleno(flag RC1IF=1) goto FIN_TELECOMANDO ;vacio = no hay dato (esperamos) movf RCREG1,W movwf FIN_PAQUETE bcf RCSTA1,CREN ;limpiamos posibles errores bsf RCSTA1,CREN ;deshabilitando y habilitando CREN ;------------------- SURUTINAS DEL PROGRAMA PRINCIPAL -------------------- ;*************************************************************************
En cuanto al retfile lo tengo puesto mas abajo para salir de la interrupcion de recepcion. Como te comentaba la subrrutina de esa interrupcion hace mas cosas que solo cojer dos datos.
me he equivocado, no me funciona porque en el archivo del debuger .txt para ver lo que envia no aparece nada. A pesar de que pasa de la segunda recepcion a la salida no da nada.
Ademas con el programita que me enviaste para simular a usart, tampoco me devuelve nada
La verdad es que esto es un poco frustante.
La ultima vez trabaje con un 18F7820 y se lo tragaba todo y funcionaba a la perfeccion, pero este pic (18F8722) es horrible
De acuerdo
no estoy familiarizado con estas cosas
Pues es que esos son todos los archivos que se me generan. Yo escribo el programa, lo compilo (no me da errores) y simulo.
El archivo .mpc no se como generarlo
Espero haberlo hecho bien
Perdona con marearte con tanto archivo
pero este es el final de todos
El archivo entrada no es problema porque es el mismo que he utilizado para todos. Los datos que contiene son los mismos, datos aleatorios partiendo del 01.... para ver como los va cargando sucesivamente. Este archivo esta comprobado y esta correcto.
Por mas que lo miro no se que puede tener de especial ete pic (18F8720), porque he repaso mil veces los pasos que recomiendan para realizar la comunicacion asincrona y nada.
Yo he programado e implementado fisicamente circuitos con pic de la serie 18F y me ha funcionado la comunicacion serie sin problema, no entiendo porque con este pic en concreto no funciona. Puedo enceder luces y demas pero la comunicacion no funciona.
Algo se me escapa
Gracias por tu ayuda de todas formas
si te parece, cuelgo el programa final y me envias el .hex generado por ti para grabarlo en el pic.
De esta forma veo que pasa fisicamente
El hardware esta 100% ok porque la tarjeta con el PIC ha sido comprada a microchip, es decir, es un entrenador de microchip que ya viene construido para hacer pruebas. Yo le he metido programas sencillos para encender leds y funcionan. Lo unico que no funciona es la comunicacion serie.
El programador tambien es comprado. Se tratra del programador para el programa winpic800 que lo venden en la misma pagina. Este era el unico programador universal que podia programar el pic20F8722. Ademas como te comentaba he programado programas sencillos y han funcionado.
Por lo tanto confio pleneamente en el hardware.
Yo te dejo aqui el archivo .asm para que puedas generar el .hex
Si lo simulas en el archivo de .txt de salida no aparecera nada porque he quitado el dato de prueba que se enviava en el anterior y ahora coge el dato de los puertos que al limpiarlos siempre estan a cero y lo que transmiten no se ve.
Tal vez puede influir el reloj de 10Mhz en la usart. Leyendo la datasheet encontre esto que adjunto.
Me parece difil porque 9600 baudios no es mucho y yo he llegado ha acer palicaciones con 20 Mhz y 9600 baudios en un 18F8720
En cuanto pueda te explico lo que quiero que haga el programa.
Bueno aqui te mando un poco lo que hace el programa.
Si necesitas mas info dimelo y te paso el documento que estoy redactando al correo, aunque es bastante extenso y no quiero aburrirte.