projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't build all the "fat" jar deliverables by default
[fw/altos]
/
src
/
ao_dbg.c
diff --git
a/src/ao_dbg.c
b/src/ao_dbg.c
index b218897c627fd7664aa041a394e14243a553ec95..0d9ec8c0db958a306b9b3b5bc95f1bdf0e14ac3e 100644
(file)
--- a/
src/ao_dbg.c
+++ b/
src/ao_dbg.c
@@
-16,19
+16,12
@@
*/
#include "ao.h"
*/
#include "ao.h"
-
-#define DBG_CLOCK (1 << 3)
-#define DBG_DATA (1 << 4)
-#define DBG_RESET_N (1 << 5)
-
-#define DBG_CLOCK_PIN (P0_3)
-#define DBG_DATA_PIN (P0_4)
-#define DBG_RESET_N_PIN (P0_5)
+#include "ao_pins.h"
static void
ao_dbg_send_bits(uint8_t msk, uint8_t val) __reentrant
{
static void
ao_dbg_send_bits(uint8_t msk, uint8_t val) __reentrant
{
-
P0 = (P0
& ~msk) | (val & msk);
+
DBG_PORT = (DBG_PORT
& ~msk) | (val & msk);
_asm
nop
nop
_asm
nop
nop
@@
-40,8
+33,8
@@
ao_dbg_send_byte(uint8_t byte)
{
__xdata uint8_t b, d;
{
__xdata uint8_t b, d;
-
P0
|= DBG_DATA;
-
P0
DIR |= DBG_DATA;
+
DBG_PORT
|= DBG_DATA;
+
DBG_PORT_
DIR |= DBG_DATA;
for (b = 0; b < 8; b++) {
d = 0;
if (byte & 0x80)
for (b = 0; b < 8; b++) {
d = 0;
if (byte & 0x80)
@@
-50,7
+43,7
@@
ao_dbg_send_byte(uint8_t byte)
ao_dbg_send_bits(DBG_CLOCK|DBG_DATA, DBG_CLOCK|d);
ao_dbg_send_bits(DBG_CLOCK|DBG_DATA, 0 |d);
}
ao_dbg_send_bits(DBG_CLOCK|DBG_DATA, DBG_CLOCK|d);
ao_dbg_send_bits(DBG_CLOCK|DBG_DATA, 0 |d);
}
-
P0
DIR &= ~DBG_DATA;
+
DBG_PORT_
DIR &= ~DBG_DATA;
}
uint8_t
}
uint8_t
@@
-171,20
+164,21
@@
ao_dbg_read_byte(void)
static void
ao_dbg_set_pins(void)
{
static void
ao_dbg_set_pins(void)
{
- /* Disable peripheral use of P0 */
- ADCCFG = 0;
- P0SEL = 0;
+ /* Make the DBG pins GPIOs. On TeleMetrum, this will
+ * disable the SPI link, so don't expect SPI to work after
+ * using the debugger.
+ */
+ DBG_PORT_SEL &= ~(DBG_CLOCK|DBG_DATA|DBG_RESET_N);
-
- /* make P0_4 tri-state */
- P0INP = DBG_DATA;
- P2INP &= ~(P2INP_PDUP0_PULL_DOWN);
+ /* make DBG_DATA tri-state */
+ DBG_PORT_INP |= DBG_DATA;
/* Raise RESET_N and CLOCK */
/* Raise RESET_N and CLOCK */
-
P0
= DBG_RESET_N | DBG_CLOCK;
+
DBG_PORT |
= DBG_RESET_N | DBG_CLOCK;
/* RESET_N and CLOCK are outputs now */
/* RESET_N and CLOCK are outputs now */
- P0DIR = DBG_RESET_N | DBG_CLOCK;
+ DBG_PORT_DIR |= DBG_RESET_N | DBG_CLOCK;
+ DBG_PORT_DIR &= ~DBG_DATA;
}
static void
}
static void
@@
-196,6
+190,9
@@
ao_dbg_long_delay(void)
_asm nop _endasm;
}
_asm nop _endasm;
}
+#define AO_RESET_LOW_DELAY AO_MS_TO_TICKS(100)
+#define AO_RESET_HIGH_DELAY AO_MS_TO_TICKS(100)
+
void
ao_dbg_debug_mode(void)
{
void
ao_dbg_debug_mode(void)
{
@@
-204,7
+201,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_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_d
bg_long_delay(
);
+ ao_d
elay(AO_RESET_LOW_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 );
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 );
@@
-212,7
+209,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_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_d
bg_long_delay(
);
+ ao_d
elay(AO_RESET_HIGH_DELAY
);
}
void
}
void
@@
-223,7
+220,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_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_d
bg_long_delay(
);
+ ao_d
elay(AO_RESET_LOW_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 );
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 );
@@
-231,7
+228,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_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_d
bg_long_delay(
);
+ ao_d
elay(AO_RESET_HIGH_DELAY
);
}
static void
}
static void