Do you mean PWM?
If so, here's the PWM file that I use for my servos. Unless your servo is digital, it should work regardless of modifications.
/***************************
******* PWM COMMANDS *******
--init the pwm
pwmInitH345();
pwmInitE345();
--start the pwm timers
pwmOnH3();
pwmOnH4();
--set pulse width
pwmSetH3(1500);
***************************/
#define pwmVer 1
#define pwmRev 0
/****************************************************************************
*
* Copyright (c) 2008 Matt Bateman
* Robotics4Fun http://www.laughingsky.com/hobbies/robotics/
* (please link back if you use this code!)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Alternatively, this software may be distributed under the terms of BSD
* license.
*
****************************************************************************/
/****************************************************************************
* Version Notes
*
* 1.0 10/21/2008 Initial release
****************************************************************************/
//#define pwmDebug 1 // Turn on debug output
#define pwmShowInitStatus 1 // Display init status and version info
void pwmInitE345(void) {
/***************************************************/
/* Initialize timer for PWM use on pins E3, E4, E5 */
/***************************************************/
// 00 A off, toggle on compare
// 00 B on, toggle on compare
// 00 C on, toggle on compare
// 00 Low part of WGM: PWM, phase & freq, ICRn
TCCR3A=0x00;
// 0 No input noise cancelling
// 0 Input edge select does not matter
// 0 Not used
// 10 High part of WGM: PWM, phase & freq, ICRn
// 010 Prescale 8
TCCR3B=0x12;
// Clear TCNT
TCNT3H=0x00;
TCNT3L=0x00;
ICR3 = 20000; // 20mS PWM cycle time
}
void pwmOffE345(void) {
/**********************************************************/
/* Return timer and pins to normal use on pins E3, E4, E5 */
/**********************************************************/
// 00 A off, toggle on compare
// 00 B on, toggle on compare
// 00 C on, toggle on compare
// 00 Low part of WGM: Normal
TCCR3A=0x00;
// 0 No input noise cancelling
// 0 Input edge select does not matter
// 0 Not used
// 00 High part of WGM: Normal
// 000 Prescale None
TCCR3B=0x00;
// Clear TCNT
TCNT3H=0x00;
TCNT3L=0x00;
ICR3 = 0; // Clear ICR4
}
void pwmInitH345(void) {
/***************************************************/
/* Initialize timer for PWM use on pins H3, H4, H5 */
/***************************************************/
// 00 A off, toggle on compare
// 00 B on, toggle on compare
// 00 C on, toggle on compare
// 00 Low part of WGM: PWM, phase & freq, ICRn
TCCR4A=0x00;
// 0 No input noise cancelling
// 0 Input edge select does not matter
// 0 Not used
// 10 High part of WGM: PWM, phase & freq, ICRn
// 010 Prescale 8
TCCR4B=0x12;
// Clear TCNT
TCNT4H=0x00;
TCNT4L=0x00;
ICR4 = 20000; // 20mS PWM cycle time
}
void pwmOffH345(void) {
/**********************************************************/
/* Return timer and pins to normal use on pins H3, H4, H5 */
/**********************************************************/
// 00 A off
// 00 B off
// 00 C off
// 00 Low part of WGM: Normal
TCCR4A=0x00;
// 0 No input noise cancelling
// 0 Input edge select does not matter
// 0 Not used
// 00 High part of WGM: Normal
// 000 Prescale None
TCCR4B=0x00;
// Clear TCNT
TCNT4H=0x00;
TCNT4L=0x00;
ICR4 = 0; // Clear ICR4
}
void pwmOnE3(void) {
/****************************/
/* Put pin E3 into PWM mode */
/****************************/
// 10 A on, toggle on compare
sbi(TCCR3A,7);
cbi(TCCR3A,6);
}
void pwmOffE3(void) {
/********************************/
/* Return pin E3 to normal mode */
/********************************/
// 00 A off
cbi(TCCR3A,7);
cbi(TCCR3A,6);
}
void pwmOnE4(void) {
/****************************/
/* Put pin E4 into PWM mode */
/****************************/
// 10 B on, toggle on compare
sbi(TCCR3A,5);
cbi(TCCR3A,4);
}
void pwmOffE4(void) {
/********************************/
/* Return pin E4 to normal mode */
/********************************/
// 00 B off
cbi(TCCR3A,5);
cbi(TCCR3A,4);
}
void pwmOnE5(void) {
/****************************/
/* Put pin E5 into PWM mode */
/****************************/
// 10 C on, toggle on compare
sbi(TCCR3A,3);
cbi(TCCR3A,2);
}
void pwmOffE5(void) {
/********************************/
/* Return pin E5 to normal mode */
/********************************/
// 00 C off
cbi(TCCR3A,3);
cbi(TCCR3A,2);
}
void pwmOnH3(void) {
/****************************/
/* Put pin H3 into PWM mode */
/****************************/
// 10 A on, toggle on compare
sbi(TCCR4A,7);
cbi(TCCR4A,6);
}
void pwmOffH3(void) {
/********************************/
/* Return pin H3 to normal mode */
/********************************/
// 00 A off
cbi(TCCR4A,7);
cbi(TCCR4A,6);
}
void pwmOnH4(void) {
/****************************/
/* Put pin H4 into PWM mode */
/****************************/
// 10 B on, toggle on compare
sbi(TCCR4A,5);
cbi(TCCR4A,4);
}
void pwmOffH4(void) {
/********************************/
/* Return pin H4 to normal mode */
/********************************/
// 00 B off
cbi(TCCR4A,5);
cbi(TCCR4A,4);
}
void pwmOnH5(void) {
/****************************/
/* Put pin H5 into PWM mode */
/****************************/
// 10 C on, toggle on compare
sbi(TCCR4A,3);
cbi(TCCR4A,2);
}
void pwmOffH5(void) {
/********************************/
/* Return pin H5 to normal mode */
/********************************/
// 00 C off
cbi(TCCR4A,3);
cbi(TCCR4A,2);
}
/******************************/
/* Set pin pulse times in uS. */
/* Typical servo would use */
/* 1500 for center */
/* 1000 for full left */
/* 2000 for full right */
/******************************/
#define pwmSetE3(val) OCR3A=val // Set E3 pulse time in uS
#define pwmSetE4(val) OCR3B=val // Set E4 pulse time in uS
#define pwmSetE5(val) OCR3C=val // Set E5 pulse time in uS
#define pwmSetH3(val) OCR4A=val // Set H3 pulse time in uS
#define pwmSetH4(val) OCR4B=val // Set H4 pulse time in uS
#define pwmSetH5(val) OCR4C=val // Set H5 pulse time in uS
void pwmInit(void) {
// Intialize the PWM module
#ifdef pwmShowInitStatus
rprintf(" PWM:\t%d.%d\t",pwmVer,pwmRev);
rprintf("done\n");;
#endif
}