From efd77c9fd7af019b8a23034af59329a6bd7943fd Mon Sep 17 00:00:00 2001 From: Michael Hayes Date: Fri, 6 Sep 2013 13:42:04 +1200 Subject: [PATCH] Add comment for navswitch delay --- drivers/navswitch.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/navswitch.c b/drivers/navswitch.c index 00fca44..9f63385 100644 --- a/drivers/navswitch.c +++ b/drivers/navswitch.c @@ -118,19 +118,16 @@ navswitch_update (void) MOSFET otherwise will always read logic low and think the switch is pushed. Alternatively, we need to wait 10 us or more so that the gate capacitance of the MOSFET charges via - the pullup resistor. */ + the internal pullup resistor. */ pio_config_set (navswitch_cfg[i].pio, PIO_OUTPUT_HIGH); /* Switch PIO to an input to read switch. */ pio_config_set (navswitch_cfg[i].pio, PIO_PULLUP); - /* I'm unsure why this is needed. It wasn't required for the - slightly slower PIO implementation. There may be a minimum - number of CPU clock cycles for the synchronising flip flops - to propagate the input state? For some reason the boards - made in 2013 need a longer delay. Increasing the charge - time before switching to an input does not help.*/ - DELAY_US (2.0); + /* Wait long enough for MOSFET gate capacitance to discharge + through 2.2 kohm resistor when switch is pushed (connected + to ground). */ + DELAY_US (2.5); navswitch_state[i].current = pio_input_get (navswitch_cfg[i].pio) == 0;