Simple digital modes generator for RPI Pico
Originaly made for testing RTTY on R-154-2(M) receiver
Currently supports CW, RTTY and hellschreiber
Mode | Mode ID | LEDs |
---|---|---|
Carier | 0 | 00 |
CW | 1 | 01 |
RTTY | 2 | 10 |
HELL | 3 | 11 |
HW connections
Both EEPROM and SI5351 share the same bus.SDA: 4
DCL: 5
ERROR LED: 2
TTY_TX_PIN: 8
TTY_RX_PIN: 9
MODE0_LED_PIN: 10
MODE1_LED_PIN: 11
RUNNING_LED_PIN: 13
SPACE_LED_PIN: 15
MARK_LED_PIN: 14
PROG1_LED_PIN: 16
PROG2_LED_PIN: 17
PROG3_LED_PIN: 18
PROGRAM_BTN_PIN: 20
TEST_BTN_PIN: 21
RUN_FROM_EEPROM_BTN_PIN: 22
Command | description | example syntax |
---|---|---|
help | prints help | help |
config | prints current config | config |
txen x | sets the carier tx state | txen 1 |
drives x | sets the SI5351 drive strenght 0=2mA 1=4mA 2=6mA 3=8mA | drives 3 |
cfreq x | sets center frequency | cfreq 7100000 |
sfreq x | sets frequency deviation | sfreq 125 |
cwspeed x | sets CW speed in WPM | cwspeed 25 |
baud x | sets baudrate | baud 50 |
settext | sets custom tx message | settext |
txtext | transmits custom tx message with current mode | txtext |
txmode x | sets the tx mode, 0:carier 1:CW 2:RTTY 3:HELL | txmode 1 |
mancwtx | starts direct CW transmition | mancwtx |
manrttytx | starts direct RTTY transmision | manrttytx |
savep x | saves current config to location x in EEPROM | savep 7 |
loadp x | loads config from preset x | loadp 7 |
txtext | transmits saved message | txtext |
default | memory formating | default |
hellspeed x | sets the hell baudrate | hellspeed 125 |
manhelltx | starts direct HELL transmision | manhelltx |
txbeacon x | starts beaconing saved text in x seconds period | txbeacon 3 |
Important
To exit any direct transmition use ctrl+c.
Tip
You can run preset from memory using "RUN EEPROM" button after choosing the preset using "CYCLE EEPROM".
Warning
Hellschreiber was not tuned yet, so it might be a bit off.
EEPROM memory map
0x0000-0x003f last config0x0040-0x007f preset 0
0x0080-0x00bf preset 1
0x00c0-0x00ff preset 2
0x0100-0x013f preset 3
0x0140-0x017f preset 4
0x0180-0x01bf preset 5
0x01c0-0x01ff preset 6
0x0200-0x023f preset 7
0x0240-0x027f Calibration data
Preset organisation:
Each preset is 64 bytes long
value | offset | type | size |
---|---|---|---|
mode | 0 | uint8 | 1B |
cfreq | 1 | uint64 | 8B |
sfreq | 9 | uint64 | 8B |
baudrate | 17 | uint16 | 2B |
cw speed | 19 | uint8 | 1B |
drive strenght | 20 | uint8 | 1B |
hell speed | 20 | uint8 | 1B |
custom text length | 31 | uint8 | 1B |
custom text | 32 | char array | 32B |
- Make it posible o load preset from console (curently posible only from buttons)
- Add posibility to set drive strenght (2mA/4mA/6mA/8mA)
- Add calibration procedure
- Add detection of uninitiated memory and automatic initialization
- Add command to enter custom message for preset
- Add beacon mode
- Make beacon loadable by buttons
- Add Hellschreiber
- Complete Hellschreiber LUT
- Add suport for TTY/HELL interface. (3.5mm jack)
- Optimize memory usage. (no need for 64bit uint for frequency etc.)
- Use atoi(), atol()... for number input
- Use mode 0 for something more sensible, carier can be turned on in CW
- Expand custom text (realocate EEPROM)