TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Basculero en 30 de Diciembre de 2004, 09:31:00
-
Hola a todos, estoy realizando un lcd para enviarle mensajes desde el pc y todo funciona bien hasta que le he querido modificar la velocidad.
En principio a 2400 baudios sin problema pero al querer que funcione a 9600 no hay forma, he cambiado el cristal de 4 a 10 Mhz, se lo he indicado al programa
OSC 10, le he cambiado el mode al serin2 a 16468 y sigue sin funcionar.
Agradecere cualquier comentario al respecto
Gracias y un saludo FELICES FIESTAS
-
Que onda Basculero,
Podrias poner tu codigo?, es mas facil asi que podamos ayudarte.
Salu2 y Feliz Año nuevo!
-
Hola Lager, gracias por contestar, despues de las fiestas volvemos al trabajo rutinario. el codigo es el siguiente:
"*********************************************************
"* *
"* CONTROL DE LCD POR RS-232 *
"* VERSION: 1.1 *
"* AUTOR: JOSE ARCE *
"* FECHA: 14-12-04 *
"* *
"*********************************************************
DEFINE LCD_DREG PORTB " SETEO EL PUERTO DE DATOS
DEFINE LCD_DBIT 0 " COMIENZO LOS DATOS EN EL BIT 0
DEFINE LCD_RSREG PORTB " SETEO PUERTO PARA REGISTER SELECT
DEFINE LCD_RSBIT 4 " SETEO EL BIT DE REGISTER SELECT
DEFINE LCD_EREG PORTB " SETEO EL PUERTO PARA LCD ENBLE
DEFINE LCD_EBIT 5 " SETEO EL BIT 5 COMO LCD ENABLE
DEFINE LCD_BITS 4 " SETEO EL TAMAÑO DEL BUS DE DATOS
DEFINE LCD_LINES 2 " SETEO EL NUMERO DE LINEAS DEL LCD
"DEFINE OSC 10
Include "modedefs.bas" " Include serial modes
linea1 VAR BYTE[16]
linea2 VAR BYTE[16]
inicio VAR BYTE
rsin VAR PortA.0 " Pin entrada serie
rsout VAR PortA.1 " Pin salida serie
LCDOUT $FE,$80,"...Esperando...."
"GOTO LEER1
leer1: "PAUSE 5000 " PAUSA DE 5 SEGUNDOS
"LCDOUT $FE,1 " BORRO DISPLEY
"LCDOUT $FE,$80,"...Esperando...."
SERIN2 rsin,16780,[INICIO] " LEO UN CARACTER DEL PORT
if inicio = "#" then " SI ES LA ALMOHADILLA
GOTO LEER
ELSE
CLEAR
GOTO LEER1
ENDIF
LEER:
clear
SERIN2 rsin,16780,[inicio] " LEO EL PORT
If inicio = "1" then " SI ES LA DIRECCION
GOTO LIN1
ENDIF
GOTO leer1 " VUELVO A COMPROVAR
lIN1:
SERIN2 rsin,16780,[STR linea116] " TOMO 16 CARACTERES
SERIN2 rsin,16780,[STR linea216] " TOMO 16 CARACTERES
LCDOUT $FE,1 " BORRO DISPLEY
LCDOUT $FE,$80,STR linea116 " LOS MUESTRO EN EL LCD
LCDOUT $FE,$C0,STR linea216
CLEAR
GOTO leer1
Con este codigo funciona bien, pero cuando le pongo
OSC 8 o 10
y le cambio la velocidad al serin2
SERIN2 rsin,16468,[STR linea116] " 9600 baudios invertido
tambien he probado
SERIN2 rsin,N9600,[STR linea116] " 9600 baudios invertido
pero no me funciona, segun el manual del pbp para SERIN2 a 9600 baudios se necesita un cristal superior a 4 MHz, he probado con 8 y 10 MHz que es el mas rapido que me reconoce ( uso el pic 16F84A )
En fin ¿donde tengo el problema?, por ahora por cuestion de tiempo he tenido que dejarlo a 2400 baudios.
Un saludo para todos
-
Que onda Basculero,
Podrias empezar quitando este include:
Include "modedefs.bas" " Include serial modes <------------------
Ya que los comandos serin2.... no usa este include y estas sobre escribiendo:
" Serin / Serout Modes (Do not use with Serin2 / Serout2) {Abre el INCLUDE ahi aparece esta informacion.....)
Editado:
El Mode para 9600 es de 84 no se por que pusiste el otro valor
Mode = 84 (9600 baud, sin paridad, normal) (si usas Rs232
Mode = 16780 (2400 baud, sin paridad, invertido) (sin controlador..)
editado:
Si usas el invertido(usando controlador..)
Mode=16468(9600 baud, sin paridad, invertido)
Una cosa mas, deberias de depurar un poco mas el codigo, de todas formas con un xtal a 4 deberia de funcionar, y solo como recordatorio acuerdate de cambiar de donde vayas a enviar(o en determinado tiempo recivir) esta info(simulando o en la hiperteminal) la recepcion a 9600(ambos T y r deben de estar a esta velocidad).
Recuerda el conexionado("SOLO EN CASO DE QUE USES EL CONTROLADOR):

Una prueba que puedes hacer es dejar sin Define osc(dejarlo a 4mhz) y conectarle eel cristal(en montaje real) de 8 mhz asi si elijes nuevamente los 9600, iria al doble(19200) de velocidad la recepcion(el envio desde tu pc debe ser seteado ahora a 19200 para que tu micro pueda recivir...) ..... Bibliografia:
http://microengineeringlabs.com/resources/pbpmanual/7_0.htm
Salu2 pana