CC18 Reflash Files
************************** CC18 Revision History ************************************
*
- V3-00 20/8/2007 Initial release. Has all the features of CC16 version 3.12
- V3-10 12/10/2007 Xwire master comms bug fixed which would occasionally cause the
transmitter to stream if the board had been operating as a master and a newprogram was downloaded to the board which also ran the board as an Xwire master.A bug has been fixed in the task que timer code which would cause improperoperation for time delays using the "fStTimeSince" instruction if the delaytime exceeded 8,388,607d.The analogue output instruction AnoutC will set the virtual DAC that trims the 243KHzICG clock and therefore the BUSCLK frequency.CPU commands have been added to allow a SPLat program to store/read the ICG clockcalibration value in FLASH. Using the AnoutC instruction and these CPU commandforms the basis of a test jig that calibrate the boards BUSCLK frequency. TheAnoutC instruction will only work if BUSCLK output on PC2 has been enabled.- V3-11 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 thenew "WarmBoot" instruction. The OBCB peripheral now has the ability to have the number of channels specifiedand 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 numberof channels is limited by the compilation variable "OBCB_channels".- V3-12 16/6/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 withinXwire time parameters). The Xwire comms receive structure now uses an interrupt and small circular bufferto eliminate comms errors when the receive baud rate is slightly higher than that of the CC18. A bug hasbeen fixed in the MemToUV and UVtoMem instructions which would not allow the last byte to be accessed. TheFixtoU instruction now preserves W. Timing issue fixed when using the SPxTxfrU instruction, the symptom ofwhich was that input data would be corrupted when using this instruction. A further bug in the Xwire protocolhas been fixed which would cause long corrupted messages to be sent if the data length was set to zero ineither the master or the slave.- V3-13 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 userto transfer multibyte variables (ie: floating point) without corruption. MODBUS master implemented. Bootloader bugfixed which could prevent successful reflashing of a board if NVEM alters memory to something other than $FF afterthe end of the SPLat program. Demo program feature removed to free up space and resources. User program space reducedby 4096 bytes to allow for future code expansion. User now has 22,016 bytes for program and NVEM storage (previously26,112 bytes).- V3-14 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 screenseasier. MODBUS memory referencing instructions in WORD mode now have the starting address multiplied by 2 when processedif the address is in the range 3000 - 3999. The ensures correct behaviour when using SPLat products with touch screensand other MODBUS devices. Function Types 6 (preset single register) and 16 (preset multiple registers) are affected inMASTER 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 backwardcompatible 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-15 19/1/2010 LCD buffer driver added to the CC18 to allow the LCD buffer to be fully manipulated by SPLat LCD program
commands. Using the CC18 as a MODBUS slave, the LCD buffer can be displayed on a touch screen, by reading memory inthe range 2000 - 2039.- V3-16 10/5/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 UARTtransmitter has finished sending. This has been done because several MODBUS devices we have used ignore the MODBUSspecification and reply immediately rather than waiting 3.5 character times before replying. MODBUS master mode is nowcapable 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 stoppedbefore HALTing or changing the script to be executed, respectively.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 Wwith the time since the tasks private timer was set using a "marktime" instruction. This instruction only works in thetask 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 toread the value of this counter and clears the counter to zero. Two new instructions have been addedwhich facillitate the changing of Xwire modes and scripts while a program is running. XwireStop willcommand the Xwire communication module to stop after the current transaction and return to an idlestate. XwirePollIdle will return X=true if the Xwire comms module is idle. The current Xwire slaveand Xwire master configuration instructions work as previous but will stop the Xwire comms module andstall the SPLat interpreter until the Xwire comms module is actually idle (has completed currenttransaction). For applications where the SPLat interpreter must not be stalled, the user should stopXwire comms, poll until it is idle then run the configuration instruction. If stalling the programis not important, the configuration instruction can be used by itself. If Xwire is not currentlyrunning when an Xwire configuration instruction is executed, there is no stalling of the users program.- V3-17 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 carryinstructions have been added. The carry/borrow bit for these instruction is held in the R register. Non destructivefloating bit compare and go instructions have been added. Bug fixed which prevented the BranchM instruction frombeing jindexed.- V3-18 26/7/2010 Added the RtoX instruction. String protocol buffer pointers were not being re-initialised. This became
evident when a program error occurred and the protocol was re-started. Bug fixed in the COMTX_Space instructionwhich would return the number of bytes in the buffer rather that the number of free bytes. Bug fixed in Xwire slavesequencer, other minor Xwire improvements to improve robustness in the slave mode when there are inadvertantly twoXwire masters on the bus.- V3-19 12/8/2010 Xwire TX and RX state machines now re-initialise themselves immediately that they are disabled. This
has been done to prevent unwanted beaviour 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 contentsof the shift registers.- V3-20 17/11/2010 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 beinitialised if the selected baud rate was the same as the current baud rate. Xwire RX interrupt routine and UARTinterrupt vectors also modified to recover from overrun errors. MODBUS code modified to always return idle statuswhen re-initialised.- V3-21 19/5/2011 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 protocolto allow the extraction of numbers from the ASCII string contained in the receive buffer. The routine will parse both signedinteger and signed decimal numbers and return with the result in W. The SPLat result register R will be zero if a number wassuccessfully parsed or 1 if a valid number could not be parsed. Added COMRX_StrFind and iiPrintNVText instructions. Bugsfixed in iiPrintFill and COMRX_peek instructions. Changed buffer arrangements for the LCD driver and string comms protocolso 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 wasfull when any String protocol instruction which resulted in characters being appended to the TX buffer, an error would begenerated and the SPLat program reset. The user was expected to use the COMTX_Space instruction to ensure this did nothappen. Now, the TX buffer can be written at any time with the caveat that if the buffer becomes full during the executionof the string comms instruction, the entire SPLat program will be stalled until the currently executing instruction candeposit all of its characters into the TX buffer. The TX buffer is 128 characters in length. When the destination is theuser RAM, the instructions still execute atomically providing the string fits within the user RAM. If not, an error isgenerated and the SPLat program is reset. Reports dialect 27.- V3-22 27/6/2011 Bug fixed in the SPLat link TX module which caused the CC18 to send more input and output data bytes than necessary
when sending I/O update messages. SPLatPC ignored these bytes and so there is no detectable difference in the firmwaresoperation, just a few less bytes on the serial link when connected to a CC18. TestXY instructions added. New string commsinstructions added: iifGetNum, iFindXinbuf, iiGetHex and iiStrFind. Reports dialect 28.- V3-23 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 toreturn the byte after the one referenced by X.- V3-24 17/9/2012 Xwire driver updated to latest revision to allow the CC18 to use external LCD peripherals. LCD driver updated to fix
a bug in the LCD floating point formatter.- V3-25 12/9/2013 Fixed a bug in MODBUS when reading inputs 8 & above. Added BlinkM, InputM and InputKM instruction. Reports dialect 29.
If you’re not sure what you want, give us a call: +61 3 9773 5082