fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

USART no envía 0x00...
 
Avisos
Vaciar todo

USART no envía 0x00. Atmega8. Ayuda!

14 Respuestas
5 Usuarios
0 Reactions
10.3 K Visitas
morgoz
Respuestas: 208
Topic starter
(@morgoz)
Estimable Member
Registrado: hace 18 años

Hola!!

Estoy escribiendo el código para que un Atmega8 me envía un paquete de datos por puerto serie, utilizando el USART. Se compone de:
byte de inicio => 0xFE
byte de ID => 0x01
byte de comando => 0x1
byte de datos => 0x00
byte de fin => 0xFF

No está muy depurada la estructura del datagrama, se aceptan sugerencias pero en principio va así, para ir probando si funciona. La idea es que algunos bytes se conviertan en bits.

El caso es que todos los bytes me llegan correctamente al ordenador de destino menos los 0x00 del byte de datos y no sé si será por culpa del Atmega8 o por el software del PC, pero el caso es los bytes de 0 me los ignora y ya he probado a leer la entrada del PC de todas las maneras que me permite el lenguaje (C#).

Para enviar el dato desde el USART, una vez configurado pongo

out UDR, aux ; aux vale 0x00

¿Alguien sabe por qué puede ser?

Muchas gracias!!!!

Responder
13 respuestas
luison
Respuestas: 495
(@luison)
Reputable Member
Registrado: hace 17 años

Entonces blanco y en botella, si incluso los módulos RF te dan señal de que envían y reciben, es que el PC no hace ni caso al caracter 0X00. ¿tampoco pasa nada no?? envía de lo demás y asunto arreglado 😉

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Olvidate del hyperterminal y usa un programa que te haga de espía de puerto serie. Con esos programas puedes elegir entre ver el código en decimal, hexa, binario, ..., o en ASCII

S2

Ranganok Schahzaman

Responder
morgoz
Respuestas: 208
Topic starter
(@morgoz)
Estimable Member
Registrado: hace 18 años

Varias cosas, a parte de muchas gracias 🙂

Lo primero contestar un poco mejor a beamspot y a furri,

Ya hice pruebas poniendo un contador dentro del software del PC, para ver si recibía "algo" que luego no imprimía en pantalla, pero no, el contador no se incrementa. Se enciende la luz del led del transceptor, pero el software no detecta datos en el puerto. La sentencia que se ejecuta en el PC para comprobar si hay datos es algo así como "¿Hay bytes en el buffer de entrada? Si los hay, lee 1 byte", no sé que interpreta por "haber bytes", pero probablemente un byte "vacio" (todo 0) no debe de entrar en su concepto... lo cual me parece lamentable.

Respecto a los problemas de calibración del Atmega8, quitando que el código para calibrarlo me da mala espina, los datos me los manda bien, sin problemas y sin datos "extraños", luego no creo que sea un tema de que el reloj esté mal calibrado (porque supongo que si así fuese no enviaría bien otros datos a parte de los 0). No obstante agradezco la idea de meter un valor al OSCCAL para refinar más. Y lo de cómo obtener el byte de calibración no tenía ni idea. Muchas gracias.

Luison, yo también voto más por tema PC, pero aún no descarto al 100% nada, ya que hasta que no vea que de alguna manera puedo leer el byte 0, no me creeré que llega. Para mi, el dato llega hasta la tarjeta transceptora conectada al PC, ni más ni menos. Y si, la opción más directa es obviar el 0, pero por el momento es un dato valioso para mi.

Y así llegamos a un punto interesante, Ranganok, me encantaría poder probar un software que me mostrase los bytes que llegan por serie, ya que el que yo tengo implementado funciona sospechosamente. Si me pudieses recomendar alguno te lo agradecería.

Muchas gracias a todos, no esperé que este post fuese a ser tan atendido... asi que de verdad que gracias.

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Yo utilizo el 232Analyzer versión Gratuita (no tiene todas las opciones del programa de pago pero esta muy bien).

S2

Ranganok Schahzaman

Responder
morgoz
Respuestas: 208
Topic starter
(@morgoz)
Estimable Member
Registrado: hace 18 años

Hola a todos!!!

Finalmente me he descargado el 232Analyzer que me recomendó Ranganok y los 0 llegan divinamente, luego el problema esta en el software del PC, que no sé por qué la función de lectura del puerto (bytes) funciona bien con todos los caracteres menos con el 0.... seguiré probando y si encuentro algo interesante y digno de mención lo postearé.

Gracias a todos, me ha sido un post bastante fructífero, he aprendido algunas cosillas nuevas 😉

Saludos!!!!

Responder
Página 2 / 3
Compartir: