================= == Version 4.3 == ================= 03Aug2018 - VM: comms profile 5 was 8bits, odd_parity, 2stop but should have been no_parity as per MODBUS standards - VM: reading the internal analogue reference via a float (ie in the VM) now returns a normalised number based on the ST factory calibration value (multiply by 3.3 to get Vcc) - VM: floatFromU was not working correctly for negative numbers. - VM: OBLCD_Dim may now be used without throwing an error on boards that only support a virtual LCD, it is simply ignored. - STM32F3: can now measure the 3V3 rail based on an internal reference - STM32F4: can now read the 3V3 rail - VM: A race condition existed in the QuadratureCounter that could cause wrong readings to be returned, often this was seen when moving backwards with the count being returned as a large positive number rather than a small negative number. Thanks to Michael B for spotting this. - VM: ARM controllers now support UVtoNV for NVEM page 1 and up. - VM: ARM based OBQC_fGet used to return 0 thru 16777215, but this meant moving backward from 0 would cause a jump to 16777215. So now it returns negative, which is the same as 8bit SPLat controllers. - VM: YieldTask may now be called in single tasking mode without throwing en error. This is especially useful in subroutines which may be shared by both single and multi-tasking applications. - VM: stop I/O messages during app upload - DW2 demo, can now choose 485/TTL when there's an Xwire error - VM: Oh dear, RTCDateToUV, RTCDMToUV, RTCHHMMToUV, RTCHHMMSSToUV were all incorrectly using the _current_time_ rather than the values in the RTC registers. So functions like OBLCD_HHMMSS were displaying the current time rather than the time in the RTC registers. - VM: the delay between a slave receiving and replying was to quick causing legacy controllers to miss the response, increased to around 500us. - VM: Fixed InputOM that was returning wildly incorrect values. - VM: SPxChOut is no longer NULL terminated, allowing V to be any value without impacting the data in U. - ARM: fixed a reset that could occur if Xwire Slave was restarted when it & MODBUS Slave were operating simultaneously. - ARM: WarmBoot now doesn't cause an error, it just restarts the VM. This is the same behaviour as the 8bit controllers. - ARM: SEXI was incorrectly calculating the output size limit, so a value of 37 outputs which is legal was throwing a "too big" error. - VM: SPx callbacks modified to receive the registered address, this allow multiple instances to exist. - VM: floatFromU and fixToU were corrected to treat W as big endian when transferring between U - DW2: default SEXI app now supports address change on the fly and auto detect of TTL/485 ports. - ARM STMicro boards: If MODBUS was set to 8 data bits even parity, a 0x00 would cause a LIN break and resulted in the packet being dumped resulting MODBUS errors (typically no response if the SPLat is a MODBUS slave). - VM: sometimes a controller running MODBUS would reset when SPLat/PC connected due to an incorrect method of mutex release when closing the MODBUS port. - ARM: a 16bit and 24bit ID is now available on all ARM boards. These are a CRC of a bigger ID so there's a small chance two controllers may have the same ID (chance is obviously less with the 24bit version). - VM: fixed a serious bug in fSTTimeSince & STTest that 2 days after the controller is turned on made both functions think the elapsed time is always greater than 167772.16s. - ARM: The SPLat/VM on ARM boards was throwing a RAM OutOfBounds error when trying to access byte 250 which is actually the legal last address. - VM: Doing a fGetTimer or Test quickly after starting a timer may sometimes have caused the timer to expire immediately. - DW2: switching channels wasn't throwing away the rubbish samples. - VM: WtoU, QtoU, UtoW, UtoQ, fixToU, floatFromU, would incorrectly error when loading a float into U[16+] ================= == Version 4.2 == ================= 10 May 2016 - First formal release - DW2: enabled EEPROM driver - DW2: V4.2; Now supports 2 ADC channels - VM: WaitOnKT wasn't working (incorrect opcode length) - VM: GoIfInOn/Off/K were ignoring "J" - VM: Fixed STTest which was not working correctly due to a typo. It was especially worse with small delays. - VM: NVReadRec & NVWriteRec were incorrectly expecting a 16 bit address but it's only an 8 bit address. - VM: A change to detect duplicated slave entries in the Xwire table was preventing correct parsing of the table, meaning slaves often weren't being added to the I/O map. - OS: Saw the 1 second timer getting delayed, manifested by ComTestStartTimer taking 13 seconds dignal rather than 10. Due to timers being deleted before the next timer was fetched. - VM: ComTestStartTimer now using fast tick to avoid expiring after 9 - 10 seconds (only following RUN from SPLat/PC, power on was always 10s). - VM: XwireGetPollCntr now increments as soon as a packet is received rather than at the start of sending the response, this also fixed a problem where poll count was not incrementing if the slave had no data to return; interpacket time delays have been shortend to increase throughput. - VM: Fixed display of PermStore values in the "Module" window in SPLat/PC as all bytes were off by 1, thus the first byte was always missing and the "status" was never correct. - VM: the Xwire LCD master now sends zeroes for the command bytes (blink, etc) otherwise sending these bytes sent garbage and stuffed up the LCD. - VM: SEXI was not working when analogue I/O didn't start at 0 - OS: analogue output number is now contigous as there would have been problem if a DAC was in the middle of PWM - VM: now able to report analogue I/O when numbering doesn't start at 0 ================= == Version 4.0 == ================= 10 Aug 2015 - First release