SchmalzHaus logoEBB Firmware Release Notes

 2.0.1 9/13/10 - Bug fix - on v1.1 EBB hardware, need to disable RB0 alt pause
                    switched it to RB2 on v1.1 hardware
 2.0.2 10/3/10 - Bug fix - QC command not returning proper results - added
                      cast and now works OK
 2.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.
 2.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.
 2.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
 2.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.
 2.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)
 2.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
 2.1.4 12/14/11 - RB3 now defaults to OFF, rather than ON, at boot.
 2.1.5 12/15/11 - Fixed problem with pen servo (RB1) being inverted on boot
 2.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.
 2.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
                - 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
2.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}
                - Added SC,14,{0,1} to switch between default of 1/25Khz units
                  for SP and TP command <duration> parameters, and 1ms units
2.2.3 01/11/14 - Rewrote analog system so we don't have problems with QC
                  commands anymore. New command AC.
2.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 2.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 2.0.1 when no parameter is
                - Tested 2.2.4 against 2.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.
2.2.5 04/29/14 - Added 'long' arguments to SM for <move_duration> and <axis1>
                  and <axis2>. All can be 3 bytes now. Also added checks in
                  SM command to make sure that arguments don't result in a
                  step speed that's too low (<0.76Hz).
2.2.6 01/01/15 - Added 'QM' command - Query Motor, tells PC what is moving.
2.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.
2.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
2.2.9 08/18/15 - Added extra values to output of ES command to indicate how
                 many steps were aborted.
2.3.0 08/28/15 - Added new XM command as per issue #29 for driving mixed-axis
                  geometry machines.
2.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
2.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.

Questions? E-mail me at

Creative Commons License
EggBotBoard by Brian Schmalz is licensed under a Creative Commons Attribution 3.0 United States License.
Based on a work at
Permissions beyond the scope of this license may be available at