Data Structures | Macros | Functions | Variables
servo.h File Reference
#include "ch.h"
#include "hal.h"
#include "hw.h"
#include "conf_general.h"
#include "stm32f4xx_conf.h"

Go to the source code of this file.

Data Structures

struct  SERVO
 

Macros

#define _BV(bit)   (1 << (bit))
 
#define MIN(a, b)   (((a)<(b))?(a):(b))
 
#define MAX(a, b)   (((a)>(b))?(a):(b))
 
#define SERVOS_NUM   HW_SERVO_NUM
 
#define SERVO_CNT_SPEED   1000000L
 
#define S_STARTPULSE   SERVO_OUT_PULSE_MIN_US
 
#define S_PULSELEN   (SERVO_OUT_PULSE_MAX_US - SERVO_OUT_PULSE_MIN_US)
 
#define S_COOLDOWN   (1000000 / SERVO_OUT_RATE_HZ)
 
#define SERVO_START_OFFSET   (SERVO_CNT_SPEED / (1000000L / S_STARTPULSE))
 
#define SERVO_CPU_FACTOR   ((SERVO_CNT_SPEED + ((1000000L / S_PULSELEN) * 256L) - 1L) / ((1000000L / S_PULSELEN) * 256L))
 
#define SERVO_COOLDOWN_FACTOR   (SERVO_CNT_SPEED / (1000000L / S_COOLDOWN))
 
#define USE_COMMANDS   0
 
#define TEST_CYCLE_TIME   0
 
#define ACTUAL_POS(servo)   (MAX(MIN(servo.pos + (signed short)servo.offset, 255), 0))
 
#define ACTUAL_POS_PTR(servo)   (MAX(MIN(servo->pos + (signed short)servo->offset, 255), 0))
 
#define CMD_MS_TO_VAL(ms)   ((ms) / (((S_STARTPULSE + S_PULSELEN + S_COOLDOWN) * CMD_WAIT_FACTOR) / 1000))
 
#define SERVO_PERIOD_TIME_MS   ((S_STARTPULSE + S_PULSELEN + S_COOLDOWN) / 1000)
 

Functions

void servo_init (void)
 
void servo_stop_driver (void)
 
unsigned char servo_driver_is_active (void)
 
void servo_irq (void)
 

Variables

volatile SERVO servos [SERVOS_NUM]
 

Macro Definition Documentation

#define _BV (   bit)    (1 << (bit))
#define ACTUAL_POS (   servo)    (MAX(MIN(servo.pos + (signed short)servo.offset, 255), 0))
#define ACTUAL_POS_PTR (   servo)    (MAX(MIN(servo->pos + (signed short)servo->offset, 255), 0))
#define CMD_MS_TO_VAL (   ms)    ((ms) / (((S_STARTPULSE + S_PULSELEN + S_COOLDOWN) * CMD_WAIT_FACTOR) / 1000))
#define MAX (   a,
 
)    (((a)>(b))?(a):(b))
#define MIN (   a,
 
)    (((a)<(b))?(a):(b))
#define S_COOLDOWN   (1000000 / SERVO_OUT_RATE_HZ)
#define S_PULSELEN   (SERVO_OUT_PULSE_MAX_US - SERVO_OUT_PULSE_MIN_US)
#define S_STARTPULSE   SERVO_OUT_PULSE_MIN_US
#define SERVO_CNT_SPEED   1000000L
#define SERVO_COOLDOWN_FACTOR   (SERVO_CNT_SPEED / (1000000L / S_COOLDOWN))
#define SERVO_CPU_FACTOR   ((SERVO_CNT_SPEED + ((1000000L / S_PULSELEN) * 256L) - 1L) / ((1000000L / S_PULSELEN) * 256L))
#define SERVO_PERIOD_TIME_MS   ((S_STARTPULSE + S_PULSELEN + S_COOLDOWN) / 1000)
#define SERVO_START_OFFSET   (SERVO_CNT_SPEED / (1000000L / S_STARTPULSE))
#define SERVOS_NUM   HW_SERVO_NUM
#define TEST_CYCLE_TIME   0
#define USE_COMMANDS   0

Function Documentation

unsigned char servo_driver_is_active ( void  )
void servo_init ( void  )
void servo_irq ( void  )
void servo_stop_driver ( void  )

Variable Documentation

volatile SERVO servos[SERVOS_NUM]