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     /* t für eine PWM Periode */
00014 #define T_PWM_MIN             0.001   /* t für die minimale 1-laenge */
00015 #define T_PWM_MAX             0.002   /* t für die maximale 1-laenge */
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
Generated on Fri Oct 8 17:10:07 2010 for Crawling Robot Microcontroller Software by  doxygen 1.6.3