ms120
1. Download SPLat Firmware
Download this firmware file for your controller. More information about the upgrade process can be found in the Knowledge Base.
************************* MS120 Revision History ***********************************
*
* V3-00 5/12/2006 Initial release
*
* V3-10 12/1/2007 Bug fixed in PERMSTORE module.
*
* V3-11 1/2/2007 Bug fixed in the STSCALE mechanism which would prevent the
* correct functioning of this instruction with certain numbers. OBCB multi
* channel software counter module added, 8 channels implemented on inputs
* 0 - 7. Handling of expansion I/O altered to spread the processor interrupt
* loading over several timer interrupt cycles.
*
* V3-12 10/8/2007 Bug fixed which caused the MS120 to do 5 shifts to update expansion
* I/O instead of four shifts. This did not cause any problems but wastes CPU time.
* Xwire V1-1 expansion protocol added. PWM frequency can now be set by SPLat program
* using an SPxCmd1 command. Task que timer base can be set between 1 - 255ms by an
* SPxCmd1 command (default is 10ms). TSP interface has been removed.
*
* V3-13 29/8/2007 Bug fixed in Xwire which would occasionally cause the Xwire UART to stream
* if the unit had been running as an Xwire master and a new program was downloaded to
* the board which also set the board to Xwire master operation.
*
* V3-14 15/2/2008 A new CPU call SPxPoll1 (Argument=7) returns the number of tasks running in the SPLat task que.
* "Reason for reset" byte now has bit 0 implemented which is set when the SPLat interpreter encounters the
* new "WarmBoot" instruction. The OBCB peripheral now has the ability to have the number of channels specified
* and an offset added to allow the OBCB inputs to be positioned anywhere in the controllers memory map,
* including expansion I/O. The form of the instruction is "$F5 $2C NumberOfChannels StaringInput". The number
* of channels is limited by the compilation variable "OBCB_channels".
*
* V3-15 9/5/2008 A vulnerability has been fixed in the Xwire protocol sequencer that could cause the Xwire module
* to stream TX characters if a timing error occured in the received message (ie: message not arriving within
* Xwire time parameters). The Xwire comms receive structure now uses an interrupt and small circular buffer
* to eliminate comms errors when the receive baud rate is slightly higher than that of the MS120. A bug has
* been fixed in the MemToUV and UVtoMem instructions which would not allow the last byte to be accessed. The
* FixtoU instruction now preserves W. An interaction between LCD writes and the front panel push buttons has
* been fixed. Under certain circumstances, push button inputs could be falsely triggered by LCD screen updates.
*
* V3-16 10/6/2008 Timing issue fixed when using the SPxTxfrU instruction, the symptom of which was that input data
* would be corrupted when using this instruction.
*
* V3-17 16/6/2008 Bug fixed in Xwire protocol which would cause long corrupted messages to be sent if the data length
* was set to zero in either slave or master mode. The FixtoU instruction now really does preserve W as was
* advertised as fixed in version 3-15.
*
* V3-18 19/6/2008 High drive strength enabled on all PWM pins used in this design to improve the accuracy of the generated
* analogue voltages.
*
* V3-19 25/6/2008 Xwire protocol modified so that transmit messages and received data is only tranfered to and from
* SPLat memory between the execution of SPLat instructions. This has been done to make it easier for the user
* to transfer multibyte variables (ie: floating point) without corruption.
*
* V3-20 11/3/2009 High drive strength enabled on all PWM pins used in this design to improve the accuracy of the generated
* analogue voltages. LCD driver now loads more of the user character RAM cells to allow the displaying of large 7
* segment data on 4 line LCDs (3 lines used for displaying characters. MODBUS master implemented. Bootloader bug fixed
* which could prevent successful reflashing of a board if NVEM alters memory to something other than $FF after the end
* of the SPLat program. Demo program feature removed to free up space and resources. User program space reduced by 4096
* bytes to allow for future code expansion. User now has 22,016 bytes for program and NVEM storage (previously 26,112
* bytes). LCD back light can now be PWM controlled allowing the LCD to be dimmed or turned off after a programmed amount
* of time (0-255 minutes). New CPU calls allow the operating brightness, dimmed brightness and time to dimmed setting to
* be set by the user. Pressing any of the front panel buttons will cause the timer to be re-started and the display
* to be brought up to the operating brightness level independant of the user program.
*
* V3-20 24/3/2009 Re-assembled with version 1.2 bootloader to enable code security.
*
* V3-21 2/6/2009 Re-instated the user program memory size of 26,112 bytes.
*
* V3-22 8/1/2010 IEEE floating point format <--> SPLat floating point format conversion routines added to make the use of touch
* screens easier. 16 bit signed and unsigned <--> SPLat floating point routines added to make working with touch screens
* easier. MODBUS Slave Function Type = 3, "Read Memory" using address 2000 --> 2039 returns the contents of the SPLat LCD
* buffer to allow existing "oblcd" instructions to display text on the touch screen under program control. MODBUS memory
* referencing instructions in WORD mode now have the starting address multiplied by 2 when processed if the address is in
* the range 3000 - 3999. The ensures correct behaviour when using SPLat products with touch screens and other MODBUS
* devices. Function Types 6 (preset single register) and 16 (preset multiple registers) are affected in MASTER mode. SLAVE
* functions 3 (Read memory), 6 (preset single register) and 16 (preset multiple registers) are affected.
* An SPxPoll4 0,!CPU returns the floating point temperature of the CPU chip in �C at locations U(0) --> U(3).
* An SPxPoll4 1,!CPU returns the floating point temperature of the CPU chip in �F at locations U(0) --> U(3).
* Modified SPLat comms to allow much faster download speeds (up to 30 times faster). This firmware is fully backward
* compatible with older versions of SPLatPC in terms of downloads, but to get the benefit of the faster downloads,
* the user will need SPLatPC Version 10.21.1 or higher.
*
* V3-23 25/3/2010 Fixed a bug in the comms RX interrupt handler which would cause the board to reset if being used in any UART
* profile with parity enabled. MODBUS RX handler modified to be active all the time rather than only after the UART
* transmitter has finished sending. This has been done because several MODBUS devices we have used ignore the MODBUS
* specification and reply immediately rather than waiting 3.5 character times before replying. MODBUS master mode is now
* capable of sending the LCD buffer using function 16 (preset muliple registers) if the address range is set to 2000 - 2079.
* The CommRunScript and CommHaltScr commands will now wait for the MODBUS master script parser to be actually stopped
* before HALTing or changing the script to be executed, respectively.
*
* V3-24 10/5/2010 Jindexing has been applied to the instructions "FixToMem16S", "FixToMem16U", "FloatMem16U" and "FloatMem16S".
* A Bug has been fixed in the signed versions of these instructions. New instruction added "fSTSinceMark" which loads W
* with the time since the tasks private timer was set using a "marktime" instruction. This instruction only works in the
* task que. Board reports SPLat dialect 22.
* Added counter which is incremented whenever a successful transaction is completed (Xwire slave mode)
* or whenever the end of script table is encountered (Xwire master mode). A new instruction is able to
* read the value of this counter and clears the counter to zero. Two new instructions have been added
* which facillitate the changing of Xwire modes and scripts while a program is running. XwireStop will
* command the Xwire communication module to stop after the current transaction and return to an idle
* state. XwirePollIdle will return X=true if the Xwire comms module is idle. The current Xwire slave
* and Xwire master configuration instructions work as previous but will stop the Xwire comms module and
* stall the SPLat interpreter until the Xwire comms module is actually idle (has completed current
* transaction). For applications where the SPLat interpreter must not be stalled, the user should stop
* Xwire comms, poll until it is idle then run the configuration instruction. If stalling the program
* is not important, the configuration instruction can be used by itself. If Xwire is not currently
* running when an Xwire configuration instruction is executed, there is no stalling of the users program.
*
* V3-25 18/6/2010 Abitrary string communications protocol added. This protocol allows the user to create and send ASCII
* and binary strings and receive and parse same. Simple 8 bit addition and subtraction, both with and without carry
* instructions have been added. The carry/borrow bit for these instruction is held in the R register. Non destructive
* floating bit compare and go instructions have been added. Bug fixed which prevented the BranchM instruction from
* being jindexed.
*
* V3-26 12/8/2010 Bug fixed in arbitary string protocol where the buffer pointers were not re-initialised if there
* was a program error and the program re-started. RtoX instruction added. Bug fixed in the COMTX_Space instruction which
* would return the number of bytes in the buffer rather that the number of free bytes. Bug fixed in Xwire slave sequencer,
* other minor Xwire improvements to improve robustness in the slave mode when there are inadvertantly two Xwire masters
* on the bus. Xwire TX and RX state machines now re-initialise themselves immediately that they are disabled. This
* has been done to prevent unwanted behaviour when there are multiple slaves with the same address on the Xwire bus (PKS).
* A bug has been fixed in the SPI module which may cause expansion I/O to be ignored depending on the power up data contents
* of the shift registers. RtoX instruction added.
*
* V3-27 19/5/2011 MODBUS/SPLat/String protocol UART RX interrupt routine and UART interrupt vectors modified to recover
* correctly from UART overrun errors. Bug fixed in MODBUS which would cause the 3.5 character delay timer not to be
* initialised if the selected baud rate was the same as the current baud rate. Xwire RX interrupt routine and UART
* interrupt vectors also modified to recover from overrun errors. MODBUS code modified to always return idle status
* when re-initialised.Added 10 new floating point compare instructions which set X either true of false depending on the
* floating point comparison. They are non destructive to W and Q. Added "COMRX_fGetNum" instruction to string comms protocol
* to allow the extraction of numbers from the ASCII string contained in the receive buffer. The routine will parse both signed
* integer and signed decimal numbers and return with the result in W. The SPLat result register R will be zero if a number was
* successfully parsed or 1 if a valid number could not be parsed. Added COMRX_StrFind and iiPrintNVText instructions. Bugs
* fixed in iiPrintFill and COMRX_peek instructions. Changed buffer arrangements for the LCD driver and string comms protocol
* so that the string comms protocol can send strings of up to 255 characters from a single string comms instruction. Previously,
* a limit of 40 characters applied to the iiPrintText, iiPrintFill and iiPrintNVText instructions. Also, if the TX buffer was
* full when any String protocol instruction which resulted in characters being appended to the TX buffer, an error would be
* generated and the SPLat program reset. The user was expected to use the COMTX_Space instruction to ensure this did not
* happen. Now, the TX buffer can be written at any time with the caveat that if the buffer becomes full during the execution
* of the string comms instruction, the entire SPLat program will be stalled until the currently executing instruction can
* deposit all of its characters into the TX buffer. The TX buffer is 128 characters in length. When the destination is the
* user RAM, the instructions still execute atomically providing the string fits within the user RAM. If not, an error is
* generated and the SPLat program is reset. Reports dialect 27.
*
* V3-28 4/7/2011 Added iifGetNum, iiFindXinBuf, iiGetHex and iiStrFind instructions to allow string processing from user
* RAM. This allows string porcessing of data which may come from an Xwire peripheral, particularly the SX10509 internet
* interface, where the server may provide data in ASCII format. iiPrintNVtext instruction now uses record length and
* record number as well as the NVEM pointer to index the string to be sent. New TestXY instructions added. Reports dialect 28.
*
* V3-29 14/10/2011 Bug fixed in COMRX_Peek instruction which would cause it to return a result when peeking at the first character
* in the buffer when no characters where in the RX buffer. Also fixed in the same instruction, was a bug which caused it to
* return the byte after the one referenced by X.
*
* V3-30 8/11/2011 Bug fixed which would cause SPLatPC not to connect to an MS120 with 32 expansion I/O's connected and when any of the
* last 4 inputs were activated. This would cause the MS120 to stream input update messages.
*
* V3-31 10/9/2013 Bug fixed in MODBUS slave function 2 which could cause eratic behaviour if more than 8 inputs state were polled for.
*
* V3-32 29/6/2015 Increased the number of SPLat Multitrack tasks from 32 to 40.
*
* V3-33 11/9/2017 Fixed a bug in the FixToMem16 instruction which destroyed W instead of preserving it.
*
* V3-34 1/11/2017 Brought up to date with the latest LCD driver which fixes a display formatting bug when displaying some floating point
* numbers. 100 x 0.01 followed by oblcd_fdispw 5,0 would result in the wrong number being displayed. The result should be 1.
*
2. Download SPLat reFlash
Download then run SPLat reFlash on your PC. This tool will upload the firmware to your SPLat controller. You will need a serial port or USB to serial adaptor and may also need a PC232 programming cable.
Windows 8.x Users
The first time you run reFlash, you will need to do so as the Administrator, otherwise you will see an error about HIRESTIMER.OCX not being registered. After you’ve done this once, you can run it normally in future.
If you’re not sure what you want, give us a call: +61 3 9773 5082