Autor Tema: serin2, cambio de velocidad  (Leído 2352 veces)

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

Desconectado Basculero

  • PIC10
  • *
  • Mensajes: 3
serin2, cambio de velocidad
« 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

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: serin2, cambio de velocidad
« Respuesta #1 en: 30 de Diciembre de 2004, 17:08:00 »
Que onda Basculero,
Podrias poner tu codigo?, es mas facil asi que podamos ayudarte.

Salu2 y Feliz Año nuevo!

Desconectado Basculero

  • PIC10
  • *
  • Mensajes: 3
RE: serin2, cambio de velocidad
« Respuesta #2 en: 03 de Enero de 2005, 16:07:00 »
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

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: serin2, cambio de velocidad
« Respuesta #3 en: 03 de Enero de 2005, 20:41:00 »
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