158 lines
3.8 KiB
C
158 lines
3.8 KiB
C
/**
|
|
TMR2 Generated Driver File
|
|
|
|
@Company
|
|
Microchip Technology Inc.
|
|
|
|
@File Name
|
|
tmr2.c
|
|
|
|
@Summary
|
|
This is the generated driver implementation file for the TMR2 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
|
|
|
|
@Description
|
|
This source file provides APIs for TMR2.
|
|
Generation Information :
|
|
Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.6
|
|
Device : PIC16F1829
|
|
Driver Version : 2.01
|
|
The generated drivers are tested against the following:
|
|
Compiler : XC8 2.30 and above
|
|
MPLAB : MPLAB X 5.40
|
|
*/
|
|
|
|
/*
|
|
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
|
|
|
Subject to your compliance with these terms, you may use Microchip software and any
|
|
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
|
license terms applicable to your use of third party software (including open source software) that
|
|
may accompany Microchip software.
|
|
|
|
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
|
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
|
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
|
FOR A PARTICULAR PURPOSE.
|
|
|
|
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
|
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
|
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
|
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
|
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
|
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
|
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
|
SOFTWARE.
|
|
*/
|
|
|
|
/**
|
|
Section: Included Files
|
|
*/
|
|
|
|
#include <xc.h>
|
|
#include "tmr2.h"
|
|
|
|
/**
|
|
Section: Global Variables Definitions
|
|
*/
|
|
|
|
void (*TMR2_InterruptHandler)(void);
|
|
|
|
/**
|
|
Section: TMR2 APIs
|
|
*/
|
|
|
|
void TMR2_Initialize(void)
|
|
{
|
|
// Set TMR2 to the options selected in the User Interface
|
|
|
|
// PR2 249;
|
|
PR2 = 0xF9;
|
|
|
|
// TMR2 0;
|
|
TMR2 = 0x00;
|
|
|
|
// Clearing IF flag before enabling the interrupt.
|
|
PIR1bits.TMR2IF = 0;
|
|
|
|
// Enabling TMR2 interrupt.
|
|
PIE1bits.TMR2IE = 1;
|
|
|
|
// Set Default Interrupt Handler
|
|
TMR2_SetInterruptHandler(TMR2_DefaultInterruptHandler);
|
|
|
|
// T2CKPS 1:64; T2OUTPS 1:16; TMR2ON on;
|
|
T2CON = 0x7F;
|
|
}
|
|
|
|
void TMR2_StartTimer(void)
|
|
{
|
|
// Start the Timer by writing to TMRxON bit
|
|
T2CONbits.TMR2ON = 1;
|
|
}
|
|
|
|
void TMR2_StopTimer(void)
|
|
{
|
|
// Stop the Timer by writing to TMRxON bit
|
|
T2CONbits.TMR2ON = 0;
|
|
}
|
|
|
|
uint8_t TMR2_ReadTimer(void)
|
|
{
|
|
uint8_t readVal;
|
|
|
|
readVal = TMR2;
|
|
|
|
return readVal;
|
|
}
|
|
|
|
void TMR2_WriteTimer(uint8_t timerVal)
|
|
{
|
|
// Write to the Timer2 register
|
|
TMR2 = timerVal;
|
|
}
|
|
|
|
void TMR2_LoadPeriodRegister(uint8_t periodVal)
|
|
{
|
|
PR2 = periodVal;
|
|
}
|
|
|
|
void TMR2_ISR(void)
|
|
{
|
|
static volatile unsigned int CountCallBack = 0;
|
|
|
|
// clear the TMR2 interrupt flag
|
|
PIR1bits.TMR2IF = 0;
|
|
|
|
// callback function - called every 8th pass
|
|
if (++CountCallBack >= TMR2_INTERRUPT_TICKER_FACTOR)
|
|
{
|
|
// ticker function call
|
|
TMR2_CallBack();
|
|
|
|
// reset ticker counter
|
|
CountCallBack = 0;
|
|
}
|
|
}
|
|
|
|
void TMR2_CallBack(void)
|
|
{
|
|
// Add your custom callback code here
|
|
// this code executes every TMR2_INTERRUPT_TICKER_FACTOR periods of TMR2
|
|
if(TMR2_InterruptHandler)
|
|
{
|
|
TMR2_InterruptHandler();
|
|
}
|
|
}
|
|
|
|
void TMR2_SetInterruptHandler(void (* InterruptHandler)(void)){
|
|
TMR2_InterruptHandler = InterruptHandler;
|
|
}
|
|
|
|
void TMR2_DefaultInterruptHandler(void){
|
|
// add your TMR2 interrupt custom code
|
|
// or set custom function using TMR2_SetInterruptHandler()
|
|
}
|
|
|
|
/**
|
|
End of File
|
|
*/ |