Goed..... Even gewerkt aan het herstructureren van de manual stepper routines.
Ik heb nu een stepper struct gemaakt met daarin welke pin step, dir enz. is.
Ik heb nu een routine gemaakt die aangeroepen moet worden als je een bepaalde as/stepper met de hand wil bedienen.
Waar nu
code:
#include "manual_right_W.h"
stond.
Ik heb eerst de struct geschreven en even later bleek ik nog wat extra nodig te hebben. Heb ik nog niet toegevoegd.
Ik heb manual_right_X.h als basis genomen, ik heb de "endstops" nog niet gedaan zoals het hoort, dus nu zou het alleen voor die werken.
Ik heb nu ook maar 1 lus voor accellereren, bewegen en stoppen. Dus nu zitten de checks voor endstops en buttons loslaten ineens in alledrie. Lijkt me een bug die ik zo "vanzelf" gefixed heb.
De "core" van de routine is nu van 137 regels in manual_right_W.h naar 36 regels gegaan. Dat maakt het een stuk overzichtelijker.
Daarnaast heb ik een aantal dingen naar subroutines verbannen, dus de totale hoeveelheid code is niet zo enorm minder geworden.
Er zijn wel een zwik (bijna) een-regel functies. Bijvoorbeeld:
code:
void stepper_set_dir (struct stepper_desc *step, int dir)
{
write_pin (step->dir, dir);
}
void stepper_send_a_pulse (struct stepper_desc *step)
{
write_pin (step->pulse, 1);
delay_us (5);
write_pin (step->pulse, 0);
}
Dit zijn zo van die functies waar je geen "brainpower" aan hoeft te besteden. Je ziet in 1 oogopslag dat dit werkt, correct is en in de aanroepende code zie je aan de aanroep ook direct wat er moet gebeuren.
In dat kader heb ik ook een "enable_stepper ()" functie gemaakt. Die schrijft de enable pin LAAG, want zo werkt de chip. Daarmee zit die "kennis" op 1 plek in de code ipv dat je daar iedere keer aan moet denken. Idem voor disable.