When changing RESET line, delay 20ms
authorKeith Packard <keithp@keithp.com>
Fri, 9 Apr 2010 00:28:17 +0000 (17:28 -0700)
committerKeith Packard <keithp@keithp.com>
Fri, 9 Apr 2010 00:28:17 +0000 (17:28 -0700)
The GPS data sheet suggests a 1uF cap on the reset line to ensure it
is held low long enough for the power supply to come up to voltage. TM
v1.0 loads a 0.001uF cap there, but in case that isn't large enough,
it could be replaced with the larger one. This change makes sure that
even with that larger value, the debugging link will be able to reset
the target.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/ao_dbg.c

index d0633f9288afceeaf084480b68846228f52af9e0..2fc266e3f38c462083e746d1a38db9c4449cf2ee 100644 (file)
@@ -184,6 +184,12 @@ ao_dbg_long_delay(void)
                _asm nop _endasm;
 }
 
+static void
+ao_dbg_reset_delay(void)
+{
+       ao_delay(AO_MS_TO_TICKS(20));
+}
+
 void
 ao_dbg_debug_mode(void)
 {
@@ -192,7 +198,7 @@ ao_dbg_debug_mode(void)
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|DBG_RESET_N);
        ao_dbg_long_delay();
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N,     0    |DBG_DATA|    0    );
-       ao_dbg_long_delay();
+       ao_dbg_reset_delay();
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
        ao_dbg_long_delay();
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N,     0    |DBG_DATA|    0    );
@@ -200,7 +206,7 @@ ao_dbg_debug_mode(void)
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
        ao_dbg_long_delay();
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N,     0    |DBG_DATA|DBG_RESET_N);
-       ao_dbg_long_delay();
+       ao_dbg_reset_delay();
 }
 
 void
@@ -211,7 +217,7 @@ ao_dbg_reset(void)
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|DBG_RESET_N);
        ao_dbg_long_delay();
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
-       ao_dbg_long_delay();
+       ao_dbg_reset_delay();
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
        ao_dbg_long_delay();
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
@@ -219,7 +225,7 @@ ao_dbg_reset(void)
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
        ao_dbg_long_delay();
        ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|DBG_RESET_N);
-       ao_dbg_long_delay();
+       ao_dbg_reset_delay();
 }
 
 static void