# GPIO

GPIO (General Purpose Input Output/Helburu Orokorreko Sarrera Irteera) txip baten edo nolabaiteko garapen plaka baten pin digital arrunta da. Pin honen eginkizuna seinaleak jasotzea edo bidaltzea izan daiteke, eta software bidez aldatu/aukeratu daiteke.
GPIO pin-ak ez dute agindu lehentesirik, eta beraz goi mailako zirkuitua diseinatzen duenak, hau da txip-a edo garapen plaka erabiltzen duenak, aukeratuko du zer egingo duen GPIO pin bakoitzak, erabilera kasuaren arabera.

## Txip-mailako GPIO

Txip bakoitzak era ezberdin baten inplementatzen ditu GPIO pinek. Batzuek, mikrokontrolagailuak eredu nagusi direlarik, GPIO pinak ezaugarri nagusitzat dituzte, hauek erabiltzea txip horien helburua delako bestelako zirkuitu eta gailuak kontrolatu ahal izateko. Beste batzuek ordea ez funtsezkoa den ezaugarri gehigarritzat dituzte.
Mikrokontrolagailuen artean, askotan GPIO pin-ek GPIO-rako baino gehiago erabili daitezke, programan horrela ezartzen bada lehenik. Komunikazio protokoloak (UART, SPI, I$^2$C...), sentsore integratuetatik informazioa irakurtzea (termometroak, voltmetroak...) edota seinale analogikoak interpretatzeko edo sortzeko gaitasuna duten ADC edo DAC zirkuituen bidez seinaleak jasotzea edo sortzea.
Bestelako txip-ek GPIO pinak debugeatzeko eta konponketak errazteko izan ohi dituzte. Pin hauek beraz ez dira beharrezkoak gailuaren funtzionamendu zuzenerako.
Pin hauek ere erabili daitezke txip bakoitzak bere inguruko zirkuituari buruzko informazioa jaso dezan, zein tentsio, maiztasun, edo potentzia erabili dezakeen jakin ahal izateko.

## Plaka-mailako GPIO

Plaka batek, txip baten moduan, GPIO pinak izan ditzake eta bi modu berdinetan inplementatu ditzake.
Mikrokontrolagailu baten garapen plaka baten adibidez, GPIO pin guztiak txip-aren pinetara zuzenean konektatuta egongo dira, Arduino eta Raspberry Pi Pico kasuetan, adibidez. kasu hauetan plakaren GPIO eta txip-aren GPIO funtzio berdin-berdinak izango dituzte.
Plakaren sistemei buruzko informazioa emateko edo ezarpenak aldatu ahal izateko erabili daitezke baita ere. Kasu hauetan pin hauen eginkizuna, txip-en bigarren erabilera eraren antzekoa izango da.
Plaka bakarreko ordenagailu ugarik ere honelako pinak izango dituzte, baina hauen kasuan aipatutako bi erabilera moten arteko funtzioak ahalegintzen dituzte. Ordenagailua funtzionatzeko ez dira beharrezkoak, baina ordenagailu arrunt baten moduan funtzionatzeaz gain, mikrokontrolagailu baten lana egin dezakete Raspberry Pi bezalako sistema hauek. Honelako ordenagailu baten bitartez, internetera konektatu, datu kantitate handiak prozesatu eta horien arabera motoreak, argiak edo pantailak kontrolatuko ditu plakak. Mikrokontrolagailu gehienek ez dute konputazio ahalmen nahikorik izango honelako lanak gauzatzeko.

## Erabilera

GPIO pinak era ugaritan erabili daitezke, hauen limite bakarra pinak kontrolatzen dituen gailuaren limiteak direlarik. Hauek, kontrolatzen dituen gailuaren limitazio elektrikoak, balio aldaketa denbora eta kontrol programaren erreakzio denbora direlarik.
Pin mota hauek logikarako egokia den boltaia maila erabiltzen dute eta korronte gaitasun baxuak dituzte. Hori dela eta, potentzia handiko gailuak kontrolatzeko, buffer bat, edo errele bat erabili daiteke, beharraren potentzia mailaren arabera.
GPIO pinak banan banan erabiltzearen ordez, binaka edo talde handiagotan erabili daitezke. Era honetan, txip edo plaka ugariren arteko komunikazioa lortu daiteke, gailu berezien edo tarteko ordenagailuren beharra ekidituz. Gutxi batzuk hartuz, seriezko komunkiazio sistema bat sortu daiteke (UART, SPI, I$^2$C...). Pin gehiago erabiliz gero paraleloan komunikatzeko protokolo bat erabili daiteke.
GPIO pinak berez digitalak diren arren, kontrol linealerako erabili daitezke, motore baten abiadura edo argi intentsitatea erregulatzeko adibidez.Honetarako PWM seinale bat bidaltzen zaio pinari. Tentsio maila bat lortzeko, PWM seinalea DAC batetik pasatuz lortu daiteke, hau erresistentzia eta kondentsadore bidez lor daiteke era sinple baten.
Baliteke hau behar izatea beste noranzkoan ere, optoakopladore baten bidez gehiegizko tentsioa ekiditu daiteke, eta ADC baten bidez tentsio maila bat balio digital bihur daiteke.

## Ikus, gainera

* Arduino
* Raspberry Pi
* Txip
* Mikrokontrolagailu

## Kanpo estekak

* (Ingelesez) ATmega328 familiaren datu orria
* Datuak: Q260798
* Multimedia: GPIO / Q260798