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')#
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT