Programming the Timers
Programming the CW Messages
Programming the Flag Bits
Recording the Voice Messages
In order to save space in the microprocessor memory, the NHRC-3 repeater controllers represent all numbers in "hexadecimal" notation. Hexadecimal, or hex for short, is a base-16 number format that allows a 8-bit number to be represented in two digits. Hex numbers are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and F. Converting decimal (the normal base-10 numbers that 10 fingered humans prefer) to hex is simple: divide the decimal number by 16 to get the 1st hex digit (10=A, 11=B, 12=C, 13=D, 14=E, 15=F), the remainder is the 2nd hex digit. Many scientific calculators can convert between these two number systems, and the Windows 95 calculator can, too, if the "scientific" view is selected. We provide a WWW page that can generate all the programming data for the NHRC-3 controllers quickly and easily, see http://www.nhrc.net/nhrc3/nhrc3prog.php.
The controller will need to be initialized to allow you to set your
secret passcode. Initializing the controller also resets all
programmable settings to the factory defaults, including the CW ID
message, and sets all the stored voice messages to blank. It should
not be nessecary to initialize the controller again, unless you want
to change the passcode. The only way to change the passcode is
to initialize the controller.
To initialize the controller, remove power and install the init jumper (JP1). Apply power to the controller, and after a few seconds, remove the init jumper. The controller is now in the initialize mode. If you "kerchunk" the controller now, it will send the default CW ID of "DE NHRC/3". Now transmit your 4-digit passcode. The controller will respond by sending "OK" in CW once. The controller will store the passcode and enter the disabled condition.
At this time, the controller will seem to be "dead", it will not respond to keyups, kerchunks, etc.
In fact, the controller will now only respond to correctly formatted 8-digit command messages. The controller initializes into the disabled condition specifically to allow programming and configuration of simplex repeaters; if it came up into a duplex operating condition, simplex repeaters could not be programmed!
To select simplex mode (before enabling the repeater), send the
following DTMF sequence:
If the controller is connected to a full-duplex repeater or link
radio, you may wish to enable it at this time. To put the repeater
into the enabled condition, send the following DTMF sequence:
The controller can operate in 3 different modes:
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.
Response | Meaning |
---|---|
"OK" | Command Accepted |
"NG" | Command address or data is bad |
courtesy beep or nothing |
Command/password not accepted |
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.
The Timeout Timer controls the maximum duration of the retransmission of a received signal. It is more of a safety measure to protect the repeater from damage than a way to discourage long-winded users, even though it is often used that way.
The ID Timer sets the maximum duration between transmissions of the repeater's ID message(s). Note that the NHRC-3 may transmit an ID message before the timer expires in order to avoid transmitting the ID message while a user is transmitting.
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.
In addition to programming the flag bits as a group using address 01,
the controller supports commands to set or clear these bits individually.
Command 60 is used to clear (zero) a specified configuration bit, and
command 61 is used to set (one) a specified configuration bit. For
example, to set (turn on) bit 4 (to suppress the courtesy tone), enter
the following command: pppp6104. To clear bit 4 and enable
the courtesy tone, enter this command: pppp6004. Note that
the bit number, not it's hex weight is used for commands 60 and
61.
To record stored voice messages, use command pppp411x,
where x is the number of the message you want to record, found
in the message numbers 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 pppp400x, 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!
Timer
Address
Resolution
SecondsMax. Value
SecondsDefault Value
Seconds
Hang Timer
02
1/10
25.5
5.0
Timeout Timer
03
1
255
30
ID Timer
04
10
2550
540
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
pppp0#09 0F 09 D pppp1002 10 02 E pppp1100 11 00 space pppp1205 12 05 N pppp133* 13 3E 1 pppp140D 14 0D K pppp1509 15 09 D pppp160# 16 0F O pppp1729 17 29 / pppp180A 18 0A R
pppp19##
19 FF
End of message marker
The CW ID can store a message of up to 40 characters. Do not exceed 40
characters.
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
adding their hex weights. For example, to set up a link controller
with no ISD chip, 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.
Bit
NumberBit Mask
Hex
WeightFeature
0
00000001
01
ISD Absent
1
00000010
02
Simplex repeater mode
2
00000100
04
Audio Delay Installed
3
00001000
08
(reserved)
4
00010000
10
suppress courtesy tone
5
00100000
20
suppress DTMF muting
6
01000000
40
use tail message for courtesy tone
7
10000000
80
special ID mode
Bits
SelectedConfiguration
BitsHex Value of
Flag BitsFeatures Selected
(none)
00000000
00
Duplex Repeater Mode
1
00000010
02
Simplex Repeater Mode
2
00000100
04
Duplex Repeater Mode
audio delay installed
0,4,5
00110001
31
Link Controller Mode:
no ISD chip
no courtesy tone
no DTMF muting
6
01000000
40
Duplex Repeater Mode
tail message is courtesy tone
7
10000000
80
Duplex Repeater Mode
special ID mode
7,6
11000000
C0
Duplex Repeater Mode
tail message is courtesy tone
special ID mode
7,6,2
11000100
C4
Duplex Repeater Mode
Audio Delay Installed
tail message is courtesy tone
special ID mode
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.
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.
The "Special ID Mode" operates differently in "normal"
repeater mode than in simplex repeater mode. In normal repeater mode,
enabling special ID mode will cause a CW ID to be sent instead of the
"normal" ID message. In Simplex Repeater Mode, enabling
special ID mode will cause the controller to play the "initial"
voice ID (stored as voice message #0) insted of playing a CW ID.
In simplex mode, the maximum repeated message duration is reduced by
1/4 to accomodate this voice ID. (About 67 seconds instead of 90).
In summary, the special ID mode will cause a CW ID to play instead of
the normal voice ID in normal repeater mode, or will allow a voice ID
to be played instead of a CW ID in simplex repeater mode.
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.
For example, to have the tail message play after the 4th tail drop, program pppp0504. Try it.
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?"!
The NHRC-3 series repeater controllers support the optional NHRC-DAD
digital audio delay board. The NHRC-DAD allows complete muting of
received DTMF tones (no leading beep before muting), and suppression
of squelch crashes when the received signal drops. The NHRC-DAD has
a 128 ms delay on all received audio. NHRC-3 repeater controllers
support the DAD with a software switch, settable by a configuration
flag bit, and a dedicated connector on the controller for the DAD.
If the DAD is not present, then a jumper must be installed between
pins 2 and 3 of the DAD connector (see installation manual.) If the
DAD is present, then the appropriate configuration flag bit must be
set (in the case of the NHRC-3 series controller, set bit 2, hex
weight 04.)
Let's assume we want to program a NHRC-3 Series Repeater Controller with the following parameters:
CW ID: DE N1LTL/R FN42
Hang Time 7.5 seconds
Timeout timer 120 seconds
Play tail message every 6 tail drops.
First, we will initialize the controller. Install JP1 and apply power to the controller to initialize. After a few seconds, remove JP1. Send DTMF 2381 to set access code to 2381. The controller will send "OK" in CW to indicate the passcode was accepted. Now the controller is initialized, and disabled.
If we were programming a simplex repeater, we would now set the configuration flags for simplex mode, so we could turn the controller on and still be able to program it. For duplex repeaters, this step should not be performed. Send DTMF 23810102 to set the simplex repeater mode flag bit.
Now we will enable the controller. Send DTMF 23810001 (passcode=2381, address=00, data=01). The controller will send "OK" in CW to indicate the command was successful.
We will now program the CW ID. Looking at the "Programming Memory Map", we can see that the first location for the CW ID is 0F. The first letter of the ID is 'D', which we look up in the "Morse Code Character Encoding" table and discover that the encoding for 'D' is 09. So location 0F gets programmed with 09. Since the F digit is represented by the DTMF digit '#', the '#' is used to send the 'F'.
Send DTMF 23810#09 to program the letter 'D' as the first character of the CW ID. The controller will send "OK" in CW if the command is accepted. If you entered the command correctly, but you don't get the "OK", your DTMF digits may not all be decoding. See the Installation guide for your controller to readjust the audio level for the DTMF decoder.
The next character is the letter 'E', which is encoded as 02, and will be programmed into the next address, which is 10. Send DTMF 23811002.
The next character is the space character, and it will be programmed
into address 11. Send DTMF 23810B00. Here are the rest of the
sequences to program the rest of the ID message:
23811205 (N in address 12)After the last character of the CW ID is programmed, the End-of-Message character must be programmed. In this case, the last character of the ID message was programmed into address 1D, so the EOM character, which is encoded as FF, goes into address 1E:
2381133* (1 in address 13)
23811412 (L in address 14)
23811503 (T in address 15)
23811612 (L in address 16)
23811729 (/ in address 17)
2381180A (R in address 18)
23811900 (space in address 19)
23811A14 (F in address 1A)
23811B05 (N in address 1B)
23811C30 (4 in address 1C)
23811D3C (2 in address 1D)
To program the hang timer, we must first determine the address of the
hang timer by consulting the Programming Memory Map. The Hang Timer
preset is stored in location 02. Next, we need to convert the 7.5
seconds into tenths, which would be 75 tenths of a second. Then the
75 gets converted to hex:
75 / 16 = 4 with a remainder of 11, so 75 decimal equals 4B hex.Now program the hang timer preset by sending 2381024B.
To program the timeout timer with 120 seconds, we get the address of
the timeout timer preset, which is 03, and then convert 120 seconds
to hex:
120 / 16 = 7 with a remainder of 8, so 120 decimal equals 78 hex.So we will program location 03 with 78: 23810378
To program the tail message counter, we determine the address of the counter (05) and since 6 is less than 16, the hex conversion is easy:
6 / 16 = 0 remainder 6, so 6 decimal equals 06 hex.We will program location 05 with 06: 23810506
If we were programming a simplex repeater, we would stop here. Except in the case of the "special ID mode" no voice messages need to be stored for simplex repeater mode.
Now we can record the 4 voice messages. The voice messages are recorded by "programming" address 41 with the message number, then recording the message. We will program the initial ID message (message number 10, see the "Message Numbers" table) first:
Send 23814110, then key up again and clearly speak the message to be recorded "This is N1LTL repeater in Candia New Hampshire, an open repeater available to all licensed amateur radio operators." Unkey after you are done speaking.
The "normal ID" (11), timeout message (12), and tail message(13)
can be recorded the same way:
Send 23814111, speak "N1LTL repeater".Any message can be played back at any time by "programming" location 40 with the message code you want to play. To play the CW ID, send 23814000. To play the tail message, send 23814013.
Send 23814112, speak "A longwinded blatherskite has timed out the repeater."
Send 23814113, speak "Free Beer Tonight at N1LTL's! (Swiller Lite, too)."
This tutorial did not discuss programming the Timeout timer, but the concepts described here apply to that timer as well.
Command | Description |
---|---|
400x | 0 <= x <= 3, play CW message x |
401x | 0 <= x <= 3, play voice message x |
411x | 0 <= x <= 3, record voice message x |
Message Number | Contents |
---|---|
00 | CW ID |
01 | CW Timeout Message "TO" |
02 | CW Confirmation Message "OK" |
03 | CW Invalid Command Message "NG" |
10 | Voice Initial ID Message |
11 | Voice Normal ID Message |
12 | Voice Timeout Message |
13 | Voice Tail Message |
|
|
|
|