diff --git a/ADIS_tinyK22_SplitFlap/McuLib/config/McuULN2003config.h b/ADIS_tinyK22_SplitFlap/McuLib/config/McuULN2003config.h index f464bba..3434931 100644 --- a/ADIS_tinyK22_SplitFlap/McuLib/config/McuULN2003config.h +++ b/ADIS_tinyK22_SplitFlap/McuLib/config/McuULN2003config.h @@ -21,7 +21,7 @@ extern "C" { #endif #ifndef McuULN2003_CONFIG_USE_ACCELERATION - #define McuULN2003_CONFIG_USE_ACCELERATION (0) + #define McuULN2003_CONFIG_USE_ACCELERATION (1) /*!< 1: stepper motor uses acceleration table; 0: no acceleration table used */ #endif diff --git a/ADIS_tinyK22_SplitFlap/source/splitflap.c b/ADIS_tinyK22_SplitFlap/source/splitflap.c index 879d115..c461f4b 100644 --- a/ADIS_tinyK22_SplitFlap/source/splitflap.c +++ b/ADIS_tinyK22_SplitFlap/source/splitflap.c @@ -7,6 +7,8 @@ #include "splitflap.h" #include "McuULN2003.h" +#include +#include "McuWait.h" SF_Handle_t SF_Init(SF_Config_t* instance, int id){ SF_t* splitflap; @@ -24,7 +26,19 @@ SF_Handle_t SF_Init(SF_Config_t* instance, int id){ return splitflap; } - +void SF_MoveSteps(SF_Handle_t instance, uint8_t steps){ + McuULN2003_AccelerationStart(((SF_t*)instance)->motor); + // maybe move callback? + while(steps>0){ + if(McuULN2003_StepCallback(((SF_t*)instance)->motor, true) == true){ + steps--; + } + McuWait_Waitms(1); + } + McuULN2003_AccelerationEnd(((SF_t*)instance)->motor); + // Power off necessary? -> what to do after power off? init again? + McuULN2003_PowerOff(((SF_t*)instance)->motor); +} void SF_Deinit(SF_Handle_t instance){ McuULN2003_DeinitMotor(((SF_t*)instance)->motor); diff --git a/ADIS_tinyK22_SplitFlap/source/splitflap.h b/ADIS_tinyK22_SplitFlap/source/splitflap.h index e6d1695..2bbccf6 100644 --- a/ADIS_tinyK22_SplitFlap/source/splitflap.h +++ b/ADIS_tinyK22_SplitFlap/source/splitflap.h @@ -38,6 +38,9 @@ typedef struct { * Initialization will be made inside the SF_Init method */ SF_Handle_t SF_Init(SF_Config_t* instance, int id); +/* split flab moves number of steps maybe uint16_t? */ +void SF_MoveSteps(SF_Handle_t instance, uint8_t steps); + /* split flap deinitialization */ void SF_Deinit(SF_Handle_t instance);