diff --git a/gpio.c b/gpio.c index 55f8f369..755f750e 100644 --- a/gpio.c +++ b/gpio.c @@ -173,7 +173,7 @@ ENCODER encoders_controller2_v1[MAX_ENCODERS]={ }; ENCODER encoders_controller2_v2[MAX_ENCODERS]={ - {TRUE,TRUE,5,1,6,1,0,RF_GAIN,R_START,TRUE,TRUE,26,1,20,1,0,AF_GAIN,R_START,TRUE,TRUE,22,MENU_BAND,0L}, + {TRUE,TRUE,5,1,6,1,0,DRIVE,R_START,TRUE,TRUE,26,1,20,1,0,AF_GAIN,R_START,TRUE,TRUE,22,MENU_BAND,0L}, {TRUE,TRUE,9,1,7,1,0,ATTENUATION,R_START,TRUE,TRUE,21,1,4,1,0,AGC_GAIN,R_START,TRUE,TRUE,27,MENU_MODE,0L}, {TRUE,TRUE,11,1,10,1,0,IF_WIDTH,R_START,TRUE,TRUE,19,1,16,1,0,IF_SHIFT,R_START,TRUE,TRUE,23,MENU_FILTER,0L}, {TRUE,TRUE,13,1,12,1,0,XIT,R_START,TRUE,TRUE,8,1,25,1,0,RIT,R_START,TRUE,TRUE,24,MENU_FREQUENCY,0L}, diff --git a/i2c.c b/i2c.c index 711cd87a..b111bebb 100644 --- a/i2c.c +++ b/i2c.c @@ -77,15 +77,38 @@ static void frequencyStep(int pos) { vfo_step(pos); } +static uint64_t epochMilli; + +static void initialiseEpoch() { + struct timespec ts ; + + clock_gettime (CLOCK_MONOTONIC_RAW, &ts) ; + epochMilli = (uint64_t)ts.tv_sec * (uint64_t)1000 + (uint64_t)(ts.tv_nsec / 1000000L) ; +} + +static uint32_t millis () { + uint64_t now ; + struct timespec ts ; + clock_gettime (CLOCK_MONOTONIC_RAW, &ts) ; + now = (uint64_t)ts.tv_sec * (uint64_t)1000 + (uint64_t)(ts.tv_nsec / 1000000L) ; + return (uint32_t)(now - epochMilli) ; +} + +static uint32_t debounce_time=50; // 50ms +static uint32_t t; +static uint32_t debounce=0; + void i2c_interrupt() { unsigned int flags; unsigned int ints; + t=millis(); do { flags=read_word_data(0x0E); if(flags) { ints=read_word_data(0x10); g_print("%s: flags=%04X ints=%04X\n",__FUNCTION__,flags,ints); + if(t