Програмований ввід/вивід (programmable IO, PIO) — у вбудованих системах є окремим апаратним забезпеченням, що управляє пінами вводу/виводу (такими як GPIO) без необхідності постійного контролю з боку процесора, а саме здійснює bit banging замість процесора. Його поведінка керується програмою завантаженою процесором. Він комунікує з процесором за допомогою переривань.
Мікроконтролери Деякі мікроконтролери містять блоки PIO для збільшення спроможностей вводу/виводу. Типовими прикладами є PIO в Raspberry Pi Pico (RP2040; 2021) та FlexIO в NXP (KL43; 2010s).
RP2040 має 2 PIO блоки, кожен з яких має 4 скінченних автомати: RX FIFO, TX FIFO та 2 регістри зсуву. Ці скінченні автомати програмуються спеціальною мовою ассемблера.
PIO блок має цифровий доступ до GPIO, установки IRQ та прямий доступ до пам'яті. PIO блок може реалізовувати UART для послідовної комунікації, MIDI, та передачі 10BASE-T та 100BASE-T.
Більш ранній FlexIO від NXPскладається з 4 32-бітних регістрів зсуву, 4 16-бітних таймерів, 8 двонаправлених цифрових пінів, конфігураційних регістрів та мультиплексорів. Він програмується заданням конфігурації одного із бажаних режимів таких, як UART, SPI, I²C, and I²S..
Примітки
Посилання RP2040 PIO Emulator