You may not have everything you need to view rcsys.com. Please see our site requirements.

Quick Links

How to Detect the Presence of an Exception Dictionary

The information in this article applies to:
  • RC8650
  • RC8660
  • V8600A
  • V-Stamp
  • DoubleTalk LT

The RC8650 supports a programmable exception dictionary that can be used to change the way the RC8650 responds to text strings. Although the dictionary is stored in a protected area of the RC8650’s flash memory, it is possible to be accidentally erased or overwritten. This application note describes a method that can be used to detect if the dictionary has been corrupted, so further action can be taken if necessary.


Implementation

The easiest way to detect the presence of an exception dictionary is to include a rule in the dictionary that provides feedback to the application. One type of feedback is through the use of the index marker (nI) command.

When an index marker command is executed, the RC8650 transmits the marker number (“n”) via the TXD pin. For example, consider the following dictionary entry:

   (\02)=\0165i

If this entry is present in a valid, enabled dictionary and CTRL+B (0x02) is sent to the RC8650, the RC8650 will respond by transmitting 0x41 (corresponding to the 65 in the marker command) to the host controller via the TXD pin. If the dictionary has not been loaded or is disabled, the CTRL+B character will be ignored and the marker will not be transmitted. We chose a control character for the dictionary entry, because 1) the character should not produce any audible output if the dictionary is not present or is disabled, and 2) the character should not occur in the data stream expected to be present in the application.

To test for the presence of the dictionary, all we need to do is send CTRL+B (in this example) followed by the usual CR terminator. Then we wait a short period of time to see if the RC8650 responds with the expected 0x41 character on the TXD pin. If the character is not received, we can assume that the dictionary is not present and needs to be downloaded again.