U ovom uputstvu uspostavit ćemo serijsku komunikaciju između dva ATMEGA8 mikrokontrolera. Ovdje uspostavljena komunikacija je tipa UART (Universal Asynchronous Receiver Transmitter). Ovom se serijskom komunikacijom podaci mogu dijeliti između dva mikrokontrolera, što je potrebno u različitim ugrađenim sustavima.
Komponente potrebne
Hardver: ATMEGA8 (2 komada), napajanje (5v), AVR-ISP PROGRAMER, kondenzator 100uF (spojen preko napajanja), otpor 1KΩ (dva komada), LED, tipka.
Softver: Atmel studio 6.1, progisp ili flash magic.
Kružni dijagram i objašnjenje

Razumijemo serijsku komunikaciju u AVR mikrokontrolerima. Ovdje ATMEGA serijski šalje podatke drugom ATMEGA-i. Ima i drugi način komunikacije, ali za jednostavnu komunikaciju odabiremo RS232. RS232 pin prvog ATMEGA8 povezan je s RXD pinom drugog ATMEGA8.
Uspostavljena podatkovna komunikacija programirana je tako da ima:
- Osam podatkovnih bitova
- Dva zaustavna bita
- Nema bita za provjeru pariteta
- Brzina prijenosa od 2400 BPS (bitova u sekundi)
- Asinkrona komunikacija (bez dijeljenja sata između dva ATMEGA8)
Dakle, imamo dva postavljena registra za dva ATMEGA8 različito, pri čemu jedan djeluje kao PRIJENOSNIK, a drugi kao PRIJEMNIK.
Sada za RS232 povezivanje dva ATmega mikrokontrolera, za TRANSMITTER i RECEIVER moraju biti zadovoljene sljedeće značajke:
1. TXD pin (značajka primanja podataka) prvog kontrolera mora biti omogućen za TRANSMITTER, a RXD pin drugog kontrolera mora biti omogućen za RECEIVER.
2. Budući da je komunikacija serijska, moramo znati kad god se primi bajt podataka, kako bismo mogli zaustaviti program dok ne primimo kompletni bajt. To se postiže omogućavanjem da podaci dobivaju potpuni prekid.
3. PODACI se prenose i primaju u kontroler u 8-bitnom načinu rada. Dakle, dva znaka bit će poslana upravljaču odjednom.
4. Nema bitova pariteta, jedan zaustavni bit u podacima koje šalje modul.
Gore navedene značajke postavljene su u registre kontrolera; razgovarat ćemo o njima ukratko,

TAMNO SIVO (UDRE): (TRASMITTER SIDE) Ovaj bit nije postavljen tijekom pokretanja, ali se koristi tijekom rada za provjeru je li odašiljač spreman za prijenos. Za više detalja pogledajte program na TRASMITTER SIDE.
SVIJETLO SIVO (RXC): (PRIMLJIVA STRANA) Ovaj bit nije postavljen tijekom pokretanja, ali se koristi tijekom rada za provjeru je li prijemnik spreman za primanje podataka ili ne. Za više detalja pogledajte program na STRANI PRIMANJA.
VOILET (TXEN): (TRASMITTER SIDE) Ovaj bit je postavljen za omogućavanje pina odašiljača na TRASMITTER SIDE.
CRVENO (RXEN): (PRIMLJIVA STRANA) Ovaj bit predstavlja značajku primanja podataka, ovaj bit mora biti postavljen da bi podaci iz modula trebali biti primljeni od strane kontrolera, on također omogućuje RXD pin regulatora.
SMEĐA (RXCIE): Ovaj bit mora biti postavljen za dobivanje prekida nakon uspješnog prijema podataka. Omogućavanjem ovog bita upoznajemo se odmah nakon primanja 8-bitnih podataka. Nećemo ovdje upotrijebiti ovaj dio, pa je ostavljen sam.
PINK (URSEL): Ovaj bit mora biti postavljen prije omogućavanja ostalih bitova u UCSRC, nakon postavljanja ostalih potrebnih bitova u UCSRC; URSEL mora biti onemogućen ili postavljen na nulu. Nećemo ovdje upotrijebiti ovaj dio, pa je ostavljen sam.
ŽUTA (UCSZ0, UCSZ1, UCSZ2): (PRIMANJE STRANE & STRANA PRIJEMNIKA) Ova tri bita koriste se za odabir broja podatkovnih bitova koje primamo ili šaljemo u jednom potezu.

Komunikacija između dva ATMEGA uspostavlja se kao osmerobitna komunikacija. Usklađivanjem komunikacije s tablicom koju imamo, UCSZ0, UCSZ1 na jedan i UCSZ2 na nulu.
Moramo ih postaviti i na prijemnu i na prijenosnu stranu.
NARANČASTA (UMSEL): (PRIMANJE STRANE & TRASMITTERA STRANE) Ovaj se bit postavlja na temelju toga komunicira li sustav asinkrono (oba koriste drugačiji sat) ili sinkrono (oba koriste isti sat).

Oba kontrolera ne dijele nijedan sat. Budući da obojica koriste svoj vlastiti sat. Dakle, moramo postaviti UMSEL na 0 u oba kontrolera.
ZELENO (UPM1, UPM0): (PRIMANJE STRANE I TRAMITERA STRANE) Ova dva bita prilagođavaju se na osnovi pariteta bitova koji koristimo u komunikaciji.

ATMEGA je programiran za slanje podataka bez pariteta, jer je duljina prijenosa podataka mala, možemo očito očekivati gubitak ili pogrešku podataka. Dakle, ovdje ne postavljamo nikakav paritet. Dakle, postavljamo i UPM1, UPM0 na nulu ili su oni lijevi, jer su svi bitovi prema zadanim postavkama 0.
PLAVO (USB): (PRIMLJANJE STRANE & TRASMITTER STRANE) Ovaj bit služi za odabir broja zaustavnih bitova koje koristimo tijekom komunikacije.

Ovdje uspostavljena komunikacija je asinkronog tipa, pa za postizanje preciznijeg prijenosa i prijema podataka trebamo koristiti dva zaustavna bita, pa smo u oba kontrolera postavili USBS na '1'.
Brzina prijenosa se postavlja u regulatoru odabirom odgovarajućeg UBRRH.

Vrijednost UBRRH odabire se brzinom prijenosa podataka i frekvencijom kristala CPU-a.

Dakle, unakrsnom referencom vrijednost UBRR vidi se kao '25', i tako je postavljena brzina prijenosa.
Kao što je prikazano u krugu, gumb je spojen na strani odašiljača. Kad ovaj gumb pritisne, osmobitni podatak šalje TRANSMITTER, a prima ih RECEIVER. Nakon uspješnog primanja ovih podataka uključuje i isključuje LED na nju povezanu, što pokazuje uspješan prijenos podataka između dva regulatora.
