>>> Ссылка на русский README. <<<
This is advanced firmware for ATS-20 that is working on Arduino Nano and Si473x DSP receiver chip. ATS_EX is created by Goshante, based on PU2CLR firmware and inspired by swling.ru firmware with closed source.
Latest version: v1.18 (03.04.2024)
Download binary .hex link: >>> Click here <<<
Fixed some bugs
Please, do not request new features. This firmware has hit the limit of maximum flash size and optimized as much as possible so it's impossible to add new features, there is not enough flash memory for new features. It's also has the bootloader and I am not going to remove it. I only accept tickets about bugs and errors. This firmware works on the verge of ATS-20 capabilities.
If you want to add something new you can try it yourself. All source code is available and present in this repository.
You can use any software capable of flashing a .hex firmware file to Arduino. You will only need a Micro USB cable and a USB UART driver (most likely, it will be the driver for the CH341 controller). I recommend using AVRDUDESS if you are on Windows. It's a simple tool with a GUI that can dump and flash firmware files onto Atmel microcontrollers (Arduino).
There are two types of ATS-20 receivers: Those on Arduino Nano and those on Arduino Uno. They are quite easy to distinguish. You need to disassemble and look. The ones on Nano have the Arduino soldered as a separate board onto the main board. If inside there isn't a soldered board and the ATMega368 chip is directly soldered with all components on one board, then you have the Uno revision. This is important to know before flashing.
You need to select from the Presets section either "Arduino Nano (ATmega328P)" or "Arduino Uno (ATmega328P)", then select your actual COM port and in the "Flash" section specify the path to the .hex firmware file. Choose the Write mode and press the Go button next to it. After this, the flashing will start.
Alternatively, you can compile the firmware yourself from the sources that are in this repository. I use Visual Studio 2022 with the VSMicro extension, which uses Arduino IDE 1.8. You can simply use Arduino IDE, compile the sketch yourself, and upload it to the controller directly from the IDE.
This can happen if you're flashing through a USB port that's not capable of supplying sufficient current to power the controller along with the entire device. If you turn on the receiver before connecting it to the PC and connect it to a USB 3.0 port, your chances of success will be much higher. Yes, the receiver does not use USB 3.0, it has version 2.0, but the third version ports can supply more current. And if it still doesn't help, try to reflash the receiver through the Arduino IDE with a dummy firmware (empty programm), build an empty new project without any logic, and flash it into the receiver. If you flashing Arduino Nano version make sure you selected "Old Bootloader" board version. After that, try to flash the actual firmware into it again.
ATTENTION: After flashing it's strongly recommended to reset EEPROM memory. To do this just hold the Encoder Button while turning receiver on.
Navigate in settings with Encoder Rotation, confirm selection with Encoder Button, change value with Encoder Rotation and save it with Encoder Button. Close settings with BAND- button. Navigate between settings pages with BAND+ button.
ATT : Attenuation value. AUT means Auto Gain Congrol. This value can be AUT and from 1 to 37. Warning: AGC mode (AUT) in any SSB modes will add some constant noize (It is present in ANY firmware). it's not highly noticeble, but still keep this in mind.
SM : Soft Mute. This is number from 0 to 32.
AVC : Automatic Volume Control. This is number from 12 to 90.
SVC : Enable or disable AVC for SSB.
DeE : Only for FM mode. It's DeEmphasis value in microseconds. It can be only 50 or 75.
Syn : Enable or disable Sync mode for SSB.
Scr : Screen brightness adjustment. This is number from 5 to 125.
SW : Frequency units for AM mode in SW band. It can be only KHz or MHz. In MHz mode it used dot as delimiter.
SSM : SSB Soft Mute Mode. It can be only RSS (SM based on RSSI) or SNR (SM based on SNR).
COF : SSB Cutoff Filter. It has 3 modes: On - Band pass filter to cutoff both the unwanted side band and high frequency components. Off - Low pass filter to cutoff the unwanted side band. And AUT mode: Automatically turns on and off, depending on Bandwidth (Off when bandwidth is higher than 2.0 KHz).
CPU : CPU Frequency. This is useful for battery saving purposes. It can be only 100 or 50%. 100% - CPU works on x1 of own frequency, using it's full potential. 50% - CPU works on half of it's own frequency, it's slower, but allowing you to save more battery.
RDS : RDS Decoding error threshold level. The lower this number, the better the RDS text appears, but the lower the chances for successful sync. The higher this value, the easier it is to decode the RDS stream, but it could look messed up frequently. This is number from 0 to 3.
BFO : BFO Offset calibration. One unit of this parameter is *1 Hz 10 or 0.01 KHz. This is permanent BFO offset for SSB. If you think SSB frequency is not precise enough you can calibrate it. Allowed offset value is from -60 to 60 units or from -0.60 KHz to 0.60 KHz**.
Uni : Show/Hide frequency units.
Sca : On/Off station scan feature in AM or FM modes on encoder button. In disabled state encoder button will always act as a Step button.
CW : CW Side mode. Based on LSB or USB modulation.
1. Current modulation. From 149 to 30000 KHz you have AM/LSB/USB/CW modulations available. When Sync is active in SSB modes, the S letter will appear near modulation status. In FM band you have only FM (or WFM) modulation. I don't have NBFM patch for Si473x, so it's not available now.
2. Bandwidth status. Can be AUTO in FM mode. Not available in CW mode.
3. Current frequency. In FM and SSB modes it has fractional part.
4. Band name. There are such bands as LW, MW, SW, CB and FM.
5. Step value. It is different for all modulations, SSB has more precise steps, but doesn't have large. AM has harger steps, but doesn't have precise. If it doesn't have a units suffix, that means that it's Hz.
6. Frequency units. Units are always displayed, except when decimal part of frequency in SSB is 5 digits long.
7. Volume. This is sound volume of receiver. Could be value between 0 and 63. When mute is enabled it displays letter M instead of volume.
8. Battery charge level in percents. Requires voltage divider soldered to A2 pin. Not displayed if not connected. When charge level is too low or USB connected on some revisions this indicator will display ---.
You will need a soldering iron and two resistors of 10kΩ each. Solder one resistor to the negative (ground) and the other directly to the positive of the lithium battery. Then solder their meeting point together; this will be their midpoint. You need to solder it to pin A2 on the controller. Thus, half of the battery voltage will be applied to it. By making such a simple modification, the ATX_EX firmware will automatically detect the connected battery voltage pin and start displaying the charge.