Проблема со стабильным считыванием ввода для платы HiFive 1 в сборке - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь написать программу, которая будет получать входные данные от кнопки и включать светодиод на плате. Дело работает, но не последовательно. Иногда после отпускания кнопки светодиод не гаснет. Ниже приведен мой код для функции, которая проверяет логику ввода. Я очень уверен, что остальная часть программы работает нормально. Я сделал программу Blink, и она работала нормально. Я использовал функции от Blink, чтобы включить светодиод, чтобы не было проблем со светодиодом. Я пробовал внутренние подтягивающие резисторы, я также экспериментировал с различными значениями понижающих резисторов. начиная от 1к-10к.

    .section .text
.align 2
.globl checkBot
#include "GPIO.inc"
#include "memoryMap.inc"

.equ ON, 0x1
.equ OFF, 0x0
checkBot:

addi sp, sp, -16
sw ra, 12(sp)

li t0, GPIO_CTRL_ADDR               # load GPIO base adress 
lw t1, GPIO_INPUT_VAL(t0)           # add the ofset for the READ register
li t2, PIN_2                        # load the BIT ofset of PIN2
and t2, t1, t2                      # and the READ register with the PIN2 ofset                    
beqz t2, pinOFF                     # if t2 is 0m then the READ register has 0 at the PIN2 ofset, branch to pinOFF
li a0, ON                           # return ON comand back to the main
j exit

pinOFF: 
li a0, OFF                          # return OFF comand back to the main 
j exit

exit:
lw ra, 12(sp)
addi sp, sp, 16
ret```

...