Code_TwinFanController

#include <xc.h>
#include "tmr0.h"
#include "io.h"
#include "Global.h"
/**
 Section: Global Variables Definitions
*/
TIMER_DATA timer;
SYSTEM_DATA system;
volatile uint8_t timer0ReloadVal;
void (*TMR0_InterruptHandler)(void);
/**
 Section: TMR0 APIs
*/
void TMR0_Initialize(void)
{
 // Set TMR0 to the options selected in the User Interface
 // PSA assigned; PS 1:16; TMRSE Increment_hi_lo; mask the nWPUEN and INTEDG bits
 OPTION_REG = (uint8_t)((OPTION_REG & 0xC0) | (0xD3 & 0x3F)); 
 // TMR0 6; 
 TMR0 = 0x06;
 // Load the TMR value to reload variable
 timer0ReloadVal= 6;
 // Clear Interrupt flag before enabling the interrupt
 INTCONbits.TMR0IF = 0;
 // Enabling TMR0 interrupt
 
 INTCONbits.TMR0IE = 1;
 // Set Default Interrupt Handler
 TMR0_SetInterruptHandler(TMR0_DefaultInterruptHandler);
}
uint8_t TMR0_ReadTimer(void)
{
 uint8_t readVal;
 readVal = TMR0;
 return readVal;
}
void TMR0_WriteTimer(uint8_t timerVal)
{
 // Write to the Timer0 register 
TMR0 = timerVal;
}
void TMR0_Reload(void)
{
 // Write to the Timer0 register
 TMR0 = timer0ReloadVal;
}
void TMR0_ISR(void)
{
 static volatile uint16_t CountCallBack = 0;
 // Clear the TMR0 interrupt flag
 INTCONbits.TMR0IF = 0;
 TMR0 = timer0ReloadVal;
 // callback function - called every 1000th pass
 if (++CountCallBack >= TMR0_INTERRUPT_TICKER_FACTOR)
 {
 // ticker function call
 TMR0_CallBack();
 // reset ticker counter
 CountCallBack = 0;
 }
 // add your TMR0 interrupt custom code
 if(timer.msTMR1) timer.msTMR1--;
 if(timer.adcTMR) timer.adcTMR--;
 if(timer.swdbncTMR) timer.swdbncTMR--;
}

void TMR0_CallBack(void)
{
 // Add your custom callback code here
 //if(system.startFunc) PWM_TOGGLE();
 if(timer.secTMR1) timer.secTMR1--;
 if(timer.secTMR2) timer.secTMR2--;
 if(system.startFunc){
 if(timer.airswTMR) timer.airswTMR--;
 if(timer.currentTMR) timer.currentTMR--; 
 if(system.fan1Fault) LED_FAN1_TOGGLE();
 if(system.fan2Fault) LED_FAN2_TOGGLE();
 }
 //if(system.hrTMR){if(timer.minTMR != (system.hrTMR*60)) timer.minTMR++;}
 if(timer.secTMR3 != 59) timer.secTMR3++; else {
 timer.secTMR3 = 0;
 if(system.hrTMR){if(timer.minTMR != (system.hrTMR*60)) timer.minTMR++;}
 }
 if(TMR0_InterruptHandler)
 {
 TMR0_InterruptHandler();
 }
}
void TMR0_SetInterruptHandler(void (* InterruptHandler)(void)){
 TMR0_InterruptHandler = InterruptHandler;
}
void TMR0_DefaultInterruptHandler(void){
 
}

Scroll to Top