X-Git-Url: http://git.droids-corp.org/?p=protos%2Fxbee-avr.git;a=blobdiff_plain;f=main.c;h=5f7a638848d076b703bf10d549535f77c8d70d5a;hp=2bcb3ec974bf6c2ad45334c4b03cd506e24b4279;hb=4de8f7e05dfd8e1b2c139fa35e7a392f32bd396c;hpb=0e1c93804369af27043c82ccc778c42bf54a9bd4 diff --git a/main.c b/main.c index 2bcb3ec..5f7a638 100644 --- a/main.c +++ b/main.c @@ -87,7 +87,7 @@ static void hexdump(const char *title, const void *buf, unsigned int len) #define LINE_LEN 80 char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */ - printf_P(PSTR("%s at [%p], len=%d\n"), title, data, len); + printf_P(PSTR("%s at [%p], len=%d\r\n"), title, data, len); ofs = 0; while (ofs < len) { /* format 1 line in the buffer, then use printk to print them */ @@ -499,24 +499,35 @@ void xbee_unload_timeout(struct xbee_ctx *ctx) void bootloader(void) { -#define BOOTLOADER_ADDR 0x1f800 +#ifndef USE_USB +#define BOOTLOADER_ADDR 0x3f000 if (pgm_read_byte_far(BOOTLOADER_ADDR) == 0xff) { printf_P(PSTR("Bootloader is not present\r\n")); return; } cli(); /* ... very specific :( */ + TIMSK0 = 0; + TIMSK1 = 0; + TIMSK2 = 0; + TIMSK3 = 0; + TIMSK4 = 0; + TIMSK5 = 0; EIMSK = 0; + UCSR0B = 0; + UCSR1B = 0; + UCSR2B = 0; + UCSR3B = 0; SPCR = 0; TWCR = 0; ACSR = 0; ADCSRA = 0; - __asm__ __volatile__ ("ldi r31,0xf0\n"); + EIND = 1; + __asm__ __volatile__ ("ldi r31,0xf8\n"); __asm__ __volatile__ ("ldi r30,0x00\n"); - __asm__ __volatile__ ("ijmp\n"); - - /* never returns */ + __asm__ __volatile__ ("eijmp\n"); +#endif } void xbee_mainloop(void) @@ -627,6 +638,7 @@ int main(void) cmdline_init(); #ifndef USE_USB /* in usb mode, it's done in usb callback */ + printf_P(PSTR("\r\n")); rdline_newline(&xbeeboard.rdl, xbeeboard.prompt); #endif callout_manager_init(&cm, get_time_ms);