X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Fdc_motor.h;h=949420759747d5674dfbae782c5fe3f9639a7d36;hb=010a2d0611571ec1e4bace00b4b6efe8462f512f;hp=3f4b15dd0ae20f49ec067fcd400ccf3d48480f44;hpb=c7fb36e3638f5dabccb1811d53ec8b781b06299d;p=bertos.git diff --git a/bertos/drv/dc_motor.h b/bertos/drv/dc_motor.h index 3f4b15dd..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,6 +68,7 @@ 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. @@ -81,9 +76,13 @@ typedef struct DCMotorConfig 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. + 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; @@ -100,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 */