from machine import Pin,mem32
import time
from micropython import const
#machine.freq(50_000_000)
LED = Pin(25, Pin.OUT)
in_register=const(0xd0000004)
xor_register=const(0xd000001c)
@micropython.asm_thumb
def pulse(r0,r1,r2,r3):
mov(r7,1) #carico 1 in r7
lsl(r7,r7,25) #shift left r7 in r7 di 25
mov(r6,0xd0) #carico indirizzo registro in r6
lsl(r6,r6,24) #shift left r6 in r6 di 24
label(loop_acc)
mov(r4,r2)
mul(r4,r3)
add(r4,r4,r1)
label(wait_acc)
sub(r4,r4,r3)
cmp(r4,0)
bgt(wait_acc)
str(r7,[r6,0x1c])
sub(r2,1)
bne(loop_acc)
'''
label(loop)
mov(r4,r1) #carico pausa
label(wait)
sub(r4,1) #sottraggo 1 a r4 (registro pausa)
bne(wait) #branch se registro pausa (r4) non è zero
str(r7,[r6,0x1c]) #scrivo r7 all'indirizzo r6+offset
sub(r0,1) #sottraggo 1 al n° impulsi
bne(loop) #branch se non è zero
'''
def blink(n_imp,freq,imp_acc,acc):
time.sleep(3)
imp=n_imp*2
adesso=time.ticks_ms()
pulse(imp,freq,imp_acc,acc)
print(time.ticks_ms()-adesso)
LED.off()
def blink2():
mask=1<<14
while True:
time.sleep_us(0)
mem32[xor_register]=mask
def blink3():
while True:
LED.toggle()
#while True:
# blink()
time.sleep(1)
print('READY!!')