Estoy tratando de programar ATmega8 para propósitos de prueba usando CVAVR como compilador cruzado y GUI avrdude como grabador. Aunque soy capaz de grabar el programa, creo que me falta algo en la parte de codificación. Puede ser bastante tonto.
Tengo 2 preguntas:
-
Estoy usando Xbee Pro para la comunicación inalámbrica. Funciona con 5V y mi tarjeta ATmega8, creo que proporcionó el voltaje requerido. Pero no hay comunicación con el otro módulo Xbee Pro conectado a mi computadora portátil. Estoy usando XCTU y he comprobado la velocidad en baudios y otras configuraciones. Por otro lado, cuando usé un circuito MAX 232 y luego me comuniqué con mi computadora portátil con un convertidor de serie a USB, pude enviar datos a mi computadora portátil en XCTU. Utilicé
putchar("f")
; en el XCTU a veces "." se estaba imprimiendo ya veces "K" (entonces me di cuenta de que era basura).Entonces, quiero preguntar: ¿el voltaje está causando problemas con la transmisión?
-
En la parte de codificación, cuando estoy usando MAX, estoy usando el siguiente código:
x = getchar(); if(x == 97) { lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("x"); PORTB = 0b00000001; delay_ms(300); } else { lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Shailendra Singh"); PORTB = 0b00000010; delay_ms(300); }
CVAVR realiza el resto del código y la inicialización de los registros, pero este es el código de mayor preocupación. Lo que quiero es que cuando presiono "a" en mi computadora portátil, si la operación se debe realizar pero estoy confundido por
if(x == 97)
97 es el valor ASCII de "a". ¿Lo estoy usando correctamente comparando x
con 97 (asumí que cuando se presiona "a")?
Junto con eso con getchar()
, puedo recibir solo un carácter, ¿qué sucede si deseo recibir una cadena completa?