Skip to content
Snippets Groups Projects
Commit b49359ae authored by Jake Read's avatar Jake Read
Browse files

axl is up

parent f27cb412
No related branches found
No related tags found
No related merge requests found
......@@ -31,3 +31,6 @@
[submodule "firmware/axl-stepper/src/utils_samd51"]
path = firmware/axl-stepper/src/utils_samd51
url = https://github.com/jakeread/utils_samd51.git
[submodule "firmware/axl-stepper/src/osape_ucbus"]
path = firmware/axl-stepper/src/osape_ucbus
url = https://github.com/jakeread/osape_ucbus.git
Subproject commit c874b7afa9102ae3e5c150e444b01703c7143303
Subproject commit 2e5fc8fc207938607933be3c7b06326573265139
......@@ -10,11 +10,14 @@
#include "osape/core/ts.h"
#include "osape/vertices/endpoint.h"
#include "osape_arduino/vp_arduinoSerial.h"
#include "osape_ucbus/vb_ucBusDrop.h"
OSAP osap("hmc-motor");
VPort_ArduinoSerial vpUSBSerial(&osap, "arduinoUSBSerial", &Serial);
VBus_UCBusDrop vbUCBusDrop(&osap, "ucBusDrop");
// -------------------------------------------------------- 2: States
EP_ONDATA_RESPONSES onStateData(uint8_t* data, uint16_t len){
......@@ -77,6 +80,73 @@ void updateStatesEP(void){
statesEP.write(stash, numBytes);
}
// -------------------------------------------------------- 3: Moves -> Queue
EP_ONDATA_RESPONSES onMoveData(uint8_t* data, uint16_t len){
// this (and states-input) could watch <len> to make sure that
// this code & transmitter code are agreeing on how many DOFs are specd
if(axl_hasQueueSpace()){
uint16_t rptr = 0;
float rate = ts_readFloat32(data, &rptr);
dofs targ;
for(uint8_t a = 0; a < AXL_NUM_DOF; a ++){
targ.axis[a] = ts_readFloat32(data, &rptr);
}
axl_addMoveToQueue(targ, rate);
return EP_ONDATA_ACCEPT;
} else {
return EP_ONDATA_WAIT;
}
}
Endpoint moveEP(&osap, "moves", onMoveData);
// -------------------------------------------------------- 4: AXL Settings
EP_ONDATA_RESPONSES onAXLSettingsData(uint8_t* data, uint16_t len){
// jd, then pairs of accel & vel limits,
float jd;
dofs accelLimits;
dofs velLimits;
uint16_t rptr = 0;
jd = ts_readFloat32(data, &rptr);
for(uint8_t a = 0; a < AXL_NUM_DOF; a ++){
accelLimits.axis[a] = ts_readFloat32(data, &rptr);
velLimits.axis[a] = ts_readFloat32(data, &rptr);
}
axl_setJunctionDeviation(jd);
axl_setAccelLimits(accelLimits);
axl_setVelLimits(velLimits);
return EP_ONDATA_ACCEPT;
}
Endpoint axlSettingsEP(&osap, "axlSettings", onAXLSettingsData);
// -------------------------------------------------------- 5: Motor Settings
uint8_t axisPick = 0;
boolean invert = false;
uint16_t microstep = 4;
float spu = 100.0F;
float cscale = 0.1F;
// aye, there should be a void onData overload... less confusing
EP_ONDATA_RESPONSES onMotorSettingsData(uint8_t* data, uint16_t len){
uint16_t rptr = 0;
axisPick = data[rptr ++];
ts_readBoolean(&invert, data, &rptr);
ts_readUint16(&microstep, data, &rptr);
spu = ts_readFloat32(data, &rptr);
cscale = ts_readFloat32(data, &rptr);
stepper_hw->setMicrostep(microstep);
stepper_hw->setCurrent(cscale);
stepper_hw->setInversion(invert);
return EP_ONDATA_ACCEPT;
}
Endpoint motorSettingsEP(&osap, "motorSettings", onMotorSettingsData);
// -------------------------------------------------------- Arduino Setup
void setup() {
CLKLIGHT_SETUP;
......@@ -86,7 +156,7 @@ void setup() {
// port begin
vpUSBSerial.begin();
// setup stepper machine
stepper_hw->init(false, 0.35F);
stepper_hw->init(false, 0.0F);
stepper_hw->setMicrostep(4);
// setup controller
axl_setup();
......@@ -94,6 +164,8 @@ void setup() {
d51ClockUtils->start_ticker_a(AXL_TICKER_INTERVAL_US);
}
// -------------------------------------------------------- Das Loop
uint32_t lastBlink = 0;
uint32_t blinkInterval = 50; // ms
......@@ -107,8 +179,7 @@ void loop() {
}
}
uint8_t axisPick = 0;
float spu = 100.0F;
// -------------------------------------------------------- Small-Time Ops
volatile float stepRatchet = 0.0F;
void axl_onPositionDelta(uint8_t axis, float delta){
......@@ -133,3 +204,9 @@ void TC0_Handler(void){
axl_integrator();
DEBUG1PIN_OFF;
}
// deadies, unused ATM
void ucBusDrop_onRxISR(void){}
void ucBusDrop_onPacketARx(uint8_t* data, uint16_t len){}
\ No newline at end of file
Subproject commit ba7240a9f473f3df114cccfd3c393cc9f5ea1074
......@@ -16,8 +16,8 @@ no warranty is provided, and users accept all liability.
#define UCBUS_CONFIG_H_
#define UCBUS_MAX_DROPS 32
//#define UCBUS_IS_DROP
#define UCBUS_IS_HEAD
#define UCBUS_IS_DROP
//#define UCBUS_IS_HEAD
#define UCBUS_BAUD 2
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment