137.7kHz QRSS on one chip

This article describes a simple QRSS beacon exciter for the DX portion of the 2200m amateur band.

A simple 137.7kHz QRSS Beacon exiter was created by merging two projects:

The outcome of the merge was an 8 legged chip that was a QRSS beacon keyer and 137.7kHz carrier generator with 5V drive for a FET power amplifier.

The exciter contains no more parts than the 137.7kHz oscillator. Because it uses a crystal oscillator, fewer pins are available for the application, and only two pins are available for speed selection allowing the choice of 1 of 4 speeds by links. Longer term, I may use those two pins for a button and LED to implement a menu function allowing a wider speed selection range.

Fig 1: Exciter in action

Fig 1 shows the single chip exciter output received on 137kHz in QRSS3 mode under weak signal conditions. The display covers about four minutes, and it can be seen that the oscillator is stable, and clean. S/N ratio in this example was about -20dB wrt 2500Hz effective noise bandwidth.

Fig 2:

Fig 2 shows the output waveform on QRSS3, the solid blocks of red are 137kHz square wave.


EEPROM holds the configuration data, including the messages. The EEPROM image is field replaceable.

Developing the EEPROM image

The EEPROM data structures are moderately complex to provide for flexibility, present and future, in use.

The EEPROM image is created using the following online generator.

EEPROM hex file image generator

Message texts can be inserted into the form below to generate an Intel Hex format EEPROM data file for download for a device programmer (eg AVRDUDE).

Up to 8 messages can be specified. The first blank message ends the message set. The skip variable sets the number of characters in the message to skip when not performing the periodic full speed ID. If you specify skip greater than message length, it will be set to 0.

Note that the 8 pin ATtinyx5 series chips can only access message 0, there are no message select pins.

Table 4: Options bits
Bits Description
0 invert msg and speed selection pins
6:4 Time in minutes between full speed ID, 0=10min.

Above is a definition of the options bits. The options bits are specified as a four character hex string.

Invert facilitates use of DIP switches from select pins to ground, and if inverted, switch ON means logical 1 in terms of the inverted bits used to select a speed or message.

Insert message details here:
MsgNo Message text (max 50 symbols) Skip

Options:   Sync:

Permitted characters are alphabetic, digits, space and the symbols @ , ? : .'-/()"=+ from ITU-R M.1677. Additionally _KU and _KD can be used for 10s of key up or key down condition. The character | will stop sending and put the MCU to sleep requiring a reset or power off/on cycle to restart the keyer. Messages can be up to 50 Morse symbols, _xx sequences occupy 1 symbol. Leading and trailing spaces are significant.

It is also possible to encode an arbitrary symbol of up to 7 elements by inserting the sequence \hh where h are hex representation of an 8 bit word. The format of the word is as follows: from MSB to LSB, padding 1 bits, a 0 bit, followed by the Morse Code representation of the character in, with a 0 indicating a dot element and a 1 indicating a dash element to make 8 bits in total. For example \C8 (1100 1000) would represent the AS (wait) pro-sign.

This generator is a support tool for this specific project. It does not do a lot of checking of input data, if you get garbage out, check your input.

EEPROM usage is 3 bytes, plus 3 bytes per message, plus one byte per symbol in each message. Restrict each message to no more than 50 symbols, and the total configuration to fit in available EEPROM (128 to 512 bytes, depending on the chip size chosen).

Note that the ATtinyx5 chips can address only message 0.

Programming the chip

There are many programmers available for the AVR microcontrollers. This section describes an inexpensive and easily obtained programmer, free software, and a programming example.

Fig 2:

Fig 2 shows an example inexpensive implementation of a 5V/3.3V USBASP programmer for AVR chips. A R0 link at the lower edge of the underside can be removed for 3.3V operation instead of 5V. Some implementations have a link to enable powering the target from USB, the one pictured above does not and the track should be cut adjacent to pin 2 (labelled VCC above) of the 10 pin connector OR no connection made to pin 10 on the target board if you do not want to power the target. It is a good idea to NOT power the target from the programmer without good reason.

These type of programmers can be found on Ebay for less that $4 including a cable and post. The programmer plugs into a USB port and a 10 pin ribbon cable connects to the in system programming connector on the target. If the target uses a 6 pin ISP header, 10/6 pin converters are available on Ebay. If the target uses a 3.3V supply, configure the programmer for 3.3V (usually a link or solder bridge, see the programmer documentation). Don't supply power from the programmer to the target (again a link on some programmers, see the programmer documentation).

Adapters from 10 pin to the newer 6 pin ISP configuration are readily available at low cost on Ebay.

@echo off
if *%1==* goto usage
set id='$Id: prg.bat 679 2011-12-12 06:00:52Z owen $';

echo Processing %1
set PRG=usbasp
set PORT=usb
set OPTS=-B 5
set DEVICE=t44

if *%2==* goto eeprom
echo program flash (%2.hex)...
avrdude %OPTS% -c %PRG% -P %PORT% -p %DEVICE% -U flash:w:%2.hex
sleep 1

echo program eeprom (%1.hex)...
avrdude %OPTS% -c %PRG% -P %PORT% -p %DEVICE% -U eeprom:w:%1.hex 
sleep 1

if not *%3==*fuse goto lock
echo program fuses ...
avrdude %OPTS% -c %PRG% -P %PORT% -p %DEVICE% -U hfuse:w:0xD7:m -U lfuse:w:0xFD:m 
sleep 1

if not *%4==*lock goto cleanup
echo program lock (after everything else) ...
avrdude %OPTS% -c %PRG% -P %PORT% -p %DEVICE% -U lock:w:0x0:m 
goto cleanup

echo usage: prg eepromfile flashfile fuse lock
goto end


Above is a batch file (prg.bat) to program an ATtiny44 using AVRDUDE. Though this is a Windows batch file, the programmer and AVRDUDE work also on Linux.

Getting Qrss137

The flash memory code can be downloaded for from links below.

The EEPROM contents are created using the conversion tool in this article.



Version Date Description
1.01 03/02/2012 Initial.
1.02 17/06/2012 Updated to EEPROM format V2
1.03 23/09/2012 Updated to EEPROM format V3
1.04 24/09/2012 Updated to EEPROM format V4


© Copyright: Owen Duffy 1995, 2021. All rights reserved. Disclaimer.