TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: RedPic en 20 de Octubre de 2007, 09:24:30

Título: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 20 de Octubre de 2007, 09:24:30
Situación:

Tengo una USART, la única disponible, en un 18F4550, transmitiendo y recibiendo alegre a 115200 "braulios", hablando hasta por los codos con un módulo EM202 que acepta este baudaje feliz y contento como niño con zapatos nuevos.

Las líneas TX RX pasan a través de un conmutador analógico, un CD4053, que me permiten seleccionar si dichas TX RX irán destinadas a una llamémosle TX1 RX1 que es donde tengo el EM202, o por el contrario iran destinadas a otras TX2 RX2 donde tengo un MAX485.

Con un pin de control conmuto al EM202 o al MAX485 según me haga falta.

Hasta ahí todo bien. Emito y Recibo mensajes perfectamente por ambos canales .... peeeeeeroooooo ... siempre y cuando ambos canales hablen a la misma velocidad.

Problema:

Tengo que conectar un dispositivo RS485 que funciona con un 16F628A con oscilador interno a 4Mhz y su correspondiente MAX485. Pero ¡Oh Dioses Electrónicos que me maltratáis! Cuando intento ponerlo a 115200 "braulios" me dice aquello de "Baud out of range". El paupérrimo 16F628A no alcanza a hablar con la velocidad, prestancia y prepotencia del querido 18F4550 a 48 Mhz. Lógico por otro lado, no me quejo.

Pero hete aquí que intento reducir la velocidad del 18F4550 cuando hable o escuche el canal RS485 y volver a aumentarla para el canal EM202.

Así por defecto pongo aquello de:

#use rs232(baud=115200, xmit=EM202_RX, rcv=EM202_TX)


y cuando tengo que oir el otro canal escribo:

#use rs232(baud=9600)
task_rs485();
#use rs232(baud=115200)

y me como un maguño como un puño.  :?

Todo deja de funcionar, ni habla a 9600 ni a 115200, ni a unos tristes 1200 que eran los "braulios" a los que hablaban los antiguos módemes analógicos en los que se ponía el auricular del teléfono en una cama con dos orejas.

El programa está realizado en CCS C ... y ya no sé cómo usan los uses RS232, ni qué hace con ellos el CSS C, ni si soy de aquí o soy de allá ... me he perdido como un Neoyorkino en el amazonas.

Pregunta:

En fin, ¿algún consejo? ¿alguna idea? ¿ :roll:?



 
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: elreypic2 en 20 de Octubre de 2007, 10:04:30
Que tal Redpic,

Efectivamente la idea que intentas hacer es correcta. Lo que no es correcto es que uses la directiva "#use rs232" para cambiar los baudios. Lo que tiene que hacer es scribir directamente en los registros del microcontrolador para modificar el baud rate. Es decir, tienes que modificar los siguientes registros de configuracion del USART.
TXSTA
RCSTA
BAUDCON

Estos son los mas importantes ya que estos registros son los que te permiten configurar el baud rate.
SPBRG
SPBRGH

En el datasheet encontraras la mejor explicacion de modulo USART del microcontrolador y hasta encontraras algunas tablas que te dan los valores para diferentes baud rates y si el que necesitas no esta, simplemente aplicas la formula que tambien viene ahi.

Este microcontrolador tiene mejores caracteristicas que los de la familia 16 (PIC16FXXX).

Saludos y espero haberte ayudado en algo.

Elreypic
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 20 de Octubre de 2007, 10:11:51
Que tal Redpic,

... tienes que modificar los siguientes registros de configuracion del USART.
TXSTA
RCSTA
BAUDCON
...
SPBRG
SPBRGH


Cierto, muy cierto. Voy a hacerlo con #asm y #endasm tal como lo hacía cuando comencé en esto directamente en ensamblador y sin que el CCS C se entere de nada de lo que estoy haciendo.

Muchas gracias por la ide, ElReyPic.  :mrgreen: :mrgreen: :mrgreen:
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: Azicuetano en 20 de Octubre de 2007, 10:38:28
Esto no va a ser, pero, lo comento de todos modos.

Ahora estoy trabajando con una comunicación RS485 entre varios dispositivos.

Tengo 2 PC´s. Con uno programo la pba y en el otro tengo enganchado el cable para monitorizar las tramas que envío ERROR!!!

Se produce un bucle de masas que no veas y la comunicación se queda KO cuando le da la gana.

El PC con el que programo lo tengo enganchado a la pba por medio del programador (GTP-USB+) y el cable de comunicación lo tengo enganchado al otro PC.

Solución?? Quitamos el cable de programación ICSP y ya está, ya no hay bucle de masas. Parece una idiotez, pero, me ha dado muchos quebraderos de cabeza esta tontería.

Otra cosa que también recomiendo es la directiva RS232_ERRORS. Cuando en la comunicación se produce un 'framing error' o un 'overun error' la comunicación se queda totalmente parada y hay que rearmarla de nuevo. A ver si lo que obtienes es algún tipo de error que te congela la comunicación. Recomendaría que trataras estos posibles errores y que cuando se produzca alguno la rearmes para que no se quede parado (esto que comento también me dió muchos quebraderos de cabeza jeje).


Un saludo desde Alicante.
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 20 de Octubre de 2007, 10:41:22
Otra cosa que también recomiendo es la directiva RS232_ERRORS. Cuando en la comunicación se produce un 'framing error' o un 'overun error' la comunicación se queda totalmente parada y hay que rearmarla de nuevo. A ver si lo que obtienes es algún tipo de error que te congela la comunicación. Recomendaría que trataras estos posibles errores y que cuando se produzca alguno la rearmes para que no se quede parado (esto que comento también me dió muchos quebraderos de cabeza jeje).

eeeeeeh .... y ezo qué é lo que é  :shock: :shock: :shock:

¿Autodesbloqueo o notificación del Bloqueo y búscate la vida?

Quiero más, quiero más ... ja ja ja  :D :D :D

Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: MGLSOFT en 20 de Octubre de 2007, 11:25:12
Diego:
Yo abri un tema aqui mismo, preguntando algo similar a lo tuyo.
Me tiraron varias ideas,hasta que pude solucionarlo y en el mismo tema puse como lo solucione, busco el tema y te pongo aqui el link... :mrgreen:

Aqui esta!!
http://www.todopic.com.ar/foros/index.php?topic=16369.0 (http://www.todopic.com.ar/foros/index.php?topic=16369.0)
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: Nocturno en 20 de Octubre de 2007, 11:28:49
Yo tengo un proyecto donde establezco los baudios directamente en los registros que te ha dicho elreypic, pero no hay que irse al ASM para hacerlo, Don Diego:

#byte BAUDCON=0xFB8
#byte SPBRGH=0xFB0
#byte SPBRG=0xFAF

BAUDCON=BAUDCON | 8;
SPBRGH=0x04;
SPBRG=0XDC;

Por cierto, que he probado a modificar la velocidad en tiempo de ejecución y funciona perfectamente.
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: Azicuetano en 20 de Octubre de 2007, 15:14:52
Jejeje... me explico un poco mejor  :mrgreen:

Al principio lo que ponemos es lo típico pero fíjate en la palabra en negrita:

#use rs232(baud=9600, xmit=pin_C6, rcv=pin_C7, ERRORS)

En la ayuda del CCS tenemos:

ERRORS
 Used to cause the compiler to keep receive errors in the variable RS232_ERRORS and to reset errors when they occur.
 
If a baud rate cannot be achieved within 3% of the desired value using the current clock rate, an error will be generated. The definition of the RS232_ERRORS is as follows:
 

No UART:

·   Bit 7 is 9th bit for 9 bit data mode (get and put).

·   Bit 6 set to one indicates a put failed in float high mode.
 

With a UART:

·   Used only by get:

·   Copy of RCSTA register except:

·   Bit 0 is used to indicate a parity error.

Es decir:

Código: [Seleccionar]
#int_rda
void serial_isr()
{
   if ( rs232_errors & 0x04 )  // get framing error bit from Rx status reg
   {
      cRxErrorFlag=1;
   }

   if(kbhit())
   {

      Keypress=getc();

      buffer_char(Keypress);                       // lo recibo y lo añado al Buffer de Recepcion
  }
}

Y despues en el main puedes hacer el control del flag cRxErrorFlag

Código: [Seleccionar]
if(cRxErrorFlag==1)
   {
      printf("ERROR*ERROR#");
      cRxErrorFlag=0;
   }

Todo esto lo copié de un tio y me funcionó bien. Por el hecho de poner en el #use rs232 lo de ERRORS la comunicación ya se reestablece sola y además... puedes descubrir que tipo de error se ha producido comprobando rs232_errors.

0x04 para detectar el framing error y 0x02 para detectar el overrun error. Estos valores los puedes ver en el registro RCSTA. Se podría decir que es como si se copiara en la variable rs232_errors.

Este programa lo hice hace tiempo, en los que estoy haciendo ahora me gusta hacerlo a pelo con el registro RCSTA:

Los bits 0, 1 y 2 se encargan de la paridad, overrun y framing respectivamente.

Como dice Manolo lo más fácil es:

#byte RCSTA=0xFAB

Y después comprobar los bits 1 y 2 para ver el tipo de fallo.

Un cliente me volvió loco con que varios equipos se le colgaban. Hasta que no hice ese tratamiento de errores sufrí bastante. Por cierto, es muy fácil simular esos errores y comprobar como el PIC se queda KO (y como conseguimos rearmarlo, claro)

Haz un programa y en el bucle infinito estate continuamente mandando un caracter al ordenador, sin retardos y sin nada. Después pulsa una tecla del ordenador para mandarle un comando al PIC (y mantenla pulsada). Cuando los datos empiezan a colisionar se arma la marimorena jejeje (aunque con un buen control de flujo creas que eso no puede suceder... mas vale prevenir que escuchar al cliente cabreao  :D)

Bueno, ya nos comentas.


Un saludo desde Alicante.
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 20 de Octubre de 2007, 19:35:56
La verdad es que no sé qué haría sin vosotros.  :oops:

Os amo, a todos.  :mrgreen:

Mañana por la mañana pondré en práctica vuestros consejos. Muchísimas gracias.  :mrgreen:
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: MGLSOFT en 20 de Octubre de 2007, 20:22:20
En realidad mis cambios los hago desde un menu de usuario, no desde lineas de programa, pero puede adaptarse.
Igual lo que puso Manolo y Azicuetano, creo que te serviran!! :mrgreen:
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 21 de Octubre de 2007, 14:49:28
¿Cómo decía aquella canción ... ? Ah, si ... "Con un poco de ayuda de mis amigos ..."

Funcionando el doble BaudRateaje  :mrgreen:

Aplicada la pócima de Manolo Nocturno, que he tenido que aliñar ya que no me funcionaba directamente porque los dos baudajes eran tan extremos, 9600 y 115200, que he tenido que tocar también el bit BRGH del registro TXSTA, pero ahí queda constancia del asunto:

Código: C++
  1. void set_baudrate(int8 rate){
  2.  
  3.    switch(rate){
  4.       case  baudrate_standard:   // 115200 bauds
  5.             BAUDCON &= 0b11110111;
  6.             TXSTA=0x26;
  7.             SPBRG=0X00;
  8.             SPBRG=0X19;
  9.             break;
  10.       case  baudrate_rs485:      //   9600 bauds
  11.             BAUDCON &= 0b11110111;
  12.             TXSTA=0x22;
  13.             SPBRG=0X00;
  14.             SPBRG=0X4D;
  15.             break;
  16.    }
  17. }


También he implementado el control de errores Made In Azicuetano. Exactamente tal y como él lo ha posteado.  :mrgreen:

Gracias a todos.
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: Nocturno en 21 de Octubre de 2007, 15:24:17
M'alegro que lo consiguieras.

¿Porqué reinicias el byte SPBRG antes de cargarle un valor?, ¿te falla si no lo haces?
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 21 de Octubre de 2007, 15:40:18
M'alegro que lo consiguieras.

¿Porqué reinicias el byte SPBRG antes de cargarle un valor?, ¿te falla si no lo haces?

Ja, ja ja  :D :D :D  Es un doble fallo que no sirve para nada.

Doble fallo porque:

1º.- BAUDCON &= 0b11110111; establece que voy a trabajar con SBPRG 8 bits luego SPBRGH no hace falta cargarlo.
2º.- Quería poner SPBRGH=0x00; era necesario si hubiese utilizado 16 bits, pero lo copié y pegué y se me olvidó ponerle la H.

Con lo cual esa línea no sirve absolutamente para nada, aún cuando la hubiese escrito bien.  :D :D :D

O sea que debería ser:

Código: C++
  1. void set_baudrate(int8 rate){
  2.  
  3.   switch(rate){
  4.      case  baudrate_standard:   // 115200 bauds
  5.            BAUDCON &= 0b11110111;
  6.            TXSTA=0x26;
  7.            SPBRG=0X19;
  8.            break;
  9.      case  baudrate_rs485:      //   9600 bauds
  10.            BAUDCON &= 0b11110111;
  11.            TXSTA=0x22;
  12.            SPBRG=0X4D;
  13.            break;
  14.   }
  15. }
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: Nocturno en 21 de Octubre de 2007, 15:43:35
Jeje, pues puestos a optimizar, también te puedes ahorrar el BAUDCON &= 0b11110111; y dejarlo en el arranque  :mrgreen:
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 21 de Octubre de 2007, 16:18:15
Joé, a que me quedo sin función. Lo quito todo y todo funciona ... ja, ja, ja, ja ,ja  :D :D :D :D :D

Cierto, muy cierto, maestro Nocturno.

Código: C++
  1. void set_baudrate(int8 rate){
  2.  
  3.   switch(rate){
  4.      case  baudrate_standard:   // 115200 bauds
  5.            TXSTA=0x26;
  6.            SPBRG=0X19;
  7.            break;
  8.      case  baudrate_rs485:      //   9600 bauds
  9.            TXSTA=0x22;
  10.            SPBRG=0X4D;
  11.            break;
  12.   }
  13. }
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: MGLSOFT en 21 de Octubre de 2007, 23:34:58
esta funcion solo cambia de baudrate o tambien los demas seteos (8N1 por ejemplo a 8E2).
Me explico bien en la pregunta o la formulo de nuevo??
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 22 de Octubre de 2007, 01:39:02
Si a todo. Te explicas y solo cambia el Baud Rate.  :mrgreen:

Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: Mario_2004 en 22 de Octubre de 2007, 05:34:58
Hola a todos,

Hace tiempo en un programa utilicé el siguiente código para inicializar la velocidad y funciona perfectamente.
Código: [Seleccionar]
   switch(velocidad) {
      case 0 :
         set_uart_speed(9600);
         break;
      case 1 :
         set_uart_speed(19200);
         break;
      case 2 :
         set_uart_speed(38400);
         break;
      case 3 :
         set_uart_speed(115200);
         break;
      default:
         set_uart_speed(115200);
         break;
   }

No lo he probado, pero según su ayuda, debe funcionar en cualquier parte del código:
Código: [Seleccionar]
Syntax:
 set_uart_speed (baud, [stream])
 
Parameters:
 baud is a constant 100-115200 representing the number of bits per second. stream is an optional stream identifier.
 
Returns:
 undefined
 
Function:
 Changes the baud rate of the built-in hardware RS232 serial port at run-time. 

saludos,
Mario
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 22 de Octubre de 2007, 09:40:43
No conocía esa función, y sí, parece que hace lo mismo que hemos realizado "a pelo".

Muchas gracias por tu apunte.

De paso al consultar la ayuda de mi CCS C acabo de descubri un bug en la ayuda ja, ja, ja  :D :D :D

...
Function:
 Changes the baud rate of the built-in hardware RS232 serial port at run-time. 
 Each bit in the value represents one pin.  A 1 indicates the pin is input and a 0 indicates it is output.
Availability:
 This function is only available on devices with a built in UART.


Lo que está en itálica parece que es de la ayuda del SET_TRIS()  :mrgreen:
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: MGLSOFT en 22 de Octubre de 2007, 10:43:42
No conocía esa función, y sí, parece que hace lo mismo que hemos realizado "a pelo".

Muchas gracias por tu apunte.

De paso al consultar la ayuda de mi CCS C acabo de descubri un bug en la ayuda ja, ja, ja  :D :D :D

...
Function:
 Changes the baud rate of the built-in hardware RS232 serial port at run-time. 
 Each bit in the value represents one pin.  A 1 indicates the pin is input and a 0 indicates it is output.
Availability:
 This function is only available on devices with a built in UART.


Lo que está en itálica parece que es de la ayuda del SET_TRIS()  :mrgreen:

Ehhh!!  :-/ :-/
Veo que no habias visitado el link que te puse!! :D :D
Alli verias que yo la utilize!! :mrgreen:
Código: C
  1. //Constantes de los seteos de configuracion de velocidades y modos.
  2.  
  3. enum Sel_Protocolo {ModBusRTU, ModBusASCII, SerialASCII}; // 0,1 y 2 respectivamente
  4.  
  5. enum Sel_Velocidad { B9600_E_8_1, B9600_N_8_1, B9600_O_8_1, //default 9600,E,8,1
  6.                     B19200_E_8_1, B19200_N_8_1, B19200_O_8_1,
  7.                     B38400_E_8_1, B38400_N_8_1, B38400_O_8_1,
  8.                     B57600_E_8_1, B57600_N_8_1, B57600_O_8_1};
  9. /**************************************************************************************
  10. Enumeracion de las diferentes velocidades elegidas para el puerto serial
  11. ***************************************************************************************/
  12. #use rs232(baud=19200, PARITY=E, BITS=8, xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C5,stream=E81)
  13.  
  14. #use rs232(baud=19200, PARITY=O, BITS=8, xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C5,stream=O81)
  15. #use rs232(baud=19200, PARITY=N, BITS=8, xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C5,stream=N81)
  16.  
  17.  //rutina seleccion velocidad
  18.  
  19. void Elige_Velocidad_Comm (Int8 Baudrate)
  20.    {
  21.    switch (Baudrate)
  22.       {
  23.       case B9600_E_8_1: set_uart_speed(9600,E81); break;
  24.       case B9600_N_8_1: set_uart_speed(9600,N81); break;
  25.       case B9600_O_8_1: set_uart_speed(9600,O81); break;
  26.       case B19200_E_8_1: set_uart_speed(19200,E81); break;
  27.       case B19200_N_8_1: set_uart_speed(19200,N81); break;
  28.       case B19200_O_8_1: set_uart_speed(19200,O81); break;
  29.       case B38400_E_8_1: set_uart_speed(38400,E81); break;
  30.       case B38400_N_8_1: set_uart_speed(38400,N81); break;
  31.       case B38400_O_8_1: set_uart_speed(38400,O81); break;
  32.       case B57600_E_8_1: set_uart_speed(57600,E81); break;
  33.       case B57600_N_8_1: set_uart_speed(57600,N81); break;
  34.       case B57600_O_8_1: set_uart_speed(57600,O81); break;
  35.     // default:
  36.       //   #use rs232(baud=57600, PARITY=E, BITS=8, xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C5)
  37.       }
  38.    }
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 23 de Octubre de 2007, 15:30:15
Opps  :oops: Cierto MGLSOFT, me salté sin verlo tu enlace. Y efectivamente lo tenías todo ya solucionado. Lo siento.


Otra cosa curiosa que me ocurre, leve pero curiosa:

Las líneas TX-RX salen del PIC, pasan a través del CD4053, bifurcándose unas para el MAX485 y otras para el EM202. Justo antes de conectarse al EM202 tengo conectadas a ambas líneas unos pines donde conecto un MAX232 y desde éste un cable serie DB9 al PC por el COM1.

De esta forma tengo mi placa conectada al PC de tres formas distintas: Por dos puertos COM del PC, uno directo al MAX232 y otro, a través de un conversor ATEN IC485-SN al MAX485, y por otro lado una conexión Ethernet TCP/IP desde el PC al Router ADSL y desde éste al EM202.

Tódos los módulos se alimentan de la misma fuente, el MAX232, el MAX485 y el EM202 y todos ellos junto a los DB9 del PC tienen las masas comunes. Por cualquiera de los canales con los que hable con el PIC siempre termino en los dos mismos TX RX de la USART del 18F4550, y todos hablan, cada uno a su velocidad correspondiente, alto y claro.

Pero hete aquí que si conecto el GTP-USB+ a la placa, mediante GND,PGC,PGD y VPP, hay uno de los módulos, el EM202, que se queda sordo y mudo.  :shock:

Conectando el Socket TCP/IP y el canal RS232 éste último en paralelo absoluto con la salida TTL del EM202, cuando escribo algo el RS232 habla perfectamente, pero desde el Socket no aparece nada, ni muge ni puje.

Desconecto el GTP-USB+ y el Socket revive como ave fénix y habla hasta por los codos. :mrgreen:

Misterios de la electrónica "másica", a lo mejor.



 
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: MGLSOFT en 23 de Octubre de 2007, 16:28:09
Opps  :oops: Cierto MGLSOFT, me salté sin verlo tu enlace. Y efectivamente lo tenías todo ya solucionado. Lo siento.


Otra cosa curiosa que me ocurre, leve pero curiosa:

Las líneas TX-RX salen del PIC, pasan a través del CD4053, bifurcándose unas para el MAX485 y otras para el EM202. Justo antes de conectarse al EM202 tengo conectadas a ambas líneas unos pines donde conecto un MAX232 y desde éste un cable serie DB9 al PC por el COM1.

De esta forma tengo mi placa conectada al PC de tres formas distintas: Por dos puertos COM del PC, uno directo al MAX232 y otro, a través de un conversor ATEN IC485-SN al MAX485, y por otro lado una conexión Ethernet TCP/IP desde el PC al Router ADSL y desde éste al EM202.

Tódos los módulos se alimentan de la misma fuente, el MAX232, el MAX485 y el EM202 y todos ellos junto a los DB9 del PC tienen las masas comunes. Por cualquiera de los canales con los que hable con el PIC siempre termino en los dos mismos TX RX de la USART del 18F4550, y todos hablan, cada uno a su velocidad correspondiente, alto y claro.

Pero hete aquí que si conecto el GTP-USB+ a la placa, mediante GND,PGC,PGD y VPP, hay uno de los módulos, el EM202, que se queda sordo y mudo.  :shock:

Conectando el Socket TCP/IP y el canal RS232 éste último en paralelo absoluto con la salida TTL del EM202, cuando escribo algo el RS232 habla perfectamente, pero desde el Socket no aparece nada, ni muge ni puje.

Desconecto el GTP-USB+ y el Socket revive como ave fénix y habla hasta por los codos. :mrgreen:

Misterios de la electrónica "másica", a lo mejor.



 
Has medido la tension que le llega al EM202 antes y durante la conexion del GTP-USB+ ??? :mrgreen:
Los demas pines del EM202 estan conectados a donde?? Al menos interprete que usas solo TX y RX, no es asi?? :shock:
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: Azicuetano en 23 de Octubre de 2007, 19:02:20
Te pasa algo medio parecido a lo que me pasaba a mi.

Ahora estoy trabajando con una comunicación RS485 entre varios dispositivos.

Tengo 2 PC´s. Con uno programo la pba y en el otro tengo enganchado el cable para monitorizar las tramas que envío ERROR!!!

Se produce un bucle de masas que no veas y la comunicación se queda KO cuando le da la gana.

El PC con el que programo lo tengo enganchado a la pba por medio del programador (GTP-USB+) y el cable de comunicación lo tengo enganchado al otro PC.

Solución?? Quitamos el cable de programación ICSP y ya está, ya no hay bucle de masas. Parece una idiotez, pero, me ha dado muchos quebraderos de cabeza esta tontería.

Me huelo que algo se nos escapa  :?


Un saludo desde Alicante.
Título: Re: Houston, Houston: Tenemos una USART y dos Baudajes distintos.
Publicado por: RedPic en 23 de Octubre de 2007, 19:07:05
Ufff .... mal de muchos, consuelo de tontos. Ja, ja, ja  :D :D :D