Wow that has absolutely nothing to do with seeed's cape. On Wed, Mar 18, 2020, 7:37 PM John Dammeyer <[email protected]> wrote:
> Would someone perhaps be able to describe simply (like MachineKit for > Dummy's) how exactly the step pulse and direction shows up on the Beagle > pin relative to the motion command from a G00 X1.0 where current X position > is 0.0. > > > > Clearly we accelerate and move and then decelerate to arrive at the end > point of 1.0. I do this in my ELS code inside the interrupt routine > which happens at a 20kHz rate. If a step is required I set the output at > the beginning of the routine and then clear it at the end after a whole > bunch of other stuff is done. > > > > Whether to step or not is done by the equivalent of a trajectory planner. > For example in simple terms if the motor could accelerate instantly and > the step rate was 10kHz then every second interrupt the axis is pulsed. Also > for every pulse the position is incremented if going in the positive > direction. Decremented if going in the other direction. When it matches > the end position the stepping is terminated and we have a move to position. > > > > Inside my ELS interrupt code I do the accel/decel too. The interrupt > routine changes the number of 20kHz intervals between step rates and also > tracks the half way point. If we're not up to speed yet but the halfway > point is reached then deceleration is started and by the time the stepping > rate reaches 0 the motor has also reached it's desired position. > > > > Otherwise once the step output pulse rate matches the desired velocity the > acceleration part is terminated and the number of steps it took recorded, > and now a pulse happens every second interrupt (for 10kHz step rate). When > the destination location minus the time it took to accelerate is reached > deceleration begins. And since we decelerate at the same rate as > accelerating and we have that same distance to move, once we reach 0 speed > we've also reached the destination. > > > > Now this could all be done outside the interrupt routine in a trajectory > planner. One could determine that it will take time X to reach either > target speed or midpoint of the distance to move. Broken into the 20kHz > steps then the information could be fed into a FIFO so no math is done at > all inside the interrupt routine. It's only task would be to read this > from FIFO one byte during each interrupt and write it to the port. The > interrupt routine could then run 40kHz and clear the port of step signals > every second pulse. If there is no motion the FIFO, flagged as empty, > holds the last entry for the port and it's just mirrored out to the port. > > > > > So how is it done in the Beaglebone with MachineKit. Is there a function > that reads a FIFO filled by the trajectory planner or is it done yet some > other way? I would look it up but don't even know where to start. > > > > Obviously there's probably more going on under the covers to deal with > hard limits. Seems like soft limits are dealt with before motion starts > with the option to not move because it will exceed machine limits. > > > > Thanks > John Dammeyer > > > > > > > > -- > website: http://www.machinekit.io blog: http://blog.machinekit.io github: > https://github.com/machinekit > --- > You received this message because you are subscribed to the Google Groups > "Machinekit" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/machinekit/023801d5fd7e%242a472570%247ed57050%24%40autoartisans.com > <https://groups.google.com/d/msgid/machinekit/023801d5fd7e%242a472570%247ed57050%24%40autoartisans.com?utm_medium=email&utm_source=footer> > . > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/CA%2BQ02MOgrNTwNmP3j8CdCai7Pj7Bm9xVm3eZfhq2AhW2niAuAg%40mail.gmail.com.
