Question: I ' m trying to make an ARMv 7 assembly code to program an LED Chaser into my Raspberry Pi Pico 2 . I can't
Im trying to make an ARMv assembly code to program an LED Chaser into my Raspberry Pi Pico I can't seem to get my code to work, even after I flash it to my Pico board. I know that the board is being powered still because I get a voltage from my VBUS and VSYS just not the GPIO outputs as expected. I have attached my code below and was wondering if someone could fix up any errors with it so that my code can work and please let me know what I was doing wrong.
Code:
Defines base addresses for GPIO registers
equ GPIOBASE, x Base address for GPIO
equ GPIOOE GPIOBASE x GPIO output enable register
equ GPIOOUT, GPIOBASE x GPIO output register
section text
global mystart
Entry point
mystart:
LDR RGPIOOE Load GPIOOE register address
MOV R #xFF Make GPIO outputs
STR RR Write to GPIOOE register
Call patterns in sequence
BL patternone Call patternone
BL patterntwo Call patterntwo
BL patternthree Call patternthree
BL patternfour Call patternfour
BL patternfive Call patternfive
BL patternsix Call patternsix
B mystart Loop back to the start
Pattern One: LEDs light up one by one from GPIO to
Pattern One: LEDs light up one by one from GPIO to
patternone:
MOV R # Repeat times
patternoneloop:
MOV R # Start with GPIO
patternoneinner:
LDR RGPIOOUT Load GPIOOUT register address
MOV R # Set bit for GPIO pin
LSL R R R Shift to correct GPIO pin
STR RR Turn on the LED
BL delay Call delay function
MOV R # Turn off the LED
STR RR
ADD R R # Increment GPIO pin
CMP R # Check if reached GPIO
BNE patternoneinner If not, loop
SUB R R # Decrement loop counter
CMP R # Check if finished repetitions
BNE patternoneloop If not, loop
BX LR Return to main loop
Placeholder for Pattern Two
patterntwo:
Implement future functionality or LED pattern
BX LR Return immediately
Placeholder for Pattern Three
patternthree:
Implement future functionality or LED pattern
BX LR Return immediately
Placeholder for Pattern Four
patternfour:
Implement future functionality or LED pattern
BX LR Return immediately
Placeholder for Pattern Five
patternfive:
Implement future functionality or LED pattern
BX LR Return immediately
Placeholder for Pattern Six
patternsix:
Implement future functionality or LED pattern
BX LR Return immediately
Delay function
delay:
MOV R # Outer loop counter
outerloop:
MOV R # Inner loop counter
innerloop:
SUB R R # Decrement inner counter
CMP R # Check if inner counter reached
BNE innerloop If not, keep looping
SUB R R # Decrement outer counter
CMP R # Check if outer counter reached
BNE outerloop If not, keep looping
BX LR Return from delay RP PIN LAYOUT
Defines base addresses for GPIO registers
equ GPIOBASE, x Base address for GPIO
equ GPIOOE GPIOBASE x GPIO output enable register
equ GPIOOUT, GPIOBASE x GPIO output register
section text
global mystart
Entry point
mystart:
LDR RGPIOOE Load GPIOOE register address
MOV R #xFF Make GPIO outputs
STR RR Write to GPIOOE register
Call patterns in sequence
BL patternone Call patternone
BL patterntwo Call patterntwo
BL patternthree Call patternthree
BL patternfour Call patternfour
BL patternfive Call patternfive
BL patternsix Call patternsix
B mystart Loop back to the start
Pattern One: LEDs light up one by one from GPIO to
patternone:
MOV R # Repeat times
patternoneloop:
MOV R # Start with GPIO
patternoneinner:
LDR RGPIOOUT Load GPIOOUT register addres:
MOV R # Set bit for GPIO pin
LSL R R R Shift to correct GPIO pin
STR RR Turn on the LED
BL delay Call delay function
MOV R # Turn off the LED
STR RR
ADD R R # Increment GPIO pin
CMP R # Check if reached GPIO
BNE patternoneinner If not, loop
SUB R R # Decrement loop counter
CMP R # Check if finished repetitions
BNE patternoneloop If not, loop
BX LR Return to main loop
Placeholder for Pattern Two
patterntwo:
Implement future functionality or LED pattern
BX LR Return immediately
Placeholder for Pattern Three
patternthree:
Implement future functionality or LED pattern
BX LR Return immediately
Placeholder for Pattern Four
patternfour:
Implement future functionality or LED pattern
BX LR Return immediately
Placeholder for Pattern Five
patternfive:
Implement future functionality or LED pattern
BX LR Return immediately
Placeholder for Pattern Six
patternsix:
Implement futu
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
