Version 1.1
General release: 25 June, 1996
VPW: Moved the red LED blink routine to the timer interrupt. The LED state toggles when the timer overflows (52 milliseconds). This results in a slower blink rate to help identify an MCU problem.
PWM: Moved the red LED blink routine to the timer interrupt. The LED
state toggles when the timer overflows (52 milliseconds). This results
in a slower blink rate to help identify an MCU problem.
Corrected a problem in the interrupt service routine for the HBCC device.
A customer found this bug. Added code in IRQ routine to handle HBCC IR2
and IR3 cases where transmit fault resulted in TXCR transmit pending bit
would not clear. This would result in the unit appearing to "lock up."
Now, if any of these failures occur, the unit aborts the transmission and
resets the HBCC_mode to idle (effectively throwing out the pending transmit
message).
Version 1.2
General release: 20 Sept., 1996
VPW: In the main loop, check the length of a received message (from
the bus). If it's too short, then mark it bad. A message of length one
is not allowed and previously resulted in a dump of the first $100 bytes
of memory. In the ISR routine, check the length of a received message,
if it's too long, then truncate it, and set ISR mode to idle, thus trashing
the rest of the message.
In the Xmit section of the main loop, check the length of a message
to send out on the bus. If it's too long, send an error message and trash
the message.
Add the 'match' function to the main loop. If the function is enabled
and it's a positive match with the correct message byte, then the message
is forwarded. If the function is not enabled, then the message is forwarded
without checking.
PWM: No changes
Version 1.3
General release: 3 October, 1996
VPW: Changed the command handler. If a mode switch command is received
for the current mode (i.e.: vpw to vpw) then only a mode report is sent
back. This is not an error and the processor is not reset.
In the main loop, if a buffer is ready to be forwarded, check for a
zero length message. (This occurs if only an SOF is received and no other
symbols before an IFS is received.) If a zero length message is received,
throw it out and reset the buffer.
PWM: Changed the command handler. If a mode switch command is received for the current mode (i.e.: pwm to pwm) then only a mode report is sent back. This is not an error and the processor is not reset.
Version 1.4
General release: 18 October, 1996
VPW: No Changes.
PWM: Corrected a bug found in reading the acknowledgers list when in monitor mode. Was not sending the HOP byte to actually read the RAM space.
Version 1.5
General release: 31 October, 1996
VPW: When a match table entry command is received, store the entry, then read the table and report the entry back to the host for positive feedback that the command was received and processed correctly.
PWM: No changes.
Version 1.6
General release: 4 December, 1996
VPW: Allowed nesting of interrupts. A customer found this bug. The micro
was in the UART service routine and could not get back to the SENDEC routine
in time and got a SENDEC overrun error.
The following interrupt routines enable interrupts from within: UART
(IRQ); Timer; Watchdog. The SENDEC ISR is exclusive, once entered has to
finish.
PWM: No changes.
Version 1.7
General release: 16 February, 1997
VPW: No changes.
PWM: Changed the way the interrupt service routine is traversed. Not allowed to exit until all interrupts are serviced. Also check the actual interrupt status bit and not a copy of it. Discovered this bug during scan tool testing. If a burst of bus traffic arrived, the interrupt service routine was entered. While in the routine the UART asserted an interrupt, however it would exit from the routine (since the UART didn't cause the interrupt initially) and the UART interrupt would be left pending. Thus the interrupt could never be entered again.
Also changed the default values loaded into the HBCC function message lookup table. The new values are (starting at RAM address $10): $5A, $5B, $6A, and $6B. These are the values for OBD-II diagnostic messages and Ford diagnostic messages.
Version 1.8
General release: 25 April, 1997
VPW: No changes.
PWM: Corrected a problem in the HBCC interrupt service routine. If a message was received but the HBCC could not acknowledge receipt (could not transmit the acknowledge in the IFR) then the receive buffer would contain the message, but the message was never retrieved. Resulted in the HBCC receive FIFO overflow.
Version 1.9
General release: 30 April, 1997
VPW: No changes.
PWM: Major changes. Added the 'Look-alike' and Match functions. Many changes were made to the HBCC interrupt service routine. Implemented receive buffers; two each for received messages, acknowledgments, and status/error messages. Implemented buffer managers in the main loop. Implemented the Match function for the received message buffers. Implemented the 'Look-alike' function in which PWM mode of operations closely mimics operations when in VPW mode. Added the $1x and $3x commands. Changed the $4x response to Match mode response. The $Ax response header byte is now assigned to all received acknowledgments (as a result of transmitting a message). Added error codes for transmit message too short and too long.
Version 2.0
General release: 14 June, 1997
VPW: No changes.
PWM: Discovered errors in both the interrupt routine for the HBCC and in the buffer forward routines. The acknowledgment routines did not allow for a zero count (resulted in counter underflow and memory dump). Installed a watchdog time out routine to handle a watchdog event. This routine permits saving the 'look-alike' mode so that if a watchdog event occurred the recovery is more graceful. Made changes in the main loop, especially the transmit routine, to inhibit interrupts whenever talking with the HBCC device. It is theorized that during certain situations, while loading a message for transmission, a receive interrupt would/could occur, thus the load routine was pre-empted by a receive routine. This would completely screw up the HBCC communications. The program would get caught in a loop in the ISR and a watchdog time out would occur.
Added code in the UART service routine and the UART comm's manager routines to handle the case of FIFO #1 overflow. The UART FIFO is not emptied. This forces RTS/CTS handshaking to take over and hold off the host.
Version 2.1
General release: 10 July, 1997
VPW: Changed the SCC handler and IRQ routines. If FIFO #1 should become full the receive interrupt is disabled and the SCC receive FIFO is allowed to become full. This will cause RTS/CTS to negate and stop the serial link data transfer.
PWM: Added code to clear the watch dog bit after a watch dog reset.
Version 2.2
General release: 26 August, 1997
VPW: No changes.
PWM: Changed the HBCC interrupt service routine so that if a network fault should be detected it does NOT terminate message transmission. A network fault condition is not considered catastrophic. (Network fault indicates a possible short high or short to ground condition).
Version 2.3
General release: 11 December, 1997
VPW: No changes. This version only created to be consistent with the creation of the first release of CCD code.
PWM: No changes. This version only created to be consistent with the creation of the first release of CCD code.
CCD: First release.
Version 2.4
General release: 2 October, 1997
VPW: Added the Echo/No-Echo command (same as in the AVT-716 unit).
51 06: Status query.
52 06 00: No echo of the transmitted message.
52 06 01: Echo the transmitted message to the host.
PWM: No changes to this code.
CCD: Added the Echo/No-Echo command (same as in the AVT-716 unit).
51 06: Status query.
52 06 00: No echo of the transmitted message.
52 06 01: Echo the transmitted message to the host.
Also found an error in the processing of receive buffer #2. It is probable
that no one every encountered this problem as it is doubtful receive buffer
#2 is ever used. (This is due to the speed of the microcontroller and the
slow baud rate of the incoming messages.)
Version 2.5
General release: 3 November, 1998
VPW: Made changes to the SCC communications manager in the main loop. I no longer allow the SCC to interrupt while servicing the SCC in the main loop. This corrects the very rare occurrence of an error resulting from reading an empty FIFO.
PWM: Made changes to the SCC communications manager in the main loop. I no longer allow the SCC to interrupt while servicing the SCC in the main loop. This corrects the very rare occurrence of an error resulting from reading an empty FIFO.
CCD: Made changes to the SCC communications manager in the main loop.
I no longer allow the SCC to interrupt while servicing the SCC in the main
loop. This corrects the very rare occurrence of an error resulting from
reading an empty FIFO.
Made changes to the organization of the SCC interrupt service routine
so that I don't leave the routine until everything has been serviced and
no interrupts are pending.
Version 2.6
General release: 8 November, 1998
VPW: Removed all direct writes to FIFO #2 while in the SENDEC ISR. Added 'Error Flags' byte. Two bits are used to signal the main routine that an error occurred in the SENDEC ISR.
PWM: Removed all direct writes to FIFO #2 while in the HBCC IRQ. Added the 'Error Flags' byte. I use one bit to signal the main routine that an error occurred in the HBCC IRQ.
CCD: No changes to this code.
Version 2.7
General release: Never. This firmware version was never
released.
Version 2.8
General release: 22 February, 2000
VPW: Added the status response $91 $0C for the command $21 $04 (reset FIFO 1) and $21 $05 (reset FIFO 2).
PWM: Added the status response $91 $0C for the command $21 $04 (reset FIFO 1) and $21 $05 (reset FIFO 2).
CCD: Added the status response $91 $0C for the command $21 $04 (reset FIFO 1) and $21 $05 (reset FIFO 2).
Version 2.9
General release: 18 September, 2000
VPW: Added a variable to save the SENDEC status register, in the interrupt
service routine, in the event an error is detected. The contents
of that variable are then forwarded to the host from the main loop.
Also added two routines to thoroughly test both FIFO #1 and FIFO #2
whenever VPW mode is entered (power up, mode switch, watchdog reset,
reset, ...).
PWM: No changes to this code.
CCD: No changes to this code.
Version 3.1
Never released, for testing only.
VPW: Removed the ability to receive an IFR. Red LED is on at all times, it does not blink. Moved the watchdog calls to separate places in the main loop.
PWM: No changes to this code.
CCD: No changes to this code.
Version 3.2
Special release, for one customer only: 17 January, 2002
VPW: Removed the ability to receive an IFR. Red LED only blinks for ~14 seconds after power-up or reset; then the red LED is on. Added the 5x 24 command to connect or disconnect from the external network. The default condition on power-up or reset is to be disconnected from the network. Watchdog calls are in two places in the main loop. Completely re-vamped the receive routines to improve performance. Receive routines now have approximately a 3 to 1 priority over all other functions. Completely re-vamped how incoming commands from the host are handled; this eliminates and prevents the unit from "camping" while waiting for the host to finish sending a command. Note that there is no incoming command time-out function; the unit will wait indefinitely for the host to finish a command; all other functions will operate normally while it is waiting. All of these changes have vastly improved the performance of the AVT-715 in VPW mode; throughput is greatly increased and occasional error messages have been eliminated.
PWM: No changes to this code.
CCD: No changes to this code.
Version 3.3
General release: 18 September, 2000
VPW: Based on version 3.2 above. IFR's are received and forwarded to the host without CRC processing. The red LED blinks normally. The 5x 24 command is functional; connect or disconnect from the external network. The default condition on power-up or reset is to be connected to the network. Watchdog calls are in two places in the main loop. Completely re-vamped the receive routines to improve performance. Receive routines now have approximately a 3 to 1 priority over all other functions. Completely re-vamped how incoming commands from the host are handled; this eliminates and prevents the unit from "camping" while waiting for the host to finish sending a command. Note that there is no incoming command time-out function; the unit will wait indefinitely for the host to finish a command; all other functions will operate normally while it is waiting. All of these changes have vastly improved the performance of the AVT-715 in VPW mode; throughput is greatly increased and occasional error messages have been eliminated.
PWM: No changes to this code.
CCD: No changes to this code.