Autor Tema: Serin - Serin2 - Serout -Serout2  (Leído 2750 veces)

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

Desconectado waltermet

  • PIC10
  • *
  • Mensajes: 25
Serin - Serin2 - Serout -Serout2
« en: 29 de Septiembre de 2003, 15:31:00 »
Estoy tratando de leer y escribir mensajes de 8 bytes en hexa a través de un puerto serie en 232 a 4800. Con serin y serout lo logro perfectamente, pero a 2400. Para poder hacerlo a 4800 decidí utilizar serin2 y serout2 pero no logro que funcione correctamente.
¿Existe alguna manera de leer a 4800 utilizando serin y serout? De no ser así, por favor,¿alguien puede guiarme?

Desde ya muchas gracias.

Saludos.

Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: Serin - Serin2 - Serout -Serout2
« Respuesta #1 en: 29 de Septiembre de 2003, 15:46:00 »
Hay varias posibilidades, la que a mi mas me gusta es jugar cn el cuarzo.

Puedes decirle que usas el modo 2 ó 6 ( según lo dsesees invertido o no invertido ) que son 9600 baudios y entonces poner un cuarzo de 2Mhz pero manteniendo el "DEFINE OSC 4". Con esto como todo funcionará a la mitad de velocidad aunque hayas definido 9600 baudios estarás trabajando a 4800. Cuidado porque entonces todo lo que dependa del oscilador deberás escalarlo en la misma medida.

O bién puedes hacer todo lo contrario, decir que usas el modo 0 ó 4 y poner un cuarzo de 8Mhz ( entonces necesitarás un PIC que llege a los 8 Mhz mínimo ) pero manteniendo el "DEFINE OSC 4". Con esto como todo funcionará al doble de velocidad aunque hayas definido 2400 baudios estarás trabajando a 4800. ten en cuenta las precauciones mencionada antes.
Hay 10 tipos de personas las que entienden binario y las que no

Desconectado waltermet

  • PIC10
  • *
  • Mensajes: 25
RE: Serin - Serin2 - Serout -Serout2
« Respuesta #2 en: 29 de Septiembre de 2003, 16:06:00 »
Muchas Gracias, Marqués. Hago las pruebas de rigor y te digo como salió todo.

Saludos

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Serin - Serin2 - Serout -Serout2
« Respuesta #3 en: 29 de Septiembre de 2003, 18:35:00 »
Hola Walter,

En Melabs hay un sitio (serin2/serout2 modes)  donde te describe todos los ajustes de de serin2 y serout2. Para 4800 tienes los siguientes ajustes:

4800 Driven true        None   188
4800 driven true        even    8380
4800 driven inverted  none   16572
4800 driven inverted  even   24764
4800 open   true        none   32956
4800 open  true         even   41148
4800 open  invered    none   49340
4800 open  inverted   even   57532

Tienes que ver en el datasheet según el cristal que utilices el error que se genera en la frecuencia de baudrate para ver si es aceptable o no. En general, a mayores frecuencias de cristal  mayores baudrate de transmisión.

No olvides la sentencia  Define OSC   xx "donde xx es la frecuencia del reloj.

Saludos
Ricky

Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: Serin - Serin2 - Serout -Serout2
« Respuesta #4 en: 30 de Septiembre de 2003, 05:51:00 »
El problema de Walter es que quiere usar las funciones "serin" y Serout" no las "serin2" y "serout2", y dichas funciones no disponen de la velocidad que el desea.
Hay 10 tipos de personas las que entienden binario y las que no

Desconectado waltermet

  • PIC10
  • *
  • Mensajes: 25
RE: Serin - Serin2 - Serout -Serout2
« Respuesta #5 en: 30 de Septiembre de 2003, 09:09:00 »
Marqués: probé con el cambio de modo pero me trae problemas con ciertas subrutinas como vos bien me avisaste.Hoy, volví a intentar con el serin2 y serout2 y me día cuenta que uno de los problemas radicaba en que no había hecho el cálculo para 4800 invertido, en lugar de escribir 16572 puse 188 -anoche soñe con esto, me parece que voy a jugarle a la lotería-.

Mil gracias Ricky por la tabla, con ella pude resolver parte del problema que tengo. Y con el link que me pasaste voy a ver si puedo resolver la parte 2 del problema, que se las comento:

Ahora el tema pasa por leer los datos en hexa. Quiero leer 8 palabras pero no se da ni por enterado el pic.
Este un programita de prueba que estoy usando para experimentar con estas sentencias:
        define osc 3
        j var byte
        dat var byte[8]
        low portb.3
Leer:   for j=0 to 7
                  serin2 portB.1,16572,[hex dat[j]]
´si le sacás la palabra hex funciona, pero en el programa original necesito que lea y compare datos en hex
        next j
        if dat[0]=dat[7] then
            high portB.3
            low portB.5
        else
            high portB.5
            low portB.3
        endif
        goto leer
        end  

Muchas Gracias y Saludos, Walter

Desconectado waltermet

  • PIC10
  • *
  • Mensajes: 25
RE: Serin - Serin2 - Serout -Serout2
« Respuesta #6 en: 30 de Septiembre de 2003, 16:06:00 »
PROBLEMA SOLUCIONADO.
Gracias a su colaboración pude sacar andando no solo el programita de prueba sino el original.

Marqués, Ricky mil gracias.

Saludos, Walter