Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 341 → Rev 342

/PIC Projects/PICX_12F1840_CPS/base_INTERRUPTS.c
0,0 → 1,55
#include <xc.h>
#include "defines.h"
#include "base_INTERRUPTS.h"
#include "base_UART.h"
#include "base_CPS.h"
 
void Interrupt_Enable() {
INTCONbits.GIE = 1;
INTCONbits.PEIE = 1;
}
 
void Interrupt_Disable() {
INTCONbits.GIE = 0;
INTCONbits.PEIE = 0;
}
 
void interrupt InterruptHandler(void) {
char tmr0_rollover = 0;
// Check to see if we have an interrupt on Timer 0 (CPS)
if (INTCONbits.TMR0IF) {
CPS_Timer_0_Interrupt_Handler();
INTCONbits.TMR0IF = 0;
}
// // Check to see if we have an I2C interrupt
// if (PIR1bits.SSPIF) {
// I2C_Interrupt_Handler();
// PIR1bits.SSPIF = 0;
// }
 
#ifndef UART_TX_ONLY
// Check to see if we have an interrupt on USART1 RX
if (PIR1bits.RCIF) {
UART_Recv_Interrupt_Handler();
PIR1bits.RCIF = 0;
if (INTCONbits.TMR0IF)
tmr0_rollover = 1;
}
#endif
 
// Check to see if we have an interrupt on USART1 TX
if (PIR1bits.TXIF) {
UART_Send_Interrupt_Handler();
// PIR1bits.TXIF = 0;
if (INTCONbits.TMR0IF)
tmr0_rollover = 1;
}
 
// If Timer 0 rolls over while servicing another interrupt handler,
// reset the timers as the sample will be inaccurate.
if (tmr0_rollover) {
CPS_Reset();
}
}