У овом упутству ћемо успоставити серијску комуникацију између два АТМЕГА8 микроконтролера. Овде успостављена комуникација је типа УАРТ (Универсал Асинцхроноус Рецеивер Трансмиттер). Овом серијском комуникацијом подаци се могу делити између два микроконтролера, што је потребно у различитим уграђеним системима.
Компоненте потребне
Хардвер: АТМЕГА8 (2 комада), напајање (5в), АВР-ИСП ПРОГРАМЕР, 100уФ кондензатор (повезан преко напајања), 1КΩ отпорник (два дела), ЛЕД, дугме.
Софтвер: Атмел студио 6.1, прогисп или фласх магиц.
Шема и објашњење
Разумијемо серијску комуникацију у АВР микроконтролерима. Овде АТМЕГА серијски шаље податке другом АТМЕГА-и. Има и други начин комуникације, али за лакшу комуникацију бирамо РС232. РС232 пин првог АТМЕГА8 је повезан са РКСД пином другог АТМЕГА8.
Успостављена комуникација података програмирана је да има:
- Осам битова података
- Два зауставна бита
- Нема бита за проверу паритета
- Брзина преноса од 2400 БПС (бита у секунди)
- Асинхрона комуникација (нема дељења сата између два АТМЕГА8)
Дакле, имамо два постављена регистра за два АТМЕГА8 различито, при чему један делује као ПРИЈЕНОС, а други као ПРИЈЕМНИК.
Сада за РС232 повезивање два АТмега микроконтролера, следеће карактеристике морају бити задовољене за ТРАНСМИТТЕР и РЕЦЕИВЕР:
1. ТКСД пин (функција пријема података) првог контролера мора бити омогућен за ТРАНСМИТТЕР, а РКСД пин другог контролера мора бити омогућен за РЕЦЕИВЕР.
2. Будући да је комуникација серијска, морамо знати кад год се прими бајт података, како бисмо могли зауставити програм док не примимо комплетан бајт. То се постиже омогућавањем да подаци примају потпуни прекид.
3. ПОДАЦИ се преносе и примају у контролер у 8-битном режиму. Дакле, два знака ће се истовремено слати контролору.
4. Нема битова паритета, један зауставни бит у подацима које шаље модул.
Горе наведене карактеристике постављене су у регистре контролера; разговараћемо о њима укратко,
ТАМНО СИВО (УДРЕ): (ТРАСМИТТЕР СИДЕ) Овај бит није подешен током покретања, али се користи током рада за проверу да ли је предајник спреман за пренос или не. За више детаља погледајте програм на ТРАСМИТТЕР СИДЕ.
СВЕТЛО СИВО (РКСЦ): (ПРИМЉИВА СТРАНА) Овај бит није подешен током покретања, али се користи током рада за проверу да ли је пријемник спреман за пријем података или не. За више детаља погледајте програм на СТРАНИ ПРИМАЊА.
ВОИЛЕТ (ТКСЕН): (ТРАСМИТТЕР СИДЕ) Овај бит је подешен за омогућавање пина предајника на ТРАСМИТТЕР СИДЕ.
ЦРВЕНО (РКСЕН): (ПРИМЉИВА СТРАНА) Овај бит представља функцију пријема података, овај бит мора бити подешен за податке из модула који ће примати контролер, а такође омогућава и РКСД пин контролера.
СМЕЂА (РКСЦИЕ): Овај бит мора бити подешен за добијање прекида након успешног пријема података. Омогућавањем овог бита упознајемо се одмах након пријема 8-битних података. Овде нећемо користити овај комадић, па је остављен сам.
ПИНК (УРСЕЛ): Овај бит мора бити постављен пре омогућавања осталих битова у УЦСРЦ, након подешавања осталих потребних битова у УЦСРЦ; УРСЕЛ мора бити онемогућен или постављен на нулу. Овде нећемо користити овај комадић, па је остављен сам.
ЖУТА (УЦСЗ0, УЦСЗ1, УЦСЗ2): (ПРИМАЊЕ СТРАНЕ & СТРАНА ОДМЕТНИКА) Ова три бита се користе за одабир броја битова података које примамо или шаљемо у једном потезу.
Комуникација између два АТМЕГА успостављена је као осмобитна комуникација. Повезивањем комуникације са табелом коју имамо, УЦСЗ0, УЦСЗ1 на један и УЦСЗ2 на нулу.
Морамо их поставити и на пријемну и на предајну страну.
НАРАНЧАСТА (УМСЕЛ): (ПРИМАЊЕ СТРАНЕ & ТРАСМИТТЕРА СТРАНЕ) Овај бит се поставља на основу тога да ли систем комуницира асинхроно (оба користе другачији сат) или синхроно (оба користе исти сат).
Оба контролера не деле ниједан сат. Пошто се обојица користе сопственим унутрашњим сатом. Дакле, морамо поставити УМСЕЛ на 0 у оба контролера.
ЗЕЛЕНО (УПМ1, УПМ0): (ПРИМАЊЕ СТРАНЕ & ТРАСМИТТЕРА СТРАНЕ) Ова два бита су прилагођена на основу паритета битова који користимо у комуникацији.
АТМЕГА је програмиран за слање података без паритета, јер је дужина преноса података мала, можемо очигледно очекивати губитак података или грешку. Дакле, ми овде не постављамо никакав паритет. Дакле, постављамо и УПМ1, УПМ0 на нулу или су они остављени, јер су сви битови подразумевано 0.
ПЛАВА (УСБ): (ПРИМАЊЕ СТРАНЕ & ТРАСМИТТЕРА СТРАНЕ) Овај бит се користи за одабир броја зауставних битова које користимо током комуникације.
Овде успостављена комуникација је асинхроног типа, тако да за прецизнији пренос и пријем података морамо да користимо два стоп бита, па смо у оба контролера поставили УСБС на '1'.
Брзина преноса података подешава се у контролеру избором одговарајућег УБРРХ.
Вредност УБРРХ се бира на основу брзине преноса података и фреквенције кристала ЦПУ.
Дакле, унакрсном референцом вредност УБРР се види као '25', и тако је постављена брзина преноса.
Као што је приказано у колу, дугме је повезано са стране предајника. Када ово дугме притиснете, осмобитни податак шаље ТРАНСМИТТЕР, а прима их РЕЦЕИВЕР. Након успешног пријема ових података укључује и искључује ЛЕД повезану на њега, што показује успешан пренос података између два контролера.