Šajā apmācībā mēs izveidosim sērijveida sakarus starp diviem ATMEGA8 mikrokontrolleriem. Šeit izveidotā komunikācija ir UART (Universal Asynchronous Receiver Transmitter) tipa. Ar šo sērijas sakaru datus var koplietot starp diviem mikrokontrolleriem, kas ir nepieciešams dažādās iegultās sistēmās.
Nepieciešamās sastāvdaļas
Aparatūra: ATMEGA8 (2 gab.), Barošanas avots (5v), AVR-ISP PROGRAMMĒTĀJS, 100uF kondensators (savienots pāri strāvas padevei), 1KΩ rezistors (divi gabali), LED, poga.
Programmatūra: Atmel studio 6.1, progisp vai flash magic.
Ķēdes shēma un skaidrojums
Ļaujiet mums saprast seriālo komunikāciju AVR mikrokontrolleros. Šeit ATMEGA sērijveidā nosūta datus otram ATMEGA. Tam ir cits saziņas veids, taču ērtai saziņai mēs izvēlamies RS232. Pirmās ATMEGA8 RS232 tapa ir savienota ar otrās ATMEGA8 RXD tapu.
Izveidotajai datu komunikācijai ir ieprogrammēts:
- Astoņi datu biti
- Divi stop biti
- Nav paritātes pārbaudes bitu
- Buda ātrums 2400 BPS (biti sekundē)
- Asinhronā komunikācija (starp diviem ATMEGA8 nav pulksteņa koplietošanas)
Tātad mums ir divi kopīgi reģistri diviem ATMEGA8 atšķirīgi, kur viens darbojas kā RADZĪTĀJS, bet otrs - kā UZŅĒMējs.
Tagad par RS232 saskarsme starp diviem ATmega mikrokontrolleri, šādas funkcijas jāizpilda, lai raidītājs un uztvērējs:
1. Pirmā kontrollera TXD tapai (datu saņemšanas funkcijai) jābūt iespējotai raidītājam TRANSMITTER, bet otrajam kontrollerim RXD tapai jābūt iespējotai uztvērējam.
2. Tā kā saziņa ir sērijveida, mums jāzina ikreiz, kad tiek saņemts datu baits, lai mēs varētu pārtraukt programmu, līdz tiek saņemts pilnīgs baits. Tas tiek darīts, ļaujot datiem saņemt pilnīgu pārtraukumu.
3. DATI tiek pārsūtīti un saņemti kontrolierim 8 bitu režīmā. Tātad kontrolierim vienlaikus tiks nosūtītas divas rakstzīmes.
4. Moduļa sūtītajos datos nav paritātes bitu, viena pieturas bita.
Iepriekš minētās funkcijas ir iestatītas kontrolieru reģistros; mēs tos īsi apspriedīsim,
Tumšs pelēks (UDRE): (TRASMITTER SIDE) Šis bits nav iestatīts startēšanas laikā, bet tas tiek izmantots darba laikā, lai pārbaudītu, vai raidītājs ir gatavs pārraidīšanai. Plašāku informāciju skatiet programmā TRASMITTER SIDE.
LIGHT GREY (RXC): (UZŅEMŠANAS PUSE) Šis bits nav iestatīts startēšanas laikā, bet tiek izmantots darba laikā, lai pārbaudītu, vai uztvērējs ir gatavs datu saņemšanai. Lai iegūtu sīkāku informāciju, skatiet programmu SAŅEMŠANAS PUSĒ.
VOILET (TXEN): [TRASMITTER SIDE] Šis bits ir iestatīts, lai iespējotu raidītāja tapu TRASMITTER SIDE.
RED (RXEN): [RECEIVING SIDE] Šis bits apzīmē datu saņemšanas funkciju, šis bits ir jāiestata, lai kontrolieris saņemtu datus no moduļa, tas arī ļauj kontroliera RXD tapu.
BROWN (RXCIE): Šis bits ir jāiestata, lai pēc veiksmīgas datu saņemšanas tiktu pārtraukts. Iespējojot šo bitu, mēs uzzinām uzreiz pēc 8 bitu datu saņemšanas. Mēs šeit neizmantosim šo drusku, tāpēc tas paliek viens.
PINK (URSEL): Šis bits ir jāiestata pirms citu bitu iespējošanas UCSRC, pēc citu nepieciešamo bitu iestatīšanas UCSRC; URSEL ir jāatspējo vai jānorāda uz nulli. Mēs šeit neizmantosim šo drusku, tāpēc tas paliek viens.
DZELTENA (UCSZ0, UCSZ1, UCSZ2): (UZŅEMŠANAS Puse un TRASMITTERA Puse) Šie trīs biti tiek izmantoti, lai atlasītu saņemamo vai nosūtīto datu bitu skaitu vienā piegājienā.
Komunikācija starp diviem ATMEGA ir izveidota kā astoņu bitu komunikācija. Saskaņojot saziņu ar mums pieejamo tabulu, UCSZ0, UCSZ1 uz vienu un UCSZ2 uz nulli.
Mums tie jānosaka gan uztvērēja, gan raidītāja pusē.
ORANŽS (UMSEL): (UZŅEMŠANA SĀNU UN TRASMITERA PUSĒ) Šis bits tiek iestatīts atkarībā no tā, vai sistēma sazinās asinhroni (abi izmanto atšķirīgu pulksteni) vai sinhroni (abi izmanto vienu un to pašu pulksteni).
Abiem kontrolieriem nav kopīga pulksteņa. Tā kā abi izmanto savu iekšējo pulksteni. Tāpēc mums abos kontrolleros ir jāiestata UMSEL uz 0.
ZAĻŠ (UPM1, UPM0): (SAŅEMŠAIS PUSES UN TRASMITERU PUSS) Šie divi biti tiek pielāgoti, pamatojoties uz bitu paritāti, kuru izmantojam saziņā.
ATMEGA ir ieprogrammēts datu sūtīšanai bez paritātes, jo datu pārraides garums ir mazs, mēs skaidri varam sagaidīt, ka netiks zaudēti vai kļūdaini. Tātad mēs šeit nenosakām nekādu paritāti. Tātad, mēs iestatījām gan UPM1, gan UPM0 uz nulli, vai arī tie ir palikuši, jo visi biti pēc noklusējuma ir 0.
ZILA (USBS): (SAŅEMŠANĀ PUSES UN TRASMITTERA PUSES) Šis bits tiek izmantots, lai izvēlētos pieturas bitu skaitu, ko izmantojam saziņas laikā.
Šeit izveidotā komunikācija ir asinhrona tipa, tāpēc, lai iegūtu precīzāku datu pārraidi un saņemšanu, mums jāizmanto divi pieturas biti, tāpēc abos kontrolleros USBS iestatījām uz “1”.
Pārraides ātrums tiek iestatīts kontrolierī, izvēloties atbilstošo UBRRH.
UBRRH vērtību izvēlas, savstarpēji atsaucoties uz datu pārraides ātrumu un procesora kristāla frekvenci.
Tātad, izmantojot savstarpēju atsauci, UBRR vērtība tiek uzskatīta par '25', un tāpēc tiek iestatīts datu pārraides ātrums.
Kā parādīts ķēdē, raidītāja pusē ir pievienota poga. Nospiežot šo pogu, astoņu bitu datus nosūta raidītājs un šos datus saņem uztvērējs. Veiksmīgi saņemot šos datus, tas ieslēdz un izslēdz tam pievienoto LED, kas parāda veiksmīgu datu pārsūtīšanu starp diviem kontrolieriem.