Menu:



Version:

Jan 10, 2025:
Revised: v1.1

Adding User-programmable Start-up Tone 

to the Multi-tone CTCSS Tone Encoder

This describes a small upgrade for my multi-tone CTCSS encoder. It allows the CTCSS tone generated at power-up to be programmed by the user. 
All other features remain unchanged including the small 64 x 32 (or 72 x 40) tiny OLED CTCSS frequency display and the ability for the user to select any of the 50 standard CTCSS tones.
Figure 1 : My original multi-tone 
CTCSS encoder with tiny OLED display


Introduction

My compact multi-tone CTCSS encoder has been one of my most popular projects. It is really easy to build with fewer than 20 parts. Adding it to an existing legacy FM transceiver to give access to a variety of CTCSS-controlled repeaters is also usually quite easy. You can read about a couple of versions of this original multi-tone encoder here.

Making it so small with a 8-pin microcontroller resulted in one important limitation. Whenever the unit was turned on,
the first CTCSS tone generated by the encoder was always 123.0Hz. This was hard-coded into the software. If the repeater that you routinely used required another CTCSS tone, say 146.2Hz, then every time you turned your transceiver on along with the multi-tone CTCSS encoder, you had to select 146.2Hz again. Yes, that's was bit of an issue after doing it the first dozen times.

Startup CTCSS Tone Modification

This software update resolves that issue. My modified software allows the user to select and save any of the 50 CTCSS tones in EEPROM memory for use as the starting tone.

This software change also requires an additional resistor to be added to the original circuit. It also uses the pushbutton integrated on the shaft of most rotary encoders. Pressing and holding this switch for more than about half-a-second automatically saves the currently selected tone in the ATtiny85's EEPROM memory as the start-up tone.
If your rotary encoder does not have this switch, a separate momentary SPST switch may be used instead.

Everything else works as usual i.e. Rotating the encoder allows any of the 50 CTCSS tones to be selected and generated instantly, very precisely, and with minimal distortion.

Circuit Changes

Figure 2 shows the modified schematic with the addition of R5, a 1k8 resistor, a jumper to one of the encoder switch contacts, and the grounding of the other switch contact. 


Figure 2 : The memory feature requires several changes (highlighted) to the multitone CTCSS encoder circuit (Right click to see these details more clearly)

Construction

The additional items are shown in Figure 3. I've drawn the changes based on my tiny "universal" CTCSS board. I think it is the clearest way to show the required changes. Obviously similar changes can be made to other PCB versions that I've described.


Figure 3: The changes required to add the memory feature to the basic CTCSS PCB version are minimal

Now, just a couple of brief notes. First, if your encoder operates in reverse i.e. Selecting lower frequency tones when the rotary encoder is rotated clockwise, just reverse the 1k8 and 3k9 resistor connections to the encoder pins. Manufacturers make these encoders in several ways and some can require this change.

Secondly, ite schematic (Figure 2) and wiring diagram (Figure 3) show the multi-tone CTCSS encoder powered from 3.3V but it may be powered from 5V if desired. The CTCSS tone output level will be greater with 5V with a 3.3V supply.

Figure 4 shows a bench test version of my multi-tone CTCSS encoder using the new memory software.


Figure 4: My multitone CTCSS encoder is very compact with its 64x32 pixel OLED display.

Updating the ATtiny85 Software

Updating the software requires reprogramming of the ATtiny85. The bad news is this requires a specialized HV programmer OR a fuse resetting device along with a regular programmer like the very cheap and readily available USBasp programmer.

The "fuse" settings programmed in the ATtiny85 configure the chip's firmware for each application. In the case of the multi-tone CTCSS encoder, the required fuse settings disable the chip's Reset function to allow access to other Pin 1 functions. That setting also prevents programming with a standard programmer.

Expensive HV programmers allow reprogramming without any fuss. Much cheaper fuse resetters allow the fuses to be reset to factory settings first. That allows an ordinary standard programmer to be used again.

And I have a good news for you. I have designed a very cheap fuse resetter. It resets the fuses in any 8-pin ATtiny85 back to the factory-default condition. Using widely available parts and running from a USB port or wall wart, it's a very low cost solution. It also clears the flash and EEPROM memory to allow the Lock fuses to be reset, too. It works on tiny13, tiny25 and tiny45 devices as well. Details can be found here.


When you are ready, email me for the new software (My email address is on my main webpage) Ask me for the startup tone multi-tone CTCSS software. I have so many CTCSS designs here that just asking me for "CTCSS software" will delay your build while we sort out what you actually need. Don't forget to tell me it's for your personal use and not for any commercial purpose etc etc). Then, using this HEX file,
reprogram your ATtiny85 flash program memory.

How do you do this? One example is described here.

After programming the flash memory with the HEX file, don't forget to reprogram the ATtiny fuses with the following HEX values:

High:            &57h    (Disable RST, Save EEPROM)
Low:             &EFh    (for external 8MHz crystal)

And that's it. Turn the new multi-tone CTCSS encoder on and enjoy the new memory feature!




Downloads:


Software: A ZIP file contains the HEX files for directly programming the ATtiny85 chip.
    ** See the text above explaining how to get this file from me. I usually respond quickly to such requests.




Want to go back to the main page? Click here to return directly.