From 9c35e7a0063f9a3d3e9a08b56f388abb52c193fc Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Mon, 28 Oct 2024 23:42:30 +0100 Subject: [PATCH] avr: adapted boot firmware to latest changes (mainly switch to uart_bitbang). --- avr/modules/flash/bootloader.asm | 31 +++++++++++++++++++++++++------ avr/modules/flash/recv.asm | 2 ++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/avr/modules/flash/bootloader.asm b/avr/modules/flash/bootloader.asm index 7278243..2183bb4 100644 --- a/avr/modules/flash/bootloader.asm +++ b/avr/modules/flash/bootloader.asm @@ -69,14 +69,33 @@ bootLoader: ldi r16, Low(RAMEND) out SPL, r16 ; init LSB stack pointer + ; start by setting all ports as inputs and enable internal pull-up resistors + ldi r16, 0xff + clr r17 +.ifdef PORTA + out DDRA, r17 ; all input + out PORTA, r16 ; enable pull-up on all +.endif + +.ifdef PORTB + out DDRB, r17 ; all input + out PORTB, r16 ; enable pull-up on all +.endif + +.ifdef PORTC + out DDRC, r17 ; all input + out PORTC, r16 ; enable pull-up on all +.endif + + ; rcall watchdogOff ; turn off watchdog timer (sometimes it stays on after reboot) ; setup pins and interrupts - cbi COM_TXD_DATA, COM_TXD_PIN ; disable internal pullup for DATA - cbi COM_TXD_DDR, COM_TXD_PIN ; set DATA port as input + cbi COM_DATA_DDR, COM_DATA_PIN ; set TXD port as input + cbi COM_DATA_OUTPUT, COM_DATA_PIN ; disable internal pullup for TXD - cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN - cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN port as input + cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN port as input + cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN sbi LED_DDR, LED_PINNUM ; out cbi LED_PORT, LED_PINNUM ; on @@ -88,11 +107,11 @@ bootLoader: st X+, r19 st X+, r20 st X+, r21 - + ; wait for 3 secs before doing anything else ldi r16, 30 rcall flashWaitForMulti100ms - + rcall bootCheckFlash brcc bootLoader_startFirmware ; no flash process, try start installed firmware rcall bootLoaderFlash ; received a FLASH START msg, handle flashing diff --git a/avr/modules/flash/recv.asm b/avr/modules/flash/recv.asm index 152054e..109d8ec 100644 --- a/avr/modules/flash/recv.asm +++ b/avr/modules/flash/recv.asm @@ -122,6 +122,8 @@ flashWaitForSpecificMessage_received: ; R16 contains message type ; REGS: R24 (R22) flashWaitForAttnState1ms: + cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN port as input + cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN ldi r24, 100 flashWaitForAttnState1ms_loop: push r17