ADVANCED VEHICLE TECHNOLOGIES, Inc.
Firmware Version Descriptions
Updated: 14 November
Initial release for demonstration and testing. 18 July 2006.
General release: 2 August 2006.
Taken from version 0.1.
Changed and added timer functions.
Added CAN mode Type1 and Type2 periodic message functions and commands.
Updated CANx_to_init routines.
Added CANx force init routines.
Changed use of: ECT0, ECT1, and RTI.
Added 5x 63 command to change RTI rate.
Cleaned up all timer functions.
Changed the method used to exit CAN mode.
General release: 9 September 2006.
Taken from version 0.2.
Added the 5x 4C the command to pause processing commands.
General release: 21 September 2006.
Taken from version 0.3.
Added periodic messages to VPW mode.
Added the following commands, functions, etc. to VPW mode for periodic message
support: 7x 0C, 7x 18, 7x 1A, 7x 1B, 71 1C.
General release 27 October 2006.
Taken from version 0.4.
VPW mode: When in block transfer mode, either receive or transmit, do not
perform short to ground or short to high tests.
CAN mode: Implemented commands and functions for ISO 15765 protocol support
in receive direction only (including transmitting flow control frame) for
both CAN channels. Updated the user documentation.
(ISO 15765 support for transmit operations is now under development.)
General release 1 December 2006.
Taken from version 0.5.
VPW mode: No changes.
CAN mode: Completed implementation of for support of ISO 15765. Transmit
and receive capabilities for both CAN0 (high speed 2-wire) and CAN4 (Single
Wire) channels are now fully functional.
General release 18 March 2007
Taken from version 0.6.
Added K-line communications mode. Supports Keyword Protocol 2000 mode (ISO
14230) and ISO 9141 communications.
No initialization modes or methods have been implemented, yet.
Added a new reFLASH routine called FLASH3. All previous versions only had
Documentation will be updated as soon as possible.
General release 2 April 2007
Taken from version 0.7.
Changes to CAN mode only.
Changed the CAN source clock to be the 4 MHz resonator (not the microcontroller
Corrected bit timing register (BTR0 and BTR1) load values for all baud rates.
Note that for previous versions of firmware the 33.333 kbaud rate was incorrect
Fixed the 7x 0B command - it did not work.
Corrected CAN mode change routines to wait for the init-ack bit to change
state before performing subsequent actions (enable listen and enable normal
General release 22 April 2007
Taken from version 0.8.
Documentation for AVT-84x will be updated as soon as possible.
Increased number of periodic messages. Now 16 messages in each group. Only
Periodic messages are numbered: $01 to $10 in group 1; $11 to $20 in group
Added CARB mode 5-baud initialization capability.
Added FAST initialization capability.
Added the following commands.
51 2C: Query for both key bytes.
5x 46: Query / Set the network idle time prior to an initialization attempt.
This is a word size variable with 1 millisecond resolution.
5x 47: Query / Set the FAST initialization mode low time.
5x 48: Query / Set the FAST initialization mode high time (prior to starting
transmission of start communications message).
61 11: CARB 5-baud initialization.
6x 13: FAST initialization .
General release 17 May 2007
Taken from version 0.9.
Added fully operational LIN mode.
LIN mode operates simultaneously in CAN mode. At this time there is no separate
Entering CAN mode gives you two CAN channels and one LIN channel all operating
When in CAN mode there are three time stamp commands.
52 08 00: No time stamps.
52 08 01: CAN channels are time stamped using their own baud clock derived
time stamp. The LIN channel is time stamped using a 16-bit free running counter
with 1 millisecond resolution.
52 08 02: Both CAN channels and the LIN channel are all time stamped using
one 16-bit free running counter with 1 millisecond resolution.
VPW mode: added the 1 millisecond time stamp option using the 5x 08 command.
KWP mode: added the 1 millisecond time stamp option using the 5x 08 command.
Added a new reFLASH mode known as FLASH3 (firmware file suffix is ".pf3").
FLASH3 mode is faster than the previous FLASH2 (".pgc" file suffix) mode/method.
Both modes or methods will be supported in future firmware versions; for
the time being.
The Technical Manual has been updated and a copy can (possibly) be obtained
by writing to the "Support@AVT-HQ.com" address.
General release: 17 July 2007
VPW: Changes to block receive manager in an attempt to prevent loss of message
if a network message is received from the network immediately following receipt
of a block of data.
LIN: Added the 5x 28 command to disable/enable receive message processing
based on the ID byte. This feature permits receiving LIN revision 2.0 messages
where the number of data bytes in the frame are not related to the message
52 28 00: disable ID byte processing
52 28 01: enable ID byte processing [default]
General release: 18 August 2007
CAN: Added the 7x 32 command to change the data field length for a first
frame. Default is 8 bytes (total).
KWP: Added the 5x 57 command to change the data field bit length and parity
The User's Manual will be updated and released as soon as possible.
General release: 3 September 2007
Changes in CAN mode only.
Added a wait function while sending a large block of data to the host. This
prevents FIFO2 overflow and data loss if messages are are received while
or shortly after forwarding a large block of data to the host. Same issue
as was discovered in VPW mode and corrected in version 1.1.
General release: 3 October 2007
Changes in CAN mode only.
Added the 7x 33 command to query for and change the receive buffer time
out (in ISO 15765 processing mode).
71 33: query for receive buffer time out value.
72 33 xx: set the receive buffer time out; "xx" is in 167.8 msec time ticks.
Added the 7x 34 command to query for and change the default inbound flow
control separation time.
71 34: query for flow control separation time.
72 34 xx: set the flow control separation time; "xx" is in 1 msec increments.
Note that this value is only used if the received flow control frame has
a separation time that is zero or otherwise invalid (as defined by ISO 15765).
General release: 2 November 2007
Changes in LIN mode only.
Changed the receive message processing routines.
Default now is that if an ID only byte is received, it is not sent to the
Added the 5x 66 command to change operation when an ID only byte is received.
51 66: query for status.
52 66 00: do not send ID only byte messages to host (default).
52 66 01: do send ID only byte messages to host. Format is: 03 05 83 xx
03: is the packet header byte
05: means from the LIN bus (channel 05)
83: is the receive status byte; indicates frame timeout, message too short,
and checksum error
xx: is the ID byte received.
In LIN operations, an ID only byte occurs if the Master device sends an
ID byte and no module responds to it.
General release: 4 November 2007
Corrected a bug in CAN mode, type2 periodic message routines.
General release: 16 November 2007
LIN mode: added a LIN "keep alive" message function.
Added these commands:
51 04: query for the "keep alive" message
5x 04 0y id rr ss tt ... : set the "keep alive" message where
x: count of bytes to follow.
y: 0 if slave, 1 if master
id: message ID
rr ss tt ... : message data field (optional)
51 05: delete the "keep alive" message
51 07: query for "keep alive" message interval count. Interval is 167.8
52 07 xx: set the "keep alive" message interval count. Interval is 1678.
General release: 4 February 2008
All modes: Corrected a bug in a restricted command.
All modes: Added a new baud rate of 230.4 kbaud.
All modes: Added the 5x 67 command. This command permits a user to change
the baud rate of the unit without requiring special access to the unit.
The command is only available from within an operating mode (VPW, CAN, or
KWP). It is not available from the idle (startup) mode.
The new baud rate only takes affect after successful completion of the command
and after a unit reset (power-on reset or an "F1 A5" reset).
The new command details:
51 67: query for baud rate setting.
52 67 01: set baud rate to 19.2 kbaud
52 67 02: set baud rate to 38.4 kbaud
52 67 03: set baud rate to 57.6 kbaud
52 67 04: set baud rate to 115.2 kbaud
52 67 05: set baud rate to 230.4 kbaud
All responses to this command are of the form: 62 67 xx
Special Note :
Errors were discovered in the AVT-842 USB driver files while testing all
the baud rates with firmware version 1.8. These were corrected on 2 February
If you loaded AVT-842 USB drivers prior to that date, the driver files should
be updated. You can request the updated driver files by e-mail.
If you received a driver CD from us after that date, it is likely you received
a CD with updated driver files.
The User's Manual will be updated as soon as possible.
General release: ~10 May 2008
All modes: Corrected several errors in several restricted commands.
No changes to any operational functions.
General release: 23 June 2008
All modes: Corrected an error in EEPROM locations.
Be sure to read Volume 2 of the User's Manual if you are using the EEPROM,
changing default baud rate settings, or using the security features.
Added the 5x 68 command (it is a secure command).
General release: 16 July 2008
In VPW mode, removed the transmit ack "$F3 rr ss tt" after a block transfer,
if transmit acks are disabled.
General release: 11 September 2008
Corrected several errors found in CAN mode.
CAN mode: removed the LIN "keep alive" message functions.
CAN mode: added ten periodic messages for LIN operations. All are independent
and capable of both Type1 and Type2 operations. Same periodic message commands
as used by all other operating modes.
CAN mode: added KWP as an secondary mode of operation along with CAN0 and
CAN mode: added the 5x 69 command to disable or select the secondary operational
51 69: query for secondary operational mode.
52 69 00: disable both KWP and LIN as secondary operations.
52 69 01: enable LIN for secondary operations [default].
52 69 02: enable KWP for secondary operations.
Summary: In CAN mode, both CAN0 and CAN4 operate simultaneously. An additional
(secondary) operation can be selected to operate simultaneously with both
CAN channels. LIN mode can be selected (and is the default). LIN is designated
as channel "05". KWP mode can be selected for secondary operations instead
of LIN mode. KWP mode is designated as channel "06".
The User's Manual, volume I, has been updated and posted.
General release: 8 December 2008
CAN mode: I5P mode (ISO 15765 support) changed default separation time for
outbound frames to 2 milliseconds when a flow control frame of 00 is received.
This value is controlled by the 7x 34 command.
LIN mode: Added the 5x 19 command to disable transmit checksum; default
is enabled. Added the 5x 6A command to enable disable long frame support.
User should use that command along with the 5x 28 command to receive long
frames. Example: send 52 28 00 to disable ID byte processing, send 52 6A
01 to enable long frame support. The AVT-84x will now be able to send and
receive LIN frames with a maximum of 64 data bytes.
Note that the alternate packet header format: "11 xx" is now supported and
used for long received frames. The alternate header formats "11 xx" and "12
xx yy" are also support for sending LIN frames.
I will update the User's Manual volume 1 as soon as I can.
Taken from released version 2.3. Never formally released. All changes went
with the move to version 2.5 which followed immediately.
LIN mode: Added "5x 3C" auto buffer termination command to close a receive
buffer immediately upon end of transmitting a message.
LIN mode: Added the 5x 02 receive buffer time-out command and function.
Added a timer to watch the time since the last byte of the buffer was received.
If that time is exceeded, the receive buffer times-out and the message in
the receive buffer is immediately processed and forwarded to the host.
LIN mode: Added support for ABIC device/module. Commands to the AVT-84x
that are transmit messages to the ABIC must use channel "15" with LIN mode
active in CAN mode. Transmit commands to the AVT-84x that are transmit messages
to the ABIC must also indicate the number of expected response bytes from
the ABIC. Only the published ABIC commands are supported and only with the
AVT-84x unit as the 'Master'. Example ABIC transmit command: 0x 15 yy rr
ss tt ... where "x" is the count of bytes to follow; "15" indicates a transmit
message to the ABIC; "yy" is the count of response bytes expected from the
ABIC; "rr ss tt ..." are the bytes of the actual message to the ABIC. Do
not include any checksum. The one message requiring a transmit checksum will
be computed and appended (unless that function is disabled).
LIN mode: Added the "53 6B xx yy" command to generate a low pulse (break
symbol) on the K-line (LIN bus) for "xx yy" microseconds.
LIN mode: Deleted the "5x 6A" command.
I will update the User's Manual volume 1 as soon as I can and as soon as
this version is released.
Taken from version 2.4 (which was never released).
General release: 14 July 2009
All modes: Added the capability of installing an 8 MHz reference resonator
instead of the production 4 MHz reference resonator.
This change corresponds with a hardware modification available for any AVT-84x
Added the "51 6E" command to query for the status of the reference resonator.
51 6E => 62 6E 04 if the reference resonator is 4 MHz
51 6E => 62 6E 08 if the reference resonator is 8 MHz
To support CAN bus baud rate of 1 Mbaud, using the 8 MHz reference resonator
is preferred to the 4 MHz resonator. There is less CAN bus bit time jitter
when using the 8 MHz resonator.
Taken from version 2.5
General release: 30 August 2009
All modes: Decreased the size of the internal (software) incoming command
FIFO #1 to 32 bytes. This will not affect operations.
All modes: Increased the size of the internal (software) FIFO #2 to 128
bytes. This will most affect CAN mode of operations by allowing more CAN
frames to be buffered while waiting to be sent to the host computer. This
will reduce the chance of loss of data.
All modes: Added the "5x 6A" command to control the state of the red "heartbeat"
LED. Summary of the command is:
51 6A: query for blink value of the red 'heartbeat' LED.
52 6A 00: turn the LED off; does not blink.
52 6A xx: the state of the LED switches according to the count "xx" - where
each count is 167.8 msec. The default value is "01".
52 6A FF: turn the LED on; does not blink.
Taken from version 2.6
General release: 31 August 2009
All modes: increased the size of FIFO #2 (outbound, to host computer) to
No other changes.
I need to fill-in this section.
Taken from released version 2.9
General release: 22 November 2009
Major changes in how FLASH memory is used, where firmware modules are installed,
The startup message and all modes will now report the same firmware version
Changed the routine for communications to the host computer to prevent possibility
of a lost byte in event RTS/CTS is negated by the host.
Added the "Auto Block Transmit" function/feature to CAN mode.
The user can store up to 32 KBytes of data in non-volatile space on the
AVT-84x micro. The user can also store all the transmit parameters in non-volatile
space on the AVT-84x micro.
At any time, when in CAN mode, with one simple command, the user can initiate
a transfer of the stored data in consecutive CAN frames, according to the
stored parameters and data. Either CAN channel can be specified.
An application note, with detailed explanations, has been posted on the
"Download" page describing this function and all the commands.
Added the following Auto Block Transmit commands.
7x 36 Auto Block Transmit separation time
7x 37 Auto Block Transmit message ID
7x 38 Auto Block Transmit data
7x 39 Auto Block Transmit total byte count
7x 3A Auto Block Transmit control
Taken from released version 3.0
Limited release: 23 November 2009
For testing only.
Taken from version 3.1
General release: 2 December 2009
Scheduled for general release, but never actually released.
Taken from version 3.2
Limited release: 2 December 2009
For testing only.
Taken from version 3.3
Limited release: 4 December 2009
Only for one customer.
Taken from version 3.4
General release: 8 December 2009
Summary of changes since version 3.0
Changed the micrcontroller internal bus clock to 24.0000 MHz.
Changed necessary internal parameters for communications with host computer.
This provides much better baud rate accuracy and more reliable communications
with host computer.
Removed the 230.4 kbaud selection command (the 52 67 05 command). The 230.4
kbaud rate for communications with the host computer is not allowed.
Note that the change in internal bus clock frequency to 24.0000 MHz changes
the LIN bus baud rate formula.
Changed the routine that manages communications with the host computer.
This eliminates the chance of a lost byte during very heavy (and simultaneous)
communications between the 84x board and the host computer.
Added an ability to monitor for CAN channel activity without the host having
to actually receive the CAN frames.
Added the 7x 3B and 7x 3C commands for the "CAN Activity" function. Command
71 3B: query for function status, both channels.
72 3B 0x: query for function status, CAN channel "x" = 0 or 4.
73 3B 0x 0y: set function status of channel "x". "y" = 0 = disabled, "y"
= 1 = enabled.
71 3C: query for CAN frame count, both channels.
72 3C 0x: query for CAN frame count, CAN channel "x" = 0 or 4.
Notes: when the function is enabled, no CAN messages from the enabled channel
will be sent to the host. When the CAN frame count is read, the counter is
immediately reset. The counter will not overflow or rollover. It will count
from $00 to $FF. If more frames show up, the counter will stay at $FF.
Taken from version 3.5
Limited release: 7 February 2010
Developed to support the pending revision "V" add-on board capability.
Revision "V" adds a small daughter board that converts CAN0 to single wire
CAN (SWC) - thus giving the AVT-84x two channels of single wire CAN.
Added the "7x 17" command to control the single wire CAN tranceiver for
The new "7x 17" command is exactly the same as the "7x 12" command for CAN4.
Otherwise, there were no other changes to the firmware.
Version 3.5 is usually shipped with "regular" AVT-84x units.
Version 3.6 will be shipped only with AVT-84x units with the revision "V"
Taken from version 3.6
General release: 31 March 2010
Corrected an error in the EEPROM write command/routine.
No other changes.
Taken from version 3.6
Never released: internal use only
Special for one customer for support of "OSPI" communications.
Taken from version 3.8
Limited release: about 21 April 2010
Updates and corrections to "OSPI" mode.
Status: still in-testing by the customer.
Taken from version 3.7
Limited release: to one customer only for testing
Added special error code for time-out in KWP mode "12 xx yy" transmit command.
Taken from version 3.7
General release: 24 May 2010
Added special "Read" command and related command.
Added the "F0" model number query.
Re-organized and streamlined several EEPROM routines.
Re-organized and cleaned up routines to process mode switch commands.
Taken from version 4.1
Never released. Developed for one customer only; for testing only.
General release: 30 July 2010
Taken from version 4.1
VPW mode only:
Added the function: "Mask/Match/Respond." New commands:
5x 75: Query/define the mask bytes. Default values are $FF. Maximum of $0C
5x 76: Query/define the match bytes. Default values are $00. Maximum of
5x 77: Query/define the response bytes. Default values are $00. Maximum
of $0F bytes.
5x 78: Query/disable/enable the function. Default is disabled.
Operational description: Define the mask bytes, define the match bytes,
define the response, and enable the command. When any message is received
from the VPW network (including messages transmitted to the network by this
device), each byte of the message is logically "ANDed" with a mask byte and
compared to the match byte. This is done in byte order starting with the
first byte of the message. If the message is shorter than the number of defined
mask and match bytes the test immediately fails. The message can be equal
to or longer than the defined number of mask and match bytes. If all match
bytes compare successfully then the response is executed as a command by
the AVT-84x interface. The manual will be updated as soon as possible. Questions
?? - contact me.
CAN mode only:
Changes to ISO15765 processing algorithms. If the AVT-84x unit is transmitting
a multi-frame message to the CAN network and it receives a flow control frame
with value $00 in the separation time field, the AVT-84x interface will transmit
CAN frames as quickly as it can. Empirical measurements indicate approximately
275 microseconds between CAN frames.
(Note: in previous versions of firmware, if the AVT-84x interface received
a $00 in the flow control separation time, it would set that value to $01
milliseconds.) In cases where the receiving module sets the flow control
separation time to $00, the rate of transfer can, theoretically, be improved
by a factor 3 or more.
Version 4.4 (11)
General release: 14 November 2012
Taken from version 4.1 (and intermediate un-released versions)
VPW: corrected two issues with Vpw_error2 bit0.
KWP operations (in CAN mode and KWP mode): Corrected an issue where the
AVT-85x would rarely transmit an extra byte onto the K-line after completing
the transmit message.
KWP mode: Added a loop delay to transmit manager in KWP mode.
Added the 5x 6D command to control that delay.
51 6D - status query
52 6D xx - delay between transmitted bytes. The delay is counted by "xx"
main program loops.
The following changes were made to CAN mode operations:
Added the 7x 46 command to supress CAN0 and CAN4 "22 5F 3B" and "22 5F 7B"
error responses from a non-zero block flow control frame.
71 46 - status query
72 46 00 - disable those error reports
72 46 01 - enable those error reports (default)
Changed the error code for a failure to transmit a CAN message.
It was: 22 34 xx
It is now: 22 8C xx
Fixed a code flow problem processing a CAN transmit command that was pending.
Added the "7x 3F" command to include a transmit pacing timer for all transmissions
from CAN0 and CAN4.
The default value is "00" which means no delay.
71 3F - status query, both CAN channels
72 3F 00 - status query for CAN0
72 3F 04 - status query for CAN4
73 3F 00 xx - set CAN0 pacing timer to "xx" milliseconds
73 3F 04 xx - set CAN4 pacing timer to "xx" milliseconds
The following changes were made to LIN mode operations:
Added the LIN slave periodic message function. When an ID byte is received,
the LIN periodic messages are searched. If a periodic message is found that
is enabled, is a slave, and the ID byte matches that message is loaded into
the transmit buffer and the transmit manager takes over to transmit it.
Modified the "73 1A 05 0x" and "74 1A 05 0x 0y" commands.
The last byte can have values 0, 1, 2, or 3.
0 = both LIN periodic functions are disabled.
1 = regular LIN periodic function is enabled
2 = slave LIN periodic function is enabled
3 = both regular and slave LIN periodic functions are enabled.
Put in a checksum test in the periodic message load routines. A checksum
is computed and appended only if checksums are enabled. Previously it was