EBB Release Notes
This document details the version history of the EBB (EiBotBoard).
v2.0.1 — 9/13/10
Bug fix - on v1.1 EBB hardware, need to disable RB0 alt pause button. Switched it to RB2 on v1.1 hardware.
v2.0.2 — 10/3/10
Bug fix - QC command not returning proper results - added cast and now works OK.
v2.1.0 — 10/21/10
- Added in SE - Set Engraver - turns engraver (on RB3) on or off, or set to PWM power level
- Added code in init to pre-charge RC7 (USB_SENSE_IO) high before running rest of code to get around wrong resistor value on hardware.
v2.1.1 — 11/21/10
- Removed Microchip USB stack v2.7, replaced it with v2.8 from MAL 2010_10_19.
- Also using generic Microchip folder now rather than re-named one (simpler to update).
- Updated code in main.c (and others) to match updates from latest MAL CDC example.
v2.1.1cTest1 — 01/17/11
Added third parameter to SP command to use any PortB pin for servo output. (For this version only - used PortB2 as standard servo output.)
v2.1.1d — 02/11/11
- Reverted back to RB1 for servo output
- Updated check_and_send_TX_data() to allow unlimited data to go out without overrunning the output buffer, same as UBW 1.4.7.
v2.1.2 — 11/04/11
- Fixed PI command to return just a 0 or a 1
- Updated to USB stack 2.9a
- Created MPLAB X project for this firmware
- Added SC,14,<state> to enable/disable solenoid output on RB4
- Fixed bug with S2 command and solenoid command interaction - we now turn off solenoid output on RB4 if user uses S2 command to use RB4 for RC servo output.
- Fixed bug with S2 command where a duration of 0 would not shut off the PWM channel
- Fixed bug in S2 command where <rate> variable was not being used correctly
- Switched default number of S2 channels to 8 (from 7 before)
v2.1.3 — 12/12/11
- RB3 now defaults to digital I/O on boot, can still use SE command to do PWM later if you want
- Compiled with latest UBW stack - 2.9b from MAL 2011-10-18
v2.1.4 — 12/14/11
RB3 now defaults to OFF, rather than ON, at boot.
v2.1.5 — 12/15/11
Fixed problem with pen servo (RB1) being inverted on boot
v2.2.0 — 11/07/12
Fixed problem with SP command not working properly with ports other than RB1 because we don't properly use S2 commands for SP up/down within ISR. Tested on all PortB.
v2.2.1 — 09/19/13
- Expanded internal delay counter to 32 bits so we can have delays longer than 2.1s. Now up to 64K ms.
- Fixed bug with all <duration> parameters, SM, SP, TP commands. Now in ms, defaults to 500ms, and actually works up to 64Kms.
- Fixed uninitialized data bug with command FIFO. We were seeing very long random delays first time SM,<delay>,0,0 was used.
- SP command was executing servo move at end of <duration>. It now starts servo move and <duration> delay at same time.
- Updated USB stack to Microchip MAL USB v2.9j
v2.2.2 — 10/15/13
- Fixed bug with SE command that was preventing anything other than 50% duty cycle from working.
- Updated SC,2,{0,1,2} to control PIC and drivers connection
- 0 = PIC controls built in drivers
- 1 = PIC controls external step/dir/en drives
- 2 = external step/dir/en controls built-in drivers
- Also updated the pins that are used for driving external step/dir/en drives. (See documentation)
- Updated SC,1,{0,1,2} documentation to match code and removed SC,14 which is not needed.
- Updated logic for EM command to use state of SC,2,{0,1,2} properly.
- Added SC,14,{0,1} to switch between default of 1/25Khz units for SP and TP command <duration> parameters, and 1ms units
v2.2.3 — 01/11/14
Rewrote analog system so we don't have problems with QC commands anymore. New command AC.
v2.2.4 — 04/28/14
- Fixed bug where 0 for duration in SM would cause problems
-
Found bug where the <servo_min> and <servo_max> values were reversed in the SP command. This has now been fixed so that SP commands will operate the same as v2.0.1 version.
- Set initial 'position' of main servo to be 1mS to mimic behavior of v2.0.1 firmware.
- Updated license to BSD 3-clause
-
Changed SP and TP commands so that if no <duration> parameter is used, it does not default to 500mS delay, but rather 0mS. This should now work exactly as v2.0.1 when no parameter is used.
-
Tested v2.2.4 against v2.0.1 with Seleae Logic analyzer. Looked at several Inkscape plots. Confirmed that timing of steppers and servo are the same. Confirmed that all RB0 through RB7 outputs are the same between the two versions.
v2.2.5 — 04/29/14
- Added 'long' arguments to SM for <move_duration> and <axis1> and <axis2>. All can be 3 bytes now.
- dded checks in SM command to make sure that arguments don't result in a step speed that's too low (<0.76Hz).
v2.2.6 — 01/01/15
Added 'QM' command - Query Motor, tells PC what is moving.
v2.2.7 — 08/13/15
Added 'ES' command, which will immediately abort any SM command but leave the motors energized. (E-stop) It returns "1" if it aborted a move in progress, "0" otherwise. It will also delete any pending SM command in the FIFO.
v2.2.8 — 08/14/15
Corrected error checking in SM command to accurately reflect too fast and too slow requests. (>25K or <1.31 steps per second)
v2.2.9 — 08/18/15
Added extra values to output of ES command to indicate how many steps were aborted.
v2.3.0 — 08/28/15
Added new XM command as per issue #29 for driving mixed-axis geometry machines.
v2.4.0 — 03/14/16
Added new AM command for using accelerated stepper motion. Includes going to 32 bit accumulators in ISR to achieve necessary resolution, which includes changes to SM command as well. Also added "CU,2,0" to turn of SM command parameter checking for speed.
NOTE: AM command may not be quite 'right' yet. Although it has passed simple tests, it could not be made to reliably work from the Inkscape plugin, so it is not currently being used. It may have to change in future versions of this firmware.
v2.4.1 — 08/08/16
- Added new form of SE command, with optional parameter that puts SE in motion queue. (issue #51)
- Fixed issue #52 (bug in parameter check in parse_SM_packet())
2.4.2 — 08/10/16
-
Fixed bug in SE command that would set engraver to 50% if SE,1,0 was used. Also added engraver power to FIFO structure for when third SE parameter is 1.
2.4.3 — 11/07/16
- Added QS (Query Step position) and CS (Clear Step position) commands.
2.4.4 — 11/16/16
- Added extra FIFO state output to QM command.
2.4.5 — 01/07/17
2.5.0 — 01/14/17
2.5.1 — 01/18/17
- Fixed LM command to take negative and positive StepAddIncs
- Fixed 25KHz ISR to be much closer to 25KHz
2.5.2 — 07/07/17
- Fixed issue #78 : detected and reject 0,0 for LM command
- Fixed some uninitialized variables
- LM StepAddInc parameter went to 32 bits signed from 16 bit signed
2.5.3 — 07/09/17
- Fixed issue #79 : Fixed bug in LM command that would corrupt currently running moves with new data.
EiBotBoard by Brian Schmalz is licensed under a Creative Commons Attribution 3.0 United States License. Based on a work at www.schmalzhaus.com/EBB. Permissions beyond the scope of this license may be available at www.schmalzhaus.com/EBB.
Extended EggBot documentation available at: http://wiki.evilmadscientist.com/eggbot