Elektronika.lt
 2019 m. rugsėjo 23 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 NaujienosSąrašas
 StraipsniaiSąrašas
 Vaizdo siužetaiSąrašas
 Nuolaidos, akcijosSąrašas
 Produktų apžvalgosSąrašas
 Naudingi patarimaiSąrašas
 Vykdomi projektaiSąrašas
 Schemų archyvasSąrašas
 - Garso technika
 - Automobilių elektronika
 - Buitinė elektronika
 - Kompiuterių elektronika
 - Maitinimo šaltiniai
 - Mikrovaldikliai
 - Radiotechnika
 - Šviesos efektai
 - Įvairi elektronika
 Teorija, žinynaiSąrašas
 Nuorodų katalogai
 Įvairūs siuntiniai
 Bendravimas
 Skelbimai ir pasiūlymai
 Elektronikos remontas
 Robotų kūrėjų klubas
 RTN žurnalo archyvas






 Verta paskaityti
Rugsėjo 23 d. 12:24
Lietuviai skiepų žalą keičia kita sąmokslo teorija: mano, kad nauja technologija yra mirtinas ginklas
Rugsėjo 23 d. 09:27
Kaip išarchyvuoti „zip“ failus „iPhone“ ir „iPad“
Rugsėjo 23 d. 08:16
Pasaulis kyla prieš „Boeing“ ir federalinę aviacijos saugumo agentūrą (1)
Rugsėjo 22 d. 11:29
Naujos kartos branduolinė energetika reikalauja druskos – britų kompanija ruošiasi gaminti itin saugius reaktorius (1)
Rugsėjo 21 d. 19:11
Savaitgalis kosmose: kokį viešbutį pasirinkti ir kiek tai kainuos
Rugsėjo 21 d. 17:40
Sužinokite kaip klausytis „Youtube“ vaizdo reportažo neatrakinus išmaniojo telefono!
Rugsėjo 21 d. 15:19
Dirbtinis intelektas rūšiuos butelius ir pakuotes: latvių sukurtam prototipui nereikės brūkšninių kodų
Rugsėjo 21 d. 11:26
„Swedbank“ perspėjimas: suaktyvėjo sukčiai, ieškantys pinigų „mulų“
Rugsėjo 20 d. 20:26
Pirmieji Lietuvoje prisijungė prie mobilios aplikacijos pardavimams skatinti ir jau mato rezultatus
Rugsėjo 20 d. 19:09
Dažniausios įmonių IT saugumo klaidos: nuo pasitikėjimo antivirusine iki slaptažodžių politikos
FS 19 Tractor mods
Farming Simulator 19 Mods, FS 19 Maps, How to install
ATS mods
ATS trailer mods, ATS truck mods, ATS map mods
FS 19 Tractors
Farming Simulator 19 Mods, FS 19 Maps, FS 19 Trucks
FS19 Maps, FS19 Trucks
Farming Simulator 2019 Mods, FS19 Tractors
Install MC Mods
Minecraft Dungeons Mods, Minecraft Dungeons Skins, Minecraft Dungeons Maps
FS19 Combines
Farming Simulator 19 Mods, FS19 Trucks, FS 19 Mods
How to Install Mods
Minecraft Dungeons Mod, Minecraft Dungeons Maps, Minecraft Dungeons Skins
Mobilieji telefonai
Mobilieji telefonai internetu, telefonų dėklai, telefonų priedai
Reklama
 Schemų archyvas » Mikrovaldikliai Dalintis | Spausdinti

Pirmi žingsniai AVR UART

Publikuota: 2005-02-19 18:00
Tematika: Mikrovaldikliai
Tipas: Paprasta
Autorius: el. paštas Darius Grigaitis
Aut. teisės: el. paštas ©Elektronika.lt

AVR AT2313 mikrovaldiklio UART'ą galime laikyti mikrovaldiklio COM prievadu, kuris turi tokias pačias savybes, kaip ir AK RS232 prievadas. UART privalumas yra tas, kad jis nereikalauja programinio RS232 protokolo įgyvendinimo, kadangi tai atlieka integruota schema mikrovaldiklio viduje.

 Rodyti komentarus (12)
Įvertinimas:  1 2 3 4 5 

AVR AT2313 mikrovaldiklio UART'ą (Universal Asynchronous Receiver and Transmitter) galime laikyti mikrovaldiklio COM prievadu, kuris turi tokias pačias savybes, kaip ir asmeninio kompiuterio RS232 prievadas. Skirtumas tik toks, kad kompiuterio COM prievado signalų įtampų lygiai yra +/-12 V, o mikrovaldiklio 0..5 V. UART privalumas yra tas, kad jis nereikalauja programinio RS232 protokolo įgyvendinimo, kadangi tai atlieka integruota schema mikrovaldiklio viduje. Todėl pakanka tik nustatyti tos schemos parametrus įrašant reikšmes į UART registrus UBRR bei UCR. UBRR registras skirtas duomenų siuntimo/priėmimo greičiui nustatyti, kuris tiesiogiai priklauso nuo kvarcinio rezonatoriaus prijungto prie mikrovaldiklio. Lentelėje (1 pav.) pateikta keletą UBRR registro reikšmių, kaip matyti prie skirtingų kvarcinio rezonatoriaus dažnių reikšmių gauname skirtingus duomenų perdavimo greičius. Pagal lentelę minimalus duomenų perdavimo greitis yra 2400 bps, esant poreikiui gauti 1200 bps galima išsisukti iš padėties. Tokiu atveju nustatome UBRR = 103, kuris atitinka 2400 bps greitį prie 4 MHz kvarcinio rezonatoriaus. Tik šiuo atveju naudojame ne 4 MHz bet 2 MHz rezonatorių, tokiu būdu gauname reikiamą UART duomenų perdavimo spartą 1200 kbs. Tokia pati situacija, iš principo, galima ir į duomenų perdavimo spartos didinimą, bet tai paprastai nenaudojama.


1 pav. Keletas UBRR registro reikšmių

UCR registras skirtas UART'o valdymui, keičiant jo reikšmes galime valdyti siuntimo bei priėmimo pertrauktis. UART'as valdomas įrašant vienetus bei nulius į registro UCR skiltis RXCIE, TXCIE, UDRIE, RXEN, TXEN. Pirmos trys skiltys valdo UART'o pertrauktis, likusios dvi leidžia įjungti bei išjungti siuntimą.

Bandymams su UART reikės keleto dalykų, tai C kompiliatoriaus (IAR ar kito), programatoriaus, terminalo skirto darbui su RS232 bei pačio prietaiso (2 pav.). Prietaisui pagaminti reikės AT90S2313 mikrovaldiklio, MAX232 mikroschemos, 4 MHz kvarco, RS232 jungties, keleto kondensatorių bei varžų su šviesos diodais. Patogumo sumetimais, galite naudoti 3 mm skersmens šviesos diodus. Šveisos diodai reikalingi tam, kad būtų galima matyti ką mikrovaldiklis priėmė per UART'ą.


2 pav. Principinė schema

Bandymus pradėkime nuo paprastos mirkovaldikliui skirtos programos, kuri pastoviai per UART siunčia skaičių 5. Tokiu metodu lengva patikrinti ar teisingai prijungta MAX232 mikroschema.


#include "io2313.h" 
void main()
{ 
	UBRR=143; // Nustatome 4800 bps perdavimo greitį 11 MHz rezonatoriui
	//Įjungiame perdavimo pertraukt į 1-> TXCIE
	//Įjungiame perdavimo pertrauktį per UART kai UDR tuščias
	//Išjungiame priėmimą 0-> RXEN
	//Įjungiame perdavimą 1-> TXEN
	UCR=(1<<TXCIE)|(1<<UDRIE)|(0<<RXEN)|(1<<TXEN);
	SREG =128;// Įjungiame globalias pertrauktis
	while(1) // Ažminas ciklas
	{}
}
#pragma vector=UART_UDRE_vect //Pertraukties procedūra kai UDR=0
__interrupt void UDR_tuscias() 
{
	UDR=0x35; // Siunčiam ASCII simbolį, kuris atitinka skaičių 5
}

Sukompiliuota programa: test.hex.

Jei naudojate „IAR“ programą kodo kompiliavimui būtinai nustatykite parametrus, kad programa atpažintų (1<<TXCIE) simbolika. Tam reikia nueiti į „Project“ -> „Options“ ir pažymėti „Enable bit definition“ (3 pav.).


3 pav. Parametro nustatymas „<<“ simbolio atpažinimui

Pateiktas kodas yra toks, kad kiekvieną kartą kai iš UDR registro išsiunčiamas simbolis įvyksta UART_UDRE_vect pertrauktis, prie kurios pririštas programos kodas. Mūsų atveju programos kodas yra UDR=0x35. Taigi, kiekvieną kartą, kai ištuštėja UDR įvykdoma programa, kuri papildo UDR registrą. Siuntimas per UART automatiškai aktyvuojamas, kai atsiranda bet koks skaičius UDR registre. Pagal tai galima spręsti, kad mikrovaldiklis pastoviai perdavinės per UART 0x35 reikšmę. Siunčiamų duomenų patikrinimui galima naudoti „Windows“ operacinės sistemos „Hyper terminal“ programą.


4 pav. Parametrų nustatymas „Hyper terminal“ programoje

Prijungus maitinimą prie mikrovaldiklio ir paleidus „Hyper terminal“ programą bei nustačius ryšio parametrus (4 pav.), ekrane galima pamatyti kaip mikrovaldiklis perdavinėja skaičių 5, kadangi 0x35 ASCII kodo reikšmė yra penketas (5 pav.).


(spausti ant paveikslėlio)
5 pav. Priimamos reikšmės „Hyper terminal“ programoje

O dabar pabandykime perduoti bei priimti naudojant tą pačią „Hyper terminal“ programą. Šiuo atveju programos kodas tampa sudėtingesnis, kadangi tenka ne tik priimti apdoroti duomenis, bet taip pat rezultatą išsiųsti atgal į „Hyper terminal“ programą.


#include "io2313.h" 
void main()
{ 
	UBRR=143; // Nustatome 4800 bps perdavimo greitį 11 MHz rezonatoriui
	//Įjungiame perdavimo pertrauktį 1-> TXCIE
	//Įjungiame priėmimo pertrauktį 1->RXCIE
	//Įjungiame priėmimą 1-> RXEN
	//Įjungiame perdavimą 1-> TXEN
	UCR=(1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN);
	SREG =128;// Įjungiame globalias pertrauktis
	while(1) // Ažminas ciklas
	{}
}
#pragma vector = UART_RX_vect //Priėmimas
__interrupt void UDR_RX()
{
	int b;
	b=UDR-0x30; // Eliminuojame ASCII 
	PORTB=b;// Gauta simbolį siunčiame į PORTB
	b+=2;// Pridedame dvejetą prie priimtos vertės
	UDR=0x30+b;// Perduodame ASCII atgal į UART
}

Sukompiliuota programa: test2.hex.

Programos veikimas remiasi tuo, kad priėmus iš terminalo kokį nors simbolį, mikrovaldiklyje vykdoma pertrauktis UART_RX_vect ir įvykdoma su ja susijusi programos dalis. Šiuo atveju priimtas simbolis yra ASCII tipo. Tam, kad skaičius nuo 1 iki 0 būtų teisingai PORTB atvaizduotas, iš priimtos reikšmės atimame 0x30. Tai daroma dėl ASCII klaviatūros kodavimo. Tarkim, paspaudžiamas skaičius 6, per terminalą skaitmuo perduodamas kaip 0x36. Tada programa išgauna paspausto klavišo reikšmę 6 ir dvejetainiu kodu atvaizduoja įjungdama šviesos diodus (2 pav.). Tai programoje atitinka PORTB=b. Prie to skaičiaus pridedamas 2 ir kaip ASCII kodas išsiunčiamas atgal. „Hyper terminal“ programoje matysime rezultatą, kai paspaudžiamas koks nors skaičius ir priimamas 2 vienetais didesnis (6 pav.).


(spausti ant paveikslėlio)
6 pav. Išsiunčiamos ir priimtos reikšmės „Hyper terminal“ programoje

Kaip matyti (6 pav.), paspaudus 2, gražinama padidinta reikšmė 4, ta pati situacija ir su 5 ->7, 6->8 ir t.t.

Taigi, UART gali būti patogus įrankis perduoti duomenims į personalinį kompiuterį arba būti puiki priemonė nuotolinio valdymo sistemai, kaip atkodavimo ir komandų formavimo įrenginys.

Papildymas: forumietis slotkevitch2 suprojektavo RS232 - TTL signalų konverterį:

RS232 - TTL signalų konverteris



Draudžiama platinti, skelbti, kopijuoti
informaciją su nurodyta autoriaus teisių žyma be redakcijos sutikimo.

Global electronic components distributor – Allicdata Electronics

TMS ELECTRONICS
TMS ELECTRONICS

www.rslietuva.com – nemokamas elektronikos komponentų pristatymas

www.matuok.lt - Interneto spartos matavimo sistema

Lietuvos mokinių neformaliojo švietimo centras

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Technologijos.lt

Mokslo festivalis „Erdvėlaivis Žemė

www.esaugumas.lt – apsaugok savo kompiuterį!

LTV.LT - lietuviškų tinklalapių vitrina

CRM sistema – „Hanna CRM“

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

MRO Supply


Reklama
‡ 1999–2019 © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Reklama | Turinys | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina Valid XHTML 1.0!
Farming Simulator 2017 Mods, FS 17 Mods
ls2017.com
„TV programa“ – tiksli
televizijos programa

www.tvprograma.lt
Lietuvos mokinių neformaliojo švietimo centras
www.lmnsc.lt
Lietuvių kalba informacinėse technologijose
www.likit.lt
Svarstyklės – čia, matuokliai, laboratorinė įranga
www.moris.lt
Farming Simulator 2019 Mods, LS19 Mods, FS19 Mods
fs19.net
Mokslo ir technologijų pasaulis – naujienos ir straipsniai
www.technologijos.lt
Farming Simulator 2019 Mods, FS19 Tractors, FS19 Maps
farmingsimulator19mods.fr
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – geriausių lietuviškų tinklalapių katalogas
www.ltv.lt/technologijos/
FS 2019 Mods, FS 2017 Mods, FS 2015 Mods
www.farming2015mods.com
Mokslo populiarinimo projektas „Mokslas verslui ir visuomenei“
www.mokslasplius.lt
Reklama


Reklama