TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: seth83 en 16 de Julio de 2011, 01:07:14

Título: Problemas datos seriales 16f88 y 16f628a
Publicado por: seth83 en 16 de Julio de 2011, 01:07:14
Que tal, tengo un lcd serial que funciona a 9600bps, si utilizo un pic 16f628a a 20mhz con salida serie por hardware funciona perfecto, solo que quise agregar un lm35 y tube que cambiar lo por un 16f88, el problema consiste en que no se como hacer para que funcione, ya intente varias cosas y en el lcd me manda puros caracteres raros

este es el codigo utilizado

Código: [Seleccionar]
@ __CONFIG _CONFIG1, _INTRC_IO & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _CCP1_RB3 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF
@ __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF

    

DEFINE OSC 8
OSCCON = %01111000 '8 Mhz
CMCON = 7 'turn comparators off
ANSEL = 0 'All digital

DEFINE HSER_BAUD 9600      ' Set baud rate
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 12  ' 9600 Baud @ 8MHz, 0.16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

INCLUDE "modedefs.bas"

pause 1800
main:
   hserout [254, 0]
   hserout [$fe, $c0, "TEXTO"]
     goto main
end

haber si alguien pudiera hecharme una manita
Título: Re: Problemas datos seriales 16f88 y 16f628a
Publicado por: soymoe en 16 de Julio de 2011, 03:06:53
Que tal, tengo un lcd serial que funciona a 9600bps, si utilizo un pic 16f628a a 20mhz con salida serie por hardware funciona perfecto, solo que quise agregar un lm35 y tube que cambiar lo por un 16f88, el problema consiste en que no se como hacer para que funcione, ya intente varias cosas y en el lcd me manda puros caracteres raros

este es el codigo utilizado

Código: [Seleccionar]
@ __CONFIG _CONFIG1, _INTRC_IO & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _CCP1_RB3 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF
@ __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF

    

DEFINE OSC 8
OSCCON = %01111000 '8 Mhz
CMCON = 7 'turn comparators off
ANSEL = 0 'All digital

DEFINE HSER_BAUD 9600      ' Set baud rate
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 12  ' 9600 Baud @ 8MHz, 0.16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

INCLUDE "modedefs.bas"

pause 1800
main:
   hserout [254, 0]
   hserout [$fe, $c0, "TEXTO"]
     goto main
end

haber si alguien pudiera hecharme una manita
Donde vas a poner el LM 35 si configurarste todas las entradas como digitales?.
Título: Re: Problemas datos seriales 16f88 y 16f628a
Publicado por: seth83 en 18 de Julio de 2011, 21:06:14
Gracias por responder, aun no e configurado la parte de lectura, pues no me muestra nada de texto en la lcd, ese es el problema que tengo ahorita, ya probe varias cosas y nada salen puos caracteres raros, y la imagen de una flecha ->, asi esta actualmente haber si me pudieras ayudar :)
Título: Re: Problemas datos seriales 16f88 y 16f628a
Publicado por: vdiazg en 19 de Julio de 2011, 00:30:41
Sabes, aunque parezca algo tonto o tirado de los pelos, te hay fijado en el pinout, yo recuerdo que una vez me confie en que todos los pics de 18 pines tenian el usart en la misma ubicacion y luego me di cuenta que no siempre es asi  :?.

Pinout del 16F628
(http://www.e-radiocontrol.com.ar/images/16f628.jpg)

pinout del 16F88
(http://circuits.datasheetdir.com/19/PIC16F88-pinout.jpg)

El usart no tiene la misma ubicacion, salvo que lo fuerzes a que funcione con software.  ;-)
Título: Re: Problemas datos seriales 16f88 y 16f628a
Publicado por: seth83 en 19 de Julio de 2011, 14:23:16
gracias por responder, no es tonto, si me llego a pasar en algunas ocaciones XD, pero no en esta, fue lo primero que le note en el proteus donde tambien funciona, pero ya armado no deja de sacar "basura" en el lcd
Título: Re: Problemas datos seriales 16f88 y 16f628a
Publicado por: vdiazg en 19 de Julio de 2011, 17:20:21
Has intentado descartar la comunicacion serial con otro dispositivo, es decir si le pones un max232 al pin de TX del PIC y en vez de enviarle los datos al LCD se lo envias a la PC, para descartar, si hay comunicacion entonces, el problema es de ruido, si es asi podrias ponerle un par de transistores.
Título: Re: Problemas datos seriales 16f88 y 16f628a
Publicado por: seth83 en 20 de Julio de 2011, 02:48:49
no creo que sea eso, en dado caso no funcionaria ni con el 16f628a, pero todo es posible, no tendras algun ejemplo que tengas 100% probado en pbp o el hex, para enviar datos seriales?
Título: Re: Problemas datos seriales 16f88 y 16f628a
Publicado por: seth83 en 20 de Julio de 2011, 22:10:55
Alguien sabe a que velocidad es mas preciso el ocilador interno del 16f628a??
Título: Re: Problemas datos seriales 16f88 y 16f628a
Publicado por: seth83 en 21 de Julio de 2011, 02:04:53
Haber si alguien me puede responder esta gran solucion que me dejo bokiabierto

resulta que con este codigo funciono a la primera

Código: [Seleccionar]
DEFINE OSC 20
OSCCON =  %01101110 '8 Mhz
CMCON = 7 'turn comparators off
ANSEL = 0 'All digital
OSCTUNE = %000000

DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 129 ' 9600 Baud @ 20MHz, 0.16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

lo mas raro es que si le cambio la velocidad del osc a 4 me aparecen los textos muy rapido, si cambio el osccon como se supone debe de ser sale pura basura, si lo uso tal cual funciona a la perfeccion
Título: Re: Problemas datos seriales 16f88 y 16f628a
Publicado por: soymoe en 25 de Julio de 2011, 16:15:17
Haber si alguien me puede responder esta gran solucion que me dejo bokiabierto

resulta que con este codigo funciono a la primera

Código: [Seleccionar]
DEFINE OSC 20
OSCCON =  %01101110 '8 Mhz
CMCON = 7 'turn comparators off
ANSEL = 0 'All digital
OSCTUNE = %000000

DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 129 ' 9600 Baud @ 20MHz, 0.16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

lo mas raro es que si le cambio la velocidad del osc a 4 me aparecen los textos muy rapido, si cambio el osccon como se supone debe de ser sale pura basura, si lo uso tal cual funciona a la perfeccion
Lo mas probable que el LCD se sature por no ser tan rapido.