From eeb26a896a5de600f314bdcc736c124886f6efb3 Mon Sep 17 00:00:00 2001 From: Jake <jake.read@cba.mit.edu> Date: Wed, 6 Jul 2022 16:29:57 -0400 Subject: [PATCH] motor does axl homing --- firmware/axl-stepper/src/axl | 2 +- firmware/axl-stepper/src/main.cpp | 34 +++++++++++++++++++++++++++++++ firmware/axl-stepper/src/osape | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/firmware/axl-stepper/src/axl b/firmware/axl-stepper/src/axl index 09e3e90..71bf902 160000 --- a/firmware/axl-stepper/src/axl +++ b/firmware/axl-stepper/src/axl @@ -1 +1 @@ -Subproject commit 09e3e90667034d09f34bbe4041b3f395461fad8a +Subproject commit 71bf90214692c6a2fb82d121708b91692648376a diff --git a/firmware/axl-stepper/src/main.cpp b/firmware/axl-stepper/src/main.cpp index 6628e5b..85e0284 100644 --- a/firmware/axl-stepper/src/main.cpp +++ b/firmware/axl-stepper/src/main.cpp @@ -155,6 +155,38 @@ EP_ONDATA_RESPONSES onMotorSettingsData(uint8_t* data, uint16_t len){ Endpoint motorSettingsEP(&osap, "motorSettings", onMotorSettingsData); +// -------------------------------------------------------- 7: Home Routine + +EP_ONDATA_RESPONSES onHomeData(uint8_t* data, uint16_t len){ + uint16_t rptr = 0; + uint8_t axis = data[rptr ++]; + float rate = ts_readFloat32(data, &rptr); + float offset = ts_readFloat32(data, &rptr); + // alright alright, this would be sliq if we had a little async-cpp api, alas, + if(axl_isMoving()){ + return EP_ONDATA_REJECT; + } else { + axl_home(axis, rate, offset); + return EP_ONDATA_REJECT; + } +} + +#define LIMIT_PIN 23 +#define LIMIT_PORT 0 + +void axl_limitSetup(void){ + PORT->Group[LIMIT_PORT].DIRCLR.reg = (1 << LIMIT_PIN); + PORT->Group[LIMIT_PORT].PINCFG[LIMIT_PIN].bit.INEN = 1; + // pullup + PORT->Group[LIMIT_PORT].OUTSET.reg = (1 << LIMIT_PIN); +} + +boolean axl_checkLimit(void){ + return (PORT->Group[LIMIT_PORT].IN.reg & (1 << LIMIT_PIN)); +} + +Endpoint homeEP(&osap, "home", onHomeData); + // -------------------------------------------------------- Arduino Setup void setup() { @@ -164,6 +196,7 @@ void setup() { DEBUG2PIN_SETUP; // port begin vpUSBSerial.begin(); + vbUCBusDrop.begin(4); // setup stepper machine stepper_hw->init(false, 0.0F); stepper_hw->setMicrostep(4); @@ -186,6 +219,7 @@ void loop() { lastBlink = millis(); CLKLIGHT_TOGGLE; updateStatesEP(); + axl_printHomeState(); } } diff --git a/firmware/axl-stepper/src/osape b/firmware/axl-stepper/src/osape index bc18a89..97e593d 160000 --- a/firmware/axl-stepper/src/osape +++ b/firmware/axl-stepper/src/osape @@ -1 +1 @@ -Subproject commit bc18a89d155622fd8ab959773c0eb967cedd9383 +Subproject commit 97e593d51e42f77c12b9ed2ae561adc5136ae9cc -- GitLab