diff --git a/sw/bootloader/devices/sd_card.c b/sw/bootloader/devices/sd_card.c index 55b4341..1d7cfc5 100644 --- a/sw/bootloader/devices/sd_card.c +++ b/sw/bootloader/devices/sd_card.c @@ -95,6 +95,7 @@ uint8_t res1_cmd(uint8_t cmd, uint32_t arg, uint8_t crc) /******************************************************************************* Run power up sequence *******************************************************************************/ +/* void SD_powerUpSeq() { uint16_t i; @@ -115,6 +116,7 @@ void SD_powerUpSeq() for(j = 0; j < SD_INIT_CYCLES; j++) spi_exchange(0xFF); } +*/ /******************************************************************************* Send command to SD card diff --git a/sw/bootloader/devices/sd_card_asm.s b/sw/bootloader/devices/sd_card_asm.s index f377964..17833a9 100644 --- a/sw/bootloader/devices/sd_card_asm.s +++ b/sw/bootloader/devices/sd_card_asm.s @@ -3,6 +3,7 @@ .export _SD_readRes2 .export _SD_readRes3 .export _SD_readBytes +.export _SD_powerUpSeq .export _res1_cmd .importzp sp, ptr1 @@ -152,4 +153,38 @@ read: ldx #$00 ; Promote to integer rts +.endproc + +; void SD_powerUpSeq(void) + +.proc _SD_powerUpSeq: near + + lda #$00 + jsr _spi_deselect + jsr _sd_delay + lda #$ff + jsr _spi_exchange + lda #$00 + jsr _spi_deselect + + ldx #$50 ; SD_INIT_CYCLES +@L1: lda #$ff + jsr _spi_exchange + dex + bne @L1 + + rts + +.endproc + + +; 1ms delay approx. saves no registers +.proc _sd_delay: near + ldx #$01 ; delay loop: A*X*10 + 4 +@L1: lda #$c8 ; 1ms at 2MHz +@L2: dec ; 2 + bne @L2 ; 3 + dex ; 2 + bne @L1 ; 3 + rts .endproc \ No newline at end of file