Subversion Repositories FlightCtrl

Rev

Rev 2117 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef _TIMER2_H
#define _TIMER2_H

#include <inttypes.h>
#include <math.h>
#include "configuration.h"

extern volatile uint16_t pwmChannels[MAX_PWMCHANNELS];

#define SERVO_RESOLUTION FINE

#if (SERVO_RESOLUTION == COARSE)
#define F_TIMER2 (F_CPU/32)
#define CS2 ((1<<CS21)|(1<<CS20))
#else
#define F_TIMER2(F_CPU/8)
#define CS2 (1<<CS21)
#endif

//#define ABSOLUTE_MIN ((float)F_TIMER2*0.00075 + 0.5)
//#define ABSOLUTE_MAX ((float)F_TIMER2*0.00225 + 0.5)

#define PULSELENGTH_800  ((float)F_TIMER2*0.0008)
#define PULSELENGTH_1000 ((float)F_TIMER2*0.0010)
#define PULSELENGTH_1500 ((float)F_TIMER2*0.0015)
#define PULSELENGTH_2000 ((float)F_TIMER2*0.0020)
#define PULSELENGTH_2200 ((float)F_TIMER2*0.0022)

#define PWM_CONTROL_SCALE_FACTOR (PULSELENGTH_1000/(float)CONTROL_RANGE)
#define PWM_BYTE_SCALE_FACTOR (PULSELENGTH_1000/256.0)

// Prevent damage even if grossly misconfigured:
// Multiply this by angle in int16-degrees and again by 100 to get servo deflection to same angle
// (assuming 90 degrees over 1 ms, which is the norm):

void timer2_init(void);
//void calculateServoValues(void);
#endif //_TIMER2_H