rp2040

RP2040 Programming without SDK
Log | Files | Refs

commit 6543741581b5c11f71b52c0fffd79547d00e1c37
parent 9b809dc90d5e27cebeeab5ab5c3b51d5e0963ad9
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sat, 18 Mar 2023 10:25:00 +0900

divide pll setup and gpio setup for debugging

Diffstat:
Mmain.s | 55+++++++++++++++++++++++++++++++++++--------------------
1 file changed, 35 insertions(+), 20 deletions(-)

diff --git a/main.s b/main.s @@ -1,6 +1,33 @@ .section .text .global main main: + // reset gpio + ldr r0, resets_base + ldr r1, atomic_clr + add r0, r0, r1 + mov r1, #0x1 + lsl r1, r1, #5 // io_bank0 + str r1, [r0, #0] // RESETS_RESET + + // check if reset is done + ldr r0, resets_base +gpio_reset_chk: + ldr r2, [r0, #0x8] // RESETS_RESET_DONE + and r1, r1, r2 + beq gpio_reset_chk + + // set gpio24 funct as sio + ldr r0, io_bank0_base + add r0, r0, #0xc4 + mov r1, #5 + str r1, [r0, #0] + + // enable gpio output + ldr r0, sio_base + mov r1, #1 + lsl r1, r1, #24 + str r1, [r0, #0x24] + // set xosc delay ldr r0, xosc_base mov r1, #47 @@ -18,40 +45,28 @@ main: str r1, [r0, #0] // XOSC_CTRL // wait for xosc startup - ldr r0, xosc_base xosc_stable: + bl led_blink + ldr r0, xosc_base ldr r1, [r0, #0x4] lsr r1, r1, #31 beq xosc_stable - // reset gpio and pll + + // reset pll ldr r0, resets_base ldr r1, atomic_clr add r0, r0, r1 - mov r2, #0x1 - lsl r1, r2, #5 // io_bank0 - lsl r2, r2, #12 // pll_sys - add r1, r1, r2 + mov r1, #0x1 + lsl r1, r1, #12 // pll_sys str r1, [r0, #0] // RESETS_RESET // check if reset is done ldr r0, resets_base -reset_chk: +pll_reset_chk: ldr r2, [r0, #0x8] // RESETS_RESET_DONE and r1, r1, r2 - beq reset_chk - - // set gpio24 funct as sio - ldr r0, io_bank0_base - add r0, r0, #0xc4 - mov r1, #5 - str r1, [r0, #0] - - // enable gpio output - ldr r0, sio_base - mov r1, #1 - lsl r1, r1, #24 - str r1, [r0, #0x24] + beq pll_reset_chk // set feedback divider ldr r0, pll_sys_base