Ebben a bemutatóban soros kommunikációt fogunk létrehozni két ATMEGA8 mikrokontroller között. Az itt létrehozott kommunikáció UART (univerzális aszinkron vevő adó) típusú. Ezzel a soros kommunikációval az adatok két mikrokontroller között oszthatók meg, amire a különböző beágyazott rendszerekben szükség van.
Szükséges alkatrészek
Hardver: ATMEGA8 (2 darab), tápegység (5v), AVR-ISP PROGRAMMER, 100uF kondenzátor (a tápegységen keresztül csatlakozik), 1KΩ ellenállás (két darab), LED, Gomb.
Szoftver: Atmel studio 6.1, progisp vagy flash magic.
Áramkör diagram és magyarázat
Értsük meg az AVR mikrokontrollerek soros kommunikációját. Itt az ATMEGA soros formában küld adatokat a másik ATMEGA-nak. Más kommunikációs módja van, de az egyszerű kommunikáció érdekében az RS232-et választjuk. Az első ATMEGA8 RS232 tűje csatlakozik a második ATMEGA8 RXD tűjéhez.
A létrehozott adatkommunikáció programozása:
- Nyolc adatbit
- Két stopbit
- Nincs paritásellenőrző bit
- 2400 BPS (bit / másodperc) sebesség
- Aszinkron kommunikáció (nincs óraosztás két ATMEGA8 között)
Tehát két beállított regiszterünk van két különböző ATMEGA8-hoz, ahol az egyik adóként, a másik pedig vevőként működik.
Most az RS232 interfész két ATmega mikrokontroller, a következő jellemzőkkel kell teljesülnie az adó és a vevő:
1. Engedélyezni kell az első vezérlő TXD tűjét (adatfogadási funkcióját) a TRANSMITTER számára, a második vezérlő RXD tűjét pedig engedélyezni kell a RECEIVER számára.
2. Mivel a kommunikáció soros, tudnunk kell, amikor az adatbájt beérkezik, hogy a teljes bájt beérkezéséig le tudjuk állítani a programot. Ez az adatfogadás teljes megszakításának engedélyezésével történik.
3. Az adatokat 8 bites módban továbbítják és fogadják a vezérlőnek. Tehát egyszerre két karakter kerül elküldésre a vezérlőnek.
4. Nincsenek paritásbitek, egy stopbit a modul által küldött adatokban.
A fenti jellemzők a vezérlő regiszterekben vannak beállítva; röviden megvitatjuk őket,
SÖTÉT SZÜRKE (UDRE): (TRASMITTER SIDE) Ez a bit nincs beállítva az indításkor, de a munka során annak ellenőrzésére szolgál, hogy az adó készen áll-e az adásra. További részletekért lásd a TRASMITTER SIDE programot.
FÉNY SZÜRKE (RXC): (FOGADÓ OLDAL) Ez a bit nincs beállítva az indításkor, de a munka során annak ellenőrzésére szolgál, hogy a vevő készen áll-e az adatok fogadására. További részletekért olvassa el a FOGADÓ OLDAL című programot.
VOILET (TXEN): (TRASMITTER SIDE) Ez a bit az adó PIN-kódjának engedélyezésére van beállítva a TRASMITTER SIDE oldalon.
VÖRÖS (RXEN): (FOGADÓ OLDAL) Ez a bit a fogadási adatok funkciót képviseli, ezt a bitet be kell állítani ahhoz, hogy a modul adatai a vezérlő által fogadhatók legyenek, és lehetővé teszi a vezérlő RXD tűjét is.
BROWN (RXCIE): Ezt a bitet úgy kell beállítani, hogy sikeres adatvétel után megszakítást kapjon. Ennek a bitnek az engedélyezésével megismerjük, közvetlenül a 8 bites adatok fogadása után. Ezt a kicsit itt nem fogjuk használni, így egyedül marad.
PINK (URSEL): Ezt a bitet be kell állítani, mielőtt engedélyezné az egyéb biteket az UCSRC-ben, miután az egyéb szükséges biteket beállítja az UCSRC-ben; Az URSEL-t le kell tiltani, vagy nullára kell állítani. Ezt a kicsit itt nem fogjuk használni, így egyedül marad.
SÁRGA (UCSZ0, UCSZ1, UCSZ2): (FOGADÓ OLDAL ÉS TRASMITTER OLDAL) Ez a három bit arra szolgál, hogy kiválasszuk az egyszerre fogadott vagy küldött adatbitek számát.
Két ATMEGA közötti kommunikáció nyolc bites kommunikációként jön létre. A kommunikációnak az UCSZ0, az UCSZ1 és az UCSZ2 nullával való megfeleltetésével egyeztetjük a táblázatot.
Ezeket be kell állítanunk mind a vevő, mind az adó oldalra.
NARANCS (UMSEL): (FOGADÓ OLDAL ÉS TRASMITTER OLDAL) Ezt a bitet annak alapján állítják be, hogy a rendszer aszinkron (mindkettő eltérő órát használ) vagy szinkron (mindkettő ugyanazt az órát használja) kommunikációt folytatja.
Mindkét vezérlő nem osztja az órát. Mivel mindkettő saját belső óráját használja. Tehát mindkét vezérlőben 0-ra kell állítanunk az UMSEL értékét.
ZÖLD (UPM1, UPM0): (FOGADÓ OLDAL ÉS TRASMITTER OLDAL) Ezt a két bitet a kommunikáció során használt bitparitás alapján állítjuk be.
Az ATMEGA úgy van beprogramozva, hogy paritás nélkül küldjön adatokat, mivel az adatátvitel hossza kicsi, egyértelműen számíthatunk adatvesztésre vagy hibára. Tehát itt nem állítunk fel paritást. Tehát mind az UPM1-et, mind az UPM0-t nullára állítjuk, vagy maradnak, mert alapértelmezés szerint az összes bit 0.
KÉK (USBS): (FOGADÓ OLDAL ÉS TRASMITTER OLDAL) Ez a bit arra szolgál, hogy kiválasszuk a kommunikáció során használt stopbitek számát.
Az itt létrehozott kommunikáció aszinkron típusú, ezért a pontosabb adatátvitel és vétel érdekében két stopbitet kell használnunk, ezért az USBS-t mindkét vezérlőben '1' -re állítottuk.
Az adatátviteli sebességet a vezérlő állítja be a megfelelő UBRRH kiválasztásával.
Az UBRRH értéket az adatátviteli sebesség és a CPU kristályfrekvenciájának keresztreferenciájával választjuk meg.
Tehát kereszthivatkozás alapján az UBRR értéke '25', és így az átviteli sebesség beállítása.
Amint az áramkör mutatja, az adó oldalán egy gomb van csatlakoztatva. Ha ezt a gombot megnyomja, nyolc bites adatot küld az adó, és ezeket az adatokat a vevő fogadja. Az adatok sikeres fogadásakor be- és kikapcsolja a hozzá kapcsolt LED-et, amely két vezérlő közötti sikeres adatátvitelt mutat.