Buenas tardes, estoy realizando un proyecto de activar un módulo de reproducción mp3 con el pic 12f675, el cual consiste de la siguiente manera:
tengo un reloj análogo que tiene un interruptor interno y quiero reproducir un sonido específico por cada hora previamente grabado en la microSD del módulo Dfplayer mini, pero el pulso del interruptor cerrado es muy largo y al conectar el módulo Dfplayer en modo reproducción o play mediante el interruptor del reloj este reproducirá mas de un sonido cuando se accione, entonces decidí utilizar el pic 12f675 para controlar el comportamiento del módulo y de la apariencia del reloj.
entonces:
1- el pic me sensa la señal proveniente de un LDR para que el modulo no funcione durante la noche
2- el pic sensa la señal del interruptor del reloj que esta conectada a 5v de la misma alimentación del pic
3- el pic lee la señal del interruptor del reloj y genera una señal de poca duración que acciona el mando de reproducción del módulo, (este módulo se puede controlar por bus UART pero no se utilizar este protocolo de comunicación ) enviando un pulso bajo y luego pasándolo a alto para detener la reproducción.
al culminar esta tarea el pic pasa a modo sleep para no censar mas el interruptor del reloj, lo volverá a sensar en la próxima hora donde hará la misma tarea.
el problema es que el circuito y el pic me funciona bien en proteus pero al montar el circuito el pic no despierta y no acciona el modulo mp3.
el programa es el siguiente:
--------------------------------------------------------------------------------------------------------------------------------------------------------
#include <RELOJJ.h>
#define GP0 PIN_A0
#define GP1 PIN_A1
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5
#define PULSE PIN_A2
#define LDR PIN_A4
VOID MAIN ()
{
//***********************************************************************
//*****************CONFIG***************************************
SET_TRIS_A(0B00010100);
SETUP_ADC_PORTS(NO_ANALOGS);
SETUP_COMPARATOR(NC_NC_NC_NC);
setup_adc( ADC_OFF ); // disable A2D
enable_interrupts(GLOBAL);
enable_interrupts(INT_RA2);
while (TRUE)
{
sleep();
IF (input(PULSE) == 1)
{
if (input(LDR) == 1)
{
//interrupcion por cambio de estado en pines
output_high (PIN_A0);
delay_ms(4000);
output_low (PIN_A0);
delay_ms(1000);
output_high (PIN_A1);
delay_ms(200);
output_low (PIN_A1);
delay_ms(400);
output_high (PIN_A1);
delay_ms(200);
output_low (PIN_A1);
delay_ms(200);
output_high (PIN_A1);
delay_ms(200);
output_low (PIN_A1);
delay_ms(400);
output_high (PIN_A1);
delay_ms(200);
output_low (PIN_A1);
delay_ms(200);
// SLEEP();
}
-------------------------------------------------------------------------------------------------------------------------------
que errores estoy cometiendo para que no me funcione el programa ?
como me quedaría a través del protocolo UART ?
muchas gracias.