?lang_form?
?lang_select?
?lang_submit?
?lang_endform?
{HEADER END}
{FILE START}
library
?curdirlinks? - Rev 6
?prevdifflink? - Blame - ?getfile?
//*****************************************************************************
// File Name : pulsetest.c
//
// Title : example usage of pulse library functions
// Revision : 1.0
// Notes :
// Target MCU : Atmel AVR series
// Editor Tabs : 4
//
// Revision History:
// When Who Description of change
// ----------- ----------- -----------------------
// 29-Apr-2003 pstang Created the program
//*****************************************************************************
//----- Include Files ---------------------------------------------------------
#include <avr/io.h> // include I/O definitions (port names, pin names, etc)
#include <avr/interrupt.h> // include interrupt support
#include "global.h" // include our global settings
#include "uart.h" // include uart function library
#include "rprintf.h" // include printf function library
#include "timer.h" // include timer function library (timing, PWM, etc)
#include "pulse.h" // include pulse output support
void pulseTest(void);
//----- Begin Code ------------------------------------------------------------
int main(void)
{
// initialize our libraries
// initialize the UART (serial port)
uartInit();
// set the baud rate of the UART for our debug/reporting output
uartSetBaudRate(9600);
// initialize the timer system
timerInit();
// initialize rprintf system
rprintfInit(uartSendByte);
// run the test
pulseTest();
return 0;
}
void pulseTest(void)
{
u16 i;
// print a little intro message so we know things are working
rprintf("\r\nWelcome to the pulse library test program!\r\n");
// set pulse pins as output
// ** these are the correct pins for most processors, but not all **
sbi(DDRD, 4);
sbi(DDRD, 5);
// initialize pulse library
pulseInit();
// do logarithmic frequency sweep
rprintf("Running logarithmic frequency sweep...\r\n");
for(i=1; i<4000; i+=((i/5)+1))
{
// set the output frequency
pulseT1ASetFreq(i);
// - set the number of pulses to output
// - number of pulses will be set to make each
// frequency last 1/5 of a second in time
// ** make sure we don't request zero pulses
// ** because this means run indefinitely
pulseT1ARun( (i/5)+1 );
// print a debug message
rprintf("Output Freq = %dHz\r\n", i);
// wait for pulses to finish being output
while(pulseT1ARemaining());
}
// do simultaneous pulse output on OC1A and OC1B pins with different frequencies
rprintfCRLF();
rprintf("Running simultaneous output on OC1A and OC1B with different frequencies\r\n");
rprintf("OC1A will be at 50Hz for 2 seconds (100 pulses)\r\n");
rprintf("OC1B will be at 175Hz for 4 seconds (700 pulses)\r\n");
// start OC1A output
pulseT1ASetFreq(50);
pulseT1ARun(100);
// start OC1B output
pulseT1BSetFreq(175);
pulseT1BRun(700);
// enter a debug loop as long as there are pulses remaining
while(pulseT1ARemaining() | pulseT1BRemaining())
{
rprintf("OC1A has %d pulses remaining, OC1B has %d pulses remaining\r\n", pulseT1ARemaining(), pulseT1BRemaining());
timerPause(100);
}
rprintf("done!\r\n");
}
|
{FILE END}
{FOOTER START}
Powered by WebSVN v2.8.3