TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ochi en 15 de Mayo de 2008, 05:59:04
-
hola, estoy utilizando un pic30f4013, específicamente la parte de la UART, pero tengo un problemilla, (creo que es fácil, pero no doy con la solución).
Estoy haciendo un programa que lee de UART1 y retransmite el mismo mensaje por UART2.
Lo que hago es almacenar el mensaje, comprobar cabecera y checksum y reenviar, y de ahí me surgen dos problemas:
cuando hago:
char buffer[];
if((buffer[0] != 0xaa) || (buffer[longitud] != checksum)) esto siempre da true, pero yo compruebo con portb y están bien los valores
Mi otro problema va con lo mismo, porque como la función putsUART deja de escribir cuando encuentra un 0x00, quiero comprobarlo para enviar mi paquete correctamente. ¿Se puede hacer de alguna manera para que deje de escribir a una longitud en lugar de encontrar un cero?
Muchas gracais
-
Ya he encontrado el error yo misma, pero es raro, a ver si alguien sabe por que:
Resulta que si pongo buffer == 0x61 siempre da false, sin embargo, si pongo:
buffer == 'a' da true
y 61 es el valor en hexadecimal del código ASCII de la a. ¿alguna idea de porque funciona el caracter pero no el valor hexadecimal? Gracias
-
Mi otro problema va con lo mismo, porque como la función putsUART deja de escribir cuando encuentra un 0x00, quiero comprobarlo para enviar mi paquete correctamente. ¿Se puede hacer de alguna manera para que deje de escribir a una longitud en lugar de encontrar un cero?
No he visto algo así en las librerías de Microchip, deberás crear tu mismo una función donde le pases un buffer y un largo, e ir leyendo caracteres del buffer hasta llegar al largo que le pasaste como parámetro.
La función tendría un prototipo del estilo: void putsUARTmio(char * buffer, char len);
Ya he encontrado el error yo misma, pero es raro, a ver si alguien sabe por que:
Resulta que si pongo buffer == 0x61 siempre da false, sin embargo, si pongo:
buffer == 'a' da true
mm que raro, puedes poner el código más acabado? puedes además ver de limitar el tamaño a buffer y no dejarlo abierto?
saludos