from machine import Pin
from rp2 import PIO, StateMachine, asm_pio
UART_BAUD = 300
PIN_BASE = 10
NUM_UARTS = 3
@asm_pio(sideset_init=PIO.OUT_HIGH, out_init=PIO.OUT_HIGH, out_shiftdir=PIO.SHIFT_RIGHT)
def uart_tx():
# Block with TX deasserted until data availble
# Blockieren mit deaktiviertem TX, bis Daten verfügbar sind
pull()
# Initialise bit counter, assert start bitcfor 8 cycles
# Bitzähler initialisieren, Startbit für 8 Zyklen aktivieren
set(x,7) .side(0) [7]
# Shift out 8 data bits, 8 execcution cycles per bit
# Verschieben Sie 8 Datenbits, 8 Ausführungszyklen pro Bit
label("bitloop")
out(pins, 1) [6]
jmp(x_dec, "bitloop")
# Assert stop bit for 8 cycles total (incl 1 for pull())
# Setzen Sie das Stoppbit für insgesamt 8 Zyklen ein (einschließlich 1 für pull())
nop() .side(1) [6]
uarts = []
print('<----------------Start--------------->')
for i in range (NUM_UARTS):
sm = StateMachine(i, uart_tx, freq=2000, sideset_base=Pin(PIN_BASE + i), out_base=Pin(PIN_BASE + i))
sm.active(1)
uarts.append(sm)
def pio_uart_print(sm, s):
for c in s:
sm.put(ord(c))
for i, u in enumerate(uarts):
pio_uart_print(u, 'Hello from UART {}!')
print('HUHU')
#print('>-----####HUHU')#