Programación Específica > Microcontroladores
Despertar el micro por RX
Pegasux:
Ahora que he cambiado el LCD por unos leds en los bits del puerto C que no utilizo, estoy observando cierto fenomeno. Al encender el aparato los leds parpadean 2 veces y luego se quedan apagadados en sleep (bien), cuando le mando datos, sale del sleep, pero no continua con el programa, se reinicia, los leds vuelven a parpadear 2 veces, lo mas curioso de todo es que los datos se los envio por un dispositivo inalambrico desde otro circuito, cuando recibe los datos por RF estos son enviados al pic por el puerto serie y es cuando tiene que despertarse, pues bien, tanto cuando enciendo el aparato emisor de RF como cuando lo apago el micro se sale del sleep y se reinicia, repito que es muy curioso porque el otro dispositivo que emite la RF esta totalmente separado, no tienen en comun mas que el aire. Posiblemente cuando lo apago, el modulo inalambrico local detecta que ha perdido la señal del emisor y envia un paquete de datos al micro para avisarle (digo yo) pero de todas formas, cuando enciendo el emisor y este acto seguido envia los datos, el microcontrolador deberia recibir el paquete de datos o cualquier cosa y comprobar que es correcto el checksum, encendiendo un led verde en caso de ser correcto o uno rojo en caso de ser incorrecto. El asunto es que en vez de comprobar el checksum, el micro se resetea porque veo claramente que los leds parpadean como les indico al principio del programa.
En resumen, al encender el micro los leds parpadean 2 veces, enciendo el transmisor, los leds parpadean 2 veces (cuando tendria que encenderse solamente el verde o el rojo) y cuando apago el transmisor otra vez parpadean (cuando no deberian hacer nada). Evidentenmente, si no enciendo el transmisor los leds se quedan apagados indefinidamente...
Un saludo.
Pegasux:
Hola de nuevo, acabo de percibir que al apagar el transmisor no siempre reinicia, solamente lo hace a veces....
Toph:
--- Cita de: "Pegasux" ---cuando le mando datos, sale del sleep, pero no continua con el programa
--- Fin de la cita ---
cuando el micro sale del sleep a fuerza ejecuta la siguiente instruccion y luego sigue con el programa o ejecuta una interrupcion, segun lo que he leido bajo ninguna circunstancia se reinicia por lo que creo que es el watchdog el que esta dando los problemas.
--- Cita de: "Pegasux" --- uso la secuencia de configuracion __config 3D31 y no se lo que esta incluido
--- Fin de la cita ---
segun vi en esa configuracion esta incluido esto:
--- Citar ---__CONFIG 0x3D31 ;Palabra de Config. OSC=XT, WDT=OFF, PWRTE=ON, BODEN=OFF, LVP=OFF, Sin codigo de Proteccion
--- Fin de la cita ---
el WDT esta desactivado, yo para asegurarme siempre desactivo el watchdog cuando hago la programacion(en winpic800)
suerte y saludos.
Pegasux:
Hola de nuevo, el WDT si que parece estar desactivado, en el programa de grabar el micro he mirado la configuracion y esta correcta. La Int0 parece que la hace bien, ya que si despieto a mano el micro funciona correctamente, pero despues de despertarle le mando los datos por la linea rx y el checksum da mal, por otro lado, si le conecto directamente a la linea rx, el micro despierta del sleep inmediatamente sin haberle enviado nada (y eso que tiene una resistencia pull up) como si se le enviara algun dato por la linea rx, y ademas el checksum da incorrecto. Me parece que va a tener mas culpa el modulo inalambrico que el pic... Voy a empaparme bien como funciona el modulo XBee para ver si es el causante de todo esto.
Saludos.
Navegación
[*] Página Anterior
Ir a la versión completa