Previously unused pins were always set as output low.
Now, they are output low when active operation is in
progress, and they are set as input when inactive.
When the serial device name is not passed with paramerer -d
then the PC app will try to find an existing serial device.
* On Windows: selects the COM device with the highest number.
* On Linux: selects the serial usb device in any order, but
priority is given to devices with Arduino name.
* ON MAC OS: selects the last /dev/tty.* or /dev/tty/wchusb*
device in the order that OS lists them.
This serial port detection should work OK if you have only one
Arduino attached. If you have (and need to have) several
Arduinos or serial ports connected at the same time then pass
the '-d' parameter to specify which one to use.
The proress bar cusros hiding/revealing sequence was not
compatible with some Windows versions / shells.
This fix removes the escaped sequences and ensures the progress
bar is fully printed at the end of each iteration, which prevents
the visual artefacts caused by the jumping cursor.
This change stores the digi pot indices in the scale 1-255
(previously 1 -128) so the stored values for calibration
are no longer valid after this change is uploaded to Arduino.
Please re-run the full calibration on your Afterburner!
Compacting searches for fuse blocks where all 32 bits are set
to 1. If such block is found then it is removed from the
fuse array (reducing its top position) and then the fuse type
of such block is changed to 3.
Note that the fuse bit is never changed from 1 to 0, therefore
there is no need to cover these cases in the code (ie. converting
block type 3 to block type 1).
Compacting happens after every 256 fuse writes.
Compacting is required to be able to read erased GALs where
all fuse bits are initialised to 1.
Previously 16 bit fuse blocks were used and block types were stored in 1 bit.
That did not allow to compact fusemaps where all bits were 1 - which is
typically after the fuses are erased. So fuses of an erased chip would
not fit into the sparse memory array. The solution was to extend the fuse
block type storage from 1 bit to 2 bits and use that extra space to mark
blocks as sparse when all bits in the block are 1's. Such block is now
block type 3. To keep the fuseType array the same size as it was (128
bytes) the size of the block was extended from 16 bits to 32 bits.
The block type is now:
0 - all bits in the fuse block are 0, no block data in the fuse array
3 - all bits in the fuse block are 1, no block data in the fuse array
1 - any combination of bits in the fuse block, data are stored in the fuse array
2 - reserved for future use.