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.2 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
furri
Respuestas: 2708
(@furri)
Ardero
Registrado: hace 19 años

Tenia toda la pinta... al final puede ser un despiste como poner

If (buffer > 0)

en vez de

If (len(buffer) > 0)

😀

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

Por eso hace años que dejé de utilizar el hyperterminal para analizar datos del puerto serie. 😛

Ahora me tengo que buscar uno para linux...

Alguna idea?

S2

Ranganok Schahzaman

Responder
beamspot
Respuestas: 1132
(@beamspot)
Noble Member
Registrado: hace 17 años

Quizás debido a que siempre he usado el ModBus, al final siempre he acabado haciendome el programa en C#.

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

Hola de nuevo!!!!

Simplemente os escribo para notificaros de que el problema esta resuelto y, como en el 90% de las veces en temas de programación, el fallo era una chorrada, un despiste del programador (yo).

El programa está hecho en C# y el "fallo" radicaba en que en la inicialización del puerto, por aquella costumbre, a veces un tanto perjudicial, de reutilizar el código (en este caso del proyecto de fin de carrera), se me pasó revisar que tenía activo el atributo "DiscardNull", con lo que todos los caracteres "nulos" se los comía.

Que cosas!! Tres horas dando vueltas al código para luego encontrarme con esto.

Gracias a todos y saludos!!!!!

Responder
Página 3 / 3
Compartir: