NHRC-3 Repeater Controller
Operation Instructions
Firmware Version 43

These instructions will guide you in the operation of the NHRC-3 repeater controller.


  1. Initializing
  2. Programming
    1. Controller Modes
    2. Programming the Controller
      Programming the Timers
      Programming the CW Messages
      Programming the Flag Bits
      Recording the Voice Messages
    3. Enabling/Disabling the Repeater

  3. Operating
    1. About the IDs
    2. The Tail Message
    3. Using the Tail Message as the Courtesy Tone
Index of Tables

  1. Initializing the Controller
    To initially program your secret code into the controller, you must apply power to the controller with the pins on the init jumper, (JP1) shorted, putting the controller into the initialize mode. Remove the jumper a few seconds after power is applied. All of the values stored in the EEPROM will be reset to defaults, and the controller will be ready to accept the 4-digit secret access code. This will reset the CW ID to the default value "DE NHRC/2" as well. When the controller is in the initialize mode it will play the default ID message every time the received carrier drops. Key up and enter your 4-digit access code. The controller should respond with "OK". After that, the controller will not transmit except to acknowlege commands with a "OK" or "NG" message until it is enabled. The controller will appear to be dead except for responding to properly formed commands. You may want to enter a configuration flag value before you enable the controller with the 0001 command. The secret access code is stored in non-volatile memory in the 16C84 microcontroller. You will use this code as the prefix for all commands you send to the controller.

  2. Programming
    1. Controller Modes
      The controller can operate in 3 different modes:
      • Repeater Controller Mode
        The controller operates a full-duplex repeater, with a courtesy tone and stored voice messages.

      • Link Controller Mode
        This is a variation of Repeater Controller Mode where the ISD2590 voice storage chip is deleted to lower the cost of the controller. This mode is intended to control remote receivers that are essentially crossband repeaters. Normally, when using link controller mode, the hang time is set to 0 seconds, and the controller is programmed to suppress DTMF muting, so the user's DTMF commands will appear on the input of a "downstream" controller. The controller adds remote control, a timeout timer and CW ID capability to remote or link receivers.

      • Simplex Repeater Controller Mode
        This mode allows simplex (as opposed to duplex) radios to be used as repeaters. Up to 90 seconds of received audio is stored in the ISD2590 voice storage chip, and is "parroted" back when the user unkeys. The ID message is played in CW.

    2. Programming the Controller
      All programming is done by entering 8-digit DTMF sequences. The first 4 digits are the passcode chosen at initialization. The next 2 digits are an address or a function code. The last 2 digits are the data for address or function. To enter programming information, you must key your radio, enter the 8 digits, then unkey. If the controller understands your sequence, it will respond with "OK" in CW. If there is an error in your sequence, but the passcode is good, the controller will respond with "NG". If the controller does not understand your command at all, it will not respond with anything other than a courtesy beep, and then only if the courtesy beep is enabled. If the controller is disabled, and an unrecognized command is entered, no response will be transmitted at all.

      Responses to Commands
      "OK"Command Accepted
      "NG"Command address or data is bad
      courtesy beep
      or nothing
      Command/password not accepted

      If you enter an incorrect sequence, you can unkey before all 8 digits are entered, and the sequence will be ignored. If you enter an incorrect address or incorrect data, just re-program the location affected with the correct data.

      In order to save space, reduce keystrokes, and eliminate some software complexity, all programming addresses and data are entered as hexadecimal numbers. Hexadecimal (or hex, for short) is a base-16 notation that is particularly convenient for use in digital computer systems because each hex digit represents 4 bits of a value. The controller uses pairs of hex digits to represent 8-bit values for the address and data of programming information. Any decimal number from 0 to 255 may be represented by two hex digits. Hex digits are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, where A through F represent values from 10 to 15. To convert a decimal number from 0 to 255 to hex, divide the decimal number by 16. The quotient (number of whole 16s) forms the left (high) digit, and the remainder forms the right (low) digit. Thus, 60 decimal = 3 x 16 + 12 = 3C hex.

      The DTMF keys 0-9 and A-D map directly to their corresponding digits. Use the * key for digit E and the # key for digit F. A 16-key DTMF generator is required to program the controller.

      1. Programming the Timers
        The timer values are stored as an 8-bit value, which allows a range of 0 to 255. Some of the timers require high-resolution timing of short durations, and others require lower resolution timing of longer durations. Therefore, timers values are scaled by either 1/10, 1, or 10 seconds, depending on the application.

        Enter the 4 digit passcode, the timer address, and the timer value, scaled appropriately. For example, to program the Hang Timer for 10 seconds, enter pppp0264, where pppp is your secret passcode, 02 is the hang timer address, and 64 is the hexadecimal value for 100, which would be 10.0 seconds.

      2. Programming the CW Messages
        CW messages are programmed by storing encoded CW characters into specific addresses in the controller. Use the Morse Code Character Encoding table and the Programming Memory Map to determine the data and address for the CW message characters. For example, to program "DE N1KDO/R" for the CW ID, you would use the following commands:

        DTMF Command Address Data Description/Purpose
        pppp19## 19FF End of message marker

        The CW ID can store a message of up to 40 characters. Do not exceed 40 characters.

      3. Programming the Flag Bits
        Controller features can be enabled of disabled with the use of the Configuration Flag Bits. These bits are encoded into a single byte, which is programmed into the controller at address 01. Multiple flag bits can be selected by summing their hex weights. For instance, to set up a link controller with no ISD2590, no courtesy tone, and suppress the DTMF muting, you would add 01, 10, and 20 to produce hex 31, which you would then program into address 01 in the controller as pppp0131.

      4. Recording the Voice Messages
        Stored voice messages can be played and recorded, and CW messages can be played by using the message commands. Command 40 is used to play stored voice or CW messages, and command 41 is used to record stored voice messages.

        To record stored voice messages, use command pppp410x, where x is the number of the message you want to record, found in the message contents table. Unkey after the command sequence, then key up, speak your message, and unkey. The controller will remove about 100 ms from the end of your message to remove any squelch crash that might have been recorded.

        To play stored voice messages, use command pppp401x, where x is the number of the stored voice message you want to play. To play CW messages, use command pppp401x, where x is the number of the CW message you want to play.

        You may wish to have a family member or member of the opposite sex record your ID messages. The recorded audio sounds natural enough that people have actually tried to call the amateur whose callsign is recorded in the controller after the ID message plays!

    3. Enabling/Disabling the Repeater
      The repeater can be disabled or enabled by remote control by setting the value in location 00. Set this location to zero to disable, or non-zero to enable. For instance, to disable the repeater, send command pppp0000. To enable the repeater, send command pppp0001.

  3. Operating
    1. About the IDs
      When the repeater is first keyed the controller will play the "initial ID". If the repeater is keyed again before the ID timer expires, the controller will play the "normal ID" when the ID timer expires. If the repeater is not keyed again, and the ID timer expires, the controller will reset and play the "initial ID" the next time the repeater is keyed. If the repeater is keyed while the controller is playing a stored voice message ID, the controller will cancel the stored voice message ID and play the CW ID.

      The idea behind this IDing logic is to prevent unnecessary IDing. For instance, if a repeater user keys the machine and announces "This is N1KDO, monitoring", the controller will play the initial ID, and no further IDing will occur unless the repeater is keyed again. If users commence with a QSO, keying the repeater at least once more, the controller will play the normal ID and reset the ID timer when the ID timer expires. If the repeater becomes idle for one ID timer period after the last ID, then the next time it is keyed it will play the initial ID. The intent is that the repeater users only hear the initial ID the first time that they key the repeater.

    2. The Tail Message
      The controller supports a "Tail Message" that plays the nth time the hang timer expires. The number of times the hang timer must expire before the tail message plays (n) is the "tail message counter" at address 05. The tail message counter can be set from 1 to 255. The tail message is disabled if the tail message counter is set to 0. Program the tail message counter value into address 05.

    3. Using the Tail Message as the Courtesy Tone
      The tail message can be used as the courtesy tone if bit 6 is set in the configuration flags. In this case, you will likely want to set the tail message counter value to 0 to keep the message from playing twice occasionally. The message could store the sound of a bell, a dog's bark, or the repeater trustee saying "what?"!

Message Commands
400x0 <= x <= 3, play CW message x
401x0 <= x <= 3, play voice message x
410x0 <= x <= 3, record voice message x

Message Contents
Message NumberStored VoiceCW
0Initial IDID message
1 Normal ID message timeout message ("TO")
2 Time-out Message confirm message ("OK")
3 Tail Message invalid message ("NG")

Programming Memory Map
AddressDefault DataComment
0001enable flag
0100configuration flags
0232hang timer preset, in tenths
031etime-out timer preset, in seconds
0436id timer preset, in 10 seconds
0500tail message counter
060f'O' OK Message
0905'N' NG Message
0c03'T' TO Message
0f09'D' CW ID starts here
1a00can fit 6 letter ID....
1b-37not used
38n/aisd message 0 length, in tenths
39n/aisd message 1 length, in tenths
3an/aisd message 2 length, in tenths
3bn/aisd message 3 length, in tenths
3cn/apasscode digit 1
3dn/apasscode digit 2
3en/apasscode digit 3
3fn/apasscode digit 4

Morse Code Character Encoding
Character Morse
ar.-.-. 001010102a
bt-...- 0011000131
/ -..-. 0010100129
0 ----- 001111113f
1 .---- 001111103e
2 ..--- 001111003c
3 ...-- 0011100038
4 ....- 0011000030
5 ..... 0010000020
6 -.... 0010000121
7 --... 0010001123
8 ---.. 0010011127
9 ----. 001011112f
a .- 0000011006
b -... 0001000111
c -.-. 0001010115
d -.. 0000100109
e . 0000001002
f ..-. 0001010014
g --. 000010110b
h .... 0001000010
i .. 0000010004
j .--- 000111101e
k -.- 000011010d
l .-.. 0001001012
m -- 0000011107
n -. 0000010105
o --- 000011110f
p .--. 0001011016
q --.- 000110111b
r .-. 000010100a
s ... 0000100008
t - 0000001103
u ..- 000011000c
v ...- 0001100018
w .-- 000011100e
x -..- 0001100119
y -.-- 000111011d
z --.. 0001001113
space 0000000000

NHRC-3 Repeater Controller Home Page
NHRC-3/M2 Repeater Controller Home Page
/obsolete-manuals/nhrc-3-operating-43.php, version 1.11, last modified 02 January 2005 12:16
Copyright © 1997-2005, NHRC LLC, all rights reserved.
Mail comments to