Advanced Vehicle Technologies, Inc. - AVT-440 Firmware
ADVANCED VEHICLE TECHNOLOGIES, Inc.

AVT-440
Firmware Version Descriptions
Updated: 30 December 2021

Version 0001
Release date: Never released. Very early testing only.

Version 0002
Release date: 4 October 2018
Initial release including fully operational functional "Read ID" function.
Manual is in 'Draft' status - but is available.

Version 0003
Release date: 3 November 2018
Taken from version: 0002.
Changed the start-up response to '92 40'.  (It was '92 3A' which was wrong.  '3A' is for the AVT-423.)
Changed start priority to 46.
Disabled the TCP Ethernet "Nagle Algorithm".  Doing so greatly improved the command / response turn around time as measured at the client computer using Wireshark.
For example, command to response time for the '42 03 01' "Read ID" function went from about 190 msec to about 28 msec.

Version 0004
Release date: 3 December 2018
Taken from version 0003
Completely re-organized the variables with the goal to enable dual channel operations.
All channel specific variables are in a structure.
Fixed the "App Name" issue.  The application name and firmware version number now appear in the IP_Setup and Auto_Update window as well as announced via the debug port on reset.
I no longer turn off the +9.3 vdc supply when the "Read ID" function completes.  Instead I disable channel 0.
The user has to enable +9.3 vdc supply when first starting out.  But after that each bus can be enabled and disable using the '4x 06' command.
When disabled, the bus is turned off.  Therefore a Slave device is protected from possible damage when plugging into or being removed from a bus.
Added the following commands:
'4x 06' - disable / enable a channel.
'4x 07' - command pause
'4x 08' - write to Slave NO read.
'4x 09' - write to Slave with read (of Slave immediate response).

The manual has been updated.

Version xxxx
Release date: xxx
Taken from version xxx

Version 0101
Release date: 6 August 2019
Taken from version 0004
Major changes in this revision.
Removed the '4x 02' command to control DSI Bus Master bus supply voltage.
Changed name of many DSI variables.  Changed name of many DSI functions.
Added all the PSI variables and functions.

Version 0102
Release date: 11 August 2019
Taken from version 0101

Changed several PSI commands by removing the channel byte. I did this so that many PSI commands would 'look' the same as their functionally similar DSI commands.
Some DSI and PSI commands still include the channel number because these commands are useful for testing.

The manual has been updated.

Version 0103
Release date: 29 August 2019
Taken from version 0102

Corrected an error in the '4x 11' command.
Corrected an error in the responses sent to the client when the PSI Read ID function aborts.

Version 0104
Release date: 29 September 2019
Taken from version 0103

Added two new commands:
'4x 20' DSI Read ID function, returns only one response.
'4x 21' PSI Read ID function, returns only one response.
Corrected the responses to the '4x 03' and '4x 04' commands.
The part number bytes were swapped.
Previously, the low order byte was returned first.
Now the high order byte appears before the low order byte in the response.

The manual has been updated.

Version 0105
Release date: 17 October 2019.
Taken from version 0104.

Added two new commands to support both forms of PSI5 Read ID for SMA7 sensor devices.

The manual has been updated with these two new commands.

Version 0106
Release date: 7 November 2019.
Taken from version 0105.

Added a new command to control the external AVT-441 'DSI3 Boost Circuit' device.

Added new commands for PSI5, SMA6, programming function.
Supports both single and dual channel sensor devices.

The manual has been updated with the new commands.

Version 0107
Release date: 18 November 2019.
Taken from version 0106.

Added new commands for DSI3 programming function.
Support single channel sensor devices only.

Version 0108
Release date: 5 January 2020
Taken from version 0107

Added new commands for PSI5, SMA7, programming.

The manual has been completely re-written and updated with all the commands and all the responses, including the many possible error responses.

Version 0109
Release date: 29 January 2020
Taken from version 0108

Added a keep alive counter to the syslog keep alive message.

Corrected error response in "sub_210.cpp", line # 1309.
Was: '22 23 62' now: '22 23 17'.
For PSI5 test data, changed the initial values.
Pre, Post, and Negative deflection test data is now 0x01FF (maximum positive value).
Positive deflection data is now 0x0200 (maximum negative value).

For DSI3 test data, changed the initial values.
Pre, Post, and Negative deflection test data is now 0x7FFF (maximum positive value).
Positive deflection data is now 0x8000 (maximum negative value).

In PSI5, SMA6, programming, when collecting async data, changed the default time out value to 20 msec.

For PSI5, added the '4x 13' command to allow the Client to change the data collection time out value.

Version 0110
Release date: 3 February 2020
Taken from version 0109

Changed the size of FIFO2 to 2048 bytes to prevent a FIFO2 overflow when dumping data to the client.

Changed the beginning of the PSI5 SMA6 test sequence.
Changed the beginning of the PSI5 SMA7 test sequence.
If initializing the transceiver channel 1 for operations fails - then abort.
If incorrect response from sensor at fast init comms - then abort.
No sense continuing to test if I can't initialize comms with the sensor.
Nothing will work after that.

Version 0111
Release date: 7 February 2020
Taken from version 0110

PSI5 data collection. Added a separate count variable for each block of collected data.
That way I have a count of actual valid, collected data.
Changed the data reporting command (4x 36) to use that count when computing averages and to compute response length for reporting data.

Shortened the timeout in the PSI5 async data collection loop.
I was waiting too long and probably missing data responses.
(The responses were probably going into other receive buffers, that I don't read.)

Lots of work on DSI3 programming.
Put in separate data counters for each data collection type.
Updated the data reporting routine to report number of data values collected and compute the averages correctly.
Only report valid data to client.

Put a fail timer in the data collection sections.

Put in the '4x 0E' command to set the data collection time-out value.
Empirical testing indicates 10 msec is plenty of time.
When I set the timeout to 3 msec, I only collect 6 samples. (Ten samples is the full load.)

Removed the 'error_no_exit' decision from all 'dsi_xfer_start' calls.
If the transfer fails, then immediately halt and exit the sequence.

Version 0112
Release date: 23 March 2021
Taken from version 0111

DSI3 programming. Previously, the delay between steps of the ETest sequence was fixed at 7+1 msec.
The customer requested I allow the Client to change that delay.
I added the variable 'dsi_etest_delay'.
I added the '4x 0F' command to allow the Client to change that value.

Version 0113
Release date: 11 October 2021
Taken from version 0112

Renamed multiple files in the '2xx' and '3xx' ranges.
They now start with '00'.
The '2xx' range is now full.
The '3xx' range now has room to grow.
I need more 'name room' for new files.

In 'sub_930.s' I changed multiple stackings to use the 'movem.l' command.
That should speed things up.

The customer has issued a PO for three new functions/capabilities for the AVT-440.

Task # 1: Entering PSI5 programming mode for an NXP sensor.
The phrase "programming mode" is confusing, but that is what they call it in the manual.
Some people call it "bi-comm" mode. It is 'not' the same as the 'programming' function where values are 'programmed' into the sensor.
In the manual I use the phrase "programming mode" but I try to be clear it is 'bi-comm' mode.

Implemented a 'report active mode' function.
I put the new function call into all commands that change an active mode.
I think this change is complete, but code review may show some changes can still be implemented.

Note that all (??) active modes are mutually exclusive.

Added the following commands:
4x 25 -- establish or terminate PSI5 bi-comm mode with an NXP sensor.
4x 26 -- read sensor register, by address.
4x 27 -- write sensor register, by address.

Lots of changes to how I set-up, enable, disable, and otherwise use the Elmos PSI5 transceiver device.
The Elmos device default set-up is:
time slot 1: 0 to 160 usec.
time slot 2: 160 to 320 usec.
time slot 3: 320 to 480 usec.

Task # 2: Read PSI5 startup or initialization responses.
When power is first applied to a PSI5 sensor, the sensor completes three internal initialization phases. During phase 2, the sensor transmits a lot of data.
This new function reads and stores that data.
The Client can then request that initialization (or start-up) data.

Updated LOTS of error codes.

The manual has been updated.

Version 0114
Release date: 12 October 2021
Taken from version 0113

Removed the '52 28 FF' response. It was unnecessary and confusing.
Changed the '4x 26' command so that the response contains the first register address.

Version 0115
Release date: never released
Taken from version 0114

This version was 'officially' released as version 0116.
See version 0116, below, for a summary of changes.

Version 0116
Release date: 16 November 2021
Taken from version 0115

The customer noted that the manual (and the firmware) used references such as: 'DSI3 SMA6'.
That is incorrect. DSI3 sensors are NXP and NXP does not use the 'SMAx' nomenclature.
SMAx is Bosch.
These errors stem from all the confusion from the early days of this project.
References to DSI3 (NXP) sensors should use 'Single' or 'Dual' - for the number of sensor channels.
I cleaned up the manual and made many changes to the code in an attempt to fix all of that.
I then rebuilt and tested the code in an attempt to be sure I was starting out with a good known project.
If any old naming issues are found in the future I will make an effort to fix them.

Task # 3: Added support for programming a DSI3 dual axis sensor.
(Previous DSI3 programming support was for a single axis sensor.)

Existing commands '4x 41' and '4x 42' are valid for programming groups 'A' and 'B'.
Implemented new commands to store the values to be written to sensor memory.
'4x 48' - DSI3 programming values group 'C'.
'4x 49' - DSI3 programming values group 'D'.

Added new programming support commands.
'4x 4A' - DSI3 dual axis programming control.
'4x 4B' - DSI3 dual axis query for read/stored data.
'4x 4C' - DSI3 dual axis query for stored test data.

Added a 100 msec overall delay to the existing DSI3 single axis programming function.

Added a check for 'dsi_pgm_no_lock' when looking for the response to the lock command when that command is not executed.

Version 0117
Release date: 15 December 2021
Taken from version 0116

PSI5 read initialization (start-up) info.
Added a new 'read initialization info' command to read both phase 2 and phase 3 initialization (start-up) information. Previously I put in the PSI5 'read initialization info' function.
That function reads only phase 2 information.

Added the new '4x 2A' command to read PSI5 phase 2 and phase 3 initialization information.

Changed error response from: '22 27 32' to: '22 28 24'.
Added new error codes:
-- '2x 28 31' thru '2x 28 42'.

Found and corrected an error in the response to the '41 2A' command.
I discovered that I was not properly initializing all variables prior to starting some functions. I fixed that.

Side note: In the code I call it 'startup'. But it is really 'sensor initialization' phase 2 and phase 3.
I tried to fix that in the manual.
I should rename variables in the code (where I use "_su_") - but I am probably not going to spend my time on that.

The manual has been updated and is available.

Version xxx
Release date: xxx
Taken from version xxx

notes here

Version xxx
Release date: xxx
Taken from version xxx

notes here



Site Map