Speed improvement experiments

pull/4/head
erikkaashoek 6 years ago
parent 27eaa8f4b3
commit 269b09d6a7

@ -2712,7 +2712,7 @@ int main(void)
set_mode(M_LOW);
set_sweep_frequency(ST_STOP, (uint32_t) 4000000);
sweep(true);
set_sweep_frequency(ST_STOP, (uint32_t) 35000000);
set_sweep_frequency(ST_STOP, (uint32_t) 350000000);
set_refer_output(-1);
// ui_mode_menu(); // Show menu when autostarting mode

@ -516,7 +516,7 @@ void set_harmonic(int h)
void set_step_delay(int d)
{
if ((2 <= d && d < 300) || d > 30000)
if ((3 <= d && d < 300) || d > 30000)
return;
setting.step_delay = d;
dirty = true;
@ -768,7 +768,7 @@ void apply_settings(void)
SI4432_SetReference(setting.refer);
update_rbw();
if (setting.frequency_step == 0.0) {
if (setting.step_delay <= 1)
if (setting.step_delay <= 2)
actualStepDelay = 0;
else
actualStepDelay = setting.step_delay;
@ -824,6 +824,7 @@ int peakIndex;
float temppeakLevel;
int temppeakIndex;
static unsigned long old_freq[4] = { 0, 0, 0, 0 };
static unsigned long real_old_freq[4] = { 0, 0, 0, 0 };
void setupSA(void)
@ -831,6 +832,8 @@ void setupSA(void)
SI4432_Init();
old_freq[0] = 0;
old_freq[1] = 0;
real_old_freq[0] = 0;
real_old_freq[1] = 0;
SI4432_Sel = 0;
SI4432_Receive();
@ -839,6 +842,8 @@ void setupSA(void)
PE4302_init();
PE4302_Write_Byte(0);
}
extern int SI4432_frequency_changed;
extern int SI4432_offset_changed;
void set_freq(int V, unsigned long freq)
{
@ -846,16 +851,43 @@ void set_freq(int V, unsigned long freq)
if (V <= 1) {
SI4432_Sel = V;
if (freq < 240000000 || freq > 960000000) {
old_freq[V] = freq + 1;
real_old_freq[V] = freq + 1;
return;
}
#if 1
if (setting.step_delay == 2) {
int delta = freq - real_old_freq[V];
if (real_old_freq[V] >= 480000000) // 480MHz, high band
delta = delta >> 1;
if (delta > 0 && delta < 80000) { // use frequency deviation registers
if (1) {
if (real_old_freq[V] >= 480000000)
shell_printf("%d: Offs %q HW %d\r\n", SI4432_Sel, (uint32_t)(real_old_freq[V]+delta*2), real_old_freq[V]);
else
shell_printf("%d: Offs %q HW %d\r\n", SI4432_Sel, (uint32_t)(real_old_freq[V]+delta*1), real_old_freq[V]);
}
delta = delta * 4 / 625; // = 156.25;
SI4432_Write_Byte(0x73, (uint8_t)(delta & 0xff));
uint8_t reg = delta >> 8;
SI4432_Write_Byte(0x74, (uint8_t)((delta >> 8) & 0x03));
SI4432_offset_changed = true;
old_freq[V] = freq;
return;
}
#endif
}
SI4432_Set_Frequency(freq);
SI4432_Write_Byte(0x73, 0);
SI4432_Write_Byte(0x74, 0);
#ifdef __ULTRA_SA__
} else {
ADF4351_set_frequency(V-2,freq,3);
#endif
}
old_freq[V] = freq;
real_old_freq[V] = freq;
}
}
@ -886,7 +918,9 @@ void set_switches(int m)
SI4432_Init();
old_freq[0] = 0;
old_freq[1] = 0;
switch(m) {
real_old_freq[0] = 0;
real_old_freq[1] = 0;
switch(m) {
case M_LOW: // Mixed into 0
#ifdef __ULTRA__
case M_ULTRA:
@ -2724,8 +2758,8 @@ void self_test(int test)
setting.auto_IF = false;
setting.frequency_IF=433900000;
ui_mode_normal();
int i = 13; // calibrate low mode power on 30 MHz;
// int i = 15; // calibrate low mode power on 30 MHz;
// int i = 13; // calibrate low mode power on 30 MHz;
int i = 15; // calibrate low mode power on 30 MHz;
test_prepare(i);
setting.step_delay = 8000;
for (int j= 0; j < 57; j++ ) {

@ -310,6 +310,8 @@ void set_10mhz(uint32_t f)
}
int SI4432_frequency_changed = false;
int SI4432_offset_changed = false;
#if 0
static int old_freq_band[2] = {-1,-1};
static int written[2]= {0,0};
@ -319,6 +321,7 @@ void SI4432_Set_Frequency ( uint32_t Freq ) {
// int mode = SI4432_Read_Byte(0x02) & 0x03;
// SI4432_Write_Byte(0x07, 0x02); // Switch to tune mode
uint8_t hbsel;
if (1) shell_printf("%d: Freq %q\r\n", SI4432_Sel, Freq);
if (Freq >= 480000000U) {
hbsel = 1<<5;
Freq>>=1;
@ -425,6 +428,9 @@ float SI4432_RSSI(uint32_t i, int s)
stepdelay = 280;
}
SI4432_frequency_changed = false;
} else if (SI4432_offset_changed) {
stepdelay = 280 + stepdelay/4;
SI4432_offset_changed = false;
}
if (stepdelay)
my_microsecond_delay(stepdelay);
@ -557,13 +563,13 @@ void SI4432_Init()
SI4432_Sel = 0;
// SI4432_Receive();// Enable receiver chain
// SI4432_Write_Byte(0x09, V0_XTAL_CAPACITANCE);// Tune the crystal
SI4432_Set_Frequency(433800000);
// SI4432_Set_Frequency(433800000);
SI4432_Write_Byte(0x0D, 0x1F) ; // Set GPIO2 output to ground
SI4432_Sel = 1;
// SI4432_Write_Byte(0x09, V1_XTAL_CAPACITANCE);// Tune the crystal
SI4432_Set_Frequency(443800000);
// SI4432_Set_Frequency(443800000);
SI4432_Write_Byte(0x0D, 0x1F) ; // Set GPIO2 output to ground
// SI4432_Write_Byte(0x6D, 0x1C);//Set low power

@ -1389,6 +1389,7 @@ static const menuitem_t menu_scanning_speed[] =
{
{ MT_CALLBACK, 0, "FAST", menu_scanning_speed_cb},
{ MT_CALLBACK, 1, "PRECISE", menu_scanning_speed_cb},
{ MT_CALLBACK, 2, "\2EXTRA\0FAST", menu_scanning_speed_cb},
{ MT_KEYPAD, KM_SAMPLETIME, "\2SAMPLE\0DELAY", "300..30000"},
{ MT_CANCEL, 0, "\032 BACK", NULL },
{ MT_NONE, 0, NULL, NULL } // sentinel

Loading…
Cancel
Save

Powered by TurnKey Linux.