AVR Microcontroller (Atmel 8) Seriële communicatie USART-configuratie

Probeer Ons Instrument Voor Het Oplossen Van Problemen





Microcontroller is een besturingsapparaat dat een aantal randapparatuur bevat, zoals RAM, ROM TIMERS, seriële datacommunicatie , enz., die nodig zijn om een ​​aantal vooraf gedefinieerde taken uit te voeren. Vandaag de dag, geavanceerd type microcontrollers worden gebruikt in een breed scala aan toepassingen op basis van hun vermogen en haalbaarheid om bepaalde gewenste taken uit te voeren en deze controllers omvatten 8051, AVR en PIC-microcontroller ​In dit artikel gaan we leren over geavanceerde AVR-familie microcontroller en de programmering ervan

AVR-microcontroller

De AVR is een soort controleapparaat dat in 1996 door de Atmel Corporation is vervaardigd. De AVR staat voor niets, het is maar een naam. De AVR microcontrollers bestaan ​​uit de architectuur van Harvard en daarom werkt het apparaat erg snel met een beperkt aantal instructies op machineniveau (RISC). De AVR-microcontrollers hebben speciale kenmerken vergeleken met andere microcontrollers, zoals 6-slaapmodi, ingebouwde ADC, interne oscillator en seriële datacommunicatie, enz. AVR-microcontrollers zijn beschikbaar in verschillende configuraties van 8-bit, 16-bit en 32-bit om verschillende bewerkingen uit te voeren.




AVR-microcontroller

AVR-microcontroller

USART seriële datacommunicatie in AVR-microcontroller

De USART staat voor universele synchrone en asynchrone ontvanger en zender. Het is een seriële communicatie van twee protocollen. Dit protocol wordt gebruikt voor het bit voor bit verzenden en ontvangen van de gegevens met betrekking tot klokpulsen op een enkele draad. De AVR-microcontroller heeft twee pinnen: TXD en RXD, die speciaal worden gebruikt voor het serieel verzenden en ontvangen van de gegevens. Elke AVR-microcontroller bestaat uit het USART-protocol met zijn eigen kenmerken.



USART-communicatie in AVR-microcontroller

USART-communicatie in AVR-microcontroller

De belangrijkste kenmerken van AVR USART

  • Het USART-protocol ondersteunt het full-duplex-protocol.
  • Het genereert een baudrate met een hoge resolutie.
  • Het ondersteunt het verzenden van seriële databits van 5 tot 9 en het bestaat uit twee stopbits.

USART Pin-configuratie

De USART van AVR bestaat uit drie pinnen:


  • RXD: USART-ontvangerpin (ATMega8 PIN 2 ATMega16 / 32 Pin 14)
  • TXD: USART zenderpin (ATMega8 PIN 3 ATMega16 / 32 Pin 15)
  • XCK: USART klokpen (ATMega8 PIN 6 ATMega16 / 32 Pin 1)

Werkingsmodi

De AVR-microcontroller van het USART-protocol werkt in drie modi:

  • Asynchrone normale modus
  • Asynchrone dubbele snelheidsmodus
  • Synchrone modus
Werkingsmodi

Werkingsmodi

Asynchrone normale modus

In deze communicatiemodus worden de gegevens bit voor bit verzonden en ontvangen zonder klokpulsen door de vooraf gedefinieerde baudrate die is ingesteld door het UBBR-register.

Asynchrone dubbele snelheidsmodus

In deze communicatiemodus worden de gegevens die met dubbele baudsnelheid worden overgedragen, ingesteld door het UBBR-register en worden U2X-bits in het UCSRA-register ingesteld. Dit is een snelle modus voor synchrone communicatie voor het snel verzenden en ontvangen van gegevens. Dit systeem wordt gebruikt waar nauwkeurige baudrate-instellingen en systeemklok vereist zijn.

Synchrone modus

In dit systeem wordt het verzenden en ontvangen van de gegevens met betrekking tot de klokpuls ingesteld op UMSEL = 1 in het UCSRC-register.

USART-configuratie in AVR-microcontroller

USART kan worden geconfigureerd met behulp van vijf registers, zoals drie controleregisters , een dataregister en een baudrate-selectieregister, zoals UDR, UCSRA, UCSRB, UCSRC en UBRR.

7 stappen voor het samenstellen van het programma

Stap 1: Bereken en stel de baudrate in

De baudrate van USART / UART wordt bepaald door de UBRR-registrar. Dit register wordt gebruikt om de datatransmissie met de specifieke snelheid te genereren. De UBRR is een 16-bits register. Omdat de AVR een 8-bits microcontroller is en elke registergrootte 8-bits is. Daarom is hier het 16-bits UBRR-register samengesteld uit twee 8-bits registers zoals UBRR (H), UBRR (L).

De formule van de baudrate is

BAUD = Donker / (16 * (UBBR + 1))

De formule van het UBRR-register is

UBRR = Donker / (16 * (BAUD-1))

De frequentie van de AVR-microcontroller is 16 MHz = 16000000 Laten we aannemen dat de baudrate 19200Bps is, dan

UBRR = 16000000 / (16 * (19200-1))

UBRR = 16000000 / (16 * (19200-1))

UBRR = 51,099

Zoek uiteindelijk de baudrate

BAUD = 16000000 / (16 * (51 + 1))
UBRR = 19230bps

Stap 2: Selectie gegevensmodus

De datatransmissiemodus, startbit en stopbit en de tekengrootte worden ingesteld door het besturings- en statusregister UCSRC.

Selectie gegevensmodus

Selectie gegevensmodus

Stap 3: Selectie van datatransmissiemodus

De synchrone en asynchrone modus wordt geselecteerd door de UMSEL-bit van het controlestatusregister. Als we UMSEL = 0 geven, werkt de USART in asynchrone modus, anders in synchrone modus.

Selectie van datatransmissiemodus

Selectie van datatransmissiemodus

Stap 4: Start Bit en Stop Bit

De startbit en stopbits zijn een manier om de gegevens serieel te verzenden en ontvangen. Over het algemeen bestaat elke gegevensfaam uit één stat-bit en één stopbit, maar de AVR-microcontroller heeft één startbit en twee stopbits voor het verwerken van de gegevens. De extra stopbit kan handig zijn om een ​​beetje extra ontvangstverwerkingstijd toe te voegen. Het is vooral handig bij hoge gegevensoverdrachtsnelheden, terwijl de gegevensoverdrachtsnelheid erg hoog is, zodat we niet de juiste gegevens krijgen. We kunnen dus de verwerkingstijd verlengen door twee stopbits te gebruiken om de juiste gegevens te krijgen.

Start Bit en Stop Bit

Start Bit en Stop Bit

Het aantal stopbits wordt geselecteerd door de USBS-bit van UCSRC - het controlestatusregister. De USBS = 0, voor één stopbit, en USBS = 1, voor twee stopbits.

Stap5: Stel de tekengrootte in

Net als bij de basis microcontrollers het verzenden en ontvangen van de byte aan gegevens (8-bits) per keer, of het nu in een AVR-microcontroller is, we kunnen een dataframeformaat in elk frame kiezen door de UCSZ-bit van het UCSRC-register.

Dataframe-indeling

Dataframe-indeling

Stap6: Sla de ontvangen gegevens op

De AVR-microcontroller bestaat uit een UDR-bufferregister voor het verzenden en ontvangen van gegevens. De UDR is een 16-bits bufferregister waarin 8 bits worden gebruikt voor het ontvangen (RXB) van de gegevens en andere bits worden gebruikt voor het verzenden van de gegevens (TXB). Het verzenden van gegevensbufferregister zal de bestemming zijn naar het UDR-register voor de geschreven gegevens op zijn locatie. Het ontvangen van gegevensbufferregister zal de inhoud van het UDR-register retourneren.

Stap7: Zender en ontvanger inschakelen

De verzonden en ontvangen gegevens worden toegestaan ​​door de RXC- en TXC-pinnen van de microcontroller die zijn ingesteld door het UCSRA-register van de microcontroller. Deze door de microcontroller ingestelde vlagbit voor de gegevens wordt voltooid door ontvangen en verzenden (TXC = RXC = 1).

Verdubbel de baudrate

We kunnen de overdrachtssnelheid van de USART-communicatie van de AVR verdubbelen microcontroller van 16 bits tot 8 bits effectief door de U2X-bit in het UCSRA-register. Deze bit is alleen van invloed op asynchrone werking. Als we deze bit (U2X = 1) kunnen instellen, wordt de baudrate verlaagd van 16 bit naar 8 bit, waardoor de overdrachtssnelheid voor synchrone communicatie effectief wordt verdubbeld.

Dit is een geavanceerde functie van de AVR-microcontroller voor een snelle verwerking van de gegevens.

USART-programma

Elke microcontroller is vooraf gedefinieerd met een specifieke IDE, en op basis van deze IDE, microcontrollers zijn geprogrammeerd met embedded C of assembleertaal. De programmering van de AVR-microcontroller is ontwikkeld door de AVR-studio. Bovendien wilt u aanvullende informatie over het stappen om op microcontrollers gebaseerde projecten te bouwen , of gedetailleerde informatie over dit onderwerp, kunt u contact met ons opnemen door hieronder te reageren.