Tiedän, että RX-keskeytystä käytetään tietysti kyselyjen tallentamiseen, mutta miksi myös TX?
Tiedän, että RX-keskeytystä käytetään tietysti kyselyjen tallentamiseen, mutta miksi myös TX?
TX-keskeytys on pääasiassa pidempiä datagrammeja varten.Voit aloittaa siirron tunnetun pituisen puskurin (tavumäärä) kohdalla.Nyt voit työntää puskuriosoitinta niin usein kuin lähetettäviä tavuja, kun TX-keskeytys tapahtuu.Tämä varmistaa puskurisi "mahdollisimman nopean" siirtämisen ilman, että sinun on kysyttävä mitään "TransferComplete" -lippua / Statusbitia.
Lähetyksen keskeytyksen (oikeastaan LOPETUKSEN LOPPU) päätavoitteena on lähettää puskurin sisältö (useita tavuja) automaattisesti.Kun se toteutetaan asianmukaisella tavalla:
Tarkka käyttäytyminen riippuu mikro-ohjaimesta.Tämä on yleinen kuvaus.
Joissakin UARTS: issa on sisäinen puskuri, joka on suurempi kuin yksi, 16xxx-sarja yhdelle.
Menettely tässä oli
Tämä vähentää suorittimen kuormitusta lataamalla osan prosessoinnista UART: iin, jolloin hitaammat suorittimet voivat pysyä yllä ja huoltaa muita tehtäviä keskeytymisen sijaan.
Lähetyksen keskeytys laukeaa, kun lähetyspuskurissa on tilaa.
Laitteilla, joilla ei ole lähetyspuskuria (ts. kun kirjoitat yhden tavun, joka siirretään välittömästi), keskeytys vahvistetaan, kun lähetysrekisteri voidaan kirjoittaa seuraavalla tavulla.
Laitteissa, joissa on puskuri, keskeytys tapahtuu toteutuksen määrittelemänä aikana.Joillekin se tapahtuu, kun puskuri on puoliksi tyhjä, joillekin se tapahtuu, kun viimeisen tavun lähetys on alkanut ja puskuri on täysin tyhjä.
Toinen käyttötapaus on se, kun yhdistät UART: n toiseen tiedonsiirtoliitäntään, kuten RS485.Ohjaimen on vapautettava väyläohjain heti, kun viimeinen bitti on siirretty pois TX-puskurista.Tätä on helppo käsitellä TX-keskeytyksessä, mutta se olisi hankala toteuttaa ilman sitä, koska joudut odottamaan tarkkaa aikaa viimeisen tavun kirjoittamisen jälkeen lähtöpuskuriin, joka vaihtelee myös siirtonopeuden mukaan.