This document will describe the K1EL WinKeyer3 (WK3) IC and its’ various interfaces. WK3 is a third
generation single chip Morse keyer IC. It is designed to attach to a PC’s USB port and provide accurate
transmitter keying for Windows based logging or other ham radio software packages. Due to timing
latency inherent in the multi-threaded Windows operating system, it is difficult for a PC to generate
accurately timed Morse. WK3 buffers ASCII characters sent by a Windows based software application.
It then translates them to Morse and directly keys a transmitter or transceiver. In addition, WK3 has a
paddle input allowing an operator to break in and send directly at any time. WK3 also provides a speed
potentiometer interface so that an operator can instantly dial any speed desired.
The host PC communicates to WK3 over a simple serial interface which can be a COM or USB port.
Letters to send, along with operational commands, are sent from the host to WK3 over the serial link. A
substantial feature list is provided allowing the user to precisely tailor WK3’s keying characteristics to a
particular transmitter. WK3 has a very low power requirement; in fact, it was originally designed to be
powered from a PC’s serial port. In standby it draws under a micro amp.
K1EL and several other manufactures sell products that utilize the WK3 IC, refer to the k1el website:
www.k1el.com
interface, speed control, enclosure with pushbuttons, and an internal battery pack for standalone use.
Features
• 1200/9600 Baud Serial Rx/Tx Interface
• Iambic CW Paddle Interface
• Two Key Output Ports (high true TTL)
• Two PTT Output Ports: (high true TTL)
• 25 ma output sink/source
• Adjustable PTT lead in and tail delays
• Adjustable Speed 5-99 WPM
• Adjustable Weighting and dit/dah ratio
• Adjustable Farnsworth Character Spacing
• Adjustable Keying Compensation
• Autospace and Letterspace Control
• Sidetone output with adjustable frequency
• Standalone K14 Keyer Emulation
• Paddle only sidetone
• Custom configuration for two users
for further information. One popular kit is Hamcrafters WKUSB which includes a USB
• Dit/Dah Memory Control
• Single Op Two Radio (SO2R) Support
• Adjustable Paddle Switchpoint
• Iambic A, B, Ultimatic & “Bug” modes
• Speed Pot Interface
• Adjustable speed pot range
• Embedded commands
• 160 character input buffer
• No crystals or oscillators
• 3.3 to 5 volt operation
• Current Draw: < 2 ma in active operation
• HSCW and QRSS Capability
• Automatic power down sleep mode
• Twelve stackable memory slots
• Stored Callsigns
1
14
Pin 1 – Vcc (5.0 volts)
Pin 2 – Port 2 Key Output
2
13
Pin 3 – Port 2 PTT Output
Pin 4 – USB Connected Sense
3
12
Pin 5 – Serial Receive Input
Pin 6 – Serial Transmit Output
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 1
K1EL WinKeyer3 CW Processor/Keyer
Theory of Operation
This section will describe how WK3 works. As shown in Figure 1, the host PC is connected to WK3 over a
serial COM port, which can be a USB port supporting a virtual COM port. WK3 is a slave to the PC in that it
receives commands and data from the PC. The PC can send commands while WK3 is sending Morse
allowing dynamic configuration changes. There are four reasons WK3 will transfer data back to the host:
1) lnform the host of a status change in WK3.
2) Inform the host of a speed pot or pushbutton change.
3) Respond to a request for status from the host.
4) Echo back Morse in ASCII as it’s being sent from either the serial port or the paddles.
Display
Keyboard
Push Button Array
Host
PC
Data
COM n
Winke yer
I.C.Serial
Rx
Tx
Key 1
PTT 1
Key 2
PTT 2
Sidetone
Keyer Paddle
Spe ed Pot
Figure 2 – WK3 to PC Connection
There are two types of serial data transfer from the host to WK3: Command and Data. Commands modify
WK3’s operation in some way, for example changing operating speed, pausing transmission, or asking for
status. Data can be letters, numbers, or prosigns that are to be sent in Morse. Commands and data are
processed differently in WK3. Data is put into a serial buffer that allows the host to send data ahead of the
Morse being sent. The size of this buffer is 160 characters and is a FIFO which is an acronym for First In
First Out. This means that characters are taken out in the order they were put in. Since there can be a
considerable delay from host input to Morse output, commands bypass the input FIFO and are acted upon
immediately. This allows changes to be made while sending is underway.
Serial Input
Since there are times when you don't want commands to take effect immediately, WK3 allows commands to
be buffered. This means that the command is placed in the serial buffer and won’t be acted on until it comes
out of the buffer. An example of the use of a buffered command would be to send two words at two different
speeds, the first at 15 WPM and the second at 20 WPM. By placing a buffered speed command between the
words, the speed will not be changed until the first word is completely sent. Not all, but many of WK3’s
immediate commands can be entered as buffered commands.
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Input
Parser
Command
Bypass
Figure 3 – Data and Command Flow inside WK3
Data
128
byte
FIFO
to input processing
Rev 1.2 Page 2
K1EL WinKeyer3 CW Processor/Keyer
Communication from WK3 to the host operates in a loosely coupled manner. This means that the host never
issues a command and waits for a response. Instead, the host sends a request for information and WK3
queues this request and will respond to the host when processing time allows. WK3 processes tasks in
parallel, there may be other bytes waiting to be sent back to the host before the latest request can be
handled. Rather than wait for a return, the host should divide its WK3 driver interface into two parts, one part
that issues command bytes and a second part that checks for returned bytes and processes them when they
arrive. Following is a bit of pseudo-code that illustrates this concept. It will make more sense as you learn
about the WK3 command set.
Serial Comm Thread {
while (1) {
if (host has a command to send to WK3) {
send command to WK3;
}
else if (WK3:uart_byte_ready) {
}
else if ((wkbyte & 0xc0) == 0x80) {
}
else {
}
}
}
wkbyte = WK3:uart_read();
if (( wkbyte & 0xc0) == 0xc0 {
it’s a status byte. (Host may or may not have asked for it.)
process status change, note that it could be a pushbutton change
it’s a speed pot byte (Host may or may not have asked for it.)
process speed pot change
it must be an echo back byte
if (break-in==1) { it’s a paddle echo }
else { it’s a serial echo }
}
Notice that unless WK3 has something for the host to read, the host continues to process outgoing
commands and other tasks. Also note that speed pot and status bytes can be unsolicited, in other words
WK3 can send these at any time a state change occurs inside WK3. Echo back bytes are also unsolicited as
they are based on asynchronous Morse sending. The host has to be able to handle these as they occur. If
host processing is not immediate, a serial input buffer on the host side is required to make sure no returned
bytes are missed.
Paddle Input Priority
WK3 accepts input from either its serial port or iambic paddle port. Paddle input will always take priority and
will interrupt serial data, automatically clearing WK3’s serial input buffer. When a paddle break-in occurs,
any additional serial data that arrives from the host will be processed, but will be ignored unless it is an
immediate command. After paddling ceases, WK3 will pause for one word space time before it resumes
serial data transmission.
Standalone Keyer Mode
WK3’s primary purpose is to provide accurate Morse keying to a Windows based application. The most
often requested feature from users of WK1 was to also allow WK to be run independently, not connected to
a computer. In response, all subsequent WinKeyer ICs provide standalone operation.
In most respects the standalone keyer is completely separate from the host mode keyer. This means that
the standalone keyer has its own configured state that is overwritten when changing to host driven mode.
Configuration changes issued while under host mode will be cancelled when returning to standalone mode.
A simple Windows application is available from K1EL called WK3MGR which can be used to set the
standalone configuration and message contents from the PC. Alternatively, settings and messages can be
entered by paddle commands in standalone mode.
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 3
K1EL WinKeyer3 CW Processor/Keyer
Power Up Default State
On power up, WK3 comes up in standalone mode and stays in that mode until it receives a Host Open
command from a PC host. At that time, standalone mode is suspended. When the host takes over, it
normally downloads a block of initialization parameters (see Load Defaults command) to set the operating
state as desired and to sync WK3 settings with those of the host. When shutting down, a host application
that has opened WK3 should always issue an Admin:Close command to return WK3 back to standalone
mode. This allows the keyer to be used in standalone mode while still attached to the PC. When WK3 is
physically disconnected from the host it automatically goes into standalone mode even if a Close command
was not issued.
While WK3 is attached to a PC com port in the closed state, it will accept ADMIN commands. This allows an
application such as WK3MGR to access standalone messages and settings.
WinKeyer3 Lockup Recovery
After WK3 is connected to a host it should not be physically disconnected while the host application is
active. Accidents do happen and if the USB cable is pulled in the middle of a command or data exchange
WK3 can get locked up. It’s not very likely but it can happen. A provision is included to easily get WK3 back
in operation again. Press and hold the command button until WK3 responds with either an ‘R’ or an MN
prosign (dah-dah-dah-dit).
Pushbutton Notification
Starting with WK version 2.0, the pushbuttons can be used in host mode. Normally pushbutons are used in
standalone mode only. One pushbutton is designated as the Command push button and is used to initiate
paddle commands. The other pushbuttons are used to enter or play recorded Morse messages. The host
must issue an Admin:Set WK2 Mode command to enable pushbutton notification. Once the mode is sent,
pushbutton status will be returned in the WK2 status byte. See page 13 for further information.
USB Sense
WK3 was designed with USB interfacing in mind. A USB sense input is provided which should be asserted
high when the USB port is attached and active. If the USB port is switched to standby or disconnected from
the PC, USB Sense should be pulled low. When low, WK3 is allowed to go into low power sleep mode. Note
that while connected to the host with USB sense high, WK3 will not go into low power standby.
Versions later than 22 were changed to handle the case where the host PC goes into standby while a host
application is actively connected to WK. If this happens, WK will not disconnect and will remain in host mode
until the PC comes out of standby. This maintains the link between the host application and WK so that
WKUSB can be used as soon as the PC wakes up and leaves standby mode.
Firmware Update
The firmware image within WK3 can be upgraded in the field. When K1EL releases a firmware update, it can
be uploaded to the WK3 IC through the WK3MGR utility over USB. Updates will be available from
www.k1el.com/wkupdates.html
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 4
K1EL WinKeyer3 CW Processor/Keyer
Host Mode Command Descriptions
This section documents the commands that are sent from the host to WK3 over the serial/USB interface.
Commands are special hex codes that are sent to WK3. These codes range from 0x01 through 0x1F. In this
document a hex value will be presented in angle brackets, for example <02>. Some commands have one or
more parameters sent immediately after the command code is sent, this will be documented as the
command code followed by a value: <02><nn> where nn is a single byte decimal value. The notation [c]
represents a single ASCII character sent to WK3 as a single serial byte.
Immediate Commands
These commands are processed as soon as they are received, they bypass the input buffer.
● Admin Command <00><nn> nn is a value from 0 to 20
After power-up the host interface is closed and serial status, echo, or pot change data will be not be sent to
the host. The only commands WK3 will accept are Admin commands. Admin commands are received,
processed and any return status or data will be sent back immediately. There are many Admin commands
andthey serve various purposes. With the exception of the Amin:Close command, all Admin commands
should only be issued while the host interface is closed. Following are descriptions of the Admin commands:
0: Calibrate This is an historical command preserved for WK1 compatibility. The command is accepted
but not processed by WK3. The command syntax is: <00><00> pause 100 mSec <FF>
1: ResetResets the WK3 processor to the power up state. Do not send this as part of the
initialization sequence. Only send this if you want to do a cold reboot of WK3.
2: Host Open Upon power-up, the host interface is closed. To enable host mode, the PC host must
issue the Admin:open <00><02> command. Upon open, WK3 will respond by sending the
revision code back to the host. The host must wait for this return code before any other
commands or data can be sent to WK3. Upon open, WK1 mode is set.
3: Host Close Use this command to turn off the host interface. WK3 will return to standby mode after this
command is issued and standby settings will be restored.
4: Echo Test Used to test the serial interface. The next character sent to WK3 after this command will
be echoed back to the host. <00><04><65> echoes A.
5: Paddle A2D Historical command not supported in WK3, always returns 0.
6: Speed A2D Historical command not supported in WK3, always returns 0.
7: Get Values Historical command not supported in WK3, always returns 0.
8: Reserved K1EL Debug use only
9: Get Cal Historical command not supported in WK3, always returns 0.
10: Set WK1 Mode Disables pushbutton reporting
11: Set WK2 Mode Enables pushbutton reporting, alternate WK status mode is selected.
12: Dump EEPROM Dumps all 256 bytes of WK3’s internal EEPROM.
13: Load EEPROM Download all 256 bytes of WK3’s internal EEPROM.
14: Send Standalone Message Command WK3 to send one of its internal messages. The command syntax is: <00><14><msg number> where msg number is 1 through 6
15: Load X1MODE Load mode extension register 1, WK1 does not support this register. Note that the bit
assignments of this register are different between WK2 and WK3 mode
WinKeyer3 IC Interface & Operation Manual 6/11/2017
16: Firmware Update This command initiates an image upload. This feature is protected.
17: Set High Baud Change Baud Rate to 9600 baud
18: Set Low Baud Change Baud Rate to 1200 (default)
Baud rate change must be handled in a specific way. Since most applications expect WK3 to run at
1200 baud, this is always the default and will be reinstated whenever WK3 is closed. If an
application wants to run at 9600 baud, it must start out at 1200 baud mode and then issue the Set
High Baud command. When the application closes it should issue a WK close command which will
reset the baud rate to 1200.
19: Set K1EL Antenna Switch Function not currently documented, reserved for future release.
20: Set WK3 Mode Enables WinKeyer 3 functions; expanded X1MODE and additional X2MODE
register
21: Read Back Vcc Return WK IC power supply voltage. This command returns a single byte which
can be converted to voltage: 26214/byte value = Voltage*100
22: Load X2MODE Load mode extension register 2. This register is active on WK3 mode only.
alue nn Bits Function
7 (MSB) Paddle status On when set
6 Fast command response on when set
This applies to standalone PB press.
5 Cut 9 : Substitute N for 9 when set
4 Cut 0: Substitute T for 0 when set
3 Paddle only sidetone when set
2 SO2R mode (PTT1 = radio select)
1 Paddle Mute when set
0 Spare
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 6
K1EL WinKeyer3 CW Processor/Keyer
V
N
F
● Sidetone Control <01><nn> nn is a value described below
WK3 Pin 8 functions as the sidetone square wave output and supports the legacy WK1 and WK2 sidetone
schemes. When not in WK3 mode the sidetone selections are governed by table 4 and 5 below. Note that WK3 frequencies will be slightly different than those shown in the table.
alue nn Bits Function
7 (MSB) Enable Paddle Only Sidetone when = 1
6-4 Unused set to zero
3-0 Sidetone frequency N (See Table 4 below)
Table 4 – WK1 and WK2 Sidetone Control Assignments
The most significant bit of the frequency byte controls the paddle only sidetone feature which was introduced
in WK2. You can choose to only use sidetone for paddle entry and mute it for CW sourced from the host
port. This is called Paddle Only Sidetone and is selected by setting the MSB of the sidetone control value.
In WK3 mode, the sidetone frequency is continuously adjustable between 500 and 4000Hz. All bits of the
sidetone control register are used. The formula for the value is 62500/frequency. For example: nn = 62 for
1000 Hz. Due to integer round off, the setting is approximate and will be within 5% of the frequency
specified. In WK3 mode, the paddle only sidetone control bit is relocated to the X2MODE register.
requency
● Set WPM Speed <02><nn> nn is in the range of 5-99 WPM
Example: <02><12> set 18 WPM
Set a new Morse operating speed, this command takes effect as soon as WK3 receives it. If the speed is set
to zero then WK3 will take its speed setting directly from the speed pot, this is the reset default.
● Set Weighting <03><nn> nn is in the range of 10-90%
Example: <03><32> for weight=50
This command allows a proportional amount to be either added or subtracted from the length of all
transmitted dits and dahs. A value of 50 (0x32) selects no weighting adjustment. Values less than 50
reduce weighting and values greater than 50 increase weighting. Note that weighting does not affect
sending speed because any increase in keyed time is subtracted from spacing time. Reduction in weighting
results in a thinner sounding keying while increased weighting results in a heavier sound. Since weighting
tracks speed, a given weighting will sound the same at all speeds.
Decreased Weighting
Normal R
Increased Weighting
● Set PTT Lead/Tail <04><nn1><nn2> nn1=lead in time, nn2=tail time
Example: <04><01><A0> lead-in=1, tail=160
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Figure 4 - Weighting Example
WEIGHTED DIT TIME =
(((WEIGHT×50)/50)×DIT TIME)
WEIGHTED DAH TIME =
(((WEIGHT×50)/50)×DAH TIME)
Rev 1.2 Page 7
K1EL WinKeyer3 CW Processor/Keyer
Values can be 0 to 250 in 10 mSecs steps
WK3 provides a transmitter PTT output for each key output that can be used to switch a transmitter or linear
amplifier over to transmit mode in advance of actual CW keying. You have control over the time delay
between when PTT is asserted and when CW keying will start, this is lead-in. You also have control over
how long the transmitter will stay in transmit after keying has stopped. These delay settings apply to both
key ports. The trailing delay is handled differently for CW sent by paddle and CW sent by “machine”. Paddle
delay is controlled by the Hang Time setting in the PINCFG register (see the SetPinConfig command). The
Tail setting determines the delay used for CW sent by an internal message or CW sent by a Host
application. The formula to calculate tail time is:
Examples: At 20 WPM, Tail set to 7, Tail Delay = (3x60)+(7x10) = 250 mSec
At 40 WPM, Tail set to 7, Tail Delay = (3x30)+(7x10) = 160 mSec
At 20 WPM, Tail set to 0, Tail Delay = (3x60)+(0x10) = 180 mSec
Tail Delay = Three Dit Times + (Tail Setting times 10 milliseconds)
At 15 WPM, Tail set to 55, Tail Delay = (3x80)+(55x10) = 790 mSec
PTT
Key
Lead-in DelayTail Delay
The letter A
Figure 5 – PTT Lead-in and Tail Example
A detailed description of PTT functionality can be found on page 15.
This command sets the limits for the speed pot. MINWPM sets the lowest value returned; WPMRANGE
indirectly specifies the maximum value returned. For example if MINWPM=10 and WPMRANGE=15, the full
pot swing values, min to max, would be 10 to 25 WPM. Note that the max value is MINWPM+WPMRANGE.
The value of the third parameter is not used but it must be included to maintain backward compatibility for
applications supporting only WK1 keyers. Recommendation is to set this to zero but any value is accepted.
470
WK2 Pin 10
10K
.0047uF
Figure 6 – Speed Pot Circuit
● Set Pause State <06><nn> nn = 01 pause, value = 00 unpause
When WK3 is paused, sending will stop immediately and will not resume until pause is cancelled. The
current character being sent in Morse will be completed before pausing. The Clear Buffer command will
cancel a pause state.
● Get Speed Pot <07> Return WinKeyer3’s current speed pot setting
This command will cause a speed pot command request to be queued which will be acted on as soon as
possible. Depending on current processing load, the pot status byte will be sent within 200 milliseconds after
command receipt. The application should not wait for a response but process the returned data in an
unsolicited status handler. The returned value will range from 0 to 31 and will be the actual speed pot value
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 8
K1EL WinKeyer3 CW Processor/Keyer
minus the MIN_WPM setting. The speed pot is windowed into a 32 step range between 5 to 99 WPM (see
Setup SpeedPot command). The two MS Bits of a Speed Pot status byte will always be b10:
1 0 6 bit value in WPM
Table 6 - Speed Pot Status Byte Format
● Backspace <08> Backup the input buffer pointer by one character.
This command is only meaningful if there is something in the serial input buffer, otherwise it is ignored.
● Set PinConfig <09><nn> Set the PINCFG Register
Low nibble determines how output pins are mapped
High nibble controls ultimatic mode and hang time
The original WK1 IC was in an 8 pin package in which Pin 5 was a shared resource, it could be assigned as
a PTT output, a Sidetone output, or a secondary Key output: If it was assigned as a PTT output, that meant
it was not possible to output sidetone. Likewise if it was assigned as a secondary Key output, sidetone or
PTT were not allowed. When WK was moved to a 14 pin package, separate outputs were provided.
Bit 7-4 Bit 3 Bit 2 Bit 1 Bit 0
See Below Pin5 KeyOut
Enable
In the 14 pin package, there is a dedicated sidetone pin, two PTT outputs, and two Key outputs. The pin
config assignments are compatible with WK1 for backwards software compatibility. For example Bit 0
specifies whether PTT should be used, Bit 1 specifies whether Sidetone is enabled, and Bits 2 and 3 select
which key port is active. If Key Port 1 and PTT is enabled, PTT1 will be asserted in sync with KEY1. If Key
Port 2 is enabled, KEY2 and PTT2 are activated.
Bit 7-4 Bit 3 Bit 2 Bit 1 Bit 0
See Below KeyOut 1
Enable
The WK2/WK3 PINCFG register also includes two additional features; Ultimatic Dit/Dah priority and Paddle
hang time. These settings are allocated to the upper four bits as follows:
Pin3 KeyOut
Enable
Table 7 – WK1 PINCFG Format (for reference)
KeyOut 2
Enable
Table 8 – WK3/WK2 PINCFG Format
Pin 5 Sidetone
Enable
Sidetone
Enable
Pin5 PTT
Enable
PTT Enable
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3-0
Ult Priority 1 Ult Priority 0 Hang Time
1
Table 9 – WK1/WK2/WK3 Priority/Hang Time Format
Hang Time
0
See Above
Ultimatic Priority = 00 Normal Ultimatic
Ultimatic Priority = 01 Send dahs when both paddles are pressed in Ultimatic mode
Ultimatic Priority = 10 Send dits when both paddles are pressed in Ultimatic mode
Ultimatic Priority = 11 Undefined
Hang Time = 00 Wait 1 wordspace + 1 dit before ending paddle insertion
Hang Time = 01 Wait 1 wordspace + 2 dits before ending paddle insertion
Hang Time = 10 Wait 1 wordspace + 4 dits before ending paddle insertion
Hang Time = 11 Wait 1 wordspace + 8 dits before ending paddle insertion
Hang Time is similar to tail time in that it holds PTT on between paddle presses, but it is proportional to
sending speed since it is measured in word space time while tail time is mostly a fixed delay.
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 9
K1EL WinKeyer3 CW Processor/Keyer
● Clear Buffer <0A> Reset Input Buffer Pointers
This command will reset the input buffer pointers to an empty state. In addition, Tune and Pause are cancelled
by this command.
Clear Buffer can be sent at any time to abort a message, abort a command, or to clear the serial buffer. It
will cancel any Morse character in progress immediately ending it in midstream if necessary.
● Key Immediate <0B><nn> nn = 01 key down, n = 00 key up
Use this command to implement a tune function. Once asserted, key down will remain in effect until either a key
immediate with a zero value is received or the internal tune watchdog timer expires. The tune timer is hard coded
to a value of 100 seconds and cannot be disabled. Key down can be aborted either by the paddles or by a clear
buffer command.
● Set HSCW <0C><nn> nn = the lpm rate divided by 100
WK3 supports HSCW (High Speed CW) transmit rates through the use of this immediate command. .
For example nn=20 selects 2000 lpm and nn=35 selects 3500 lpm. Any rate from 1000 to 8000 can be
picked but only a few are used by radio amateurs. In the US, common rates are 1000, 2000, 4000 and 6000
lpm while in Europe 1000, 1500, 3000, 4000 lpm are common.
● Set Farns WPM <0D><nn> nn is in the range of 10-99
Example: <0D><12> for Farnsworth=18 WPM
Farnsworth spacing is useful for CW practice because it encourages you to learn characters by sound not
individual dits and dahs. When Farnsworth is enabled, letters are sent at a fixed rate of nn WPM while
spacing between characters is determined by the sending WPM rate. When the WPM rate is set above the
Farnsworth WPM, Farnsworth is automatically disabled.
● Set WinKeyer Mode <0E><nn> nn = Mode bit field in binary
Example: <0E><13> set bits 4,1,0, clear the rest
The operational mode of WK3 is controlled by the mode register.
Bit 7
WK3 has a paddle watchdog counter that disables the key output after 128 consecutive dits or dahs. WK3
assumes that this is an unintended condition and keying outputs are turned off. Sidetone remains on to alert
the user. Paddle watchdog is on by default but it can be turned off by setting this mode bit.
Bit 6
When this bit is set to one all characters entered on the paddles will be echoed back to the host. From the
host's perspective, paddle echo and serial echo are the same; in both cases a letter sent in Morse by WK3 is
echoed back to the host. The echo occurs after the letter has been completely sent. The host can determine
10 = Ultimatic 11 = Bug Mode
Table 10 – WK3 Mode Selection Table
The WK3 mode register is cleared at reset.
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 10
K1EL WinKeyer3 CW Processor/Keyer
the source by the sense of the “break-in” status bit. If this bit is high when the echoed letter comes in, then
the letter’s source was from the paddles, if break-in is low the source if from the serial port.
Bit 5, 4
WK3 supports iambic A, B, Ultimatic, and Bug keying modes. In iambic mode, WK3 sends dits and dahs
automatically based on which paddle you press. In bug mode WK3 sends the dits and you manually send
the dahs. You also can use bug mode to operate in straight key mode or if you want to key through WK3
with a different keyer, simply set bug mode and use the dah input to key WK3.
In either iambic mode, alternating dits and dahs are sent while both paddles are held closed. In mode B an
extra alternate dit or dah is sent after both paddles are released. In Ultimatic mode when both paddles are
pressed the keyer will send a continuous stream of whichever paddle was last pressed.
Bit 3
This bit swaps the operation of the dit and dah paddles. It’s used mostly to accomodate left handed ops or to
correct for a miswire in the keying cable.
Bit 2
Serial Echo Back tells WK3 to echo each Morse letter that originated at the host. It can be used to allow a
host application to stay exactly in sync with Morse letters as they are sent. Each letter is sent to the host
after it has been sent in Morse. This permits the host to track WK3’s progress in real time. Note that buffered
commands and their parameters are not echoed back to the host.
Bit 1
Autospace works in the following way: If you pause for more than one dit time between a dit or dah, WK3 will
interpret this as a letter-space and will not send the next dit or dah until the full letter-space time has been
met. The normal letter-space is 3 dit spaces. WK3 has a paddle event memory so that you can enter dits or
dahs during the inter-letter space and WK3 will send them as they were entered. With a little practice,
autospace will help you to send near perfect Morse.
Bit 0
When contest spacing is enabled, wordspace time is reduced by one dit. Instead of 7 dits per wordspace,
contest spacing selects six dits per wordspace.
● Load Defaults <0F><value list> value list is a set of 15 binary values
This command is used to load all of WK3’s operating parameters to be loaded in one block transfer. The
values are binary and must be loaded in order. The values are exactly the same as those loaded for the
individual commands. The preferred time to issue this command is at reset just after the interface has been
opened. Do not issue this command while WK3 is transmitting.
1) Mode Register 2) Speed in WPM 3) Sidetone Frequency
13) Dit/Dah Ratio 14) Pin Configuration 15) X1 Mode
Table 11 - Default Value List in order of issuance
● Set 1
This command is no longer supported in WK3, it will be accepted but is ignored.
st
Extension <10><nn> nn is in the range of (0 to 250) × 1 mSecs
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 11
K1EL WinKeyer3 CW Processor/Keyer
● Set Key Comp <11><nn> nn is in the range of (0 to 250) × 1 mSecs
Example: <11><B4> sets key comp to 180 mSecs
Keying Compensation allows a fixed amount to be added to the length of all dits and dahs. QSK keying on
modern transceivers can cause shortening of dit and dah elements which is especially noticeable at high
speeds. WK3 can compensate for the shortening by adding a uniform length to each dit and dah element.
The adjustments are made in one-millisecond steps and the maximum adjustment allowed is 250 mSecs.
Key compensation is very similar to Weighting in that an adjustment added to a dit or dah is then subtracted
from the spacing between them so the overall speed is not changed. The difference between weighting and
compensation is that compensation is independent of speed, so if 10 msec of key compensation is selected,
10 msec will be always be added regardless of speed. Be aware that at high speeds, large values of key
compensation can reduce inter-element space to zero.
In the following figure, an R is represented without key compensation (nn = 00) and with 12 mSecs of key
compensation (nn = 12). Note that each dit or dah starts at the same place with compensation on.
Normal R
Key Compensation
Figure 7 – Keying Compensation Example
● Set Paddle Switchpoint <12><nn> nn is in the range of 10-90%
Example: <03><37> for a switchpoint = 55 decimal
This setting controls when WK3 will start looking for a new paddle press after sensing the current one. If
there is not enough delay, the keyer could send unwanted dits or dahs. If there is too much delay, the
operator is held back because they can't paddle ahead. The default value is one dit time (50) and is
adjustable in percent of a dit time. Faster operators report a setting somewhat less than default is optimal.
If the paddle sensitivity is set to zero, dit and dah paddle memory is disabled.
The delay is calculated with this formula:
DELAY_TIME = (SWITCHPOINT×DIT_TIME)/50 where Switchpoint is a value between 10 and 90.
● Null Command <13> This command is ignored
In some situations there is a need to insert a placeholder in the serial data stream. This command provides
that function. It occupies a stream position but is ignored by the Morse processor.
● Software Paddle <14><nn> nn = 00 paddle up, n=01 dit, n=02 dah, n=03 both
This command provides a means to assert the paddle input from the host. The host application can implement a
keyboard paddle by converting PC up/down key codes to Software Paddle commands. Due to the slow response
time of the keyboard, operating system, and serial communication, it can be a challenge to get this scheme to
work above 20 WPM. The paddle watchdog guards this interface in the same way as normal paddle input.
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 12
K1EL WinKeyer3 CW Processor/Keyer
● Request WinKeyer Status <15> Return WinKeyer status byte
This command queues a request to WK3 to send its current operating state. The status byte returned consists of
a bit field that is defined by one of the following tables, as determined by the current WK mode. The three MSBs
of the status byte are always b110. Note that in WK2 mode mode bit 3 identifies the status byte as a pushbutton
status byte. WK2 and/or WK3 mode is set by ADMIN commands (see pages 5 & 6).
Status Bit Name Definition
7 (MSB) Tag 1
6 Tag 1
5 Tag 0
4 WAIT WK is waiting for an internally timed event to finish
3 KEYDOWN Key down status (Tune) 1 = key down
2 BUSY Keyer is busy sending Morse when = 1
1 BREAKIN Paddle break-in active when = 1
0 (LSB) XOFF Buffer is more than 2/3 full when = 1
Table 11 – WinKeyer Status Definition WK1 compatible mode
Status Bit Name Definition
7 (MSB) Tag 1
6 Tag 1
5 Tag 0
4 WAIT WK is waiting for an internally timed event to finish
3 0 This is a WK Status Byte
2 BUSY Keyer is busy sending Morse when = 1
1 BREAKIN Paddle break-in active when = 1
0 (LSB) XOFF Buffer is more than 2/3 full when = 1
Table 12 – WinKeyer Status Definitions (WK2 Mode)
Status Bit Name Definition
7 (MSB) Tag 1
6 Tag 1
5 Tag 0
4 PB4STAT 1 when PB4 pressed, 0 when PB4 unpressed
3 1 This is a pushbutton status byte
2 PB3STAT 1 when PB3 pressed, 0 when PB3 unpressed
1 PB2STAT 1 when PB2 pressed, 0 when PB2 unpressed
0 (LSB) PB1STAT 1 when PB1 pressed, 0 when PB1 unpressed
Table 13 – WinKeyer Pushbutton Status Definitions (WK2 Mode)
A PB status byte is sent whenever the PB state changes, in other words a byte will be sent when a pushbutton is
pressed and a byte will be sent when the pushbutton is released. Only one press will be detected at a time.
● Pointer Command <16><nn> Input Buffer Command Set
This command allows the host app to manipulate the input buffer for special situations such as “on the fly”
callsign correction. Four commands make up the pointer command set:
nn=00 Reset input buffer pointers to start of buffer, only issue this when buffer is empty.
nn=01 Move input pointer to new position in overwrite mode
nn=02 Move input pointer to new position in append mode
nn=03 Add multiple nulls to the buffer <16><03><number of nulls>
A detailed description of the pointer command is detailed in a separate application note.
● Set Dit/Dah Ratio <17><nn> nn is in the range of 33-66 decimal
Modifies the ratio of dit time to dah time. Standard ratio is 1:3 (dit:dah) when nn = 50
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 13
K1EL WinKeyer3 CW Processor/Keyer
The formula to determine dah/dit ratio is: DAH/DIT = 3∗(nn/50)
A value of 50 selects 1:3, a value of 33 would select 1:2, and a value of 66 would select 1:4. This causes an
intentional distortion of the Morse waveform. Some ops use this option to make their CW sound less
“machine like” but a little goes a long way !
1:2 Dit \Dah Ratio
Normal Ratio
1:4 Dit \Dah Ratio
Figure 8 – Three ratio settings for the letter R
Buffered Commands
These commands go into the input buffer maintaining their positional relationship to data.
● PTT On/Off <18><nn> nn = 01 PTT on, n = 00 PTT off
This command allows the PTT output to be used for a custom purpose. The command is operational only
when PTT is disabled (see PINCFG command on page 9). PTT can be turned on or off at will and is not
affected by transmit or any other command including Clear Buffer. Typical applications could be a power
level control, antenna selector, or to turn on a cooling fan. Since this is a buffered command, the change in
PTT will happen at the command’s position in the buffer and remain in effect until the next PTT ON/OFF
command is encountered. This command will not stall the output buffer.
● Key Buffered <19><nn> nn = 0 to 99 seconds
Use this command to assert the key output for a specific period of time. Since this is a buffered command, key
down will begin at the command’s position in the buffer and will stop transmit until the timeout has been satisfied.
The key down can be aborted either by the paddles or a Clear Buffer command. The maximum key down time is
99 seconds.
● Wait for nn Seconds <1A><nn> nn = 0 to 99 seconds
This command is used to insert a fixed pause into a message. Since this is a buffered command, the pause will
begin at the command’s position in the buffer and will halt transmit until the timeout has been satisfied. The wait
can be aborted either by the paddles or by a Clear Buffer command. The maximum key down time is 99
seconds.
● Merge Letters <1B>[C][C] Merge Two Letters into a Prosign
You can build "on the fly" prosigns with this command. Issue the merge command followed by two letters or
numbers and they will be merged together: <1B> [A] [R] is sent as AR. Note that nothing will be sent until
both letters have been received. Several common prosigns such as AR, SK, BT, and DN are already
assigned (see page 16). One application of this feature is to send special European language characters.
WinKeyer3 IC Interface & Operation Manual 6/11/2017
Rev 1.2 Page 14
Loading...
+ 32 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.