-
Notifications
You must be signed in to change notification settings - Fork 0
Timer Example
Ryan Summers edited this page Apr 29, 2016
·
9 revisions
This page contains information describing the provided timer example. Examples can be located in the example
folder within the repository.
/********************************************************
* File Name: timer_ex.c
*
* Description:
* Main file
*
*
*********************************************************/
/*************************************************************************
System Includes
************************************************************************/
#include "sublibinal.h"
#include "sublibinal_config.h"
//forward declarations
void timer_callback();
/*************************************************************************
Main Function
************************************************************************/
int main(void) {
//structures for configuring peripherals
Timer_Config timer_config = {0};
//Configure our output pin, RB3
ANSELBbits.ANSB3 = 0; //digital pin
TRISBbits.TRISB3 = 0; //output
//setup peripherals
timer_config.frequency = 1; //Have the timer trigger at a rate of 1Hz
timer_config.pbclk = 15000000; //The peripheral bus clock is configured to operate at 15MHz
timer_config.which_timer = Timer_1; //Use Timer 1
timer_config.callback = &timer_callback; //Hand a callback function for the ISR
timer_config.enabled = 1; //Enable the Timer
initialize_Timer(timer_config); //Initialize the timer module
//Global interrupt enable. Do this last!
enable_Interrupts();
while (1) {
//background tasks here, if necessary
}
return 0;
}
void timer_callback(void)
{
//toggle a pin
LATBINV = 1<<3;
}
This example demonstrates how to configure and initialize a timer. There are a number of key steps to note.
- When the program initializes the Timer_Config structure, it initializes the entire structure to 0 by calling
Timer_Config timer_config = {0};
. This ensures that parameters are always nonzero if explicitly set.
The next portion of code fills out the configuration for the structure.
- The frequency is set to 1000, which means the timer interrupt will occur 1 time per second, or 1 Hz.
- A callback function is supplied for the
timer_callback()
function. That means every time an interrupt occurs, this function will be executed.
The end result of this program is the toggling of pin RB3 1 time per second.
SUBLIBinal was created by the Palouse Robosub Club.