Kako podesiti pametne telefone i računare. Informativni portal

Šta je potrebno za programiranje mikrokontrolera? Uređaj i programiranje AVR mikrokontrolera. Mikrokontroler i kako ga pobijediti

Apsolutno sam protiv ovakvog pristupa. Obično se sve završi - ili ništa, ili zakrčeni forumi molbama za pomoć. Čak i ako se nekome pomogne, onda se u 90% više nikada neće pojaviti na stranicama o elektronici. U preostalih 10% nastavlja da zasipa forume molbama, prvo će ga šutnuti, a onda ga zasuti blatom. Od ovih 10%, još 9% je eliminisano. Zatim postoje dvije opcije: ili dođe do glupe glave i ipak ide na početak, ili u posebno zanemarenim verzijama, sudbina mu je kopiranje tuđih konstrukcija, bez ikakvog razmišljanja kako to funkcionira. Od potonjih se često rađaju arduini.

Put od nule, po mom mišljenju, je proučavanje periferije i karakteristika, ako se radi o mikrokontroleru. Ispravnije je prvo shvatiti kako trzati nogama, zatim s tajmerima, a zatim s sučeljima. I tek onda pokušajte da podignete svoju FAT. Da, nije brzo, ali će trebati vremena i truda, ali praksa pokazuje, kako god pokušavali da skratite ovaj put, ipak će se pojaviti problemi koje ćete morati rješavati i provodit ćete mnogo više vremena bez ove baze.

Samo nemojte brkati toplo i meko. Prvo, postoje izuzeci od svih pravila, lično sam viđao ljude koji ranije nisu držali mikrokontrolere u rukama, ali su za izuzetno kratko vreme uspeli da prestignu iskusne radio amatere, mi ih ne uzimamo u obzir. Drugo, naišao sam na pojedince koji su započeli s kopiranjem šema i odmah shvatili, ali to je također izuzetak od pravila. Treće, čak i među arduinima ima iskusnih programera, na kraju krajeva, ovo je samo platforma, ali je verovatnije izuzetak.

Ako govorimo o opštoj masi, onda stvari stoje upravo onako kako sam opisao na početku: nespremnost da se bavimo osnovnim stvarima, u najboljem slučaju, odlaže trenutak kada se moramo vratiti ovim pitanjima. U najgorem slučaju, brzo ćete naletjeti na plafon svog znanja i stalno kriviti nekog drugog za svoje probleme.

2. Prije rješavanja problema zgnječiti do apsurda do "zalemiti otpornik", pomaže, provjereno. Male zadatke je mnogo lakše riješiti. Kada se veliki zadatak razbije na gomilu malih radnji, onda ostaje samo da ih dovršite. Mogu vam dati još jedan dobar savjet, iako će vam se činiti ludim - nabavite svesku i zapišite u nju sve što ćete raditi. Misliš da ću ga zapamtiti, ali ne. Recimo da sam danas dobro raspoložen i razmišljam kako da skupim ploču. Zapišite plan akcije: idite kupiti otpornik, pripremite žice, napravite nosač za ekran. Onda ćeš sve zaboraviti, otvori svesku i pogledaj - da, danas je raspoloženje da sečeš i diraš, ja ću to popraviti. Ili sastavite ploču i ostaje zalemiti posljednju komponentu, ali nije tamo nestalo otpornika, pa bih to zapisao prije lemljenja, onda sam se sjetio.

3. Nemojte koristiti generatore kodova, nestandardne karakteristike i druga pojednostavljenja, barem u prvim fazama. Mogu vam dati svoj primjer. Tokom aktivne upotrebe AVR-a koristio sam kodogen CAVR. Bio sam potpuno zadovoljan s njim, iako su svi govorili da je kakao. Zvona su stalno zvonila, bilo je problema sa bibliotekama, sa sintaksom, sa prenosom, ali je bilo teško odbiti. Nisam razumeo kako to funkcioniše, samo sam znao gde i kako da proverim kućice.

Kolac je zabijen u moj lijes pojavom STM32, trebalo je puzati po njima, tada su se pojavili problemi. Problemi najblaže rečeno, u stvari, morao sam da savladam mikrokontrolere i C jezik od nule. Nisam ponovio greške iz prošlosti. Moram reći da mi je ovo već dobro došlo i više puta. Od tada sam imao priliku da radim sa drugim platformama i nisam imao nikakvih poteškoća, pristup se opravdava.

Što se tiče svih poboljšanja i pojednostavljivanja, bilo je jedno jako dobro poređenje da su oni kao invalidska kolica koja se voze po šinama, možete ići i uživati, ali ne možete ustati, gde god da ih odvezu - tamo ćete stići.

4. Naučite jezik C. Eh, koliko često čujem da se radioamateri početnici hvale da dobro poznaju kučku. Za mene je to postala hrana, uvek volim da se konsultujem sa takvim sagovornicima. Obično se odmah pokaže da uopće ne znaju jezik. Mogu reći da i pored prividne jednostavnosti nisam sreo toliko ljudi koji bi ga zaista dobro poznavali. Uglavnom, svi ga poznaju onoliko koliko je potrebno za rješavanje problema.

Međutim, problem je po mom mišljenju u tome što se, ne poznavajući mogućnosti, ozbiljno ograničavate. S jedne strane, neoptimalna rješenja koja zahtijevaju moćniji hardver, s druge strane nečitljiv kod koji je teško održavati. Po mom mišljenju, čitljivost i održivost koda je jedno od najvažnijih mjesta i teško mi je zamisliti kako se to može postići bez korištenja svih mogućnosti jezika C.

Mnogi početnici preziru učenje jezika, pa ako niste kao svi, odmah ćete postati dva stepenika više od ostalih početnika. Takođe nije bitno gdje naučiti jezik. Po mom mišljenju, mikrokontroler nije baš pogodan za ovo. Mnogo je lakše instalirati neku vrstu Visual studija ili Qt Creator-a i rješavati probleme na komandnoj liniji.

Također će biti od dobre pomoći proučavanje svih jezičnih testova koji se daju tokom intervjua. Ako preturate okolo, možete mnogo naučiti.

5. Učenje asemblera? Ne treba ga se plašiti, kao ni idolizirati. Ne morate misliti da ćete, znajući kako napisati program na asembleru, odmah postati guru mikrokontrolera, iz nekog razloga je to uobičajena zabluda. Prije svega, to je alat. Čak i ako ga ne planirate koristiti, toplo bih vam preporučio da napišete barem nekoliko programa. Ovo će uvelike pojednostaviti razumijevanje mikrokontrolera i interne strukture programa.

6. Pročitajte tehnički list. Mnogi programeri to zanemaruju. Proučavajući tablicu sa podacima, bit ćete dva koraka ispred tih programera. Izuzetno je korisno to učiniti, prvo, ovo je izvor, bez obzira koje stranice čitate, u većini slučajeva ponavljaju informacije iz tablice, često s greškama i insinuacijama. Osim toga, može sadržavati informacije o kojima trenutno ne razmišljate, ali koje mogu biti korisne u budućnosti. Može se desiti da će se pojaviti nekakva greška i da ćete zapamtiti da da, pisalo je u datasheet-u. Ako vam je cilj da postanete dobar programer, onda se ova faza ne može izbjeći, morat ćete čitati tablice sa podacima, što prije počnete to raditi, rast će ići brže.

7. Ljudi često traže da pošalju datasheet na ruskom. Datashit je ono što treba doživljavati kao istinu, najtačniju informaciju. Čak i tu su greške moguće. Ako se tome dodaju greške prevodioca, i on je osoba, možda ni namjerno, samo zapečaćena. Ili ima svoju viziju, možda mu nešto nedostaje, po njegovom mišljenju nije važno, ali možda izuzetno važno za vas. Situacija postaje posebno smiješna kada trebate pronaći dokumentaciju za ne baš popularne komponente.

Po mom mišljenju, mnogo je lakše unaprijed isključiti cijeli sloj ovih problema nego ih kasnije uhvatiti. Stoga sam kategorički protiv prijevoda, jedini pravi savjet je da učite engleski kako biste čitali tablice i priručnike u originalu. Značenje fraze možete razumjeti uz pomoć programa za prevođenje, čak i ako je nivo vašeg jezika potpuna nula.

Proveo sam eksperiment: bio je dostupan student, datasheet i google prevodilac. Eksperiment broj 1: učeniku je uručen list sa podacima i zadatak da samostalno pronađe potrebne vrijednosti, rezultat je „kako mogu“, „da, ne znam engleski“, „nisam našao ništa / ja nije razumio” tipične fraze koje govore da nije ni pokušao. Eksperiment #2: isti učenik je dobio isti list sa podacima i isti zadatak, s tom razlikom što sam ja sjeo do njega. Rezultat je da je nakon 5 minuta sam pronašao sve potrebne vrijednosti, apsolutno bez mog učešća, bez znanja engleskog.

8. Ponovo izmislite bicikl. Na primjer, proučavate neku novu stvar, recimo tranzistor, čika Horowitz sa stranica svoje knjige autoritativno izjavljuje da tranzistor pojačava, uvijek recite - NE VERUJEM. Uzimamo tranzistor u ruke, uključujemo ga u kolo i uvjeravamo se da je to zaista tako. Postoji čitav sloj problema i suptilnosti koje nisu opisane u knjigama. Možete ih osjetiti tek kada ih podignete i pokušate prikupiti. Istovremeno, dobijamo gomilu povezanih znanja, učimo suptilnosti. Osim toga, svaka teorija bez prakse bit će zaboravljena mnogo brže.

U početnoj fazi, jedna metoda mi je puno pomogla - prvo sastavite sklop i vidite kako funkcionira, a zatim pokušate pronaći obrazloženje u knjizi. Isto je i sa softverskim dijelom, kada postoji gotov program, lakše ga je razumjeti i povezati dijelove koda, koji je za šta odgovoran.

Također je važno ići dalje od dozvoljenog, primijeniti više/manje napona, napraviti više/manje otpornika i pratiti promjene u radu kola. Sve to ostaje u mozgu i biće korisno u budućnosti. Da, ovo je opterećeno potrošnjom komponenti, ali mislim da je to neizbježno. Prvo sam sjedio i palio sve redom, ali sada, prije nego što stavim ovaj ili onaj apoen, uvijek se sjetim tih smiješnih vremena i posljedica stavljanja pogrešnog apoena.

9. Kako bih ja to uradio da sam na mjestu programera? Mogu li bolje? Postavljajte sebi ova pitanja svaki put, to jako dobro pomaže da napredujete u učenju. Na primjer, proučite interfejse 1wire, i2c, spi, uart, pa razmislite po čemu se razlikuju, da li se moglo bolje, to će vam pomoći da shvatite zašto je sve tako, a ne drugačije. Također ćete biti svjesni kada i koji je najbolje primijeniti.

10. Nemojte biti ograničeni tehnologijom. Važno je da ovaj savjet ima vrlo tanku liniju. Postojala je faza u životu kada se sa svakog gejtveja moglo čuti "potrebno je poznavati FPGA", "ali na FPGA se to može". Formalno, nisam imao ciljeve proučavati FPGA, ali nije bilo ni proći. Ovom pitanju je izdvojeno malo vremena za upoznavanje. Vrijeme nije prošlo uzalud, imao sam niz pitanja u vezi sa unutrašnjom strukturom mikrokontrolera, nakon razgovora sa plisinom dobio sam odgovore na njih. Ima mnogo sličnih primjera, sva znanja koja sam stekao u ovom ili onom obliku, prije ili kasnije su mi dobro došla. Nemam niti jedan beskorisni primjer.

Ali kao što je navedeno, problem tehnologije ima tanku liniju. Ne morate se uhvatiti za sve. Postoji mnogo pravaca u elektronici. Možda volite analogni, možda digitalni, možda ste stručnjak za napajanje. Ako nije jasno, pokušajte se posvuda, ali praksa pokazuje da je u početku bolje koncentrirati se na nešto konkretno. Čak i ako trebate pritisnuti u nekoliko smjerova, bolje je to učiniti koracima, prvo progurati jednu stvar.

11. Ako pitate početnika radio amatera šta više voli programiranje ili sklopove, onda će s vjerovatnoćom od 99% odgovor biti programiranje. Istovremeno, ovi programeri provode većinu svog vremena praveći ploče sa LUT/fotorezistom. Razlozi su uglavnom razumljivi, ali se često pretvara u neku vrstu ludila, koja se sastoji u proizvodnji ploča radi proizvodnje ploča.

Na internetu, gotovo jedini pravi put do programiranja je postati PCB Jedi. I ja sam prošao tim putem, ali svaki put se zapitam zašto? Pošto sam sebi kupio par dasaka za sve prilike, svaki put pomislim kako bih sve ovo vrijeme mogao živjeti bez domaćih dasaka. Moj savjet je, ako postoji i kap sumnje, onda je bolje da se ne trudite i uzmete gotovu ploču za otklanjanje grešaka, a bilo bi bolje potrošiti vrijeme i novac na programiranje.

12. Sljedeći savjet, posebno bolan, o njemu zaista ne želim raspravljati, ali je neophodan.Često mi pišu, kažu, xxx rubalja za uuy je skupo, gdje bi to bilo jeftinije dobiti. Čini se da je to uobičajeno pitanje, ali obično se odmah odvučem od toga, jer se često pretvara u beskrajne pritužbe na nedostatak novca. Uvijek imam pitanje: zašto ne skinuti guzu i otići na posao? Bar u istom McDucku, bar za gradilište, možeš izdržati mjesec dana, ali onda možeš kupiti par dasaka, što će biti dovoljno za iduću godinu. Da, znam da je teško naći posao u malim gradovima i selima, preseliti se u veliki grad. Radite na daljinu, općenito, morate se vrtjeti. Nema smisla žaliti se, postoji izlaz iz situacije, ko traži, nađe ga.

13. U istu kasicu-prasicu dodaću jedno vrlo bolno pitanje o instrumentu. Alat bi vam trebao omogućiti da razvijete uređaje što je brže moguće. Iz nekog razloga, mnogi programeri ne cijene svoje vrijeme. Tipičan primjer, jeftino presovanje terminala, na kojem mnogi poslodavci vole uštedjeti. Problem je u tome što se čak ni ne savija kako treba, zbog toga žice ispadaju. Morate napraviti gomilu dodatnih manipulacija, odnosno gubeći vrijeme. Ali kao što znate, budala plaća tri puta, tako da će se niska cijena crimpera višestruko povećati, zbog utrošenog vremena i loše kvalitete presovanja.

Ne kažem da je jeftino = loše, ne - sve zavisi od situacije. Da se vratimo na primjer crimpera, bilo je vremena kada sam bilo šta stisnuo, pa su se često javljali problemi. Posebno je neugodno kada pokrenete ploču i ona ne radi, nakon dugog traženja greške shvatite da je zbog loše komprimirane žice šteta. Od kada se pojavilo normalno krimpovanje, ovi problemi su nestali. Da, unutrašnja žaba je graktala i gušila se svojom cijenom, ali nikada nije požalila zbog ove odluke. Sve što želim da kažem je da nakon rada sa normalnim instrumentom apsolutno ne želim da se vraćam na loš, ne želim ni da razgovaram o tome. Kao što pokazuje praksa, bolje je ne štedjeti na alatima, ako ste u nedoumici, odvedite nekoga da ga testira, pročita recenzije, recenzije.

14. Pokrenite web stranicu, možete napisati bilo šta na njoj, baš kao spomenar. Praksa pokazuje da poslodavci to ionako ne čitaju, ali sama činjenica ima veliki efekat.

15. Delikatno pitanje: specijalizirano visoko obrazovanje, da li je potrebno? Znam za više od nekoliko slučajeva kada su ljudi radili apsolutno bez obrazovanja i na osnovu iskustva i znanja mogli su cigaretu dati svakom ovlaštenom specijalistu. Zapravo, nemam specijalizirano obrazovanje, da li osjećam nelagodu zbog toga? U određenoj mjeri, da.

Na samom početku, kada su mi mikrokontroleri bili hobi, mnogo sam pomagao sa seminarskim radovima i diplomama sa različitih univerziteta, samo da bih procenio svoj nivo. Sa sigurnošću mogu reći da je nivo generalno nizak, bez obzira na naziv univerziteta. Apsolutno nije potrebno studirati nekoliko godina da biste napisali takvu diplomu. To možete postići sami za vrlo kratko vrijeme. Pa ipak, često je bilo trenutaka kada su studenti znali neki predmet koji su slušali na 2-3 kursu, ali ja to nisam znao. Iako je sve ovo znanje nadoknađeno samoobrazovanjem, ipak bi bilo bolje ne gubiti vrijeme na to.

Univerzitet radi parčeta papira. Mogu reći da je bilo situacija kada im je nuđen posao koji zahtijeva obavezno obrazovanje i šteta što u tom trenutku nije bilo papira. Ali generalno, istorija pokazuje da većinu poslodavaca nije briga za vaš komad papira.

Sljedeća tačka se često ne uzima u obzir, to je okruženje. Ne zaboravite da su ljudi s kojima studirate vaša generacija, moguće je da radite s njima. Broj firmi koje rade u jednoj industriji je veoma ograničen. Praksa pokazuje da i u velikim gradovima znaju sve i svašta jedni o drugima, do intimnih detalja.

Druga stvar su mogućnosti. Često univerziteti imaju svoje mogućnosti – opremu, možda neke sekcije, možda neke programe rada u inostranstvu, to treba iskoristiti ako postoji i najmanja prilika. Ako na fakultetu ne vidite perspektivu, idite na drugi, na nekome se svijet ne završava.

Da rezimiramo, savjet je sljedeći: ako postoji i najmanja prilika, treba ići učiti, obavezno pratiti profil, ako postoji ikakva šansa, onda se penjati svuda, a ne sjediti u pantalonama na zadnjem stolu . Za sklapanje poznanstava, paralelno vježbanje kod kuće, razvijanje.

16. Da li je prekasno za početak programiranja u 20, 30, 40, 50? Praksa drugih ljudi pokazuje da godine uopće nisu prepreka. Mnogi iz nekog razloga ne vode računa o tome da postoji čitav jedan sloj posla kojim mladi ljudi, zbog svojih ambicija, ne žele da se bave. Stoga poslodavci radije zapošljavaju one koji će to nositi. Ovo je vaša prilika da se uhvatite, a onda sve zavisi samo od vas.

I poslednji savet. Mnogi radio-amateri su nekomunikativni, ljuti i razdražljivi - smatrajte to specifičnostima posla. Zrači dobrotom i pozitivnošću, budi dobra osoba.

decembar 2015

1. Prednosti predložene metode

Krugovi uređaja na mikrokontrolerima (MK) obično se razlikuju kombinacijom dvaju nekompatibilnih kvaliteta: maksimalne jednostavnosti i visoke funkcionalnosti. Osim toga, funkcionalnost se može dalje mijenjati i proširivati ​​bez ikakvih promjena na krugu - samo zamjenom programa (flash). Ove karakteristike se objašnjavaju činjenicom da su kreatori modernih MCU-a pokušali da na jedan kristal smjeste sve što je potrebno programeru elektroničkog uređaja - barem što je više moguće. Kao rezultat toga, došlo je do promjene naglaska sa sklopova i uređivanja na softver. Uz korištenje MC-a, sada je manje potrebno "opteretiti" kolo dijelovima, manje je veza između komponenti. Ovo, naravno, čini krug privlačnijim za ponavljanje i za iskusne i za početnike inženjera elektronike. Ali, kao i obično, morate platiti za sve. I ovdje nije bilo bez poteškoća. Ako kupite novi MK, instalirate ga u krug ispravno sastavljen od dijelova koji se mogu servisirati i primijeniti napajanje, onda ništa neće raditi - uređaj neće raditi. Mikrokontroleru je potreban program.

Čini se da je i s ovim sve jednostavno - na Internetu možete pronaći mnoge sheme s besplatnim firmverom. Ali ovdje se javlja jedna zamka: firmver se mora nekako "uliti" u mikrokontroler. Za one koji to nikada ranije nisu radili, takav zadatak često postaje problem i glavni odbojni faktor, koji često tjera da napusti užitak korištenja MK-a i traži šeme zasnovane na "labavosti" i krutoj logici. Ali nije sve tako teško kao što se na prvi pogled čini.

Nakon analize publikacija na Internetu, možete vidjeti da se ovaj problem najčešće rješava na jedan od dva načina: kupovinom gotovog programatora ili izradom domaćeg programatora. U isto vrijeme, objavljene šeme programera koje su sami izradili vrlo su često nerazumno složene - mnogo kompliciranije nego što je zaista potrebno. Naravno, ako treba da flešuje MK svaki dan, bolje je imati "kul" programator. Ali ako se potreba za takvim postupkom javlja rijetko, od slučaja do slučaja, onda možete uopće bez programatora. Ne, naravno, ne radi se o učenju da se to radi snagom misli. To znači da razumijevanje načina na koji programer stupa u interakciju s mikrokontrolerom prilikom pisanja i čitanja informacija u njegovom načinu programiranja, možemo proći s dostupnim alatima šire namjene. Ovi alati će morati zamijeniti i softver i hardver programatora. Hardverski dio mora obezbijediti fizičku vezu sa MK mikrokolo, mogućnost snabdijevanja logičkim nivoima na njegove ulaze i čitanje podataka sa njegovih izlaza. Softverski dio mora osigurati rad algoritma koji kontrolira sve potrebne procese. Imajte na umu i da kvalitet snimanja informacija u MK ne zavisi od toga koliko je vaš programer "kul". Ne postoji nešto kao što je "bolje snimljeno" ili "gore". Postoje samo dvije opcije: "prijavljen" i "neprijavljen". To je zbog činjenice da sam MC kontrolira proces snimanja unutar kristala. Samo treba da mu obezbedite visokokvalitetno napajanje (bez smetnji i talasanja) i pravilno organizujete interfejs. Ako se prema rezultatima kontrolnog očitavanja ne otkriju greške, onda je sve u redu - kontroler možete koristiti za njegovu namjenu.

Da bismo upisali program u MK bez programatora, potreban nam je USB-RS232TTL port konvertor i, takođe. USB-RS232TTL pretvarač omogućava korištenje USB porta za kreiranje COM porta koji se razlikuje od "pravog" samo po tome što se na njegovim ulazima i izlazima koriste TTL logički nivoi, odnosno napon u rasponu od 0 do 5 volti ( za više detalja pogledajte članak " "). U svakom slučaju, takav pretvarač je korisno imati na "farmi", pa ako ga još nemate, svakako ga kupite. Što se tiče logičkih nivoa, u našem slučaju TTL je čak i prednost u odnosu na običan COM port, jer se ulazi i izlazi takvog porta mogu direktno povezati na bilo koji mikrokontroler napajan od 5 V, uključujući ATtiny i ATmega. Ali ne pokušavajte koristiti običan COM port - tamo se koriste naponi u rasponu od -12 do +12 V (ili -15 ... + 15V). Direktna veza s mikrokontrolerom u ovom slučaju je neprihvatljiva !!!

Ideja o stvaranju skripte za program "Perpetuum M", koji implementira funkcije programera, nastala je nakon čitanja brojnih publikacija na Internetu koje nude određena rješenja za firmver MK-a. U svakom slučaju pronađeni su ozbiljni nedostaci ili prekomjerne komplikacije. Često smo nailazili na programska kola koja sadrže mikrokontroler, a pritom su se vrlo ozbiljno davali savjeti poput: "...a da bismo programirali mikrokontroler za ovaj programator, treba nam ... ispravno - još jedan programator!". Zatim je predloženo da odete kod prijatelja, potražite plaćenu uslugu itd. Kvalitet softvera koji se distribuira na webu za ove namjene također nije bio impresioniran - uočeno je dosta problema kako u funkcionalnosti, tako i oko "zamućenosti" korisničkog interfejsa. Često je potrebno puno vremena da shvatite kako koristiti program - morate ga naučiti čak i radi izvođenja najjednostavnijih radnji. Drugi program može nešto da radi dugo i marljivo, ali da se ništa ne snima u MC korisnik će znati tek nakon što se kompletan firmware kompletno završi i naknadnog kontrolnog očitavanja. Postoji i takav problem: korisnik pokušava odabrati svoj MK sa liste podržanih kristala, ali ga nema na listi. U tom slučaju nećete moći koristiti program - dodavanje na listu nedostajućih MC-a, u pravilu, nije predviđeno. Osim toga, ručni odabir kontrolera sa liste izgleda čudno, s obzirom da programer u mnogim slučajevima može sam odrediti tip MK-a. Sve ovo je rečeno da ne baca blato na postojeće proizvode, već da objasni razlog za pojavu skripte za program "Perpetuum M" opisanog u ovom članku. Problem zaista postoji, a tiče se prije svega početnika koji ne uspiju uvijek da savladaju ovaj "zid" kako bi napravili prvi korak u svijet mikrokontrolera. Predložena skripta uzima u obzir nedostatke pronađene u drugim programima. Implementirana maksimalna "transparentnost" algoritma, izuzetno jednostavan korisnički interfejs koji ne zahtijeva proučavanje i ne ostavlja priliku da se zbunite i "kliknete na pogrešno mjesto". U nedostatku traženog MK-a među podržanim, moguće je samostalno dodati njegov opis uzimajući potrebne podatke iz dokumentacije preuzete sa web stranice MK programera. I, što je najvažnije, scenario je otvoren za proučavanje i modifikacije. Svako može, otvarajući u uređivaču teksta, proučavati i uređivati ​​ga po svom nahođenju, mijenjajući postojeće funkcije po svom ukusu i dodajući nedostajuće.

Prva verzija scenarija kreirana je u junu 2015. Ova verzija podržava samo Atmelove ATtiny i ATmega serije MCU sa funkcijama pisanja/čitanja fleš memorije, sa podešavanjem konfiguracionih bitova, sa automatskom detekcijom tipa kontrolera. Pisanje i čitanje EEPROM-a nije implementirano. Bilo je planova za dodavanje funkcionalnosti skripte: dodavanje upisivanja i čitanje EEPROM-a, implementacija podrške za PIC kontrolere itd. Iz tog razloga skripta još nije objavljena, ali je zbog nedostatka vremena implementacija plana odložena, kako najbolji ne bi postao neprijatelj od dobrog, odlučeno je da se objavi postojeća verzija. Implementirane funkcije neće biti dovoljne, nemojte se uznemiravati. U ovom slučaju možete pokušati sami dodati željenu funkciju. Neću sakriti: ideju ​kreiranje ove skripte inicijalno nosi edukativno značenje. Nakon što ste razumjeli algoritam i dodali mu nešto svoje, moći ćete bolje razumjeti rad MK-a u programskom modu, tako da ubuduće nećete biti u pozicija djevojke ispred sloja automobil koji juri, zamišljeno mu ispituje unutrašnjost i ne shvata zašto "ne ide".

2. MK interfejs u režimu programiranja

Postoji nekoliko različitih načina da stavite kontroler u režim programiranja i radite s njim u ovom režimu. Najjednostavniji za implementaciju za ATtiny i ATmega serije kontrolera je, možda, SPI. Mi ćemo to iskoristiti.

No, prije nego što pređemo na razmatranje signala neophodnih za formiranje SPI, napravićemo niz rezervi. Mikrokontroler ima konfiguracijske bitove. To su nešto poput prekidača, čije prebacivanje vam omogućava da promijenite neka svojstva mikrokola u skladu sa potrebama projekta. Fizički, to su ćelije nepromjenjive memorije, poput onih u kojima je program napisan. Razlika je u tome što ih ima vrlo malo (do tri bajta za ATmega) i nisu uključeni u adresni prostor nijedne memorije. Zapisivanje i čitanje konfiguracijskih podataka se vrši posebnim naredbama režima MK programiranja. Za sada je važno napomenuti da neki od konfiguracionih bitova utiču na samu mogućnost korišćenja SPI. Uz neke od njihovih vrijednosti može se ispostaviti da se SPI ne može koristiti. Ako naiđete na takav mikrokontroler, metoda predložena u ovom članku neće pomoći. U tom slučaju ćete morati ili promijeniti postavke konfiguracijskih bitova u programatoru, koji podržava drugačiji način programiranja, ili ćete koristiti drugi mikrokontroler. Ali ovaj problem se odnosi samo na rabljene MK, ili one sa kojima se neko već bezuspješno "igrao". Činjenica je da novi MCU-ovi dolaze s konfiguracijskim bitnim postavkama koje ne ometaju korištenje SPI-ja. To potvrđuju i rezultati testiranja programske skripte za program Perpetuum M, tokom kojeg su uspješno flešovana četiri različita MCU-a (ATmega8, ATmega128, ATtiny13, ATtiny44). Sve su bile nove. Početne postavke bitova konfiguracije bile su u skladu s dokumentacijom i nisu ometale korištenje SPI.

Uzimajući u obzir gore navedeno, trebali biste obratiti pažnju na sljedeće bitove. SPIEN bit eksplicitno omogućava ili onemogućuje upotrebu SPI, stoga, u našem slučaju, njegova vrijednost mora biti dopuštena. Bit RSTDISBL može pretvoriti jedan od pinova mikrokola (predefinisan) u ulaz signala za "resetovanje", ili ne (u zavisnosti od vrijednosti zapisane u ovaj bit). U našem slučaju je neophodan "reset" ulaz (ako ga nema, neće raditi prebacivanje MC-a u režim programiranja preko SPI-a). Postoje i bitovi CKSEL grupe koji specificiraju izvor signala takta. Oni ne ometaju korištenje SPI, ali ih također treba imati na umu, jer u nedostatku taktnih impulsa, ili kada je njihova frekvencija niža od dozvoljene za datu SPI brzinu, od toga neće biti ništa dobro. bilo. Obično novi MCU sa internim RC oscilatorom imaju CKSEL bitove postavljene da ga koriste. Ovim smo prilično zadovoljni - taktiranje je obezbeđeno bez ikakvih dodatnih napora sa naše strane. Ne morate lemiti kvarcni rezonator ili spajati eksterni oscilator. Ako navedeni bitovi sadrže drugačiju postavku, morat ćete voditi računa o vremenu u skladu s postavkom. U tom slučaju može biti potrebno spojiti kvarcni rezonator ili vanjski generator takta na MC. Ali u okviru ovog članka nećemo razmatrati kako se to radi. Primjeri povezivanja MK-a za programiranje, sadržani u ovom članku, dizajnirani su za najjednostavniji slučaj.

Rice. 1. Razmjena podataka preko SPI u modu programiranja

Sada se okrenemo slici 1, preuzetoj iz ATmega128A MK dokumentacije. Prikazuje proces odašiljanja jednog bajta do MC-a i istovremenog primanja jednog bajta od MC-a. Oba ova procesa, kao što vidimo, koriste iste taktne impulse koji dolaze od programatora do mikrokontrolera na njegovom SCK ulazu - jednom od pinova mikrokola kojem je takva uloga dodijeljena u režimu SPI programiranja. Još dvije signalne linije omogućavaju prijem i prijenos podataka, jedan bit po taktu. Preko MOSI ulaza podaci idu u mikrokontroler, a očitani podaci se preuzimaju sa MISO izlaza. Obratite pažnju na dvije isprekidane linije od SCK do MISO i MOSI. Oni pokazuju u kom trenutku mikrokontroler "proguta" bit podataka postavljen na MOSI ulazu, a u kom trenutku postavlja svoj bit podataka na MISO izlaz. Sve je dovoljno jednostavno. Ali da bismo MK ušli u režim programiranja, još uvijek nam je potreban RESET signal. Ne zaboravimo na zajedničku GND žicu i VCC napajanje. Ukupno, ispostavilo se da samo 6 žica treba biti spojeno na mikrokontroler da bi se flešovao preko SPI. U nastavku ćemo to detaljnije analizirati, ali za sada ćemo dodati da se razmjena podataka sa MC u režimu SPI programiranja vrši u paketima od 4 bajta. Prvi bajt svakog paketa je u osnovi potpuno posvećen kodiranju komande. Drugi bajt, u zavisnosti od prvog, može biti nastavak koda komande, ili deo adrese, ili može imati proizvoljnu vrednost. Treći bajt se uglavnom koristi za prijenos adresa, ali u mnogim naredbama može imati proizvoljnu vrijednost. Četvrti bajt obično prenosi podatke ili ima proizvoljnu vrijednost. Istovremeno sa prijenosom četvrtog bajta, neke komande primaju podatke od MC-a. Detalji o svakoj komandi mogu se naći u dokumentaciji kontrolera u tabeli pod nazivom "SPI serijski programski set instrukcija". Za sada samo napominjemo da je cjelokupna razmjena sa kontrolerom izgrađena od niza 32-bitnih paketa, od kojih svaki prenosi najviše jedan bajt korisnih informacija. Nije baš optimalno, ali sveukupno radi prilično dobro.

3. MK konekcija za programiranje

Da bi se osiguralo da se svi potrebni signali za organizovanje SPI interfejsa unose na ulaze mikrokontrolera i da se podaci čitaju sa njegovog MISO izlaza, nije potrebno kreirati programator. To je lako učiniti sa najčešćim USB-RS232TTL konvertorom.

Na internetu se često mogu naći informacije da su takvi pretvarači neispravni, da se s njima ništa ozbiljno ne može učiniti. Ali za većinu modela pretvarača ovo mišljenje je pogrešno. Da, na tržištu postoje pretvarači koji nemaju sve ulaze i izlaze dostupne u poređenju sa standardnim COM portom (na primjer, samo TXD i RXD), koji imaju neodvojiv dizajn (mikrokolo je ispunjeno plastikom - nemoguće je doći do njegovih terminala). Ali ovo nije vrijedno kupovine. U nekim slučajevima, ulaze i izlaze porta koji nedostaju možete dobiti lemljenjem ožičenja direktno na mikrokolo. Primjer takvog "poboljšanog" pretvarača prikazan je na slici 2 (mikrokrug PL-2303 - više o svrsi njegovih pinova u članku ""). Ovo je jedan od najjeftinijih modela, ali ima svoje prednosti kada se koristi u domaćim dizajnima. Puno opremljeni adapterski kablovi sa standardnim devetopinskim konektorom na kraju, poput COM porta, takođe su široko rasprostranjeni. Od običnog COM porta se razlikuju samo po TTL nivoima i nekompatibilnosti sa zastarjelim softverom i nekom starom opremom. Također se može primijetiti da su se kablovi na mikro krugu CH34x u raznim ekstremnim testovima pokazali mnogo pouzdanijim i stabilnijim u usporedbi s pretvaračima na PL-2303. Međutim, pri normalnoj upotrebi razlika nije primjetna.

Prilikom odabira USB-RS232TTL pretvarača, također treba obratiti pažnju na kompatibilnost njegovog drajvera s verzijom operativnog sistema koji se koristi.

Pogledajmo bliže princip povezivanja mikrokontrolera i USB-RS232TTL pretvarača na primjeru četiri različita MK modela: ATtiny13, ATtiny44, ATmega8 i ATmega128. Slika 3 prikazuje opšti dijagram takve veze. Može vas iznenaditi da se RS232 signali (RTS, TXD, DTR i CTS) zloupotrebljavaju. Ali ne biste trebali brinuti o tome: program "Perpetuum M" može direktno raditi s njima - postaviti vrijednosti na izlazima i čitati stanja ulaza. U svakom slučaju, široko rasprostranjeni USB-RS232TTL pretvarači na mikro krugovima CH34x i PL-2303 pružaju takvu priliku - to je potvrđeno. Ne bi trebalo biti problema ni sa drugim popularnim pretvaračima, jer se za pristup portu koriste standardne Windows funkcije.

Otpornici prikazani na općem dijagramu u principu se ne mogu instalirati, ali je ipak bolje instalirati. Koja je njihova svrha? Koristeći TTL "ovsky ulaze i izlaze pretvarača i pet-voltno napajanje mikrokontrolera, time se oslobađamo potrebe za koordinacijom logičkih nivoa - sve je već sasvim ispravno. To znači da veze mogu biti direktne. Ali tokom eksperimenti, svašta se dešava.Na primer, po zakonu podlosti, odvijač može pasti tačno na mesto gde nikako ne bi mogao pasti, i zatvoriti nešto što ni u kom slučaju ne bi trebalo da se zatvori. U ulozi "šrafcigera ", naravno, svašta može biti. Otpornici u ovom slučaju ponekad smanjuju posljedice. Jedna od njihovih namjena je da eliminišu mogući sukob izlaza. Činjenica je da na kraju programiranja mikrokontroler prelazi u normalan rad, a može desi se da i njegov izlaz spojen na izlaz konvertora (RTS, TXD ili DTR) postane izlaz, prema programu koji je upravo snimljen u MK. U ovom slučaju bi bilo jako loše ako će se dva direktno povezana izlaza "potući " - pokušajte da instalirate različitim logičkim nivoima. U takvoj "borbi" neko može "izgubiti", ali nam ovo ne treba.

Vrijednosti tri otpornika su odabrane na 4,3KΩ. Ovo se odnosi na veze između izlaza pretvarača i ulaza mikrokontrolera. Preciznost otpornika nije bitna: njihov otpor možete smanjiti na 1 KΩ ili povećati na 10 KΩ (ali u drugom slučaju, rizik od smetnji se povećava kada koristite duge žice na putu do MC). Što se tiče veze između ulaza pretvarača (CTS) i izlaza mikrokontrolera (MISO), ovdje se koristi otpornik od 100 Ohma. To je zbog posebnosti ulaza korištenog pretvarača. Tijekom testova korišten je pretvarač na mikro krugu PL-2303, čiji su ulazi, očigledno, povučeni do plusa napajanja s relativno malim otporom (reda nekoliko stotina Ohma). Da bih "prekinuo povlačenje" morao sam ugraditi otpornik sa tako malim otporom. Međutim, to nikako ne možete staviti. Na pretvaraču je to uvijek ulaz. To ne može postati izlaz, što znači da neće biti sukoba izlaza u bilo kom razvoju događaja.

Ako mikrokolo ima zaseban AVCC pin za napajanje analogno-digitalnog pretvarača (na primjer, ATmega8 ili ATmega128), treba ga povezati na zajednički VCC pin napajanja. Neki IC-ovi imaju više od jednog pina za napajanje VCC ili više od jedne GND. Na primjer, ATmega128 ima 3 GND pina i 2 VCC pina. U trajnom dizajnu, bolje je povezati iste igle jedni s drugima. U našem slučaju, u vrijeme programiranja, možete koristiti jedan VCC pin i jedan GND pin.

A ovako izgleda ATtiny13 veza. Na slici je prikazana dodjela pinova koja se koristi za SPI programiranje. U blizini na fotografiji - kako privremena veza izgleda u stvarnosti.


Neko bi mogao reći da ovo nije ozbiljno - veze na žicama. Ali ti i ja smo razumni ljudi. Naš cilj je da programiramo mikrokontroler koristeći minimalno vrijeme i druge resurse, a ne da se hvalimo pred nekim. U isto vrijeme, kvaliteta ne trpi. U ovom slučaju, "on-line" metoda je prilično efikasna i opravdana. Firmware kontrolera je jednokratna procedura, tako da nema smisla vješati ga "šrafovima". Ako se u budućnosti treba promijeniti firmver, bez uklanjanja kontrolera iz kruga (u gotovom proizvodu), onda se to uzima u obzir pri instalaciji tijekom proizvodnje uređaja. Obično se za tu svrhu instalira konektor (RESET, SCK, MOSI, MISO, GND), a MK se može flešovati čak i nakon što se instalira na ploču. Ali to su već kreativni užici. Razmatramo najjednostavniji slučaj.

Sada pređimo na ATtiny44 MK. Ovdje je sve otprilike isto. Prema slici i fotografiji čak i početnik može lako shvatiti vezu. Poput ATtiny44, možete povezati ATtiny24 i ATtiny84 MCU-ove - dodjela pinova ovog trojstva je ista.


Još jedan primjer privremenog povezivanja kontrolera za programiranje je ATmega8. Ovdje ima više zaključaka, ali princip je isti - nekoliko žica, a sada je kontroler spreman da u njega "napuni" informacije. Dodatna crna žica na fotografiji, koja dolazi sa pina 13, ne učestvuje u programiranju. Dizajniran je da ukloni zvučni signal iz njega nakon što MK izađe iz moda programiranja. To je zbog činjenice da je tokom otklanjanja grešaka u skripti za "Perpetuum M" program muzičke kutije postavljen na MK.


Često je isti kontroler dostupan u različitim paketima. U ovom slučaju, dodjela pinova za svaki slučaj se raspoređuje na svoj način. Ako tijelo vašeg kontrolera ne izgleda kao ono prikazano na slici, provjerite svrhu zaključaka za tehničku dokumentaciju koju možete preuzeti sa web stranice MK developera.

Za potpunost, pogledajmo vezu MK mikrokola s velikim brojem "noga". Svrha dodatne crne žice na fotografiji, koja dolazi sa pina 15, potpuno je ista kao u slučaju ATmega8.


Vjerovatno ste već vidjeli da je sve dovoljno jednostavno. Ko zna prebrojati zaključke mikro krugova (od oznake u krugu suprotno od kazaljke na satu) shvatit će. I ne zaboravite da budete uredni. Mikrokrugovi vole uredno i ne opraštaju nemaran odnos prema sebi.

Prije nego što pređete na softverski dio, uvjerite se da je upravljački program USB-RS232TTL konvertor ispravno instaliran (provjerite Windows Device Manager). Zapamtite ili zapišite broj virtuelnog COM porta koji se pojavljuje kada je konverter povezan. Ovaj broj će biti potrebno unijeti u tekst skripte, o čemu možete pročitati u nastavku.

4. Skripta - programer za "Perpetuum M"

Sa hardverskim dijelom "programatora" sređen. Ovo je već pola bitke. Sada ostaje da se pozabavimo softverskim dijelom. Njegovu ulogu će obavljati program "Perpetuum M" pod kontrolom skripte, u kojem su implementirane sve potrebne funkcije za interakciju sa mikrokontrolerom.

Arhivu sa skriptom treba raspakovati u isti folder u kojem se nalazi program perpetuum.exe. U tom slučaju, kada se pokrene datoteka perpetuum.exe, na ekranu će se prikazati meni sa listom instaliranih skripti, među kojima će biti red "MK AVR Programmer" (možda je i jedini). Ovo je linija koja nam treba.

Skripta se nalazi u folderu PMS u datoteci "MK AVR.pms Programmer". Ova datoteka se može pregledati, proučavati i uređivati, ako je potrebno, u običnom uređivaču teksta kao što je Windows Notepad. Prije korištenja skripte, najvjerovatnije ćete morati promijeniti tekst koji se odnosi na postavku porta. Da biste to učinili, navedite naziv korištenog porta u Windows Device Manageru i, ako je potrebno, napravite odgovarajuću izmjenu u redu "PortName =" COM4 ";" - umjesto broja 4 može se koristiti drugi broj. Takođe, kada koristite drugi model USB-RS232TTL konvertera, možda će biti potrebno promeniti podešavanja za inverziju signala (skripte koje počinju rečju "High"). Inverziju signala USB-RS232TTL konvertorom možete provjeriti pomoću jednog od primjera sadržanih u uputama za program "Perpetuum M" (odjeljak funkcija za rad sa portom).

Podmapa MK_AVR sadrži datoteke s opisima podržanih kontrolera. Ako traženi kontroler nije među njima, možete ga sami dodati, slijedeći analogiju. Uzmite jedan od fajlova kao uzorak i pomoću uređivača teksta unesite potrebne podatke, uzimajući ih iz dokumentacije za vaš mikrokontroler. Glavna stvar je biti oprezan, unositi podatke bez grešaka, inače MC neće biti programiran ili će biti programiran pogrešno. Originalna verzija podržava 6 mikrokontrolera: ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATmega8 i ATmega128. Skripta implementira automatsko prepoznavanje povezanog kontrolera - ne morate ga specificirati ručno. Ako među dostupnim opisima nema pročitanog identifikatora iz MK-a, prikazuje se poruka da se kontroler ne može prepoznati.

Arhiva sa skriptom sadrži i dodatne informacije. Fascikla AVR kontroler inc datoteka sadrži veoma korisnu i opsežnu kolekciju datoteka opisa kontrolera. Ove datoteke se koriste za pisanje vlastitih programa za MK. Još četiri foldera "MusicBox _..." sadrže fajlove sa asemblerskim programom i firmverom spremnim za učitavanje u MK odvojeno za ATtiny13, ATtiny44, ATmega8 i ATmega128. Ako ste već povezali jedan od ovih MK-a za programiranje, kao što je predloženo u ovom članku, možete ga odmah flashati - dobit ćete muzičku kutiju. Više o tome u nastavku.

Kada izaberete liniju "MK AVR Programmer" u meniju skripti, skripta počinje da se izvršava. Istovremeno, otvara port, šalje naredbu za prebacivanje u režim programiranja MC-u, prima potvrdu od MC-a o uspješnoj tranziciji, traži MC identifikator i traži opis ovog MC-a po njegovom identifikatoru među dostupne datoteke sa opisima. Ako ne pronađe traženi opis, prikazuje odgovarajuću poruku. Ako se pronađe opis, otvara se glavni meni programatora. Možete ga vidjeti na slici 8. Nije teško dalje shvatiti - meni je vrlo jednostavan.

U prvoj verziji skripte neke funkcije punopravnog programera nisu implementirane. Na primjer, ne postoji način za čitanje i pisanje u EEPROM. Ali ako otvorite skriptu u uređivaču teksta, vidjet ćete da ima vrlo malu veličinu, uprkos činjenici da je glavna stvar već implementirana u njoj. To sugerira da dodavanje nedostajućih funkcija nije tako teško - jezik je vrlo fleksibilan, omogućava vam da implementirate bogatu funkcionalnost u malom programu. Ali u većini slučajeva, čak će i dostupne funkcije biti dovoljne.

Neka ograničenja funkcionalnosti su opisana direktno u tekstu skripte:
// implementirano snimanje samo sa adrese nula (Zapis adrese proširenog segmenta se zanemaruje, LOAD OFFSET je također)
// red i kontinuitet zapisa u HEX datoteci se ne provjerava
// kontrolni zbroj nije provjeren
Ovo se odnosi na rad sa HEX datotekom iz koje je preuzet kod firmvera za MK. Ako ova datoteka nije pogrešno oblikovana, provjera kontrolne sume neće utjecati ni na što. Ako je izobličen, neće ga biti moguće otkriti pomoću skripte. Ostala ograničenja u većini slučajeva neće škoditi, ali ih ipak morate imati na umu.

5. Muzička kutija - jednostavan zanat za početnike

Ako imate jedan od ovih mikrokontrolera, ATtiny13, ATtiny44, ATmega8 ili ATmega128, lako ga možete pretvoriti u muzičku kutiju ili muzičku karticu. Da biste to učinili, dovoljno je upisati odgovarajući firmver u MK - jedan od ona četiri koja se nalaze u folderima "MusicBox _..." u istoj arhivi sa skriptom. Kodovi firmvera su pohranjeni u fajlovima sa ekstenzijom ".hex". Upotreba ATmega128 za takvu letjelicu je, naravno, "debela", kao i ATmega8. Ali može biti korisno za testiranje ili eksperimentiranje, drugim riječima, u obrazovne svrhe. Asemblerski kod je također uključen. Programi nisu kreirani od nule - za osnovu je uzet program muzičke kutije iz knjige AV Belova "AVR mikrokontroleri u radioamaterskoj praksi". Originalni program je doživio niz značajnih promjena:
1.prilagođeno za svaki od četiri MCU-a: ATtiny13, ATtiny44, ATmega8 i ATmega128
2. eliminisana su dugmad - ništa ne mora biti povezano na kontroler, osim napajanja i emitera zvuka (melodije se puštaju jedna za drugom u beskrajnoj petlji)
3. Trajanje svake note se smanjuje za dužinu pauze između nota kako bi se eliminisalo kršenje muzičkog ritma
4.priključena je osma melodija koja nije korištena u verziji knjige
5. od subjektivnog: neka "poboljšanja" za optimizaciju i lakšu percepciju algoritma

U nekim melodijama se mogu čuti neistine, pa čak i grube greške, posebno u "Smile" - u sredini. Šifre melodija su preuzete iz knjige (tačnije, preuzete sa autorovog sajta zajedno sa originalnim asm fajlom) i nisu menjane. Očigledno, postoje greške u kodiranju melodija. Ali to nije problem - ko se "druži" sa muzikom, lako će to shvatiti i sve ispraviti.

U ATtiny13, zbog nedostatka 16-bitnog brojača, 8-bitni brojač je morao da se koristi za reprodukciju nota, što je dovelo do blagog smanjenja tačnosti zvučnih nota. Ali to se ne primjećuje na uho.

O konfiguracijskim bitovima. Njihovo podešavanje treba da odgovara stanju novog mikrokontrolera. Ako je vaš MC već negdje korišten, potrebno je provjeriti stanje njegovih konfiguracijskih bitova i, ako je potrebno, uskladiti ih sa postavkama novog mikrokontrolera. Stanje konfiguracijskih bitova novog mikrokontrolera možete saznati iz dokumentacije za ovaj MC (odjeljak "Bitovi osigurača"). ATmega128 je izuzetak. Ovaj MCU ima M103C bit koji omogućava način kompatibilnosti sa starijim ATmega103. Aktiviranje bita M103C uvelike smanjuje mogućnosti ATmega128, a ovaj bit je aktivan na novom MK-u. Morate resetirati M103C u neaktivno stanje. Za manipuliranje konfiguracijskim bitovima, koristite odgovarajući odjeljak menija skripte programera.

Nema smisla davati dijagram muzičke kutije: sadrži samo mikrokontroler, napajanje i piezoelektrični emiter. Napajanje se vrši na isti način kao što smo radili pri programiranju MK-a. Emiter zvuka je povezan između zajedničke žice (pin GND kontrolera) i jednog od pinova MK-a, čiji se broj može naći u datoteci sa asembler kodom programa (*.asm). Na početku teksta programa za svaki MK u komentarima se nalazi red: "zvučni signal se generiše na pin XX". Kada programska skripta završi, mikrokontroler izlazi iz režima programiranja i prelazi na normalan rad. Reprodukcija pjesme počinje odmah. To možete provjeriti spajanjem sirene. Ostavljanje sirena priključenog tokom programiranja kristala moguće je samo ako se zvuk ukloni sa pina koji se ne koristi u SPI-u, inače dodatni kapacitet na pinu može ometati programiranje.

Mikrokontroleri su posebna vrsta mikrokola koji se koriste za upravljanje raznim elektronskim uređajima.

To su minijaturni računari čije su sve komponente (procesor, RAM, ROM) smještene na jednom čipu. Od mikroprocesora se razlikuju po prisutnosti tajmera, kontrolera, komparatora i drugih perifernih uređaja. Trenutno se mikrokontroleri koriste u proizvodnji:

  • Senzori za automobile;
  • igračke;
  • Indikatori napona, punjači;
  • kontrolne ploče;
  • minijaturni elektronski uređaji.

Upravljanje se vrši pomoću posebnih programa.

Preporučljivo je započeti savladavanje programiranja mikrokontrolera za početnike proučavanjem arhitekture i varijanti. Industrija proizvodi sljedeće vrste MK:

  • ugrađeni;
  • 8-, 16- i 32-bitni
  • digitalni signalni procesori.

Proizvođači mikrokontrolera moraju stalno balansirati između veličine, snage i cijene proizvoda. Stoga su 8-bitni modeli i danas u upotrebi. Imaju prilično niske performanse, ali u mnogim slučajevima ova činjenica je prednost, jer omogućava uštedu energije. Digitalni procesori signala su sposobni da obrađuju velike tokove podataka u realnom vremenu. Međutim, njihova cijena je mnogo veća.

Broj korištenih opkodova možda neće biti isti. Stoga se koriste RISC i CISC komandni sistemi. Prvi se smatra skraćenim i izvršava se u jednom ciklusu oscilatora. Ovo vam omogućava da pojednostavite hardversku implementaciju CPU-a, poboljšate performanse mikrokola. CISC je složen sistem koji može značajno povećati efikasnost uređaja.

Nemoguće je naučiti programiranje mikrokontrolera za početnike bez razumijevanja algoritama. Na CPU mikrokola, komande se šalju određenim redoslijedom. Štaviše, procesor bi trebao nedvosmisleno shvatiti njihovu strukturu. Stoga, programer prvo sastavlja sekvencu izvršenja naredbe. Možete učiniti da CPU odmah zaustavi program pozivanjem prekida. Za to se koriste vanjski signali ili ugrađeni periferni uređaji.

Porodice mikrokontrolera

Najčešći mikrokontroleri sledećih familija:

  • MSP430 (TI);
  • ARM (ARM Limited);
  • MCS 51 (INTEL);
  • STMB (STMicroelectronics);
  • PIC (mikročip);
  • AVR (Atmel);
  • RL78 (Renesas Electronics).

Jedan od najpopularnijih u elektronskoj industriji su Atmelovi proizvodi bazirani na RISC-u. Prva mikro kola, razvijena 1995. godine, pripadaju grupi Classic. Preporučljivo je naučiti programiranje AVR mikrokontrolera za početnike na modernijim modelima:

  • Mega je porodica moćnih mikro kola sa naprednom arhitekturom.
  • Tiny su jeftini proizvodi sa osam iglica.

Mora se imati na umu da je kompatibilnost sistema instrukcija očuvana samo kada se program prenese sa MC niskih performansi na moćniji.

Proizvodi kompanije Atmel su jednostavni i razumljivi. Međutim, da biste koristili sve funkcije, morat ćete razviti softver. Preporučuje se da započnete programiranje AVR mikrokontrolera za početnike preuzimanjem specijalizovanog okruženja Atmel Studio. Aktuelnu verziju besplatno pruža službena web stranica proizvođača. Dodatne softverske komponente nisu potrebne za razvoj softvera u ovom okruženju.

Kompleks Atmel Studio uključuje ogroman broj primjera gotovih projekata. Ovo će pomoći početniku da brzo savlada osnovne funkcije i počne kreirati vlastite programe. Takođe sadrži module za kompajliranje i konačno otklanjanje grešaka u vašem kodu. Paralelno sa savladavanjem, potrebno je naučiti programske jezike. Bez njih je nemoguće razviti softver.

Programski jezici

Po svojoj strukturi, programski jezici za mikrokontrolere malo se razlikuju od onih koji se koriste za personalne računare. Među njima postoje grupe niskog i visokog nivoa. Moderni programeri uglavnom koriste C/C++ i Assembler. Među pristašama ovih jezika vodi se beskrajna debata o tome koji je bolji.

Asembler niskog nivoa u poslednje vreme gubi tlo pod nogama. Koristi direktne upute usmjerene direktno na čip. Stoga se od programera traži da ima besprijekorno poznavanje sistemskih naredbi procesora. Pisanje softvera u Assembleru oduzima značajnu količinu vremena. Glavna prednost jezika je velika brzina izvršavanja gotovog programa.

U stvari, može se koristiti gotovo svaki programski jezik mikrokontrolera. Ali najpopularniji od svih je C / C ++. To je jezik visokog nivoa koji vam omogućava da radite sa maksimalnom udobnošću. Štaviše, kreatori C-a su učestvovali u razvoju AVR arhitekture. Stoga su mikrokola koje proizvodi "Atmel" prilagođena upravo ovom jeziku.

C / C ++ je harmonična mješavina mogućnosti niskog i visokog nivoa. Stoga možete ugraditi umetanja u Assembleru u svoj kod. Gotov softverski proizvod se lako čita i modificira. Brzina razvoja je prilično visoka. U ovom slučaju nije potrebno detaljno proučavanje arhitekture MK-a i CPU skupa instrukcija. C kompajleri imaju velike biblioteke koje olakšavaju posao programera.

Treba napomenuti da izbor optimalnog programskog jezika zavisi i od hardvera. Uz malu količinu RAM-a, nepraktično je koristiti C visokog nivoa. U ovom slučaju, asembler je prikladniji. Pruža maksimalne performanse zahvaljujući kratkom programskom kodu. Ne postoji univerzalno programsko okruženje, ali većina besplatnih i komercijalnih aplikacija može koristiti i Assembler i C / C ++.

PIC mikrokontroleri

Prvi PIC mikrokontroleri pojavili su se u drugoj polovini prošlog veka. Microchipovi brzi 8-bitni čipovi su odmah postali popularni. Harvardova dual bus arhitektura pruža brzinu bez presedana. Razvijen je na osnovu skupa registara koji karakteriše razdvajanje magistrala.

Prilikom odabira programskog jezika za PIC mikrokontrolere, mora se imati na umu da se mikrokola iz porodice zasnivaju na jedinstvenom dizajnu RISC procesora. Simetrični komandni sistem vam omogućava da proizvoljno odaberete metod adresiranja, izvršite operacije u bilo kojem registru. U ovom trenutku kompanija "Microchip" proizvodi 5 vrsta MK, koje su kompatibilne sa programskim kodom:

  1. PIC18CXXX (75 instrukcija, ugrađeni hardverski stog);
  2. PIC17CXXX (58 komandi u 16-bitnom formatu);
  3. PIC16CXXX (35 komandi, veliki set perifernih uređaja);
  4. PIC16C5X (33 komande u 12-bitnom formatu, paketi sa 18-28 pinova);
  5. PIC12CXXX (verzije sa 35 i 33 komande, integrisani generator).

U većini slučajeva, PIC MCU-ovi imaju jednokratnu programabilnu memoriju. Postoje skuplji modeli sa Flash ili UV brisanjem. Asortiman od 500 artikala omogućava vam da odaberete proizvod za bilo koji zadatak. Sada se proizvođač koncentriše na razvoj 32-bitnih verzija sa povećanom memorijom.

Programski jezici PIC mikrokontrolera su Assembler i C. Bilo koje integrirano razvojno okruženje (IDE) je pogodno za kodiranje. Vrlo je zgodno programirati uz njihovu pomoć. Oni automatski prevode tekst programa u mašinski kod. Važna karakteristika IDE-a je mogućnost korak-po-korak simulacije gotovog softvera. Preporučujemo korištenje MPLAB razvojnog okruženja. Kreirao ga je Microchip.

Prije početka rada u MPLAB-u savjetujemo vam da svaki put kreirate poseban folder. Ovo je neophodno kako se ne biste zbunili u projektnim datotekama. Interfejs programa je intuitivan i s njim ne bi trebalo biti nikakvih poteškoća. Za otklanjanje grešaka koriste se vlasnički debageri Pickit, ICD, REAL ICE, IC PROG. Imaju mogućnost pregleda sadržaja memorije, postavljanja kontrolnih tačaka.

Odlučio sam posvetiti ovaj članak (ili bolje rečeno seriju članaka...) mikrokontrolerima iz Atmela. Naravno, ova tema je zajebana... ALI! Iz vlastitog iskustva znam da je saznati istinu usred ovoga, izvini BARDAK, jako, jako teško! Zato sam odlučio da pokušam da unesem bar malo jasnoće u glave onih koji žele da upoznaju ovu strašnu zver zvanu "Mikrokontroler".

Dakle, svrha ovog članka je da opiše i, ako je moguće, prikaže cijeli proces stvaranja uređaja baziranog na mikrokontroleru od nule. Odnosno, iz ideje (npr. odlučili smo da sastavimo novogodišnju trepćuću lampu, sličnu onoj koju je opisao uvaženi alx32 u članku ...) prije utjelovljenja u hardveru. Naravno, zaobilazeći sve međufaze: postavljanje problema, odabir MC-a, odabir uprtača, formuliranje algoritma, pisanje programa, otklanjanje grešaka, kreiranje ploče i, najdugoočekivanije, pokretanje !!!

Ažurirano: Dodati fajlovi. dakle, zadatak: trebamo napraviti uređaj sposoban da svijetli određenim redoslijedom (neka bude redom), N-ti broj LED dioda (neka bude 8 komada).
(ovo je za početak …… ..)


Sada možete početi sa programiranjem. Možete pisati na bilo čemu, ali savjetujem početnicima da daju prednost jeziku C pošto programiranje je lakše i jasnije. Ja lično koristim kompajler CodeVision AVR(nalazi se u datotečnoj arhivi), za ovaj kompajler će biti obezbeđeni dalji programi.

Odlučimo se za algoritam... Potrebno je da aktiviramo jedan od MK izlaza zauzvrat nakon određenog vremenskog perioda.

Možete ga uključiti/isključiti na različite načine:
- dodijelite vrijednosti svakom pinu posebno;
- zapišite vrijednosti svih izlaza odjednom.

Vrijednosti (sekvenca) se mogu dobiti:
- ručnim upisivanjem svih naredbi;
- iz niza;
- matematičkom metodom.

Vremenski interval se može podesiti:
- funkcije odgode;
- kroz tajmer.

Eksperimentirajmo sa svim ovim metodama. Ali prvo vam treba prazan...

Za kreiranje predloška programa koristit ćemo generator koda ugrađen u CVAVR... Da biste to učinili, pokrenite program, kliknite Fajl -> Novo, u prozoru koji se otvori odaberite "projekat" i kliknite uredu... Na pitanje "Koristiti generator koda?" odgovaramo sa „Da“.
Pojavio se prozor generatora koda. U njemu biramo tip MK-a i njegovu taktnu frekvenciju, ostalo ostavite kako jeste:


Zatim idite na karticu "Luke" i tamo unutra "PortB" i izloži sljedeće:


Ovako smo definirali sve pinove portova. B kao izlazi, a nule znače da će kada se napajanje uključi, oni će biti postavljeni na logički " 0 ".
Ostale funkcije nam još ne trebaju.

Pritiskamo "Datoteka -> Generiraj, sačuvaj i izađi", odaberite gdje želite spremiti projektne datoteke i pogledajte prozor sa kodom koji je generirao generator.

Sada unesite naš kod u program.
Najjednostavnija opcija implementacije (iako nije lijepa sa programske tačke gledišta) - zapisujemo vrijednosti svakog izlaza, a kašnjenja pravimo kroz funkciju kašnjenje.

kašnjenje_ms ( x); - kašnjenje za x milisekundi

odgodi_us ( x); - kašnjenje za x mikrosekunde

PORTB- luka sa kojom radimo.

PORTB. x - žalba na zaključak x luka B

Takve redove nalazimo na kraju teksta


Ovo je beskonačna petlja (tj. radi sve dok je napajanje uključeno) našeg programa. Ispred njega su samo komande za predpodešavanje mikrokontrolera. Linije koje počinju sa “//” - komentare, ponekad ih je korisno pročitati.

Fragment je isključen. Naš časopis postoji na donacijama čitalaca. Puna verzija ovog članka dostupna je samo


Pritisnemo dugme Napravite projekat

(na traci sa alatkama).

Psovanje?
I s pravom! Kompajler ne poznaje funkciju kašnjenje_ms (), tako da ga trebate uputiti na datoteku u kojoj je opisana ova funkcija.
Da biste to učinili, na samom početku teksta programa morate umetnuti red #include (ovdje tačka i zarez ne treba!)
Ovako nešto:

Ponovo pritisnite magično dugme.
Projekat kreiran.
Sada se u fascikli u koju smo sačuvali sam projekat pojavio fajl Ime projekta.hex- ovo je firmver mikrokontrolera!

Ali čekajte, nemojte žuriti da zgrabite lemilicu ... Učimo programirati, a ne lemiti!

Zato predlažem da testiramo naš program u virtuelnom modu, naime, u tako divnom i voljenom proizvodu iz Labcenter Electronics - Proteus VSM Tamo možete simulirati apsolutno bilo koju shemu (postoje čak i Laplaceovi primitivi!). Možete ga preuzeti u priloženoj arhivi, zajedno sa projektnim fajlovima. Istina, verzija nije sasvim kriva, pa spremanje ne funkcionira. Reći ću vam šta da radite s ovim u posebnom članku.

Dakle, trčimo ISIS(razvojno okruženje za šematske dijagrame). U ovom prozoru pritisnite dugme "P".

U redu "Ključne riječi" uvesti "Attiny2313" a sa desne strane dobijamo:


Nema mnogo toga za izabrati, tako da dvaput kliknemo na ovu usamljenu liniju i vidimo lijevo u glavnom prozoru:


To znači da je stavka dodana.

Sada unesite u polje "Ključne riječi" riječi "LED-RED" i "RES"... Dodajte otpornik i LED u projekat i zatvorite prozor za odabir stavke.

Pokušavam sastaviti kolo(zaključak RESETOVATI obavezno spojite na +5V, inače ništa neće raditi! a u životu je i poželjno!)

Evo kratkog savjeta:

A da biste uredili svojstva elemenata, samo dvaput kliknite na njih.

Prikupljeno? Nadam se da nisu povrijedili sebe, svoje voljene i okolne predmete.

Izvinite na sprdnji, samo ako sami shvatite - nećete zaboraviti, pa shvatite, program je veoma moćan i vredi ga savladati!

Kada se sklop sklopi, možete flešovati naš virtuelni MC. Da biste to učinili, dvaput kliknite na njega i vidite prozor.

Dobar dan dragi radio amateri!
Dobrodošli na stranicu ““

Šta je mikrokontroler i čemu služi. Okrenimo se njegovoj definiciji:

- mikrokolo dizajnirano za upravljanje elektroničkim uređajima, ili na drugi način - jednostavno računalo (mikro-računalo) sposobno za obavljanje jednostavnih zadataka.

Naime, mikrokontroler je uređaj koji nam omogućava da realizujemo svoje ideje (čak i one sulude), ali, naravno, u okviru svojih mogućnosti. I što je najvažnije, utjelovljenje ideje u životu postiže se ne stvaranjem sofisticiranih elektronskih struktura, već samo, u osnovi, snagom naše misli (želiš li postati čarobnjak?).
Najpopularnije među radio-amaterima su dvije vrste mikrokontrolera:
PIC- Microchip Technology
AVR- Atmel firme

Samo želim da napravim malu digresiju i razjasnim jednu od mojih pozicija. Neću, ni sada ni kasnije, da govorim o zaslugama ovog ili onog tipa mikrokontrolera, ovog ili onog softvera, i uopšte svega što se tiče mikrokontrolera, da savetujem nešto, ali još više - da se namećem čitaocima . Sve je to stvar ukusa, ličnih preferencija i krajnjih ciljeva u proučavanju mikrokontrolera. Pa, pošto je „neizmernost ne zagrliti“, svu svoju dalju naraciju ću voditi u vezi sa AVR mikrokontrolerima i, ne baš uobičajenim, ali meni najdražim programom „Algorithm Builder“. Različiti tipovi mikrokontrolera, programa, naravno, imaju razlike, ali imaju i dosta zajedničkog. I naučit ćemo svijet mikrokontrolera kako bi se kasnije stečeno znanje moglo lako primijeniti na PIC-ove i bilo koji softver. Da vas još jednom podsjetim da je ova serija članaka moj pokušaj da pomognem onima koji su prvi čuli za postojanje mikrokontrolera i žele razumjeti kako s njima raditi.

Šta vam je potrebno da naučite kako raditi s mikrokontrolerima? Izdvojio bih nekoliko, po mom mišljenju, glavnih uslova:
1. Želja i upornost .
Ovdje je sve vrlo jednostavno: postoji želja - sve će uspjeti. A želja sa istrajnošću je, generalno, super-duper stvar.
2. Poznavanje uređaja mikrokontrolera.
Duboko poznavanje ovde nije važno (a možda i nije potrebno), ali je neophodno znati šta je „na ploči“ mikrokontrolera. Samo znajući od čega se mikrokontroler sastoji, koje uređaje sadrži, njihove mogućnosti, kako funkcionišu - tek tada ćemo moći da iskoristimo mogućnosti mikrokontrolera u potpunosti.
3. Poznavanje programskog jezika i upravljačkih komandi mikrokontrolera.
Kako će mikrokontroler raditi, koje zadatke mu dodjeljujete i kako će ih obavljati, određuje program koji je u njega ugrađen - program koji sami sastavite za mikrokontroler. I na ovom ćemo se mjestu zadržati detaljnije kako bismo razmotrili pitanja koja bi se mogla pojaviti u budućnosti.

Program(u prijevodu ova riječ znači - "recept") - preliminarni opis nadolazećih događaja ili radnji.

Na primjer, želimo da mikrokontroler treperi LED diodom. Jednostavan zadatak, ali ipak, da bi mikrokontroler izvršio ovaj zadatak, moramo prvo, korak po korak, opisati sve radnje mikrokontrolera, napisati program koji mora izvršiti da bi dobio rezultat koji nam je potreban - trepćuće LED . Ovako nešto:
♦ LED svijetli:
- konfigurirajte izlaz na koji je LED spojen da radi na izlazne informacije
- primenite logički nivo na ovaj pin, koji će omogućiti da se LED lampica upali
♦ Pričekajte malo:
- idite na potprogram za formiranje pauze (koji takođe treba "prožvakati")
- nakon izvršenja potprograma pauze, vratite se na glavni program
♦ Isključite LED:
- primijeniti logičku razinu na izlaz, gaseći LED
itd.
Sa terminom Program drugi pojam je neraskidivo vezan - Algoritam(kao Vuk i Zec, Tom i Džeri).

Algoritam- skup uputstava koja opisuju redoslijed radnji za postizanje željenog rezultata.

Ako smo u programu na najdetaljniji način propisivanje radnji mikrokontroler, zatim u algoritmu we određujemo redosled radnji mikrokontroler, na osnovu kojeg ćemo kreirati program. Slično kao u gornjem primjeru:
♦ Upalite LED
♦ Pričekajte malo
♦ Isključite LED
itd.
Na ovaj način, algoritam je prethodnik programa... I što je algoritam pažljivije i promišljenije kreiran, lakše će biti kreirati program.

Ukupno, program za mikrokontroler je niz akcija mikrokontrolera u obliku skupa naredbi i instrukcija koje mora izvršiti da bi postigao naše ciljeve.

Naredbe za mikrokontroler su u obliku skupa jedinica i nula:
00110101 011000100
takozvani - komandni kodovi, a komandni kodovi su jezik koji mikrokontroler razumije. A da bismo preveli naš algoritam sa ruskog jezika na jezik mikrokontrolera - u tim skupovima nula i jedinica postoje posebni programi.
Ovi programi nam omogućavaju da opišemo redoslijed rada mikrokontrolera na nama manje-više razumljivom jeziku, a zatim taj redosled prevedemo na jezik razumljiv mikrokontroleru, usled čega dolazi do tzv. mašinski kod- niz naredbi i instrukcija (te iste nule i jedinice) koje samo mikrokontroler razumije. Poziva se tekst programa koji je napisao programer izvorni kod... Vrši se prevod programa iz programskog jezika (izvorni kod) u jezik mikrokontrolera (mašinski kod). prevodioci... Prevoditelj pretvara tekst programa u mašinske kodove, koji se zatim upisuju u memoriju mikrokontrolera.
U takvim programima redoslijed rada mikrokontrolera opisan je posebnim jezikom - programskim jezikom. Programski jezik se razlikuje od našeg ljudskog jezika. Ako naš jezik komunikacije služi uglavnom za razmjenu informacija, onda:

Programski jezik To je način prenošenja komandi, instrukcija, jasan vodič za akciju za mikrokontroler.

Postoji mnogo programskih jezika i mogu se podijeliti u dvije vrste:
programski jezici niskog nivoa
programski jezici visokog nivoa
Koja je razlika. I razlikuju se po njihovoj blizini mikrokontrolera.
U osvit rađanja mikroprocesorske tehnologije, programi su pisani u mašinskim kodovima, odnosno cijeli algoritam rada bio je sekvencijalno pisan u obliku nula i jedinica. Ovako je izgledao program:

01000110
10010011
01010010

Teško da će neko moći da shvati takav skup kombinacija dva broja, a rad prvih programera bio je veoma naporan. Kako bi sebi olakšali život, programeri su počeli stvarati prve programske jezike. Dakle, što je programski jezik bliži takvom skupu nula i jedinica, to je više „niskog nivoa“, a što je dalje od njih, to je „visoki nivo“.
Najčešći programski jezici za mikrokontrolere:
- jezik niskog nivoa - Asembler
- jezik visokog nivoa - C (C)
Pogledajmo primjer njihovih razlika (ovi primjeri su apstraktni).
Recimo da treba da saberemo dva broja: 25 i 35.
U mašinskim kodovima ova naredba može izgledati ovako:
00000101 1101001
Na jeziku niskog nivoa:
DODAJTE Rd, Rr
Na jeziku visokog nivoa:
25+35
Razlika između jezika niskog i visokog nivoa vidljiva je golim okom, komentari su, kako kažu, suvišni.
Ali hajde da prodremo malo dublje u ove primjere. Nećemo analizirati primjer strojnog koda, jer je identičan primjeru u Assembleru. U svojoj srži, instrukcije asemblera su isti mašinski kodovi (instrukcije) kojima su jednostavno dodeljene abecedne skraćenice kako se ne bi izgubile u nulama i jedinicama. Asemblerskom naredbom ADD Rd, Rr postavljamo mikrokontroler da sabere dva broja koja se nalaze (a za to ih prvo moramo upisati tamo) - prvi u Rd, drugi u Rr, a rezultat sabiranja smjestimo u Rd. Kao što vidite, postavili smo vrlo specifičan zadatak za mikrokontroler: gdje ga nabaviti, šta učiniti s njim i gdje staviti rezultat. U ovom slučaju radimo direktno sa mikrokontrolerom.
Komanda na jeziku visokog nivoa: 25 + 35, nama poznata matematička notacija, ugodna našim očima. Ali u ovom slučaju ne radimo direktno sa mikrokontrolerom, već mu jednostavno postavljamo zadatak da sabere dva broja. Rezultat i redoslijed radnji u ovom slučaju će biti isti kao kod izvršavanja asemblerske komande: prvo će se ova dva broja negdje napisati, zatim dodati, a rezultat će biti negdje smješten.
I tu leži glavna razlika između jezika visokog i niskog nivoa. Ako u Assembleru kontrolišemo ceo proces (hteli mi to ili ne): znamo gde su napisana ova dva broja i znamo gde će biti rezultat, onda u jeziku visokog nivoa ne kontrolišemo proces. Program sam odlučuje gdje će unaprijed upisati brojeve i gdje postaviti rezultat. U većini slučajeva ne moramo znati, jer je za nas glavni rezultat broj 60 na izlazu. Kao rezultat toga, programi na jezicima visokog nivoa su čitljiviji, ugodniji za oko i manji po veličini - na kraju krajeva, ne moramo "ići u sve rupe" i opisivati ​​svaki korak mikrokontrolera, programa to radi za nas kasnije, kada ga kompajlira - prevodi u mašinske kodove... Ali postoji i minus. Dva identična algoritma napisana u Assembleru i u C-u, nakon pretvaranja u mašinske kodove, imaće različite veličine: program napisan u Assembleru biće 20-40% kraći od programa napisanog u C-u - đavo samo zna kojim putem C ide da postigne rezultat koji nam je potreban... A postoje slučajevi kada nema poverenja u jezik visokog nivoa i umetci koda napisani u Assembleru se prave u C programu.
Profesionalni programeri obično znaju nekoliko programskih jezika (ili rade u timu koji ima stručnjake za različite jezike), kreativno kombinujući svoje mogućnosti i prednosti u jednom programu. Pa, mi, amateri, moramo da znamo bar jedan jezik (za početak), i treba da počnemo (a ja sam u to čvrsto uveren, i niko me neće ubediti) sa jezikom niskog nivoa - asemblerom.

Pa mislim, i tu nam je sve jasno - treba da naučimo programski jezik, na drugačiji način - ništa.

Naredbe i upute za upravljanje mikrokontrolerom.
AVR mikrokontroleri imaju više od 130 različitih komandi koje im omogućavaju da realizuju sve svoje mogućnosti. Ali odmah ću reći - malo ih amatera zna sve, a još više ih sve koristi. Obično je u amaterskoj praksi dovoljno znanja i polovina ekipa, pa čak i manje. Ali morate proučiti komande. Što više komandi znate, programi će biti sofisticiraniji (u dobrom smislu te riječi) i elegantniji.

Aritmetičko-logička jedinica i organizacija memorije - programska memorija, memorija podataka, nepromjenjiva memorija


Top srodni članci