#include "VolumeTransducer.h" #include "define.h" #include "BoardCfg.h" #include "timer.h" #include #include "Syslog.h" int mDebouncingBureau = false; int mDebouncingCuisine = false; int mBureauVolume = 0; int mCuisineVolume = 0; char VolDebug[100]; int VolumeTransducerInit() { //Bureau volume transducer IEC0bits.INT1IE = 0; IFS0bits.INT1IF = 0; if(BUREAU_VOL_POT_CCW_PIN == 1) { INTCONbits.INT1EP = 0; //Falling edge } else { INTCONbits.INT1EP = 1; //Rising edge } IPC1bits.INT1IP = 2; IPC1bits.INT1IS = 1; IEC0bits.INT1IE = 1; //Cuisine volume transducer IEC0bits.INT3IE = 0; IFS0bits.INT3IF = 0; if(CUISINE_VOL_POT_CCW_PIN == 1) { INTCONbits.INT3EP = 0; //Falling edge } else { INTCONbits.INT3EP = 1; //Rising edge } IPC3bits.INT3IP = 2; IPC3bits.INT3IS = 2; IEC0bits.INT3IE = 1; mDebouncingBureau = false; mDebouncingCuisine = false; return RET_OK; } int VolumeTransducerTick() { if(mDebouncingBureau == true) { if(IsTimerExpired(BUREAU_VOLUME_TRANSDUCER_TIMER) == 1) { TimerStop(BUREAU_VOLUME_TRANSDUCER_TIMER); if(BUREAU_VOL_POT_CCW_PIN == BUREAU_VOL_POT_CW_PIN) { mBureauVolume += (-1 * VOLUME_TRANSDUCER_INCREMENT); // mBureauChange = 0; sprintf(VolDebug,"Bureau: %d\n",mBureauVolume); SyslogNewString(VolDebug); // mBureauChange = -1; } else { mBureauVolume += (VOLUME_TRANSDUCER_INCREMENT); // mBureauChange = 0; sprintf(VolDebug,"Bureau: %d\n",mBureauVolume); SyslogNewString(VolDebug); // mBureauChange = 1; } if(BUREAU_VOL_POT_CCW_PIN == 1) { INTCONbits.INT1EP = 0; //Falling edge } else { INTCONbits.INT1EP = 1; //Rising edge } IFS0bits.INT1IF = 0; IEC0bits.INT1IE = 1; mDebouncingBureau = false; } } if(mDebouncingCuisine == true) { if(IsTimerExpired(CUISINE_VOLUME_TRANSDUCER_TIMER) == 1) { TimerStop(CUISINE_VOLUME_TRANSDUCER_TIMER); if(CUISINE_VOL_POT_CCW_PIN == CUISINE_VOL_POT_CW_PIN) { mCuisineVolume += (-1 * VOLUME_TRANSDUCER_INCREMENT); // mBureauChange = 0; sprintf(VolDebug,"Cuisine: %d\n",mCuisineVolume); SyslogNewString(VolDebug); // mBureauChange = -1; } else { mCuisineVolume += (VOLUME_TRANSDUCER_INCREMENT); // mBureauChange = 0; sprintf(VolDebug,"Cuisine: %d\n",mCuisineVolume); SyslogNewString(VolDebug); // mBureauChange = 1; } if(CUISINE_VOL_POT_CCW_PIN == 1) { INTCONbits.INT3EP = 0; //Falling edge } else { INTCONbits.INT3EP = 1; //Rising edge } IFS0bits.INT3IF = 0; IEC0bits.INT3IE = 1; mDebouncingCuisine = false; } } } void __ISR(_EXTERNAL_1_VECTOR, ipl2) BureauTransducerInterrupt(void) { IEC0bits.INT1IE = 0; TimerStart(BUREAU_VOLUME_TRANSDUCER_TIMER,VOLUME_TRANSDUCER_DEBOUNCE_TIMEOUT); mDebouncingBureau = true; IFS0bits.INT1IF = 0; //Clear interrupt flag } void __ISR(_EXTERNAL_3_VECTOR, ipl2) CuisineTransducerInterrupt(void) { IEC0bits.INT3IE = 0; TimerStart(CUISINE_VOLUME_TRANSDUCER_TIMER,VOLUME_TRANSDUCER_DEBOUNCE_TIMEOUT); mDebouncingCuisine = true; IFS0bits.INT3IF = 0; //Clear interrupt flag }