Obvody vstupů a výstupů mikrořadiče AVR
Vstupně-výstupní rozhraní
Vstupně výstupní rozhraní mikrokontroléru, často označovaná jako I/O porty (Input/Output), zprostředkovávají komunikaci mezi mikrořadičem a externími zařízeními. Přenos dat probíhá skrze vývody integrovaného obvodu, které lze obvykle programově nastavit jako vstupy nebo výstupy. Procesor komunikuje se skupinou takových vývodů, kterou nazýváme (paralelní) port. Na vstupně-výstupní porty mikrořadiče můžeme přímo připojit např. tlačítka, klávesnici, LED, relé, displej nebo další logické a multiprocesorové obvody. Protože je počet vývodů mikrokontroléru často omezen, některé I/O vývody mohou sdílet funkci s dalšími periferními obvody, např. A/D převodníkem, napěťovýn komparátorem, externím přerušením, vstupy čítačů/časovačů, sérioivé rozhranní apod. Potom hovoříme o takzvané sekundární alternativní funkci vstupně-výstupního portu vývodu mikrořadiče. Důležitou funkci pro nastavení a přenosovou funkci portu plní trojice klopných obvodů typu D, které jsou řazeny do posloupnosti vodičů portu směrového registru DDRx, výstupního registru PORTx a vstupního registru PINx.
Vstupní obvody portu jsou připojovány prostředníctvím diodového analogového spínacího můstu. Vložený napěťový komparátor s hysterezní převodní charakteristikou mezi můstkový diodový spínač a synchronizační obvod (synchronizer) odstraňuje neurčitý stav napěťové úrovně na vstupu portu. Vlastní synchronizační obvod je v zapojení dvobitového posuvného registru, který reaguje na náběžnou i sestupnou hranu vnitřního hodinového kmitočtu. Tímto obvodem dosáhneme časové zpoždění jednoho cyklu pro synchronizaci s vnitřní řídící sběrnicí pro přenos dat na datovou sběrnici. Synchronizační obvod nemá zavedeno vlastní resetování, proto je před napěťový komparátor zařazen unipolární spínací tranzistor. Tento připojuje v závislosti na logické úrovni signálu SLEEP vstup synchronizačního obvodu k nulovému potenciálu obvodu. Následně dojde po jednom cyklu hodinového generátoru k resetování registru PINx.
Výstup registru PORTx je připojován k vývodu pouzdra portu prostřednictvím třístavového budiče sběrnice, který má možnost přejít do stavu vysoké impedance. Tento stav vysoké impedance je ovládán přímo výstupem směrového registru DDRx.
Součinový logický člen, který je řízen nastavením směrového registru DDRx, výstupního registru PORTx a logickou nulou zapsanou v bitě na pozici PUD registru MCUSR, přes invertor spíná unipolární tranzistor, který připojí pullup rezistor mezi napájecí napětí mikrořadiče a výstup pouzdra portu. Tímto zabezpečíme na vývodu portu stav logické jedničky, což nám umožní při vstupní konfiguraci portu připojování externích spínačů vůči zemi bez připojování vnějších rezistorů. Pullup rezistory zjednodušují konstrukci elektronického obvodu.
Následuje obrázek vnitřního funkčního schématu obvodu portu mikrořadiče AVR.
Obr. 1: Schéma zapojení obvodů rozhraní vstupů a výstupů mikrořadiče Atmega
Popis zapojení:
Pro ovládání vývodu sběrnice jsou předurčeny tři registry:
- registr DDRxn konfiguruje pin pouzdra sběrnice Pxn jako vstupní nebo výstupní, nastavením bitu DDRxn určujeme Pxn jako výstupní, resetování bitu DDRxn určujeme Pxn jako vstupní;
- registr PORTx je budičem logické úrovně Pxn v případě nastavení pinu jako výstup v DDRxn, jinak slouží pro připojení pullup rezistoru na výstupní pin Pxn, je-li tento nastaven v registru DDRx jako vstupní;
- registr PINxn je předurčený pro záchyt a následné čtení logické úrovně na pinu Pxn.