X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Fdc_motor.h;h=949420759747d5674dfbae782c5fe3f9639a7d36;hb=010a2d0611571ec1e4bace00b4b6efe8462f512f;hp=9e7104037bc9f50cc70bb30dc21c350fd0b8f677;hpb=89b678e45ae1f98ae9703b947404a27d50e0aeeb;p=bertos.git diff --git a/bertos/drv/dc_motor.h b/bertos/drv/dc_motor.h index 9e710403..94942075 100644 --- a/bertos/drv/dc_motor.h +++ b/bertos/drv/dc_motor.h @@ -32,8 +32,6 @@ * * \brief DC motor driver. * - * \version $Id$ - * * \author Daniele Basile * * $WIZ$ module_name = "dc_motor" @@ -56,12 +54,8 @@ #include #include - -/** - * Define status bit for DC motor device. - */ -#define DC_MOTOR_ACTIVE BV(0) ///< DC motor enable or disable flag. -#define DC_MOTOR_DIR BV(1) ///< Spin direction of DC motor. +#define DC_MOTOR_NO_EXPIRE -1 ///< The DC motor runs do not expire, so it runs forever. +#define DC_MOTOR_NO_DEV_SPEED -1 ///< Disable the speed acquire from device (like trimmer, etc.). /** * Type for DC motor. @@ -74,20 +68,22 @@ typedef uint16_t dc_speed_t; typedef struct DCMotorConfig { PidCfg pid_cfg; ///< Pid control. + bool pid_enable; ///< Flag to disable or enable pid control. PwmDev pwm_dev; ///< Pwm channel. pwm_freq_t freq; ///< Pwm waveform frequency. - bool pol; ///< Pwm waveform polarity. adc_ch_t adc_ch; ///< ADC channel. adcread_t adc_max; ///< ADC max scale value. adcread_t adc_min; ///< ADC min scale value. - mtime_t sample_delay; ///< Delay before to sampling. bool dir; ///< Default direction for select DC motor. - int speed_trm_id; ///< Index of trimmer to set speed. + bool braked; ///< If true the motor is braked when we turn off it. + dc_speed_t speed; ///< Default speed value for select DC motor. + int speed_dev_id; ///< Index of the device where read speed, to disable set to DC_MOTOR_NO_DEV_SPEED. + } DCMotorConfig; @@ -103,12 +99,28 @@ typedef struct DCMotor uint32_t status; ///< Status of select DC motor dc_speed_t tgt_speed; ///< Target speed for select DC motor + ticks_t expire_time; ///< Amount of time that dc motor run + } DCMotor; void dc_motor_setDir(int index, bool dir); void dc_motor_enable(int index, bool state); void dc_motor_setSpeed(int index, dc_speed_t speed); -void dc_motor_setup(int index, DCMotorConfig *cfg); +void dc_motor_startTimer(int index, mtime_t on_time); +void dc_motor_waitStop(int index); +void dc_motor_setup(int index, DCMotorConfig *dcm_conf); +dc_speed_t dc_motor_readTargetSpeed(int index); +void dc_motor_setPriority(int priority); void dc_motor_init(void); + +/** + * Test function prototypes. + * + * See dc_motor_hwtest.c file. + */ +int dc_motor_testSetUp(void); +void dc_motor_testRun(void); +int dc_motor_testTearDown(void); + #endif /* DRV_DC_MOTOR_H */