¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io

Which version of the firmware supports rotary encoders


 

At present, this toggle switch, always feels not silky enough, not sensitive enough, look at the latest version of DEEPVNA-101 replaced with a rotary encoder, nanovna has which version of the firmware to support this function


 

Hi,

The DeepVNA-101 only supports Deep Elec firmware. The latest version is V1.0.5.
It does not support FW written for the NanoVNA-H /-H4 by Hugen or DiSlord.

HTH...Bob VK2ZRE

On 3/03/2024 8:18 pm, blackberryer wrote:
At present, this toggle switch, always feels not silky enough, not sensitive enough, look at the latest version of DEEPVNA-101 replaced with a rotary encoder, nanovna has which version of the firmware to support this function





 

This was discussed 4 years ago and the developer(s) decided not to implement it since you also have the touch screen and at the time, code storage on the original devices was at a premium.
A few owners decided to add push buttons instead.
Have a look in the WIKI: /g/nanovna-users/wiki/13194#Buttons-and-switches
Also have a look in the FILES area under mods.


 

³Ù³ó²¹²Ô°ì²õ£¬

I've recently taken some time to add a rotary encoder and the basic functionality is implemented, the menu bar scrolls well, but the trace scrolling shows that the marker points are moving too slowly.

I use PA1 and PA2 as the channels of the encoder, and I use interrupts to implement the function.

static const EXTConfig extcfg = {
{
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_FALLING_EDGE | EXT_CH_MODE_AUTOSTART | EXT_MODE_GPIOA, extcb1},
{EXT_CH_MODE_FALLING_EDGE | EXT_CH_MODE_AUTOSTART | EXT_MODE_GPIOA, extcb1},
{EXT_CH_MODE_FALLING_EDGE | EXT_CH_MODE_AUTOSTART | EXT_MODE_GPIOA, extcb1},
{EXT_CH_MODE_FALLING_EDGE | EXT_CH_MODE_AUTOSTART | EXT_MODE_GPIOA, extcb2},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL},
{EXT_CH_MODE_DISABLED, NULL}
}
};


static void extcb1(EXTDriver *extp, expchannel_t channel)
{
(void)extp;
(void)channel;

#if ROTARY_ENCODER
if (!palReadLine(LINE_EXT_ENCODERPB))
operation_requested|=OP_LEVER;
//encoderDir = palReadLine(LINE_EXT_ENCODERB);
if (palReadLine(LINE_EXT_ENCODERB))
ClockWiseCounter ++;
else//if (encoderDir == antiClockWise)
antiClockWiseCounter ++;
if(ClockWiseCounter >= ENCODER_DEBOUNCE_TICKS)
{
ClockWiseCounter = 0;
antiClockWiseCounter = 0;
encoderDir = clockWise;
operation_requested|=OP_LEVER;
}
else if (antiClockWiseCounter >= ENCODER_DEBOUNCE_TICKS)
{
ClockWiseCounter = 0;
antiClockWiseCounter = 0;
encoderDir = antiClockWise;
operation_requested|=OP_LEVER;
}
#else
operation_requested|=OP_LEVER;
#endif // END OF ROTARY_ENCODER
}