From 5d5ca12a57e86aa3f566eafa9c71663cdf563708 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 18 Jun 2018 17:15:02 +0300 Subject: basic IDS with valves handling --- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 29 ++++++++++++++++++++-- .../Modules/Stubs_Handler/StubRealTimeUsage.c | 1 + 2 files changed, 28 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index f4ddc0fbd..d999be20e 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -14,6 +14,7 @@ #include "PMR/Hardware/HardwareDispenser.pb-c.h" #include "StateMachines/Printing/printingSTM.h" #include "drivers/motors/motor.h" +#include "drivers/valves/valve.h" typedef struct @@ -42,6 +43,7 @@ bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {true}; DispenserControlConfig_t DispenserControlConfig[MAX_SYSTEM_DISPENSERS]; uint32_t ControlIdtoDispenserId [MAX_SYSTEM_DISPENSERS] = {0xFF}; int OriginalDispenserSpd_2PPS[MAX_SYSTEM_DISPENSERS] = {0}; +bool DispenserPreSegmentReady[MAX_SYSTEM_DISPENSERS] = {false}; int JobBrushStopId = 0; uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request) @@ -151,6 +153,21 @@ uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request) } //******************************************************************************************************************** + + uint32_t IDS_Valve_PresegmentReady(uint32_t deviceID, uint32_t ReadValue) + { + int i; + DispenserPreSegmentReady[deviceID] = true; + for (i=0;isegments[SegmentId]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->has_dispenserstepdivision) MotorSetMicroStep(HW_Motor_Id,JobTicket->segments[SegmentId]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->dispenserstepdivision); else MotorSetMicroStep(HW_Motor_Id,MotorsCfg[HW_Motor_Id].microstep); + DispenserPreSegmentReady[Dispenser_i] = false; + } //call the job state machine when the thread system is ready - PreSegmentReady(Module_IDS,ModuleDone); + //PreSegmentReady(Module_IDS,ModuleDone); return OK; } @@ -199,7 +220,11 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) // double Dispenser_speed = (segmentfirst_speed * MotorsCfg[HW_Motor_Id].pulseperround)/(2*PI* MotorsCfg[HW_Motor_Id].pulleyradius); //DispenserControlConfig[Dispenser_i].m_SetParam = Dispenser_speed; // OriginalDispenserSpd_2PPS[Dispenser_i] = (int)Dispenser_speed; - MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); + if ((int)segmentfirst_speed > 0) + { + Control3WayValvesWithCallback (Dispenser_i, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer + MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); + } } return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c index ed4d44491..fbfb0ed85 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c @@ -16,6 +16,7 @@ #include #include + #include #include -- cgit v1.3.1