/* * PSE_unit.h * * Created on: Aug 9, 2023 * Author: leo */ #ifndef INC_PSE_UNIT_H_ #define INC_PSE_UNIT_H_ #include #include "stm32f1xx_hal.h" typedef struct{ char name[16]; // brand / name uint16_t diameter; // diameter (in µm) } pse_syringe; typedef enum {PORT_X, PORT_Y, PORT_Z, PORT_E} pse_ports; typedef struct{ uint32_t step_itvl; uint8_t step_max; uint32_t tick_counter; GPIO_TypeDef* EN_GPIO_Port; uint16_t EN_GPIO_Pin; GPIO_TypeDef* DIR_GPIO_Port; uint16_t DIR_GPIO_Pin; GPIO_TypeDef* STEP_GPIO_Port; uint16_t STEP_GPIO_Pin; } pse_stepper_conf; typedef struct{ uint8_t enabled; pse_ports port; // physical port on which this unit is connected uint32_t flow; // flow (in µL.min-1) uint32_t volume; // current volume dispensed (in µL) uint32_t set_volume; // volume to stop at (0 for no max) pse_syringe* syringe; // associated syringe pse_stepper_conf* stepper_conf; // hardware configuration for the associated stepper } pse_unit; void load_units(pse_unit* units, pse_syringe* syringes, pse_stepper_conf* stepper_confs, uint8_t unit_num); void save_units(pse_unit* units, uint8_t unit_num); #endif