Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: dd-ruso caruso 08. 11. 2017, 18:59:30

Název: Použití GPIO jako input a output zároveň
Přispěvatel: dd-ruso caruso 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?
Název: Re:použití GPIO jako input a zároveň
Přispěvatel: ILikeuPC 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.
Název: Re:Použití GPIO jako input a output zároveň
Přispěvatel: Kit 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.
Název: Re:Použití GPIO jako input a output zároveň
Přispěvatel: to je jedno 08. 11. 2017, 21:28:03
využití by to rozhodně mělo, viz https://cs.wikipedia.org/wiki/1-Wire (https://cs.wikipedia.org/wiki/1-Wire)
Název: Re:Použití GPIO jako input a output zároveň
Přispěvatel: 3ugeene 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.
Název: Re:Použití GPIO jako input a output zároveň
Přispěvatel: aaa 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.
Název: Re:Použití GPIO jako input a output zároveň
Přispěvatel: lkjlkj 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
Název: Re:Použití GPIO jako input a output zároveň
Přispěvatel: MarSik 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.
Název: Re:Použití GPIO jako input a output zároveň
Přispěvatel: RDa 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.
Název: Re:Použití GPIO jako input a output zároveň
Přispěvatel: plesnp 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á...