elomax

[ Techniek ] [ Shop ] [ Site map
Standaard ] Signalen ] Data transport ] RS232 op de SIMPLEX ] SCI ] Aansturing ] [ Speciale toepassingen ] Registers ] Voorbeelden ]

Terug
Omhoog

Speciale toepassingen van de seriële poort

De SCI poort ondersteunt naast standaard communicatie nog een aantal speciale toepassingen.

9-bits data

Behalve de standaard communicatie van 8-bits data, kan de seriële poort ook 9-bits data verzenden en ontvangen, hetgeen nodig is wanneer naast 8 databits nog een pariteitsbit moet worden verzonden of ontvangen.

De seriële poort wordt ingesteld op 9-bits data via het M bit in het SCCR1 register. Door dit bit op '1' te zetten, kan met 9 bits data gecommuniceerd worden. Het negende bit kan natuurlijk niet via het SCDR register verstuurd of ontvangen worden, daarom is er in het SCCR1 register een tweetal bits toegevoegd waar het negende bit ingezet kan worden, of uitgelezen.
Het negende bit van een teken dat ontvangen wordt, komt terecht in het R8 bit in het SCCR1 register. Het negende bit van het teken dat verstuurd moet worden kan geplaatst worden in het T8 bit van het SCCR1 register.

Netwerken

De volgende toepassing van de seriële poort is bedoeld voor netwerkjes. Hierbij zitten over het algemeen meerdere micro-controllers parallel met hun ontvangers verbonden met één zender van een andere micro-controller. De micro-controller die data verzendt naar de anderen wordt de 'master' genoemd, de micro-controllers die naar de 'master' luisteren met hun ontvanger, worden 'slaves' genoemd. De communicatie geschiedt dan in blokken van meerdere bytes, waarbij het eerste byte aangeeft voor welke slave de informatie bedoeld is.
Om nu te voorkomen dat elke slave continue de seriële poort moet lezen om te zien of de door de master verzonden gegevens misschien voor hem bestemd zijn, kan de seriële poort op twee manieren ingesteld worden om alleen naar het eerste byte te kijken. Wanneer dit eerste byte niet voor de betreffende slave bedoeld is, kan de slave de rest van het blok voorbij laten gaan (het is dan voor een andere slave bestemd.)

De eerste manier om het eerste byte te kunnen herkennen, is door bijvoorbeeld alleen in het eerste byte het meest significante bit een '1' te maken, en in alle andere bytes van een blok ervoor te zorgen dat dit bit een '0' is. Om dan toch 8-bits data over te kunnen zenden, kan de poort worden ingesteld op 9-bits communicatie (zie boven.)

De andere manier om te zorgen dat een micro-controller het eerste byte eenvoudig kan herkennen, is door ervoor te zorgen dat de data die bij één blok hoort in een constante stroom wordt uitgezonden door de master. Wanneer er dan een pauze optreedt op de seriële verbinding, moet het eerstvolgende byte het begin zijn van een nieuw blok.

De seriële poort kan zodanig worden ingesteld, dat alle ontvangen bytes genegeerd worden, totdat er een byte komt waarvan het meest significante bit een '1' is. Of totdat er gedurende een bepaalde tijd (de tijd die het duurt om één byte te versturen) geen aktiviteit op de verbinding is.

Door het RWU bit in het SCCR2 register een '1' te maken, wordt de ontvanger 'in slaap' gebracht. De ontvanger zal dan wachten op één van de twee condities zoals boven beschreven. 
Met het WAKE bit in het SCCR1 register wordt bepaald welke methode wordt gekozen. Wanneer het WAKE bit een '1' is, reageert de ontvanger op een ontvangen byte waarvan het meest significante bit een '1' is. Met het WAKE bit op '0', reageert de ontvanger op een niet gebruikte verbinding.
Wanneer de gekozen conditie zich voordoet, zal de ontvanger 'wakker worden', en weer aktief zijn totdat het RWU bit in het SCCR2 register weer een '1' gemaakt wordt.

Herkennen inactieve verbinding

Een inactieve verbinding kan herkend worden door de ontvanger van de seriële poort. De poort beschouwt de verbinding inaktief ('idle') wanneer gedurende de tijd die nodig is om één teken te versturen geen veranderingen op de ontvangstlijn waren. Wanneer deze toestand door de ontvanger herkend wordt, kan een interrupt gegenereerd worden. Het IDLE bit in het SCSR register wordt een '1' gemaakt, en wanneer het ILIE bit in het SCCR2 register een '1' is, wordt eveneens een interrupt gegenereerd. Het IDLE bit in het SCSR register wordt automatisch op '0' gezet door dit register te lezen, en vervolgens het SCDR register te lezen.

Versturen van een break

De zender van de seriële poort is in staat een zogenaamd 'break' teken te versturen. Dit speciale teken wordt verstuurd door het SBK bit in het SCCR2 register een '1' te maken. Zolang dit bit een '1' is, worden er 'break' tekens verstuurd. Met het 'break' teken kan een onderbroken verbinding gesimuleerd worden.


Vorige ] Volgende ]

© 2005...2008 Elomax [Voorwaarden ]