Servo.h
Go to the documentation of this file.00001 #ifndef __SERVO_H__
00002 #define __SERVO_H__
00003
00004 #include "global.h"
00005
00006
00007 #define TIMER0 0x00
00008 #define TIMER1A 0x01
00009 #define TIMER1B 0x02
00010 #define TIMER0_PRESCALER 1024L
00011 #define TIMER1_PRESCALER 8L
00012
00013 #define T_PWM 0.020
00014 #define T_PWM_MIN 0.001
00015 #define T_PWM_MAX 0.002
00016
00017
00018 #define T0_MAX_UP (unsigned char)((T_PWM_MAX)/((double)1/(F_CPU/TIMER0_PRESCALER)))
00019 #define T0_MAX_DOWN (unsigned char)((T_PWM_MIN)/((double)1/(F_CPU/TIMER0_PRESCALER)))
00020 #define T0_SERVO_MIDDLE (unsigned char)(T0_MAX_UP - (((double)(T0_MAX_UP - T0_MAX_DOWN))/2))
00021 #define T0_T_PERIODE (unsigned char)((T_PWM)/((double)1/(F_CPU/TIMER0_PRESCALER)))
00022
00023 #define T1_MAX_UP (unsigned int)((T_PWM_MAX)/((double)1/(F_CPU/TIMER1_PRESCALER)))
00024 #define T1_MAX_DOWN (unsigned int)((T_PWM_MIN)/((double)1/(F_CPU/TIMER1_PRESCALER)))
00025 #define T1_SERVO_MIDDLE (unsigned int)(T1_MAX_UP - (((double)(T1_MAX_UP - T1_MAX_DOWN))/2))
00026 #define T1_T_PERIODE (unsigned int)((T_PWM)/((double)1/(F_CPU/TIMER1_PRESCALER)))
00027
00028 class Servo {
00029
00030 public:
00031 void setPosition(char _pos, char _maxPos);
00032 void setTimer(char _timer);
00033
00034 private:
00035 void initTimer();
00036 unsigned char timer, startValue;
00037 unsigned int maxUp, maxDown, servoMiddle;
00038
00039 };
00040
00041
00042 #endif