2
« en: Martes 12 de Agosto de 2008, 16:58 »
Hola Compañeros, soy nuevo en el Foro. Estoy realizando el proyecto final de carrera y tengo un par de dudas que mi director de proyecto no me puede responder (esta de vacaciones y no mira el correo).
Os explico:
Estoy utilizando el PIC 18F4550, y en mi aplicación lo tengo conectado a un dispositivo ZigBee. En primer lugar tengo que configurar el ZB desde el pic, y esto se hace mediante comandos AT. Desde el hyperterminal de Windows si que se como hacerlo, pero desde el codigo del micro (lo estoy haciendo en C) no estoy seguro de haberlo hecho bien.
Yo lo que he hecho es crearme un vector de 4 posiciones (porque tengo que enviar 4 comandos en total). En primer lugar lo que hago es colocar en el resgistro TXREG '+++' (escribiendo "+++" desde el hyperterminal se entra al modo comandos AT) y me quedo esperando a que el ZB responda 'OK' (en el hyperterminal si que aparece el "OK")
Una vez recibo el "OK" le envio el primer comando: 'ATDL 00' y espero nuevamente al 'OK', asi con todos los comandos que tengo que enviarle al ZB.
Una vez el ZB ya esta configurado y ya funciona el programa, el PIC debe dormirse durante aproximadamente 10 minutos, y luego despertarse.
Para dormir al micro utilizo el comando asm SLEEP. Ahora mi duda viene con respecto al oscilador que se queda funcionando. Tengo entendido que el TIMER1 es el unico que puede funcionar con el Sleep Mode, pero...para que esto ocurra hay que configurar el resgistro OSCCON? o solo con el TICON es suficiente? o con algun otro?
Y otra cosa...como contabilizo los 10 minutos? Con el timer 1 mientras este hace de reloj principal? Simplemente hay que cargarle los valores al TMR1H y al TMR1L y esperar a la interrupcion?
Y ya por último, cuando pasen los 10 minutos y se despierte el micro por interrupcion, él solo retorna a su reloj principal? (en mi caso un cristal de 4MHz o hay que configurar algun registro para que no siga funcionando con el de 32KHz del Timer1?)
Mil gracias a todos los que me podais ayudar!!
Un saludo!!