Text display on waterfall
This is a mega16 AVR program and sends characters for display on waterfall. One of 7 tones is sent
(one a time). The carrier is always on and is shown as inter-letter underline on the waterfall.
This beacon keyer sends text characters as a varying carrier frequency. Each character is comprised
of pixels within a 7x5 matrix. Some characters are narrower and take up less pixels in the x
direction. When there are no pixels in the column at all, the D/A output value is 001 for a
carrier offset of 0 Hertz. If the lowermost pixel of a column is part of the current character,
the D/A output value changes to 010 (or 2); this then becomes carrier offset of +50Hz. However,
if the lowermost pixel isn't required but the pixel immediately above is, the D/A output changes
to 011 (or 3) for a carrier offset of +100Hz. There are no breaks or pauses in the transmitted carrier.
This allows for reduced noise on display (because the carrier is always on) and for more power per pixel
in each column.
A D/A circuit is added from the lowermost bits of portA. This D/A is intended to move the frequency
of a crystal controlled oscillator by about 50Hz for each D/A count.
Voltage steered xtal oscillator. When the uP switches an output to '1' level, that output pin is
effectively connected to the supply rail. The capacitor at the D/A output is intended to prevent
power supply noise making its way to the varactor, a small value of 10n or 4n7 is best.
port bits & directions
portA:
lowermost 4 bits outputs; (msb) b2,b1,b0 (lsb) are D/A output drive pins
b7..b4 are inputs
portB (mode select pins):
b4...b0 are inputs
b7...b5 are outputs
portC
all bits are outputs except for b1 (input pin for bootloader if used)
b0 pulses high at start of character (for 'scope trigger)
portD
all bits are inputs except for b1 and b4 and b5 and b7
b0 UART serial 9600 input with 8Mhz xtal
b1 UART serial 9600 output with 8Mhz xtal
b4,b5 are test only tones, in quadrature
b7 is 500Hz test output (xtal/16000 with !SLOW=0, see mv3)
;
mode select (portB), these inputs are usually at '1' level
; b0 LSB is normally '1' for repeat send column pixels
; b1 is double speed when '0' (50mS columns instead of 100mS)
; b2 is fixed time/pixel when '0' (50mS fixed time, or 25mS with b1='0')
; b3 is 0 for invert D/A when '0'
; b4 echo send character to serial/prog mode, set '0' to program message
notice that b4 is latched at device reset.
The firmware shows b2..b0 value as decimal mode number, a miniature bcd switch can be used at
pins b2..b0 instead of DIP selector.
The lowermost bit of portC is an output that pulses to '1' level at the beginning of each character.
This can be used as trigger for 'scope to show current character on display (the D/A values).
The 9600bps Serial connection is used to program the beacon message, and vary the transmission of characters:
!TILT= was added, (TILT can be 0...+/-3)
here each column is 5Hz higher than the one before. (This only for the pD4,pD5 audio).
!SLOW= was added, here with !SLOW=4 (pD7 becomes 15.625Hz) from ARGO:
This is 32 times slower, so the 200mS (repeated; 100mS+100mS) columns each take 6.4 SECONDS.
!SLOW=1 is 2* 100mS speed, !SLOW=2 is 4* the 100mS speed, !SLOW=3 is 8* the 100mS speed, and !SLOW=4 is 32* the 100mS speed.
Reset to 100mS with !SLOW=0
!SAVE saves the message and the current CSET,TILT and SLOW values. Either TILT or SLOW, not both as same time:
tbkm16.zip zip file with .hex file and notes
Test Fixture
waterfall display program for dot net 3.5
wfalltbk.zip CRC 86F48D0D (Program also creates .wav files)