Použití GPIO jako input a output zároveň

dd-ruso caruso

Použití GPIO jako input a output zároveň
« kdy: 08. 11. 2017, 18:59:30 »
Zdravím, mám filozoficko-teoretickou otázku, je možné použít GPIO pin jako input a jako output zároveň? Jaké by to třeba mělo využití? Je to možné nastavit na arduinu a jak?
« Poslední změna: 08. 11. 2017, 19:29:07 od Petr Krčmář »


ILikeuPC

Re:použití GPIO jako input a zároveň
« Odpověď #1 kdy: 08. 11. 2017, 19:27:18 »
Vyčíst to lze, use case nevím. Možná by se tak dalo zjistit, jestli náhodou není výstup spálený, ale zkoušet to rozhodně nebudu. :-) Při nastavení hodnoty výstupu na PORTx při nastavení DDRx jako výstup lze po vložení instrukce nop vyčíst hodnotu na vstupu na portu PINx. Viz. datasheet ATmega48A/PA/88A/PA/168A/PA/328/P, strana 78 obrázek 14-4. Pro lepší info ohledně dané problematiky doporučuji přečíst celou kapitolu I/O-Ports str. 75. Nenosím ji v hlavě a přepisovat ji tady nebudu.

Kit

Re:Použití GPIO jako input a output zároveň
« Odpověď #2 kdy: 08. 11. 2017, 19:35:06 »
Pokud dáš do série vhodný rezistor, tak nevidím problém. Využití je možné v poloduplexu.

to je jedno

Re:Použití GPIO jako input a output zároveň
« Odpověď #3 kdy: 08. 11. 2017, 21:28:03 »
využití by to rozhodně mělo, viz https://cs.wikipedia.org/wiki/1-Wire

3ugeene

Re:Použití GPIO jako input a output zároveň
« Odpověď #4 kdy: 08. 11. 2017, 21:36:22 »
vzdycky se ten smer musi prepnout, tak funguje treba SDL u I2C. Zaroven jako I a O jsem to nikde nevidel, pokud si z hlavy vybavim ruzne konstrukce uC, PIO apod.


aaa

Re:Použití GPIO jako input a output zároveň
« Odpověď #5 kdy: 09. 11. 2017, 07:32:07 »
Jak si to nastavis, tak se to chova, takze si klidne muzes prepinat v prubehu behu jestli je input nebo output. Spis by me zajimalo co s tim chces delat, protoze samozrejme na to musi byt udelana elektronika co do toho strcis, aby to fungovalo.
Pouziva se to bezne u ser. komunikace (RS485), kdy jeden pin je pro vstup i vystup.

lkjlkj

Re:Použití GPIO jako input a output zároveň
« Odpověď #6 kdy: 09. 11. 2017, 13:57:39 »
naprosto běžné použití. Příklad AVR:
Port/pin nastaven jako výstupní. Zapíšete 1", připojíte tlačítko proti zemi.
Zároveň ale pin vyčítáte. Pokud 1" - tlačítko není stisknuto, pokud 0" - tlačítko stisknuto. Ochranu proti proudovému zkratu řeší resistor integrovaný v pinu. Výhoda oproti tlačítku s pullupem na Vcc - ušetříte jednu součástku a jeden spoj na PCB

MarSik

Re:Použití GPIO jako input a output zároveň
« Odpověď #7 kdy: 09. 11. 2017, 14:14:18 »
naprosto běžné použití. Příklad AVR:
Port/pin nastaven jako výstupní. Zapíšete 1", připojíte tlačítko proti zemi.
Zároveň ale pin vyčítáte. Pokud 1" - tlačítko není stisknuto, pokud 0" - tlačítko stisknuto. Ochranu proti proudovému zkratu řeší resistor integrovaný v pinu. Výhoda oproti tlačítku s pullupem na Vcc - ušetříte jednu součástku a jeden spoj na PCB

Proboha proč? Vždyť AVR normálně umí input směr s interním pullupem.

Oba směry zaráz jsem viděl použité třeba pro kapacitní snímače, kde je potřeba přepínat nabíjení/vybíjení + sledovat čas do přepnutí stavu.

RDa

  • *****
  • 2 958
    • Zobrazit profil
    • E-mail
Re:Použití GPIO jako input a output zároveň
« Odpověď #8 kdy: 09. 11. 2017, 14:34:42 »
Já ten obousměrný GPIO řešil v jednom zařízení skrze weak driver (diskrétně) - což je vlastně programovatelný pull rezistor - řiditelný mezi pullup nebo pulldown dle přání softu. Zároveň lze z portu číst reálný vstup. Prakticky musí být ale protistrana vůči tomu uzpůsobená - směr vstup funguje jenom pro inverzní hodnoty k směru výstup (použití: start/stop tlačítko s indikací stavu, skrze jeden drát).

Mělo by to zvládat úplně stejně např. XMEGA, který má kromě pullup i možnost nastavit pulldown. Klasické ATMEGA měli jen pullup.

plesnp

Re:Použití GPIO jako input a output zároveň
« Odpověď #9 kdy: 09. 11. 2017, 18:02:18 »
Na AVR si môžeš čítať port kedy chceš a pri akomkoľvek nastavení (napr aj ako analog input). Stačí si pozrieť ako je jeden pin zapojený v datasheete. A využitie? Sú piny ktoré sú nastavené na výstup, ale riadi ich hw. Napríklad také PWM, TxD, I2C, SPI a pod. Ak chceš mať záznam toho čo sa tam dialo, tak to takto v pohode zaznamenáš.
Práve som dočítal článok o Hacking team, tak ma hneď napadol nejaký prífrčok na záznam prevádzky hocičoho a cez bootloader to tam dopáť a tradá...