<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
13.5. Nyitott Drain-ű kimenet
A közepes teljesítményű PIC mikrovezérlők A portjának valamelyik I/O kivezetése általában nyitott Drain-ű kimenetként működtethető.
A nyitott Drain-ű kimenet lehetővé teszi külső elemek vezérlését és huzalozott kapuk megvalósítását 8,5V-os feszültségig.
A következő ábra egy nyitott Drain-ű port kivezetést mutat be.
13.5-1. Ábra
A DT1 tároló a kimenő jelet tárolja.
A DT2 tároló az adatirány jelet tárolja.
A DT3 tároló a bemenő jelet tárolja.
A tárolók Ck beléptető bemenete a bemenő jel lefutó élét érzékeli és erre lép működésbe.
Az olvasást a Q2, az írást a Q4 belső órajel vezérli.
A kivezetéshez tartozó PORT regiszter írásakor az adatbusz logikai szintje bekerül a DT1 tárolóba. A PORT regiszter írása jel valójában a Q4 belső órajel. A DT1 tároló a Q4 órajel lefutó élére lép működésbe, vagyis a kimeneten a kimenő jel az utasításciklus legvégén jelenik meg. Ha a kivezetés kimenetként van konfigurálva a T tranzisztor Gate-jére kerül a DT1 tároló kimenő értéke. A kimenet működését szemlélteti a következő táblázat.
DT1 Q kimenet (kimenő adat) |
DT2 Q kimenet (adatirány) |
T Gate | Kimenet állapota |
---|---|---|---|
0 | 0 (kimenet) | 1 (nyitás) | áram folyhat a test felé |
1 | 0 (kimenet) | 0 (zárás) | nem folyik áram |
0 | 1 (bemenet) | 0 | nagy-impedanciás |
1 | 1 (bemenet) | 0 | nagy-impedanciás |
A kivezetés feszültségszintje egy TTL vagy Schmitt-trigger bemenetű pufferen keresztül folyamatosan jelen van a DT3 tároló bemenetén. A Schmitt-trigger hiszterézise hozzávetőlegesen 0,1V.
A kivezetéshez tartozó PORT regiszter olvasásakor a kivezetés logikai szintje bekerül a DT3 tárolóba és egyúttal megjelenik az adatbuszon is. A PORT regiszter olvasása jel valójában a Q2 belső órajel. A DT3 tároló a Q2 órajel felfutó élére lép működésbe, vagyis a kivezetés logikai szintje kis késéssel belép a tárolóba és megjelenik annak kimenetén. Ha a kivezetés szintje ezután meg is változik, az már nincs hatással a tárolóba beíródott értékre. A DT3 tároló kimenetén elhelyezett három állapotú puffer kimenetét is a Q2 órajel engedélyezi, így az adatbuszon a bemenő jel csak a Q2 logikai "1" szintjének ideje alatt van jelen.
A kivezetéshez tartozó TRIS adatirány kiválasztó regiszter írásakor az adatbusz logikai szintje a DT2 tárolóba kerül. Ha a tároló állapota logikai "0", a kivezetés kimenetként, ha "1", bemenetként működik. A mikrovezérlő bekapcsolási reset folyamatának hatására a DT2 tároló kimenete automatikusan logikai "1" szintűre áll be, vagyis a kivezetés nagy-impedanciás bemenetként konfigurálódik.
A TRIS regiszter olvasásakor a DT2 tároló tárolt értéke az adatbuszra kerül.
Az előző ábrán látható, hogy a DT3 tárolóba a port olvasásakor a kivezetés pillanatnyi állapota íródik be és ez kerül az adatbuszra. Ez több, a PORT regiszterre kiadott utasítás esetében (ADDWF, ANDWF, BCF, BSF, DECF, DECFSZ, INCF, INCFSZ, IORWF, RLF, RRF, SUBWF, SWAPF, XORWF) is hibás működést eredményezhet. Ezek az úgynevezett "olvasó-módosító-író" (Read-Modify-Write, R-M-W) utasítások, amelyek végrehajtása során a kijelölt regiszter értéke először beolvasódik az ALU-ba, majd a végrehajtott módosítás után az új érték visszaíródik a régi felülírásával.
A nyitott Drain-ű kimenet esetében is felléphetnek az előző fejezetekben bemutatott I/O hibák, de a kimenet huzalozott kapuként való alkalmazásakor egy újabb hibaforrás keletkezik. Ha egy külső áramkör a kimenetként konfigurált, és logikai "1" kimenő értékű kivezetést logikai "0"-ra húzza le, a PORT regiszter olvasásakor a logikai "0" érték kerül be az ALU-ba, ami azután visszaíródva a kimenet állapotát "1"-ről automatikusan "0"-ra változtatja. Ez megakadályozható a fenti utasítások mellőzésével, de a visszaírandó értéket adatmozgató utasítások alkalmazása esetén is, még a visszaírás előtt ellenőrizni és helyesbíteni kell.
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>