Elektronika.lt
 2024 m. kovo 29 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
Kovo 29 d. 14:25
„Sony“ pristato labai lauktus programinės įrangos atnaujinimus, įskaitant C2PA atitikimą ir vaizdų autentiškumo užtikrinimą
Kovo 29 d. 11:39
Paaiškėjo, kokį atsiperkamumą turi namų ūkyje naudojamos, elektros energiją kaupiančios baterijos (1)
Kovo 29 d. 08:26
Inovacijų ekspertai su partneriais siekia pagerinti Lietuvos miškų ir jų kelių būklę
Kovo 28 d. 20:32
„Elektrum Lietuva“ į elektromobilių įkrovimo tinklo plėtrą šiemet investuos 9 mln. eurų
Kovo 28 d. 17:25
NASA „BurstCube“ palydovas paleistas tirti galingiausius sprogimus kosmose
Kovo 28 d. 14:50
„Logitech“ pristato „Signature Slim“ klaviatūrą ir darbo bei gyvenimo derinį prie rašomojo stalo
Kovo 28 d. 11:17
Kaip atrodys mokslai, studijos ir darbas DI eroje: pagrindiniai parodos „Karjera & studijos Lietuvoje“ akcentai
Kovo 28 d. 08:52
Jungikliai pagaminti iš atliekų – naujovė tvariems namams
Kovo 27 d. 20:30
Saulės elektrinė – daugiabučio balkone: ar tai įmanoma Lietuvoje? (1)
Kovo 27 d. 18:19
4 išmanūs sprendimai, leidžiantys efektyviai taupyti elektrą
FS 22 Tractors
Farming Simulator 19 Mods, FS 22 Maps, FS22 Mods
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS22 Trucks
VAT calculator
VAT number check, What is VAT, How much is VAT
Paskola internetu
Vartojimo paskola, paskola automobiliui, paskola būsto remontui
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope
FS22 Mods
FS22 Harvesters, FS22 Tractors Mods, FS22 Maps Mods
FS22 Mods
FS22 Maps,
FS22 Harvesters,
FS22 Tractors
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
Sims 4 Mods
Sims 4 CC Clothes,
Sims 4 Hair CC,
Sims 4 Skill Cheat
Optic sight
Binoculars for hunting elk,
Best compact binoculars,
Riflescope hunting
Reklama
 Schemų archyvas » Mikrovaldikliai Dalintis | Spausdinti

Pirmi žingsniai – „Atmel“ AVR pradedantiesiems

Publikuota: 2006-05-31 14:00
Tematika: Mikrovaldikliai
Tipas: Paprasta
Autorius: el. paštas Darius Grigaitis
Aut. teisės: el. paštas ©Elektronika.lt

Dauguma elektronikos pradedančiųjų, norėdami užsiimti mikrovaldiklių programavimu, nežino kokio tipo mikrovaldiklį geriausiai rinktis ir nuo ko pradėti, ir kaip tai padaryti kuo lengviausiu keliu. Tai atnaujintas, žymiai patobulintas, prieš porą metų skelbtos medžiagos variantas.

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

Dauguma elektronikos pradedančiųjų, norėdami užsiimti mikrovaldiklių programavimu, nežino kokio tipo mikrovaldiklį geriausiai rinktis ir nuo ko pradėti, ir kaip tai padaryti kuo lengviausiu keliu. Taigi, ką reikia daryti, kad bent paprasta programa įrašyta į mikrovaldiklį pradėtų junginėti šviesos diodą?

Tai atnaujintas, patobulintas, prieš porą metų skelbtos medžiagos variantas.

Šiuo metu labai paplitę „Atmel“ firmos AVR tipo 8 bitų RISC mikrovaldikliai, kurie yra pigūs bei pasižymi greitaveika, lyginant su PIC tipo mikrovaldikliais.

Pirmas žingsnis į mikrovaldiklių pasaulį – programatoriaus, kuriuo galima įrašyti programas, gamyba. Programatorių galite pasidaryti paskaitę straipsnelį mūsų portale.

Internete galima rasti ir kitokių, paprastesnių konstrukcijų programatorių, jungiamų prie LPT jungties, kuriuos sudaro tik kelios varžos. Tačiau, tokiu atveju rizikuosite sugadinti kompiuterio jungtį, ypač klaidingo schemos sujungimo atveju.

Antras žingsnis – pasirinkti mikrovaldiklį. Paimkime pakankamai pigų „Atmega16“. Pastaroji mikroschema turi 40 kontaktų. Tik nereikia išsigąsti jų gausos. Visų kontaktų mums iš pradžių nereikės. Pats mikroschemos prijungimas prie 5 V maitinimo yra labai paprastas (1 pav.).

Papildomai prireiks kelių varžų, kondensatorių, šviesos diodų, kontaktų eilės bei mygtuko. Šviesos diodai yra prijungti atskirai prie 14, 15 ir t. t. išvadų, juoda stora linija reiškia 8 laidų šyną. Numeriai prie kontaktų parodo jungimo eiliškumą. Rezistoriai 1–2 k yra mažos galios (0,125 W arba mažesnio galingumo).

Šeši kontaktai yra skirti programatoriaus prijungimui, kuris maitinamas tiesiai nuo mikrovaldiklio maitinimo. AVR mikrovaldiklius galima programuoti tiesiai įlituotus į schemą. Nors, šioje situacijoje, geriausia naudoti mikroschemos lizdą, kad prireikus, galima būtų pakeisti mikrovaldiklį.


1 pav. Principinė schema bandymams

Teisingai sulitavę schemą bei ją prijungę prie programatoriaus, galima bandyti tikrinti ar programatorius turi ryšį su mikrovaldikliu. Jei nepavyksta nuskaityti ar įrašyti duomenų į mikrovaldiklį, tai reiškia, kad lituojant schemą ar programatorių padarėte klaidų. Taip pat dažnai pasitaikanti klaida yra neteisingas kontaktų MOSI, MISO ir SCK išdėstymas.

Trečiame žingsnyje, jau galima pradėti mikrovaldiklio programavimą. Tam reikia parsisiųsti „IAR Embedded Workbench for AVR“ programą, kurią galima mėnesį naudotis nemokamai.

Įdiegus programą į kompiuterį, galima pradėti programuoti. Paleidus programą jūsų iš karto paprašys sukurti naują projektą (2 pav.).


2 pav. Programos paleidimo metu pasirodantis langas

Kadangi pradedame programos rašymą, mums būtina susikurti projektą, paspaudę (Create new project...) pamatysime naują langą, leidžiantį rinktis projekto tipą. Mums reikia AVR Studio 4 compatible output. „Atmel“ kompanija yra išleidus AVR mikrovaldikliams skirtą programą, leidžiančią kurti programas asemblerio kalba. Todėl geriausia pasirinkti, kad mūsų rašytos programos būtų suderintos su ta programa. Tokiu atveju galima su ja pasitikrinti mikrovaldikliui skirtos programos veikimą, jei netenkins „IAR debugger“.


3 pav. Naujo projekto tipo pasirinkimo langas

Pasirinkę projekto tipą ir išsaugoję jį kokiu nors vardu, gausime naują tuščią langą (4 pav.). Čia galima rašyti programos kodą. Kadangi programas rašysime C kalba, todėl patartina nusipirkti knygą ar paieškoti internete C programavimo pavyzdžių.


4 pav. Programavimo aplinkos pavyzdys
Sekantis etapas, tai nustatyti programos parametrus pagal mūsų pasirinktą mikrovaldiklį „Atmega16“. Tokiu atveju atsistojame su pele ant kairėje pusėje esančio jūsų projekto pavadinimo, šiuo atveju pavadintu „testas“, ir paspaudžiame dešinį klavišą, ir dar kartą paspaudžiame Options.

5 pav. Parametrų nustatymo meniu atidarymas

Pasirinkę Options, pamatysime naują langą, kuriame galima atlikti įvairius mikrovaldiklio programos nustatymus. General Options skyriuje pasirenkame Target sekciją, kurioje pasirenkame kokiam mikrovaldikliui rašysime programą, mūsų atveju – tai „Atmega16“ (6 pav.).


6 pav. Mikrovaldiklio tipo pasirinkimo langas

Pasirinkus mikrovaldiklio tipą, reikia pereiti į Linker sekciją, Output skyrių. Šioje vietoje nustatysime sukompiliuoto *.hex failo formatą Output format į intel-standart. Galima pakeisti sukuriamo failo pavadinimą į kokį norima, tokiu atveju reikia vietoj $PROJ_FNAME$.d90 įrašyti kitą pavadinimą, tarkime testas.hex. Naudojant .hex plėtinį, su „PonyProg“ programa galima šį failą pamatyti tiesiogiai be jokių pakeitimų. Sukompiliuotą „testas.hex“ failą galima rasti kataloge, kur saugojamas projektas: \Debug\Exe.


7 pav. Išėjimo failo pavadinimo suteikimas bei formato nustatymas

Po šių veiksmų galima pradėti mikrovaldiklio programavimą. Pradžioje programos būtina įdėti mikrovaldiklį aprašančią bylą iom16.h (8 pav.).


8 pav. Bylos iom16.h įdėjimas į programą

Aprašančioje byloje iom16.h galima rasti apibrėžtas funkcijas, tarkim mikrovaldiklio PB jungčių aprašymą, pvz.:

/* Data Direction Register, Port D */
#define DDD7 7
#define DDD6 6
#define DDD5 5
#define DDD4 4
#define DDD3 3
#define DDD2 2
#define DDD1 1
#define DDD0 0
/* Input Pins, Port D */
#define PIND7 7
#define PIND6 6
#define PIND5 5
#define PIND4 4
#define PIND3 3
#define PIND2 2
#define PIND1 1
#define PIND0 0
/* Data Register, Port D */
#define PORTD7 7
#define PORTD6 6
#define PORTD5 5
#define PORTD4 4
#define PORTD3 3
#define PORTD2 2
#define PORTD1 1
#define PORTD0 0

Prieš programuojant „Atmega16“, būtina vadovautis jos aprašymu, kuriame galima rasti visą informaciją apie mikrovaldiklio sandarą bei registrų aprašymus.

Programavimą pradėkime nuo paprasčiausio mikrovaldiklio prievadų programavimo. 1 lentelėje pateiktas PD prievado aprašymas.

Pastarasis prievadas sujungtas su vidiniais trim registrais: Duomenų krypties registru „Data direction register“, Įėjimo registru „Input Pins“, Duomenų registru „Data register“.

Visi šie registrai leidžia valdyti mikrovaldiklio PD prievadą. Duomenų krypties registras DDD, skirtas duomenų išvedimui arba įvedimui nustatyti. Kiekvienas atskiras PB išvadas, gali būti nustatytas kaip išvedimas arba įvedimas. Prie bet kurio išvado per varžą gali būti prijungtas šviesos diodas arba, duomenų įvedimo atveju – mygtukas. Duomenų įvedimo atveju, mygtuko būsenos nuskaitomos iš PIND registro.

Parašykime pirmą programą, skirtą mikrovaldiklio šviesos diodui įjungti:

Programa 1. Šviesos diodo įjungimas


#include <iom16.h> 
int main( void )
{
DDRD=1; // Nustatome 14 „Atmega“ išvadą kaip išėjimą;
 į atitinkamą registro skiltį įrašome 1
PORTD=9;// Nurodome ką turime išvesti t. y. 9 dešimtainis
 skaičius atitinka 1001 dvejetainį 
return 0;
}

 

Sukompiliuota programa 1.hex.

Parašę programą, paspauskite Ctrl+F7 ir F8 taip sukompiliuosite programą, ir ją paėmę iš \Debug\Exe direktorijos su „PonyProg“, įrašykite į mikrovaldiklį („PonyProg“ naudojimo aprašymas).

Sėkmingai atlikus įrašymą, turi įsijungti pirmas šviesos diodas, o ketvirtas ne, kadangi jis apibrėžtas kaip išėjimas:

Reikia pabrėžti, kad turite išmokti dvejetainių skaičių keitimo iš dešimtainių taisykles, kadangi bus sudėtinga suprasti, kodėl atitinkami šviesos diodai įsijungia. Toliau pabandykime įjungti du šviesos diodus:

Programa 2. Dviejų šviesos diodų įjungimas


#include <iom16.h> 
int main( void )
{
DDRD=9;// Nustatome 14 ir 17 „Atmega“ išvadus, kaip išėjimą
PORTD=9;// Nurodome ką turime išvesti t. y. įjungti abu šviesos diodus
return 0;
}

 

Sukompiliuota programa 2.hex

Dviejų šviesos diodų įjungimo atveju DDRD ir PORTD turi sutapti.

O dabar pabandykime šiuos šviesos diodus įjungti kitokiu būdu, nenaudojant dešimtainių skaičių, o tiesiogiai įjungiant išvadus. Tam reikia pakeisti programos parametrus. Reikia pakartoti 5 pav. ir nueiti į General Options skyrių ir susirasti System sekciją. Joje rasite tokį užrašą Enable bit definitionin I/O include files ir prie jos uždėkite varnelę.

Be šios operacijos programuoti kitu būdu nepavyks. Taigi, nustatę programos parametrus, galima sudaryti naujai atrodančią programą, bet darančią ta patį:

Programa 3. Dviejų šviesos diodų įjungimas


#include <iom16.h> 
int main( void )
{
DDRD=(1<<DDD0);// Šiuo atveju tiesiai į DDD0 t.y. siunčiame 1
PORTD=1;// Paliekame pirmą reikšmę
return 0;
}

 

Ta pačią programą perrašykime truputį kitaip, įrašykime į registrų DDRD ir PORTD tas pačias vietas



#include <iom16.h>

int main( void )
{
DDRD=(1<<DDD0)|(1<<DDD7);// Įrašom vienetus į DDRD registrą, 
taip gaudami dešimtainį 129 skaičių arba 1000 0001 dvejetainį skaičių
PORTD=(1<<DDD0)|(1<<DDD7);
return 0;
}

 

Sukompiliuota programa mažai kuo skiriasi nuo prieš tai buvusių pavyzdžių

Šioje vietoje pasikeitė tik programavimo stilius, bet rezultatai analogiški prieš tai darytom programoms:

Išmokome įjungti šviesos diodus. Dabar bandykime padaryti paprastą mirksiuką.

Pradžioje reikia suprasti vieną dalyką: mikrovadliklis turi taktinį dažnį, kurio dydis priklauso nuo kvarcinio rezonatoriaus dažnio. Jei turime prie „Atmega16“ prijungtą 4 MHz dažnio kvarcinį rezonatorių, tai mikrovaldiklio sparta yra 4 000 000 operacijų per sekundę. Tai yra dėl to, kad dauguma „Atmega16“ instrukcijų vykdoma per vieną taktą, todėl per sekundę jų susidaro iki keturių milijonų. Taigi, norint padaryti paprastą mirksiuką, mums reikės įjungti bei išjungti šviesos diodą, o kad mes matytume tą mirksėjimą, tai reikia į programą įdėti vėlinimų:

Programa 4. Paprastas mirksiukas


#include <iom16.h>
void velinam(); // Apibrėžiama vėlinimo funkcija
int main( void )
{
DDRD=(1<<DDD0); // DDRD PD0 nustatomas kaip išėjimas 
while(1){// Amžinas ciklas
PORTD=1; // Siunčiame 1 ir įjungiame šviesos diodą
velinam();// Kreipimasis į vėlinimo funkciją, pateiktą žemiau
PORTD=0; // Siunčiame 0 ir išjungiame šviesos diodą
velinam();// Kreipimasis į vėlinimo funkciją, pateiktą žemiau
}}

void velinam()// Čia sudaryta vėlinimo funkcija, kuri 
50 000 kartų prasuka for ciklą taip sudarydama laiko vėlinimą 
{unsigned int i=0;
for(i=0; i<50000; i++){}}// Sumažinę 50 000
 galima gauti greitesnį šviesos diodo mirksėjimą, kad jo net nepastebėtume 


 

Sukompiliuota programa 3.hex

Vėlinimo funkcijos dažnai naudojamos ypač jei reikia suformuoti kokio nors tipo signalą mikrovaldiklio išvaduose. Ciklo skaičiaus didinimas leidžia mums sulėtinti mirksėjimą, o jo sumažinimas, priešingai, pagreitins mirksėjimą.

O dabar pabandykime parašyti bėgančios eilutės programą

Programa 5. Bėganti eilutė


#include <iom16.h>
void velinam(); // Apibrėžiama vėlinimo funkcija
int main( void )
{DDRD=255; // Nustatome visus PD išvadus kaip išėjimus
unsigned char a=128; //Įsivedame kintamąjį, leisiantį junginėti diodus iš eilės 

while(1){// Amžinas ciklas
PORTD=a;// Pasiunčiame a reikšmę į PORTD jei 128 tai 
1000 0000 dvejetainis skaičius
velinam();// Vėlinimas
a=a/2; // Atliekame a kintamojo dalybą iš dviejų, dalyba vyksta taip, 
kad dvejetainiame skaičiuje lieka tik vienas vienetas su
 besikeičiančia pozicija 
if (a==0){a=128;}// Atstatome a reikšmę į pradinę, jei dalybos metu 
jo reikšmė pasiekė 0
}} 
void velinam() 
{unsigned int i=0;
for(i=0; i<65535; i++){}}// Reikia turėti omenyje, kad unsigned int 
mikrovaldiklyje turi 65535 maksimalią reikšmę


Sukompiliuota programa 4.hex

Pastarasis programos kodas apskaičiuoja a reikšmes taip, kad lieka tik vienas vienetas, kuris įjungia atitinkamą šviesos diodą. Kadangi dalybos metu iš 2 gaunamos tokios PORTD reikšmės: 128, 64, 34, 16, 8, 4, 2, 1. Jeigu juos visus konvertuosime į dvejetainę sistemą, tai pamatysime, kad eilės tvarka vienetai stovi tose vietose, kur šviečia šviesos diodai:

O dabar pabandykime padaryti, kad šviesos diodai lėtai įsijungtų ir lėtai užgestų.

Kai kam gali pasirodyti, keista, kaip tai galima padaryti, kadangi mikrovaldiklio išėjimuose gali būti tik dvi įtampos reikšmės – nulis ir maitinimo įtampa (mūsų atveju 5 V). Toks šviesos diodų junginėjimas vykdomas paduodant impulsus į šviesos diodus, bei keičiant impulso plotį, nekeičiant jo periodo.

Programa 6. Šviesos diodų lėtas užgesinimas


#include <iom16.h>
void velinam(unsigned int a); //Apibrėžiamas vėlinimas su kintamuoju
int main( void )
{DDRD=255;
unsigned int b=0; // Įsivedam kintamąjį, reguliuosiantį diodų
 palaipsnį užgesimą
while(1){
b++; //Didinama kintamojo b reikšmė
PORTD=0; // Išjungiam visus prie PD prijungtus diodus
velinam(b); // Kintamas vėlinimas, kadangi didėja kintamojo b 
reikšmė, todėl vėlinimas šiame intervale didėja
PORTD=255;// Įjungiam visus prie PD prijungtus diodus
velinam(2000-b); // Mažinamas vėlinimas. Tai garantuoja 2000-b
if (b==2000){b=0;}// Tikriname ar kintamasis b pasiekė 2000 reikšmę, 
jei taip, nustatome jį į pradinę būseną
}} 
void velinam(unsigned int a) // Kintamo vėlinimo funkcija, kitimas
 perduodamas per a kintamąjį
{unsigned int i=0;
for(i=0; i<a; i++){
}}
 

Sukompiliuota programa 5.hex

Šviesos diodų lėtas išjungimas vyksta impulso pločio keitimo principu (PWM – pulse width modulation) ir atrodo taip:

O dabar pabandykime užprogramuoti šviesos diodų junginėjimą su mygtuku, prijungtu prie PA0 išvado (1 pav.).

Programa 7. Mygtukas – šviesos diodai


#include <iom16.h>
int main( void )
{DDRD=255; // Nustatome visus PD išvadus kaip išėjimus
PORTA=1; // Pagal 20 lentelę iš „Atmega“ *.pdf aprašymo įjungiame
 vidinius PULL UP rezistorius
while(1){
if (PINA&1) // Tikriname ar mygtukas paspaustas, ar PA0 išvadas
 per mygtuką J prijungtas prie žemės ir ant jo yra 0 V įtampa
PORTD=255; else PORTD=0; // Jei mygtukas nepaspaustas, visi 
šviesos diodai įjungiami, jei priešingai, tai išjungiami
}}
 

Sukompiliuota programa 6.hex

Šioje vietoje praverstų perskaityti „Atmega16“ aprašymą, pradedant nuo 48 puslapio, ten parašyta prievadų veikimo principas bei registrų ir jų nustatymų aprašymas.

Kiekvienas mikrovaldiklio išvadas turi vidinius rezistorius, kuriuos galima įjungti bei išjungti. Šie rezistoriai kiekvieną išvadą gali prijungti prie maitinimo +5 V šynos, taip išvengiant nepageidaujamų reiškinių, kai išvado reikšmės yra neapibrėžtos. Tokios būsenos būna tada, kai ant išvado gali būti bet kokia įtampa nuo 0 iki 5 V.

Mikrovaldikliui būtina į išvadus, paduoti tik dvi įtampos reikšmes tai 0 V ir 5 V. Pirmas atitinka loginį nulį, antras – loginį vienetą. Jei iš 7 programos ištrinsite PORTA=1; tai gausite neapibrėžtumą PA0 išvade, jei nebus nuspaustas mygtukas. Tokiu atveju, pirštu prilietus PA0, galima matyti, kaip nuo statinio krūvio junginėjasi PORTD šviesos diodai. Pasiuntus į PA0 vienetą, įjungiame PULL UP rezistorius, todėl PA0 visą laiką apibrėžtas. Su testeriu galite pamatuoti, su PULL UP rezistoriais ant PA0 išvado bus įtampa, artima maitinimo įtampai. PULL UP rezistorius visiems mikrovaldiklio išvadams galima išjungti per SFIOR registrą.

O dabar padarykime, kad paspaudus ir atleidus mygtuką šviesos diodai įsijungtų ir šviestų toliau.

Programa 8. Mygtukas – šviesos diodai – fiksuojantis


#include <iom16.h>
int main( void )
{DDRD=255;
PORTA=1;
unsigned char a=0;
while(1){
if (!(PINA&1))// Tikriname ar paspaustas mygtukas. Ženkliukas & 
reiškia lyginę IR operaciją, o ! reiškia loginę inversiją
{
if (a==0)a=1; else a=0; // Tikriname, ar prieš tai buvo paspaustas 
mygtukas ir įjungti diodai, jei taip, tai juos išjungsime
while(!(PINA&1)){} // Čia paprasta priemonė nuo trumpų impulsų, 
atsirandančių paspaudus mygtuką
}

if (a==1)
PORTD=255; else PORTD=0; // Junginėjam šviesos diodus, pagal 
kintamojo a reikšmes
}}

Sukompiliuota programa 7.hex

Taigi pastaroji programa leidžia užfiksuoti mygtuko paspaudimus. Vieną kartą paspaudus šviesos diodai įsijungia, antrą kartą paspaudus – išsijungia. Reikia turėti omenyje, kad paspaudus mygtuką, vietoj vieno paspaudimo, dažnai gaunasi keletas mikro paspaudimų. Todėl mikrovaldiklis mano, kad įvyko keletas paspaudimų. Programoje pateiktas ciklas while(!(PINA&1)){}, skirtas laukti, kol bus atleistas mygtukas.

Apibendrinant, galima pabrėžti, kad programavimo laisvė suteikia galimybė su mikrovaldikliu padaryti labai įdomius įrenginius. Tai priklauso nuo žmogaus fantazijos bei techninio pasirengimo. Mikrovaldiklius galima programuoti ne tik C kalba, bet taip pat ir Basic arba Asembleriu. Geriausios ir sparčiausios programos yra rašomos Asemblerio kalba, bet rašant Asmeblerio kalba, rezultatas pasiekiamas kur kas lėčiau nei C kalba.

Taip pat reikia paminėti, kad bet kuris mikrovaldiklio prievadas praktiškai gali būti pakeičiamas kitu prievadu. Tarkim PORTB yra analogiškas PORD, PORTA, PORTC. Su jais visais galima atlikti visas operacijas, aprašytas šiame straipsnyje. Skirtumai gaunasi tik dėl papildomų išvadų funkcijų, tokių kaip analoginis komparatorius (PB2, PB3) arba analogas-skaičius keitiklis, jam skirtas net visos PA jungtys. Ką viduje turi „Atmega16“, galima rasti jo pilname aprašyme.

Manau verta paminėti, kad mikrovaldiklis gali veikti sparčiau nei 4 MHz. Esant reikalui, galima prijungti net 22 MHz kvarcinį rezonatorių, bet reikia turėti omenyje, kad gamintojas garantuoja gerą darbą iki 16 MHz. Be to, prie didesnių dažnių mikrovaldiklis vartoja daugiau srovės, tai ypač aktualu, jei mikrovaldiklis maitinamas iš baterijų ar akumuliatorių.

Programavimo pradžioje patartina nustatyti mikrovaldiklio vidinius parametrus, kad jis veiktų nuo kvarcinio rezonatoriaus, kadangi ką tik nupirktas mikrovaldiklis veikia nuo vidinio RC generatoriaus, kas negarantuoja gero dažnio stabilumo. Todėl pasikeitus maitinimo įtampai 0,5 V, gaunamas žymus darbo dažnio pasikeitimas.

Kaip nustatyti konfigūraciją galite pasižiūrėti ankstesniame straipsnyje. Ir vis tik jei nustatant parametrus padarėte klaidą ir mikrovaldiklis yra nepasiekiamas iš „PonyProg“, tai patartina prijungti 1 MHz stačiakampių impulsų generatorių prie XTAL1 išvado ir tada bandyti programuoti ir pakeisti klaidingai nustatytus parametrus.

Sėkmingo darbo su mikrovaldikliais!




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

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

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

Full feature custom PCB prototype service

GENERAL FINANCING BANKAS

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

Technologijos.lt

Buitinė technika ir elektronika internetu žemos kainos – Zuza.lt

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

„Deinavos baldai“ — šeimos baldai


Reklama
‡ 1999–2024 © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Reklama | Turinys | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina Valid XHTML 1.0!
Script hook v, Openiv, Menyoo
gta5mod.net
Farming Simulator 2019 Mods, FS22 Mods, FS22 Maps
farmingsimulator19mods.fr
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
Reklamos paslaugos
SEO sprendimai

www.addad.lt
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama