Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Çfarë ju nevojitet për të programuar mikrokontrolluesit? Pajisja dhe programimi i mikrokontrolluesve AVR. Mikrokontrolluesi dhe si ta mposhtim atë

Unë jam totalisht kundër kësaj qasjeje. Zakonisht gjithçka përfundon - ose asgjë, ose forume të bllokuara me lutje për ndihmë. Edhe nëse dikush ndihmohet, atëherë në 90% ai nuk do të shfaqet më kurrë në faqet elektronike. Në 10% të mbetur ai vazhdon të vërshojë forumet me përgjërime, do ta godasin fillimisht, pastaj do të hedhin baltë mbi të. Nga këto 10%, eliminohet 9% tjetër. Pastaj ka dy opsione: ose bëhet fjalë për një kokë budallaqe dhe megjithatë ka shkuar në fillim, ose në versionet veçanërisht të neglizhuara, pjesa e saj është të kopjojë ndërtimet e njerëzve të tjerë, pa asnjë mendim të vetëm se si funksionon. Nga këto të fundit, shpesh lindin arduinë.

Rruga nga e para, për mendimin tim, është të studiojmë periferinë dhe veçoritë, nëse është një mikrokontrollues. Është më e saktë që së pari të kuptoni se si të tundni këmbët, pastaj me kohëmatës, pastaj me ndërfaqe. Dhe vetëm atëherë përpiquni të rrisni FAT-in tuaj. Po, nuk është i shpejtë, por do të marrë kohë dhe përpjekje, por praktika tregon se sado të përpiqeni ta shkurtoni këtë rrugë, përsëri do të shfaqen probleme që do të duhet të zgjidhen dhe do të kaloni shumë më tepër kohë pa këtë bazë.

Vetëm mos ngatërroni të ngrohtë dhe të butë. Së pari, ka përjashtime nga të gjitha rregullat, unë personalisht pashë njerëz që nuk mbanin mikrokontrollues në duar më parë, por në një kohë jashtëzakonisht të shkurtër ishin në gjendje të tejkalonin radio amatorët me përvojë, ne nuk i marrim parasysh. Së dyti, kam hasur në individë që kanë filluar me kopjimin e skemave dhe e kanë kuptuar menjëherë, por përkundrazi, edhe ky është një përjashtim nga rregulli. Së treti, edhe midis arduinëve ka programues me përvojë, në fund të fundit, kjo është vetëm një platformë, por ka më shumë të ngjarë një përjashtim.

Nëse flasim për masën e përgjithshme, atëherë gjërat janë pikërisht ashtu siç i përshkrova në fillim: mosgatishmëria për t'u marrë me bazat, në rastin më të mirë, vonon momentin kur duhet t'u kthehemi këtyre pyetjeve. Në rastin më të keq, do të futeni shpejt në tavanin e njohurive tuaja dhe do të fajësoni dikë tjetër për problemet tuaja gjatë gjithë kohës.

2. Përpara se ta zgjidhni problemin, shtypeni deri në absurditet deri në "ngjitjen e rezistencës", ndihmon, kontrollohet. Detyrat e vogla janë shumë më të lehta për t'u zgjidhur. Kur një detyrë e madhe ndahet në një mori veprimesh të vogla, atëherë gjithçka që mbetet është t'i kryeni ato. Mund t'ju jap edhe një këshillë të mirë, edhe pse do t'ju duket e çmendur - merrni një fletore dhe shkruani në të gjithçka që do të bëni. Ti mendon se do ta kujtoj, por jo. Le të themi se jam në humor të mirë sot dhe mendoj se si ta mbledh tabelën. Shkruani një plan veprimi: shkoni për të blerë një rezistencë, përgatitni telat, bëni një montim ekrani. Atëherë do të harrosh gjithçka, do të hapësh fletoren dhe do të shikosh - po, sot disponimi është të presësh dhe të prekësh, unë do ta rregulloj. Ose e montoni tabelën dhe mbetet për të bashkuar komponentin e fundit, por nuk ishte aty që rezistorët mbaruan, kështu që do ta kisha shkruar para bashkimit, atëherë m'u kujtua.

3. Mos përdorni gjeneratorë kodesh, veçori jo standarde dhe thjeshtime të tjera, të paktën në fazat e para. Unë mund t'ju jap shembullin tim. Gjatë përdorimit aktiv të AVR, unë përdora kodogen CAVR. Unë isha plotësisht i kënaqur me të, megjithëse të gjithë thoshin se ai ishte kakao. Këmbanat binin vazhdimisht, kishte probleme me bibliotekat, me sintaksën, me portimin, por ishte e vështirë të refuzohej. Nuk e kuptoja se si funksiononte, thjesht dija ku dhe si t'i kontrolloja kutitë.

Kunji u fut në arkivolin tim me ardhjen e STM32, ishte e nevojshme të zvarritesh mbi to, atëherë u shfaqën problemet. Probleme për ta thënë më butë, në fakt, më duhej të zotëroja mikrokontrolluesit dhe gjuhën C nga e para. Nuk i përsërita më gabimet e së kaluarës. Duhet të them se kjo tashmë ka ardhur në ndihmë dhe më shumë se një herë. Që atëherë, kam pasur mundësinë të punoj me platforma të tjera dhe nuk kam përjetuar asnjë vështirësi, qasja e justifikon veten.

Për të gjitha përmirësimet dhe thjeshtimet, ishte një krahasim shumë i mirë se janë si karrocat me rrota që hipin në shina, mund të shkosh e të kënaqesh, por nuk mund të ngrihesh kudo që të çojnë - atje do të arrish.

4. Mësoni gjuhën C. Eh, sa shpesh dëgjoj radioamatorët fillestarë të mburren se e njohin mirë kurvën. Për mua është bërë ushqim, më pëlqen gjithmonë të konsultohem me bashkëbisedues të tillë. Zakonisht rezulton menjëherë se ata nuk e dinë fare gjuhën. Mund të them se përkundër thjeshtësisë në dukje, kam takuar jo aq shumë njerëz që do ta njihnin vërtet mirë. Në thelb, të gjithë e njohin atë aq sa kërkohet për të zgjidhur problemet.

Megjithatë, problemi për mendimin tim është se duke mos ditur mundësitë, ju kufizoni shumë veten. Nga njëra anë, zgjidhje jo optimale që kërkojnë harduer më të fuqishëm, nga ana tjetër, kod i palexueshëm që është i vështirë për t'u ruajtur. Për mendimin tim, lexueshmëria dhe mirëmbajtja e kodit është një nga vendet më të rëndësishme dhe është e vështirë për mua të imagjinoj se si mund të arrihet kjo pa përdorur të gjitha aftësitë e gjuhës C.

Shumë fillestarë përbuzin të mësojnë gjuhën, kështu që nëse nuk jeni si gjithë të tjerët, do të bëheni menjëherë dy hapa më lart se pjesa tjetër e fillestarëve. Gjithashtu nuk ka dallim se ku të mësohet gjuha. Sipas mendimit tim, mikrokontrolluesi nuk është shumë i përshtatshëm për këtë. Është shumë më e lehtë të instalosh një lloj Visual studio ose Qt Creator dhe të zgjidhësh problemet në vijën e komandës.

Do të jetë gjithashtu një ndihmë e mirë për të studiuar çdo test gjuhësor që jepet gjatë intervistave. Nëse gërmon përreth, mund të mësosh shumë.

5. Asambleri mësimor? Nuk ka nevojë të kesh frikë prej tij, si dhe të idhullosh. Ju nuk keni nevojë të mendoni se duke ditur se si të shkruani një program në gjuhën e asamblesë, do të bëheni menjëherë një guru i mikrokontrolluesit, për disa arsye ky është një mashtrim i zakonshëm. Para së gjithash, është një mjet. Edhe nëse nuk planifikoni ta përdorni, unë përsëri do të rekomandoja shumë të shkruani të paktën disa programe. Kjo do të thjeshtojë shumë kuptimin e mikrokontrolluesit dhe strukturën e brendshme të programeve.

6. Lexoni fletën e të dhënave. Shumë zhvillues e neglizhojnë këtë. Duke studiuar fletën e të dhënave, do të jeni dy hapa përpara atyre zhvilluesve. Është jashtëzakonisht e dobishme ta bëni këtë, së pari, ky është burimi, pavarësisht se cilat faqe lexoni, në shumicën e rasteve ata përsërisin informacionin nga fleta e të dhënave, shpesh me gabime dhe nënkuptime. Përveç kësaj, ai mund të përmbajë informacione për të cilat nuk po mendoni tani, por që mund të jenë të dobishme në të ardhmen. Mund të ndodhë që të dalë një lloj gabimi dhe të kujtoni se po, ishte thënë në fletën e të dhënave. Nëse qëllimi juaj është të bëheni një zhvillues i mirë, atëherë kjo fazë nuk mund të shmanget, do t'ju duhet të lexoni fletët e të dhënave, sa më shpejt të filloni ta bëni këtë, aq më shpejt do të shkojë rritja.

7. Njerëzit shpesh kërkojnë të dërgojnë një fletë të dhënash në Rusisht. Datashit është ajo që duhet perceptuar si e vërteta, informacioni më i saktë. Edhe atje gabimet janë të mundshme. Nëse kësaj i shtohen edhe gabimet e përkthyesit, ai është gjithashtu një person, ndoshta jo me qëllim, thjesht i vulosur. Ose ai ka vizionin e tij, ai mund të humbasë diçka, për mendimin e tij jo e rëndësishme, por ndoshta jashtëzakonisht e rëndësishme për ju. Situata bëhet veçanërisht qesharake kur duhet të gjeni dokumentacion për komponentë jo shumë të njohur.

Sipas mendimit tim, është shumë më e lehtë të përjashtosh paraprakisht të gjithë shtresën e këtyre problemeve sesa t'i kapësh ato më vonë. Prandaj, unë jam kategorikisht kundër përkthimeve, e vetmja këshillë e vërtetë është të studioni anglisht në mënyrë që të lexoni fletët e të dhënave dhe manualet në origjinal. Ju mund ta kuptoni kuptimin e frazës me ndihmën e programeve të përkthimit, edhe nëse niveli i gjuhës tuaj është zero.

Unë bëra një eksperiment: kishte një student në dispozicion, një fletë të dhënash dhe një përkthyes google. Eksperimenti numër 1: studentit iu dorëzua një fletë të dhënash dhe iu dha detyra të gjejë në mënyrë të pavarur vlerat e nevojshme, rezultati është "si mundem", "po, nuk di anglisht", "Nuk gjeta asgjë / unë nuk kuptova” fraza tipike që thonë se as që u përpoq. Eksperimenti # 2: të njëjtit student iu dha e njëjta fletë e të dhënave dhe e njëjta detyrë, me ndryshimin se unë u ula pranë tij. Rezultati është që pas 5 minutash ai vetë gjeti të gjitha vlerat e nevojshme, absolutisht pa pjesëmarrjen time, pa ditur anglisht.

8. Rishpikni biçikletën. Për shembull, ju po studioni diçka të re, le të themi një tranzistor, Xha Horowitz nga faqet e librit të tij deklaron me autoritet se transistori përforcon, thuaj gjithmonë - NUK BESOJ. Ne marrim një tranzistor në duar, e ndezim atë në qark dhe sigurohemi që është me të vërtetë kështu. Ka një shtresë të tërë problemesh dhe hollësive që nuk përshkruhen në libra. Ju mund t'i ndjeni ato vetëm kur i merrni dhe përpiqeni t'i mbledhni. Në të njëjtën kohë, marrim një mori njohurish të lidhura, mësojmë hollësitë. Për më tepër, çdo teori pa praktikë do të harrohet shumë më shpejt.

Në fazën fillestare, një metodë më ndihmoi shumë - së pari ju bashkoni qarkun dhe shihni se si funksionon, dhe më pas përpiqeni të gjeni arsyetimin në libër. E njëjta gjë është edhe me pjesën e softuerit, kur ka një program të gatshëm, është më e lehtë ta kuptosh atë dhe të lidhësh pjesët e kodit, se cili është përgjegjës për çfarë.

Është gjithashtu e rëndësishme të shkoni përtej asaj që lejohet, të aplikoni më shumë / më pak tension, të bëni më shumë / më pak rezistorë dhe të monitoroni ndryshimet në funksionimin e qarkut. E gjithë kjo mbetet në tru dhe do të jetë e dobishme në të ardhmen. Po, kjo është e mbushur me konsumin e komponentëve, por unë mendoj se kjo është e pashmangshme. Në fillim u ula dhe gjuaja gjithçka me radhë, por tani, para se të vendosja këtë apo atë emërtim, më kujtohen gjithmonë ato kohë qesharake dhe pasojat e vendosjes së emërtimit të gabuar.

9. Si do ta bëja nëse do të isha në vend të zhvilluesve? A mund të bëj më mirë? Bëjini vetes këto pyetje çdo herë, kjo ndihmon shumë për të avancuar në mësim. Për shembull, studioni ndërfaqet 1wire, i2c, spi, uart dhe më pas mendoni se si ndryshojnë ato, nëse mund të ishte bërë më mirë, kjo do t'ju ndihmojë të kuptoni pse gjithçka është kështu dhe jo ndryshe. Ju gjithashtu do të jeni të vetëdijshëm se kur dhe cila është më e mira për të aplikuar.

10. Mos u kufizoni nga teknologjia.Është e rëndësishme që kjo këshillë të ketë një linjë shumë të hollë. Kishte një fazë në jetë kur nga çdo portë mund të dëgjohej "është e nevojshme të njihet FPGA", "por në FPGA mund të bëhet". Formalisht, nuk kisha synime për të studiuar FPGA-të, por ishte e pamundur të kaloja asnjërën prej tyre. Pak kohë i është caktuar kësaj pyetjeje për njohje. Koha nuk ka kaluar kot, kisha një sërë pyetjesh në lidhje me strukturën e brendshme të mikrokontrolluesve, pasi bisedova me plisin mora përgjigje për to. Ka shumë shembuj të ngjashëm, të gjitha njohuritë që kam marrë në një formë ose në një tjetër, herët a vonë më kanë ardhur në ndihmë. Unë nuk kam një shembull të vetëm të kotë.

Por siç u tha, çështja e teknologjisë ka një vijë të mirë. Ju nuk keni nevojë të kapni gjithçka. Ka shumë drejtime në elektronikë. Ndoshta ju pëlqen analoge, ndoshta dixhitale, ndoshta jeni specialist i furnizimit me energji elektrike. Nëse nuk është e qartë, atëherë provoni veten kudo, por praktika tregon se në fillim është më mirë të përqendroheni në diçka specifike. Edhe nëse duhet të shtypni në disa drejtime, është më mirë ta bëni atë me hapa, së pari shtyni një gjë.

11. Nëse pyet një radio amator fillestar se çfarë i pëlqen më shumë programimi apo qarku, atëherë me një probabilitet prej 99% përgjigja do të jetë programimi. Në të njëjtën kohë, këta programues shpenzojnë pjesën më të madhe të kohës duke bërë pllaka me LUT / fotorezist. Arsyet janë përgjithësisht të kuptueshme, por mjaft shpesh ajo kthehet në një lloj çmendurie, e cila konsiston në prodhimin e dërrasave për hir të prodhimit të bordeve.

Në internet, pothuajse e vetmja rrugë e vërtetë drejt programimit është të bëhesh një Jedi PCB. Edhe unë e kalova këtë rrugë, por sa herë pyes veten pse? Meqenëse i bleva vetes disa dërrasa për të gjitha rastet, çdo herë mendoj se si mund të jetoja gjithë këtë kohë pa dërrasa të bëra vetë. Këshilla ime është, nëse ka edhe një pikë dyshimi, atëherë është më mirë të mos shqetësoheni dhe të merrni një tabelë të gatshme të korrigjimit, dhe do të ishte më mirë të shpenzoni kohë dhe para për programim.

12. Këshilla e radhës, veçanërisht e dhimbshme, me të vërtetë nuk dua ta diskutoj, por është e nevojshme. Shpesh më shkruajnë, thonë ata, xxx rubla për uuy janë të shtrenjta, ku do të ishte më lirë ta merrje. Duket se është një pyetje e zakonshme, por zakonisht sforcohem menjëherë prej saj, pasi shpesh kthehet në ankesa të pafundme për mungesën e parave. Unë gjithmonë kam një pyetje: pse të mos heqësh prapanicën dhe të shkosh në punë? Të paktën në të njëjtin McDuck, të paktën për një kantier ndërtimi, mund të duroni një muaj, por më pas mund të blini disa dërrasa, të cilat do të jenë të mjaftueshme për vitin e ardhshëm. Po, e di që është e vështirë të gjesh punë në qytete dhe fshatra të vegjël, të zhvendosesh në një qytet të madh. Punoni në distancë, në përgjithësi, duhet të rrotulloheni. Nuk ka kuptim të ankohesh, ka rrugëdalje nga situata, kush e kërkon e gjen.

13. Në të njëjtin derrkuc do të shtoj një pyetje shumë të dhimbshme të instrumentit. Mjeti duhet t'ju lejojë të zhvilloni pajisjet sa më shpejt që të jetë e mundur. Për disa arsye, shumë zhvillues nuk e vlerësojnë kohën e tyre. Një shembull tipik, një shtrëngim i lirë për terminalet, në të cilin shumë punëdhënës pëlqejnë të kursejnë. Problemi është se as nuk shtrëngohet siç duhet, për shkak të kësaj, telat bien. Ju duhet të bëni një mori manipulimesh shtesë, përkatësisht, duke humbur kohë. Por, siç e dini, një budalla paguan tre herë, kështu që çmimi i ulët i një crimper do të rritet shumë herë, për shkak të kohës së shpenzuar dhe cilësisë së dobët të shtrëngimit.

Nuk po them se lirë = keq, jo - gjithçka varet nga situata. Kthehu te shembulli i crimperit, ishte një kohë kur shtrydhja çdo gjë, kështu që shpesh lindnin probleme. Është veçanërisht e pakëndshme kur filloni një tabelë dhe nuk funksionon, pas një kërkimi të gjatë për një gabim, e kuptoni se për shkak të një teli të ngjeshur dobët, është turp. Që kur u shfaq shtrëngimi normal, këto probleme janë zhdukur. Po, zhaba i brendshëm kërciti dhe u mbyt në koston e tij, por kurrë nuk u pendua për këtë vendim. E vetmja gjë që dua të them është se pasi kam punuar me një instrument normal, absolutisht nuk dua të kthehem në një të keqe, as nuk dua ta diskutoj. Siç tregon praktika, është më mirë të mos kurseni në mjete, nëse keni dyshime, merrni dikë për ta testuar atë, lexoni rishikime, rishikime.

14. Filloni një faqe interneti, mund të shkruani çdo gjë në të, njësoj si një fletore. Praktika tregon se punëdhënësit nuk e lexojnë gjithsesi, por vetë fakti ka një efekt të madh.

15. Një pyetje delikate: arsimi i lartë i specializuar, a është i nevojshëm? Unë di më shumë se disa raste kur njerëzit punonin absolutisht pa arsim dhe, në bazë të përvojës dhe njohurive, mund t'i jepnin një cigare çdo specialisti të certifikuar. Në fakt, nuk kam një arsim të specializuar, a ndjej ndonjë shqetësim nga kjo? Në një masë të caktuar, po.

Që në fillim, kur mikrokontrolluesit ishin një hobi për mua, kam ndihmuar shumë me punime afatgjata dhe diploma nga universitete të ndryshme, vetëm për të vlerësuar nivelin tim. Mund të them me bindje se niveli është përgjithësisht i ulët, pavarësisht nga emri i universitetit. Nuk është absolutisht e nevojshme të studiosh për disa vite për të shkruar një diplomë të tillë. Këtë mund ta arrini vetë në një kohë shumë të shkurtër. E megjithatë, ka pasur shpesh raste kur studentët dinin ndonjë lëndë që po merrnin në kursin 2-3, por unë nuk e dija këtë. Edhe pse e gjithë kjo njohuri u kompensua nga vetë-edukimi, do të ishte akoma më mirë të mos humbisni kohë për këtë.

Universiteti për hir të një copë letre. Mund të them se ka pasur situata kur u është ofruar një punë që kërkonte arsim të detyrueshëm dhe ishte turp që në atë moment nuk kishte asnjë copë letër. Por në përgjithësi, historia tregon se shumica e punëdhënësve nuk i kushtojnë vëmendje fletës suaj.

Pika tjetër shpesh nuk merret parasysh, ky është mjedisi. Mos harroni se njerëzit me të cilët studioni janë brezi juaj, ka mundësi që të punoni me ta. Numri i firmave që punojnë në një industri është shumë i kufizuar. Praktika tregon se edhe në qytetet e mëdha ata dinë gjithçka dhe gjithçka për njëri-tjetrin, deri në detaje intime.

Një pikë tjetër janë mundësitë. Shpesh, universitetet kanë aftësitë e tyre - pajisjet, ndoshta disa seksione, ndoshta disa programe të punës jashtë vendit, kjo duhet të përdoret nëse ekziston edhe mundësia më e vogël. Nëse në një universitet nuk sheh perspektivë, shko në një tjetër, bota nuk përfundon me dikë.

Për ta përmbledhur, këshilla është kjo: nëse ka edhe mundësinë më të vogël, duhet të shkoni për të studiuar, sigurohuni që të ndiqni profilin, nëse ka ndonjë mundësi, atëherë ngjituni kudo dhe mos u ulni pantallonat në tavolinën e pasme. . Bëni njohje, në të njëjtën kohë praktikoni në shtëpi, zhvilloni.

16. A është tepër vonë për të filluar programimin në 20, 30, 40, 50? Praktika e njerëzve të tjerë tregon se mosha nuk është aspak pengesë. Për disa arsye, shumë nuk e marrin parasysh faktin që ka një shtresë të tërë pune që të rinjtë, për shkak të ambicieve të tyre, nuk duan ta bëjnë. Prandaj, punëdhënësit preferojnë të punësojnë ata që do ta mbajnë atë. Ky është shansi juaj për të kapur, dhe më pas gjithçka varet vetëm nga ju.

Dhe këshilla e fundit. Shumë radioamatorë janë jokomunikues, të zemëruar dhe nervozë - konsiderojeni këtë një specifikë të punës. Rrezatoni mirësi dhe pozitivitet, jini një person i mirë.

dhjetor 2015

1. Përparësitë e metodës së propozuar

Qarqet e pajisjeve në mikrokontrolluesit (MK) zakonisht dallohen nga një kombinim i dy cilësive të papajtueshme: thjeshtësia maksimale dhe funksionaliteti i lartë. Përveç kësaj, funksionaliteti mund të ndryshohet dhe zgjerohet më tej pa bërë asnjë ndryshim në qark - vetëm duke zëvendësuar programin (duke ndezur). Këto karakteristika shpjegohen me faktin se krijuesit e MCU-ve moderne u përpoqën të vendosnin në një kristal gjithçka që mund t'i nevojitet zhvilluesit të një pajisjeje elektronike - të paktën sa më shumë që të ishte e mundur. Si rezultat, pati një zhvendosje në theksin nga qarku dhe redaktimi në softuer. Me përdorimin e MC, tani është më pak e nevojshme të "ngarkoni" qarkun me pjesë, ka më pak lidhje midis komponentëve. Kjo, natyrisht, e bën qarkun më tërheqës për t'u përsëritur si për inxhinierët elektronikë me përvojë ashtu edhe për fillestarët. Por, si zakonisht, ju duhet të paguani për gjithçka. Edhe këtu nuk ishte pa vështirësi. Nëse blini një MK të ri, instaloni atë në një qark të montuar saktë nga pjesët e shërbimit dhe aplikoni energji, atëherë asgjë nuk do të funksionojë - pajisja nuk do të funksionojë. Mikrokontrolluesi ka nevojë për një program.

Duket se gjithçka është gjithashtu e thjeshtë me këtë - në internet mund të gjeni shumë skema me firmware falas. Por këtu lind një pengesë: firmware duhet disi të "derdhet" në mikrokontrollues. Për ata që nuk e kanë bërë kurrë këtë më parë, një detyrë e tillë shpesh bëhet problem dhe faktori kryesor i neveritshëm, i cili shpesh e detyron njeriun të braktisë kënaqësitë e përdorimit të MK dhe të kërkojë skema të bazuara në "lirshmëri" dhe logjikë të ngurtë. Por gjithçka nuk është aq e vështirë sa mund të duket në shikim të parë.

Pas analizimit të botimeve në internet, mund të shihni se ky problem më së shpeshti zgjidhet në njërën nga dy mënyrat: duke blerë një programues të gatshëm ose duke bërë një të bërë në shtëpi. Në të njëjtën kohë, skemat e publikuara të programuesve të vetë-bërë janë shumë shpesh në mënyrë të paarsyeshme komplekse - shumë më të ndërlikuara se sa është e nevojshme. Sigurisht, nëse supozohet të ndizet MK çdo ditë, është më mirë të keni një programues "cool". Por nëse nevoja për një procedurë të tillë lind rrallë, rast pas rasti, atëherë mund të bëni pa një programues krejtësisht. Jo, sigurisht, kjo nuk ka të bëjë me të mësuarit për ta bërë atë me fuqinë e mendimit. Kjo do të thotë se duke kuptuar se si programuesi ndërvepron me mikrokontrolluesin kur shkruan dhe lexon informacionin në modalitetin e tij të programimit, ne mund t'ia dalim me mjetet e disponueshme për një qëllim më të gjerë. Këto mjete do të duhet të zëvendësojnë si softuerin ashtu edhe harduerin e programuesit. Pjesa e harduerit duhet të sigurojë një lidhje fizike me mikroqarkun MK, aftësinë për të furnizuar nivelet logjike në hyrjet e tij dhe për të lexuar të dhënat nga daljet e tij. Pjesa e softuerit duhet të sigurojë funksionimin e algoritmit që kontrollon të gjitha proceset e nevojshme. Vini re gjithashtu se cilësia e regjistrimit të informacionit në MK nuk varet nga sa "cool" është programuesi juaj. Nuk ka gjë të tillë si "regjistruar më mirë" ose "më keq". Ekzistojnë vetëm dy opsione: "i regjistruar" dhe "i pa regjistruar". Kjo për faktin se vetë MC kontrollon procesin e regjistrimit brenda kristalit. Thjesht duhet t'i siguroni atij furnizim me energji me cilësi të lartë (pa ndërhyrje dhe valëzim) dhe të organizoni siç duhet ndërfaqen. Nëse nuk zbulohen gabime sipas rezultateve të leximit të kontrollit, atëherë gjithçka është në rregull - mund ta përdorni kontrolluesin për qëllimin e synuar.

Për të shkruar një program në MK pa një programues, na duhet një konvertues i portit USB-RS232TTL dhe gjithashtu. Konvertuesi USB-RS232TTL lejon përdorimin e portës USB për të krijuar një portë COM që ndryshon nga ajo "reale" vetëm në atë që nivelet logjike TTL përdoren në hyrjet dhe daljet e tij, domethënë, tension në rangun nga 0 në 5 volt ( për më shumë detaje, shihni artikullin " "). Në çdo rast, një konvertues i tillë është i dobishëm për t'u pasur në "fermë", kështu që nëse nuk e keni ende, duhet ta blini patjetër. Sa i përket niveleve logjike, në rastin tonë TTL është madje një avantazh ndaj një porti të rregullt COM, sepse hyrjet dhe daljet e një porti të tillë mund të lidhen drejtpërdrejt me çdo mikrokontrollues të mundësuar nga 5 V, duke përfshirë ATtiny dhe ATmega. Por mos u përpiqni të përdorni një portë të rregullt COM - atje përdoren tensione në rangun nga -12 në +12 V (ose -15 ... + 15 V). Lidhja e drejtpërdrejtë me mikrokontrolluesin në këtë rast është e papranueshme !!!

Ideja për të krijuar një skenar për programin "Perpetuum M", i cili zbaton funksionet e programuesit, lindi pas leximit të një numri botimesh në internet që ofrojnë zgjidhje të caktuara për firmware-in e MK. Në secilin rast, u konstatuan mangësi serioze ose komplikime të tepërta. Shpesh kemi hasur në qarqe programuesi që përmbajnë një mikrokontrollues, dhe në të njëjtën kohë, këshillat janë dhënë mjaft seriozisht si: "... dhe për të programuar një mikrokontrollues për këtë programues, na duhet ... saktë - një programues tjetër!". Më pas u sugjerua të shkoni te një mik, të kërkoni një shërbim me pagesë, etj. Cilësia e softuerit të shpërndarë në ueb për këto qëllime gjithashtu nuk ishte i impresionuar - shumë probleme u vunë re si me funksionalitetin ashtu edhe me "mjegullën" e ndërfaqes së përdoruesit. Shpesh kërkon shumë kohë për të kuptuar se si të përdorni një program - ju duhet ta mësoni atë edhe për hir të kryerjes së veprimeve më të thjeshta. Një program tjetër mund të bëjë diçka për një kohë të gjatë dhe me zell, por përdoruesi do të dijë vetëm se asgjë nuk regjistrohet në MC vetëm pasi të jetë përfunduar plotësisht i gjithë firmware dhe leximi pasues i kontrollit. Ekziston edhe një problem i tillë: përdoruesi përpiqet të zgjedhë MK-në e tij nga lista e kristaleve të mbështetur, por nuk është në listë. Në këtë rast, nuk do të jeni në gjendje të përdorni programin - shtimi në listën e MC-ve që mungojnë, si rregull, nuk ofrohet. Për më tepër, zgjedhja manuale e një kontrolluesi nga lista duket e çuditshme, duke pasur parasysh që programuesi në shumë raste mund të përcaktojë vetë llojin e MK. E gjithë kjo thuhet për të mos hedhur baltë mbi produktet ekzistuese, por për të shpjeguar arsyen e shfaqjes së skenarit të programit "Perpetuum M" të përshkruar në këtë artikull. Problemi ekziston vërtet dhe ka të bëjë kryesisht me fillestarët, të cilët jo gjithmonë arrijnë ta kapërcejnë këtë "mur" në mënyrë që të hedhin hapin e tyre të parë në botën e mikrokontrolluesve. Skripti i propozuar merr parasysh të metat e gjetura në programe të tjera. Është zbatuar “transparenca” maksimale e algoritmit, një ndërfaqe përdoruesi jashtëzakonisht e thjeshtë që nuk kërkon studim dhe nuk lë rast të ngatërrohesh dhe të “klikosh në vendin e gabuar”. Në mungesë të MK-së së kërkuar midis të mbështeturve, është e mundur të shtoni në mënyrë të pavarur përshkrimin e tij duke marrë të dhënat e nevojshme nga dokumentacioni i shkarkuar nga faqja e internetit e zhvilluesit MK. Dhe, më e rëndësishmja, skenari është i hapur për studim dhe modifikim. Çdokush, duke hapur në një redaktues teksti, mund ta studiojë dhe modifikojë atë sipas gjykimit të tij, duke ndryshuar funksionet ekzistuese sipas dëshirës së tij dhe duke shtuar ato që mungojnë.

Versioni i parë i skenarit u krijua në qershor 2015. Ky version mbështet vetëm MCU të serive ATtiny dhe ATmega të Atmel me funksione shkrimi/leximi të memories flash, me vendosje bit konfigurimi, me zbulim automatik të llojit të kontrolluesit. Shkrimi dhe leximi EEPROM nuk zbatohet. Kishte plane për të shtuar funksionalitetin e skriptit: shtoni shkrimin dhe leximi i EEPROM, zbatimi i mbështetjes për kontrollorët PIC, etj. Për këtë arsye, skenari nuk është publikuar ende, por për shkak të mungesës së kohës, zbatimi i planit është vonuar dhe që më i miri të mos bëhet armik. nga e mira, u vendos që të publikohet versioni ekzistues. funksionet e zbatuara nuk do të mjaftojnë, ju lutem mos u mërzitni. Në këtë rast, mund të provoni të shtoni vetë funksionin e dëshiruar. Nuk do ta fsheh: idenë e Krijimi i këtij skripti fillimisht ka një kuptim edukativ. Pasi të keni kuptuar algoritmin dhe duke shtuar diçka tuajën në të, do të jeni në gjendje të kuptoni më mirë punën e MK në modalitetin e programimit, në mënyrë që në të ardhmen të mos jeni në pozicioni i një vajze përballë një shtrese një makinë që nxiton, duke e shqyrtuar të zhytur në mendime të brendshmet e saj dhe duke mos kuptuar pse "nuk shkon".

2. Ndërfaqja MK në modalitetin e programimit

Ka disa mënyra të ndryshme për të vendosur kontrolluesin në modalitetin e programimit dhe për të punuar me të në këtë modalitet. Më e thjeshta për t'u zbatuar për kontrollorët e serive ATtiny dhe ATmega është, ndoshta, SPI. Ne do ta përdorim atë.

Por, përpara se të vazhdojmë me shqyrtimin e sinjaleve të nevojshme për formimin e SPI, do të bëjmë një sërë rezervimesh. Mikrokontrolluesi ka pjesë të konfigurimit. Këto janë diçka si çelsat e ndërrimit, ndërrimi i të cilave ju lejon të ndryshoni disa nga vetitë e mikrocirkut në përputhje me nevojat e projektit. Fizikisht, këto janë qeliza të memories jo të paqëndrueshme, si ato në të cilat është shkruar programi. Dallimi është se ka shumë pak prej tyre (deri në tre bajt për ATmega), dhe ato nuk përfshihen në hapësirën e adresave të asnjë memorie. Shkrimi dhe leximi i të dhënave të konfigurimit kryhet me komanda të veçanta të modalitetit të programimit MK. Tani për tani, është e rëndësishme të theksohet se disa nga pjesët e konfigurimit ndikojnë në vetë aftësinë për të përdorur SPI. Me disa nga vlerat e tyre, mund të rezultojë se SPI nuk mund të përdoret. Nëse hasni në një mikrokontrollues të tillë, atëherë metoda e propozuar në këtë artikull nuk do të ndihmojë. Në këtë rast, ose do t'ju duhet të ndryshoni cilësimet e pjesëve të konfigurimit në programues, i cili mbështet një mënyrë tjetër programimi, ose të përdorni një mikrokontrollues tjetër. Por ky problem vlen vetëm për MK të përdorur, ose ato me të cilat dikush tashmë ka "luajtur" pa sukses. Fakti është se MCU-të e reja vijnë me cilësime të bitit të konfigurimit që nuk ndërhyjnë në përdorimin e SPI. Kjo konfirmohet nga rezultatet e testimit të skriptit të programuesit për programin Perpetuum M, gjatë të cilit u ndezën me sukses katër MCU të ndryshme (ATmega8, ATmega128, ATtiny13, ATtiny44). Ata ishin të gjithë të rinj. Cilësimet fillestare të bitit të konfigurimit ishin në përputhje me dokumentacionin dhe nuk ndërhynë në përdorimin e SPI.

Duke marrë parasysh sa më sipër, duhet t'i kushtoni vëmendje pjesëve të mëposhtme. Biti SPIEN mundëson ose çaktivizon në mënyrë të qartë përdorimin e SPI, prandaj, në rastin tonë, vlera e tij duhet të jetë lejuese. Biti RSTDISBL është në gjendje të kthejë një nga kunjat e mikrocirkut (të paracaktuar) në një hyrje sinjali "rivendosje", ose jo (në varësi të vlerës së shkruar në këtë bit). Në rastin tonë, hyrja "rivendosje" është e nevojshme (nëse mungon, nuk do të funksionojë për të kaluar MC në modalitetin e programimit përmes SPI). Ekzistojnë gjithashtu pjesë të grupit CKSEL që specifikojnë burimin e sinjalit të orës. Ato nuk ndërhyjnë në përdorimin e SPI-së, por gjithashtu duhet të kihen parasysh, sepse në mungesë të pulseve të orës, ose kur frekuenca e tyre është më e ulët se ajo e lejueshme për një shpejtësi të caktuar SPI, nuk do të ketë asgjë të mirë. qoftë. Zakonisht MCU-të e reja me një oshilator të brendshëm RC kanë bitët CKSEL të vendosur për ta përdorur atë. Ne jemi mjaft të kënaqur me këtë - frekuentimi ofrohet pa asnjë përpjekje shtesë nga ana jonë. Ju nuk keni nevojë të lidhni një rezonator kuarci ose të lidhni një oshilator të jashtëm. Nëse bitet e specifikuara përmbajnë një cilësim tjetër, do të duhet të kujdeseni për kohën në përputhje me cilësimin. Në këtë rast, mund të jetë e nevojshme të lidhni një rezonator kuarci ose një gjenerator të jashtëm të orës me MC. Por brenda kornizës së këtij artikulli, ne nuk do të shqyrtojmë se si bëhet kjo. Shembujt e lidhjes së MK për programim, të përfshira në këtë artikull, janë krijuar për rastin më të thjeshtë.

Oriz. 1. Shkëmbimi i të dhënave nëpërmjet SPI në modalitetin e programimit

Tani le të kthehemi te Figura 1, marrë nga dokumentacioni ATmega128A MK. Ai tregon procesin e transmetimit të një bajt në MC dhe njëkohësisht marrjen e një bajt nga MC. Të dy këto procese, siç mund ta shohim, përdorin të njëjtat impulse të orës që vijnë nga programuesi te mikrokontrolluesi në hyrjen e tij SCK - një nga kunjat e mikroqarkut për të cilin një rol i tillë është caktuar në modalitetin e programimit SPI. Dy linja të tjera sinjali ofrojnë marrjen dhe transmetimin e të dhënave, një bit për orë. Nëpërmjet hyrjes MOSI, të dhënat shkojnë në mikrokontrollues dhe të dhënat e lexuara merren nga dalja MISO. Vini re dy linjat me pika nga SCK në MISO dhe MOSI. Ato tregojnë se në cilin moment mikrokontrolluesi "gëlltit" grupin e bitit të të dhënave në hyrjen MOSI dhe në cilin moment ai vendos bitin e tij të të dhënave në daljen MISO. Gjithçka është mjaft e thjeshtë. Por për të hyrë në MK në modalitetin e programimit, ne kemi ende nevojë për një sinjal RESET. Le të mos harrojmë për telin e përbashkët GND dhe furnizimin me energji VCC. Në total, rezulton se vetëm 6 tela duhet të lidhen me mikrokontrolluesin për ta ndezur atë përmes SPI. Më poshtë do ta analizojmë këtë në mënyrë më të detajuar, por tani për tani do të shtojmë se shkëmbimi i të dhënave me MC në modalitetin e programimit SPI kryhet në pako prej 4 bytesh. Bajti i parë i secilës paketë në thelb i dedikohet plotësisht kodimit të komandës. Bajt i dytë, në varësi të të parës, mund të jetë vazhdim i kodit komandues, ose pjesë e adresës, ose mund të ketë një vlerë arbitrare. Bajt i tretë përdoret kryesisht për transferimin e adresave, por në shumë komanda mund të ketë një vlerë arbitrare. Bajt i katërt zakonisht transferon të dhëna, ose ka një vlerë arbitrare. Njëkohësisht me transmetimin e bajtit të katërt, disa komanda marrin të dhëna nga MC. Detajet për secilën komandë mund të gjenden në dokumentacionin e kontrolluesit në një tabelë të titulluar "Set i instruksioneve të programimit serial SPI". Për momentin, vërejmë vetëm se i gjithë shkëmbimi me kontrolluesin është ndërtuar nga një sekuencë e paketave 32-bit, secila prej të cilave transferon jo më shumë se një bajt informacioni të dobishëm. Nuk është shumë optimale, por funksionon mjaft mirë në përgjithësi.

3. Lidhja MK për programim

Për të siguruar që të gjitha sinjalet e nevojshme për organizimin e ndërfaqes SPI të futen në hyrjet e mikrokontrolluesit dhe që të dhënat të lexohen nga dalja e tij MISO, nuk është e nevojshme të krijohet një programues. Kjo është e lehtë për t'u bërë me konvertuesin më të zakonshëm USB-RS232TTL.

Në internet, shpesh mund të gjeni informacione se konvertuesit e tillë janë me defekt, se asgjë serioze nuk mund të bëhet me ta. Por për shumicën e modeleve të konvertuesit, ky mendim është i gabuar. Po, ka konvertues në treg që nuk i kanë të gjitha hyrjet dhe daljet në dispozicion në krahasim me portin standard COM (për shembull, vetëm TXD dhe RXD), të cilët kanë një dizajn jo të ndashëm (mikroqarku është i mbushur me plastikë - është e pamundur të arrish terminalet e saj). Por këto nuk ia vlen të blihen. Në disa raste, ju mund të merrni hyrjet dhe daljet që mungojnë të portës duke bashkuar telat direkt në mikroqark. Një shembull i një konverteri të tillë "të përmirësuar" është paraqitur në Figurën 2 (mikroqarku PL-2303 - më shumë rreth qëllimit të kunjave të tij në artikullin ""). Ky është një nga modelet më të lira, por ka avantazhet e veta kur përdoret në dizajne shtëpiake. Kordonët e përshtatësit me funksione të plota me një lidhës standard me nëntë kunja në fund, si porta COM, janë gjithashtu të përhapura. Ato ndryshojnë nga një port i rregullt COM vetëm në nivelet TTL dhe papajtueshmërinë me softuerin e vjetëruar dhe disa pajisje të vjetra. Mund të vërehet gjithashtu se litarët në mikroqarkun CH34x në teste të ndryshme ekstreme tregojnë veten të jenë shumë më të besueshëm dhe të qëndrueshëm në krahasim me konvertuesit në PL-2303. Megjithatë, në përdorim normal, ndryshimi nuk është i dukshëm.

Kur zgjidhni një konvertues USB-RS232TTL, duhet t'i kushtoni vëmendje gjithashtu përputhshmërisë së drejtuesit të tij me versionin e sistemit operativ të përdorur.

Le të hedhim një vështrim më të afërt në parimin e lidhjes së një mikrokontrollues dhe një konverteri USB-RS232TTL duke përdorur shembullin e katër modeleve të ndryshme MK: ATtiny13, ATtiny44, ATmega8 dhe ATmega128. Figura 3 tregon një diagram të përgjithshëm të një lidhjeje të tillë. Mund t'ju habisë që sinjalet RS232 (RTS, TXD, DTR dhe CTS) po keqpërdoren. Por nuk duhet të shqetësoheni për këtë: programi "Perpetuum M" është në gjendje të punojë drejtpërdrejt me ta - të vendosë vlerat në dalje dhe të lexojë gjendjet e hyrjes. Në çdo rast, konvertuesit e përhapur USB-RS232TTL në mikroqarqet CH34x dhe PL-2303 ofrojnë një mundësi të tillë - kjo është verifikuar. Nuk duhet të ketë probleme as me konvertuesit e tjerë të njohur, pasi funksionet standarde të Windows përdoren për të hyrë në port.

Rezistorët e treguar në diagramin e përgjithshëm, në parim, nuk mund të instalohen, por është akoma më mirë të instalohen. Cili është qëllimi i tyre? Duke përdorur hyrjet dhe daljet ovsky "TTL" të konvertuesit dhe furnizimin me energji pesë volt të mikrokontrolluesit, ne kështu shpëtojmë nga nevoja për të përputhur nivelet logjike - gjithçka tashmë është mjaft e saktë. Kjo do të thotë që lidhjet mund të jenë të drejtpërdrejta. Por gjatë eksperimente ndodh cdo gje. Psh sipas ligjit te poshterise nje kaçavide mund te bjere pikerisht ne vendin ku nuk mund te binte ne asnje menyre dhe te mbylle dicka qe ne asnje rast nuk duhet mbyllur. Ne rolin e nje "kaçavide" ", sigurisht, çdo gjë mund të jetë. Rezistentët në këtë rast ndonjëherë zvogëlojnë pasojat. një nga qëllimet e tyre është të eliminojnë një konflikt të mundshëm të daljeve. Fakti është se në fund të programimit mikrokontrolluesi kalon në funksionim normal dhe mund të ndodh që dalja e saj e lidhur me daljen e konvertuesit (RTS, TXD ose DTR) të bëhet gjithashtu një dalje, sipas programit të sapo regjistruar në MK. Në këtë rast, do të jetë shumë keq nëse dy dalje të lidhura drejtpërdrejt do të "luftojnë". " - provoni të instaloni nivele të ndryshme logjike. Në një “luftë” të tillë dikush mund të “humbet”, por ne nuk kemi nevojë për këtë.

Vlerat e tre rezistorëve janë zgjedhur në 4.3KΩ. Kjo ka të bëjë me lidhjet midis daljes së konvertuesit dhe hyrjes së mikrokontrolluesit. Saktësia e rezistorëve nuk ka rëndësi: ju mund të zvogëloni rezistencën e tyre në 1 KΩ ose të rriteni në 10 KΩ (por në rastin e dytë, rreziku i ndërhyrjes rritet kur përdorni tela të gjatë në rrugën për në MC). Sa i përket lidhjes midis hyrjes së konvertuesit (CTS) dhe daljes së mikrokontrolluesit (MISO), këtu përdoret një rezistencë 100 Ohm. Kjo është për shkak të veçorive të hyrjes së konvertuesit të përdorur. Gjatë provave, u përdor një konvertues në mikroqarkun PL-2303, hyrjet e të cilit, me sa duket, janë tërhequr deri në plusin e furnizimit me energji elektrike me një rezistencë relativisht të ulët (në rendin e disa qindra Ohms). Për të "ndërprerë tërheqjen" më duhej të instaloja një rezistencë me një rezistencë kaq të vogël. Sidoqoftë, nuk mund ta vendosni fare. Në konvertues, ky është gjithmonë hyrja. Nuk mund të bëhet rrugëdalje, që do të thotë se nuk do të ketë konflikt rrugëdaljesh në asnjë zhvillim ngjarjesh.

Nëse mikroqarku ka një kunj të veçantë AVCC për të fuqizuar konvertuesin analog në dixhital (për shembull, ATmega8 ose ATmega128), ai duhet të lidhet me pinin e përbashkët VCC të fuqisë. Disa IC kanë më shumë se një kunj të rrymës VCC ose më shumë se një GND. Për shembull, ATmega128 ka 3 kunja GND dhe 2 kunja VCC. Në një dizajn të përhershëm, është më mirë të lidhni të njëjtat kunja me njëri-tjetrin. Në rastin tonë, në kohën e programimit, mund të përdorni një pin VCC dhe një pin GND.

Dhe kështu duket lidhja ATtiny13. Figura tregon caktimin e pinit të përdorur për programimin SPI. Aty pranë në foto - si duket lidhja e përkohshme në realitet.


Dikush mund të thotë se kjo nuk është serioze - lidhjet në tela. Por unë dhe ti jemi njerëz të arsyeshëm. Qëllimi ynë është të programojmë mikrokontrolluesin duke përdorur një minimum kohe dhe burime të tjera, dhe jo të tregohemi para dikujt. Në të njëjtën kohë, cilësia nuk vuan. Në këtë rast, metoda "on-line" është mjaft efektive dhe e justifikuar. Firmware-i i kontrolluesit është një procedurë një herë, kështu që nuk ka kuptim ta varni me "diamant i rremë". Nëse supozohet të ndryshojë firmware në të ardhmen, pa hequr kontrolluesin nga qarku (në produktin e përfunduar), atëherë kjo merret parasysh gjatë instalimit gjatë prodhimit të pajisjes. Zakonisht për këtë qëllim instalohet një lidhës (RESET, SCK, MOSI, MISO, GND) dhe MK mund të ndizet edhe pasi të jetë instaluar në tabelë. Por këto janë tashmë kënaqësi krijuese. Ne po shqyrtojmë rastin më të thjeshtë.

Tani le të kalojmë te ATtiny44 MK. Gjithçka është pothuajse e njëjtë këtu. Sipas fotos dhe fotos, edhe një fillestar mund ta kuptojë lehtësisht lidhjen. Ashtu si ATtiny44, ju mund të lidhni MCU-të ATtiny24 dhe ATtiny84 - caktimi i pinit të kësaj triniteti është i njëjtë.


Një shembull tjetër i lidhjes së përkohshme të një kontrolluesi për ta programuar është ATmega8. Këtu ka më shumë përfundime, por parimi është i njëjtë - disa tela, dhe tani kontrolluesi është gati të "mbushë" informacionin në të. Teli ekstra i zi në foto, që vjen nga pin 13, nuk merr pjesë në programim. Është krijuar për të hequr sinjalin e zërit prej tij pasi MK të dalë nga modaliteti i programimit. Kjo për faktin se gjatë korrigjimit të skenarit për "Perpetuum M" programi i kutisë muzikore u ngarkua në MK.


Shpesh, i njëjti kontrollues është i disponueshëm në paketa të ndryshme. Në këtë rast, caktimi i kunjit për secilën strehim shpërndahet në mënyrën e vet. Nëse trupi i kontrolluesit tuaj nuk duket si ai i paraqitur në figurë, kontrolloni qëllimin e përfundimeve për dokumentacionin teknik, i cili mund të shkarkohet nga faqja e internetit e zhvilluesit MK.

Për plotësinë, le të shohim lidhjen e mikrocirkut MK me një numër të madh "këmbësh". Qëllimi i telit ekstra të zi në foto, që vjen nga pin 15, është saktësisht i njëjtë si në rastin e ATmega8.


Ju ndoshta e keni parë tashmë se gjithçka është mjaft e thjeshtë. Kushdo që di të numërojë përfundimet e mikroqarqeve (nga shenja në një rreth në drejtim të kundërt të akrepave të orës) do ta kuptojë atë. Dhe mos harroni të jeni të rregullt. Mikroqarqet i duan të rregullta dhe nuk falin qëndrim të pakujdesshëm ndaj tyre.

Përpara se të vazhdoni te pjesa e softuerit, sigurohuni që drejtuesi i konvertuesit USB-RS232TTL të jetë instaluar saktë (kontrolloni Menaxherin e Pajisjes së Windows). Mbani mend ose shkruani numrin virtual të portës COM që shfaqet kur lidhet konverteri. Ky numër do të duhet të futet në tekstin e skenarit, për të cilin mund të lexoni më poshtë.

4. Skript - programues për "Perpetuum M"

Me pjesën harduerike të "programuesit" të renditur. Kjo tashmë është gjysma e betejës. Tani mbetet të merremi me pjesën e softuerit. Roli i tij do të kryhet nga programi "Perpetuum M" nën kontrollin e një skripti, në të cilin zbatohen të gjitha funksionet e nevojshme për ndërveprim me mikrokontrolluesin.

Arkivi me skriptin duhet të zbërthehet në të njëjtën dosje ku ndodhet programi perpetuum.exe. Në këtë rast, kur të hapet skedari perpetuum.exe, në ekran do të shfaqet një menu me një listë të skripteve të instaluara, ndër të cilat do të ketë një rresht "MK AVR Programmer" (mund të jetë i vetmi). Kjo është linja që na nevojitet.

Skripti ndodhet në dosjen PMS në skedarin "MK AVR.pms Programmer". Ky skedar mund të shikohet, studiohet dhe modifikohet, nëse është e nevojshme, në një redaktues teksti të rregullt si Windows Notepad. Përpara se të përdorni skriptin, me shumë mundësi do t'ju duhet të bëni ndryshime në tekstin që lidhet me cilësimin e portit. Për ta bërë këtë, specifikoni emrin e portit të përdorur në Menaxherin e Pajisjes Windows dhe, nëse është e nevojshme, bëni ndryshimin e duhur në rreshtin "PortName =" COM4 ";" - në vend të numrit 4, mund të përdoret një numër tjetër. Gjithashtu, kur përdorni një model tjetër të konvertuesit USB-RS232TTL, mund të jetë e nevojshme të ndryshoni cilësimet për përmbysjen e sinjalit (linjat e skriptit që fillojnë me fjalën "High"). Ju mund të kontrolloni përmbysjen e sinjaleve nga konverteri USB-RS232TTL duke përdorur një nga shembujt që përmbahen në udhëzimet për programin "Perpetuum M" (seksioni i funksioneve për të punuar me portin).

Nëndosja MK_AVR përmban skedarë me përshkrime të kontrolluesve të mbështetur. Nëse kontrolluesi i kërkuar nuk është në mesin e tyre, mund ta shtoni vetë atë të kërkuar, duke ndjekur analogjinë. Merrni një nga skedarët si mostër dhe duke përdorur një redaktues teksti, futni të dhënat e nevojshme, duke i marrë ato nga dokumentacioni për mikrokontrolluesin tuaj. Gjëja kryesore është të jeni të kujdesshëm, të futni të dhëna pa gabime, përndryshe MC nuk do të programohet, ose do të programohet gabimisht. Versioni origjinal mbështet 6 mikrokontrollues: ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATmega8 dhe ATmega128. Skripti zbaton njohjen automatike të kontrolluesit të lidhur - nuk keni nevojë ta specifikoni manualisht. Nëse nuk ka asnjë identifikues të lexuar nga MK midis përshkrimeve të disponueshme, shfaqet një mesazh që kontrolluesi nuk mund të njihet.

Arkivi me skenar përmban gjithashtu informacione shtesë. Dosja e skedarëve të kontrolluesit AVR inc përmban një koleksion shumë të dobishëm dhe të gjerë të skedarëve të përshkrimit të kontrolluesit. Këta skedarë përdoren kur shkruani programet tuaja për MK. Katër dosje të tjera "MusicBox _..." përmbajnë skedarë me një program montues dhe firmware gati për ngarkim në MK veçmas për ATtiny13, ATtiny44, ATmega8 dhe ATmega128. Nëse e keni lidhur tashmë një nga këto MK për programim, siç sugjerohet në këtë artikull, atëherë mund ta ndezni menjëherë - do të merrni një kuti muzikore. Më shumë për këtë më poshtë.

Kur zgjidhni rreshtin "MK AVR Programmer" në menynë e skripteve, skripti fillon të ekzekutohet. Në të njëjtën kohë, ai hap një port, dërgon një komandë për të kaluar në modalitetin e programimit në MC, merr konfirmimin nga MC për një tranzicion të suksesshëm, kërkon identifikuesin MC dhe kërkon përshkrimin e kësaj MC me identifikuesin e tij midis skedarë të disponueshëm me përshkrime. Nëse nuk gjen përshkrimin e kërkuar, shfaq mesazhin përkatës. Nëse gjendet përshkrimi, atëherë hapet menyja kryesore e programuesit. Mund të shihni një pamje të ekranit të saj në Figurën 8. Nuk është e vështirë ta kuptoni më tej - menyja është shumë e thjeshtë.

Në versionin e parë të skenarit, disa funksione të një programuesi të plotë nuk zbatohen. Për shembull, nuk ka asnjë mënyrë për të lexuar dhe shkruar në EEPROM. Por nëse hapni skenarin në një redaktues teksti, do të shihni se ai ka një madhësi shumë të vogël, pavarësisht faktit se gjëja kryesore tashmë është zbatuar në të. Kjo sugjeron që shtimi i funksioneve që mungojnë nuk është aq i vështirë - gjuha është shumë fleksibël, ju lejon të zbatoni funksionalitet të pasur në një program të vogël. Por për shumicën e rasteve, edhe funksionet e disponueshme do të mjaftojnë.

Disa kufizime të funksionalitetit përshkruhen drejtpërdrejt në tekstin e skriptit:
// Regjistrimi i zbatuar vetëm nga adresa zero (Regjistrimi i adresës së segmentit të zgjeruar është injoruar, LOAD OFFSET është gjithashtu)
// renditja dhe vazhdimësia e regjistrimeve në skedarin HEX nuk kontrollohet
// shuma e kontrollit nuk është verifikuar
Kjo vlen për të punuar me një skedar HEX nga i cili është marrë kodi i firmuerit për MK. Nëse ky skedar nuk është i keqformuar, verifikimi i shumës së kontrollit nuk do të ndikojë asgjë. Nëse është i shtrembëruar, nuk do të jetë e mundur të zbulohet me anë të skenarit. Pjesa tjetër e kufizimeve në shumicën e rasteve nuk do të dëmtojë, por ju ende duhet t'i mbani parasysh ato.

5. Kuti muzikore - një zanat i thjeshtë për fillestarët

Nëse keni një nga këta mikrokontrollues, ATtiny13, ATtiny44, ATmega8 ose ATmega128, mund ta ktheni lehtësisht në një kuti muzikore ose kartë muzikore. Për ta bërë këtë, mjafton të shkruani firmware-in përkatës në MK - një nga ato katër që ndodhen në dosjet "MusicBox _..." në të njëjtin arkiv me skenarin. Kodet e firmuerit ruhen në skedarë me shtesën ".hex". Përdorimi i ATmega128 për një zanat të tillë është, natyrisht, "i trashë", si ATmega8. Por mund të jetë i dobishëm për testim ose eksperiment, me fjalë të tjera, për qëllime edukative. Përfshihet gjithashtu kodi i montimit. Programet nuk u krijuan nga e para - programi i kutisë muzikore nga libri i AV Belov "Mikrokontrolluesit AVR në praktikën radio amatore" u mor si bazë. Programi origjinal ka pësuar një sërë ndryshimesh të rëndësishme:
1.përshtatur për secilën nga katër MCU-të: ATtiny13, ATtiny44, ATmega8 dhe ATmega128
2. butonat janë eliminuar - asgjë nuk duhet të lidhet me kontrolluesin, përveç furnizimit me energji elektrike dhe emetuesit të zërit (meloditë luhen njëra pas tjetrës në një lak të pafund)
3. Kohëzgjatja e çdo note zvogëlohet me kohëzgjatjen e pauzës midis notave për të eliminuar shkeljen e ritmit muzikor
4.lidhet melodia e tetë, e cila nuk është përdorur në versionin e librit
5. nga subjektivja: disa "përmirësime" për optimizim dhe perceptim më të lehtë të algoritmit.

Në disa melodi mund të dëgjohen falsifikime, madje edhe gabime të rënda, veçanërisht në "Buzëqeshje" - në mes. Kodet e melodisë janë marrë nga libri (ose më mirë, janë shkarkuar nga faqja e internetit e autorit së bashku me skedarin origjinal asm) dhe nuk janë ndryshuar. Me sa duket, ka gabime në kodimin e melodive. Por ky nuk është problem - kushdo që është "miq" me muzikën do ta kuptojë lehtësisht dhe do të korrigjojë gjithçka.

Në ATtiny13, për shkak të mungesës së një numëruesi 16-bitësh, duhej të përdorej një numërues 8-bitësh për të riprodhuar shënime, gjë që çoi në një ulje të lehtë të saktësisë së notave të tingullit. Por kjo nuk vihet re nga veshi.

Rreth bitave të konfigurimit. Vendosja e tyre duhet të korrespondojë me gjendjen e mikrokontrolluesit të ri. Nëse MC juaj është përdorur më parë diku, duhet të kontrolloni gjendjen e pjesëve të konfigurimit të tij dhe, nëse është e nevojshme, t'i sillni ato në përputhje me cilësimet e mikrokontrolluesit të ri. Gjendjen e pjesëve të konfigurimit të mikrokontrolluesit të ri mund ta mësoni nga dokumentacioni për këtë MC (seksioni "Bitet e siguresave"). ATmega128 është një përjashtim. Ky MCU ka një bit M103C që mundëson modalitetin e përputhshmërisë me ATmega103 më të vjetër. Aktivizimi i bitit M103C redukton shumë aftësitë e ATmega128 dhe ky bit është aktiv në MK-në e re. Ju duhet të rivendosni M103C në një gjendje joaktive. Për të manipuluar bitet e konfigurimit, përdorni seksionin e duhur të menysë së skriptit të programuesit.

Nuk ka kuptim të jepet një diagram i një kutie muzikore: ai përmban vetëm një mikrokontrollues, furnizim me energji elektrike dhe një emetues piezoelektrik. Fuqia furnizohet në të njëjtën mënyrë si ne kur programonim MK. Emituesi i zërit është i lidhur midis telit të përbashkët (pin GND i kontrolluesit) dhe njërit prej kunjave të MK, numri i të cilit mund të gjendet në skedarin me kodin e montimit të programit (* .asm). Në fillim të tekstit të programit për çdo MK në komentet ka një rresht: "një sinjal zanor gjenerohet në pin XX". Kur skripti i programuesit përfundon, mikrokontrolluesi del nga modaliteti i programimit dhe kalon në funksionimin normal. Riprodhimi i këngës fillon menjëherë. Ju mund ta kontrolloni këtë duke lidhur një tingull. Lënia e tingullit të lidhur gjatë programimit të kristalit është e mundur vetëm nëse zëri hiqet nga një kunj që nuk përdoret në SPI, përndryshe kapaciteti shtesë në kunj mund të ndërhyjë në programim.

Mikrokontrolluesit janë një lloj i veçantë i mikroqarkut që përdoret për të kontrolluar pajisje të ndryshme elektronike.

Këta janë kompjuterë miniaturë, të gjithë përbërësit e të cilëve (procesori, RAM, ROM) janë të vendosur në një çip. Ata dallohen nga mikroprocesorët nga prania e kohëmatësve, kontrollorëve, krahasuesve dhe pajisjeve të tjera periferike. Aktualisht, mikrokontrolluesit përdoren në prodhimin e:

  • sensorë për makina;
  • lodra;
  • tregues të tensionit, karikues;
  • panele kontrolli;
  • pajisje elektronike në miniaturë.

Menaxhimi kryhet duke përdorur programe speciale.

Rekomandohet të filloni të zotëroni programimin e mikrokontrolluesve për fillestarët duke studiuar arkitekturën dhe varietetet. Industria prodhon llojet e mëposhtme të MK:

  • i integruar;
  • 8-, 16- dhe 32-bit
  • procesorë dixhital të sinjalit.

Prodhuesit e mikrokontrolluesve duhet të balancojnë vazhdimisht madhësinë, fuqinë dhe çmimin e produkteve. Prandaj, modelet 8-bit janë ende në përdorim sot. Ata kanë një performancë mjaft të ulët, por në shumë raste ky fakt është një avantazh, sepse ju lejon të kurseni energji. Procesorët e sinjalit dixhital janë të aftë të përpunojnë rrjedha të mëdha të të dhënave në kohë reale. Sidoqoftë, kostoja e tyre është shumë më e lartë.

Numri i opkodeve të përdorura mund të mos jetë i njëjtë. Prandaj, përdoren sistemet e komandës RISC dhe CISC. E para konsiderohet të jetë e shkurtuar dhe ekzekutohet në një cikël oshilator. Kjo ju lejon të thjeshtoni zbatimin e harduerit të CPU-së, të përmirësoni performancën e mikrocirkut. CISC është një sistem kompleks që mund të rrisë ndjeshëm efikasitetin e një pajisjeje.

Është e pamundur të mësosh programimin e mikrokontrolluesve për fillestarët pa i kuptuar algoritmet. Në CPU-në e mikroqarkut, komandat dërgohen në një mënyrë specifike. Për më tepër, struktura e tyre duhet të perceptohet nga procesori në mënyrë të paqartë. Prandaj, programuesi së pari kompozon një sekuencë të ekzekutimit të komandës. Ju mund ta bëni CPU-në të ndalojë programin menjëherë duke thirrur një ndërprerje. Për këtë përdoren sinjale të jashtme ose pajisje periferike të integruara.

Familjet e mikrokontrolluesve

Mikrokontrolluesit më të zakonshëm të familjeve të mëposhtme:

  • MSP430 (TI);
  • ARM (ARM Limited);
  • MCS 51 (INTEL);
  • STMB (STMikroelektronikë);
  • PIC (Mikroçip);
  • AVR (Atmel);
  • RL78 (Renesas Electronics).

Një nga më të njohurit në industrinë e elektronikës janë produktet me bazë RISC të Atmel. Mikroqarqet e para, të zhvilluara në 1995, i përkasin grupit Classic. Këshillohet të mësoni programimin e mikrokontrolluesve AVR për fillestarët në modele më moderne:

  • Mega është një familje mikroqarqesh të fuqishme me një arkitekturë të avancuar.
  • Tiny janë produkte të lira me tetë kunja.

Duhet mbajtur mend se përputhshmëria e sistemeve të udhëzimit ruhet vetëm kur programi transferohet nga një MC me performancë të ulët në një më të fuqishme.

Produktet e kompanisë Atmel janë të thjeshta dhe të kuptueshme. Sidoqoftë, për të përdorur të gjithë funksionalitetin, do t'ju duhet të zhvilloni softuer. Rekomandohet të filloni programimin e mikrokontrolluesve AVR për fillestarët duke shkarkuar mjedisin e specializuar Atmel Studio. Versioni aktual ofrohet nga faqja zyrtare e prodhuesit pa pagesë. Komponentët shtesë të softuerit nuk kërkohen për të zhvilluar softuer në këtë mjedis.

Kompleksi Atmel Studio përfshin një numër të madh shembujsh të projekteve të përfunduara. Kjo do të ndihmojë një fillestar të zotërojë shpejt veçoritë themelore dhe të fillojë të krijojë programet e veta. Ai gjithashtu përmban module për përpilimin dhe korrigjimin përfundimtar të kodit tuaj. Paralelisht me zotërimin e tij, ju duhet të mësoni gjuhë programimi. Është e pamundur të zhvillohet softuer pa to.

Gjuhët e programimit

Për nga struktura e tyre, gjuhët e programimit për mikrokontrolluesit ndryshojnë pak nga ato të përdorura për kompjuterët personalë. Midis tyre, ka grupe të niveleve të ulëta dhe të larta. Programuesit modernë përdorin kryesisht C / C ++ dhe Assembler. Ka debate të pafundme midis adhuruesve të këtyre gjuhëve se cila është më e mirë.

Assembler i nivelit të ulët ka humbur terren kohët e fundit. Ai përdor udhëzime të drejtpërdrejta të drejtuara drejtpërdrejt në çip. Prandaj, programuesi kërkohet të ketë një njohuri të përsosur të komandave të sistemit të procesorit. Shkrimi i softuerit në Assembler kërkon një kohë të konsiderueshme. Avantazhi kryesor i gjuhës është shpejtësia e lartë e ekzekutimit të programit të përfunduar.

Në fakt, pothuajse çdo gjuhë programimi e mikrokontrolluesit mund të përdoret. Por më e popullarizuara nga të gjitha është C / C ++. Është një gjuhë e nivelit të lartë që ju lejon të punoni me rehati maksimale. Për më tepër, krijuesit e C morën pjesë në zhvillimin e arkitekturës AVR. Prandaj, mikroqarqet e prodhuara nga "Atmel" janë përshtatur posaçërisht për këtë gjuhë.

C / C ++ është një përzierje harmonike e aftësive të nivelit të ulët dhe të lartë. Prandaj, mund të futni futjet në Assembler në kodin tuaj. Produkti i përfunduar i softuerit është i lehtë për t'u lexuar dhe modifikuar. Shpejtësia e zhvillimit është mjaft e lartë. Në këtë rast, nuk kërkohet një studim i plotë i arkitekturës së MK dhe grupit të udhëzimeve të CPU. Përpiluesit C janë të pajisur me biblioteka të mëdha që e bëjnë më të lehtë punën e programuesit.

Duhet të theksohet se zgjedhja e gjuhës optimale të programimit varet edhe nga hardueri. Me një sasi të vogël RAM, është jopraktike të përdoret C e nivelit të lartë. Në këtë rast, Assembler është më i përshtatshëm. Ofron performancë maksimale për shkak të kodit të shkurtër të programit. Nuk ka mjedis programimi universal, por shumica e aplikacioneve falas dhe komerciale mund të përdorin Assembler dhe C / C ++.

Mikrokontrolluesit PIC

Mikrokontrolluesit e parë PIC u shfaqën në gjysmën e dytë të shekullit të kaluar. Çipat e shpejtë 8-bit të Microchip-it ishin menjëherë të njohura. Arkitektura e autobusëve të dyfishtë të Harvardit jep shpejtësi të paparë. Ai u zhvillua në bazë të një grupi regjistrash, i cili karakterizohet nga ndarja e autobusëve.

Kur zgjidhni një gjuhë programimi për mikrokontrolluesit PIC, duhet të kihet parasysh se mikroqarqet e familjes bazohen në dizajnin unik të procesorit RISC. Sistemi i komandës simetrike ju lejon të zgjidhni në mënyrë arbitrare metodën e adresimit, të kryeni operacione në çdo regjistër. Për momentin, kompania "Microchip" prodhon 5 lloje të MK, të cilat janë në përputhje me kodin e programit:

  1. PIC18CXXX (75 udhëzime, steka harduerësh në bord);
  2. PIC17CXXX (58 komanda në format 16-bit);
  3. PIC16CXXX (35 komanda, grup i madh pajisjesh periferike);
  4. PIC16C5X (33 komanda në format 12-bit, paketa me 18-28 kunja);
  5. PIC12CXXX (versionet me 35 dhe 33 komanda, gjenerator i integruar).

Në shumicën e rasteve, PIC MCU kanë memorie të programueshme një herë. Ka modele më të shtrenjta me fshirje Flash ose UV. Një shumëllojshmëri prej 500 artikujsh ju lejon të zgjidhni një produkt për çdo detyrë. Tani prodhuesi po përqendrohet në zhvillimin e versioneve 32-bit me memorie të shtuar.

Gjuhët e programimit të mikrokontrolluesit PIC janë Assembler dhe C. Çdo mjedis zhvillimi i integruar (IDE) është i përshtatshëm për kodim. Është shumë i përshtatshëm për të programuar me ndihmën e tyre. Ata përkthejnë automatikisht tekstin e programit në kodin e makinës. Një karakteristikë e rëndësishme e IDE është aftësia për të simuluar hap pas hapi të softuerit të përfunduar. Ne rekomandojmë përdorimin e mjedisit të zhvillimit MPLAB. Është krijuar nga Microchip.

Përpara se të filloni punën në MPLAB, ju këshillojmë të krijoni një dosje të veçantë çdo herë. Kjo është e nevojshme për të mos u ngatërruar në skedarët e projektit. Ndërfaqja e programit është intuitive dhe nuk duhet të ketë ndonjë vështirësi me të. Për korrigjimin e gabimeve, përdoren korrigjuesit e pronarit Pickit, ICD, REAL ICE, IC PROG. Ata kanë aftësinë për të parë përmbajtjen e kujtesës, për të vendosur pika kontrolli.

Vendosa t'i kushtoj këtë artikull (ose më saktë një seri artikujsh ...) mikrokontrolluesve nga Atmel. Natyrisht, kjo temë është e harruar ... POR! Nga përvoja ime e di që të dish të vërtetën në këtë mes, më falni, BARDAK, është shumë, shumë e vështirë! Prandaj, vendosa të përpiqem të sjell të paktën pak qartësi në kokat e atyre që dëshirojnë ta njohin këtë bishë të tmerrshme të quajtur "Mikrokontrollues".

Pra, qëllimi i këtij artikulli është të përshkruajë dhe, nëse është e mundur, të tregojë të gjithë procesin e krijimit të një pajisjeje të bazuar në një mikrokontrollues nga e para. Kjo është, nga ideja (për shembull, ne vendosëm të mbledhim një dritë ndezëse të Vitit të Ri, të ngjashme me atë të përshkruar nga i respektuari alx32 në artikull ...) përpara se të mishërohet në harduer. Sigurisht, duke anashkaluar të gjitha fazat e ndërmjetme: vendosja e një problemi, zgjedhja e një MC, zgjedhja e një parzmore, formulimi i një algoritmi, shkrimi i një programi, korrigjimi, krijimi i një bordi dhe, më e shumëpritura, nisja !!!

Përditësuar: Skedarët e shtuar. Kështu që, detyrë: duhet të krijojmë një pajisje të aftë për të ndriçuar në një rend të caktuar (le të jetë me radhë), numri N-të i LED-ve (le të jetë 8 copë).
(kjo është për fillim…… ..)


Tani mund të filloni programimin. Ju mund të shkruani në çdo gjë, por unë këshilloj fillestarët që t'i japin përparësi gjuhës C që nga viti programimi është më i lehtë dhe më i qartë. Unë personalisht përdor përpiluesin CodeVision AVR(është në arkivin e skedarëve), listimet e mëtejshme të programeve do të sigurohen për këtë përpilues.

Le të vendosim për algoritmin... Ne duhet të aktivizojmë një nga daljet MK me radhë pas një periudhe të caktuar kohe.

Mund ta aktivizoni/fikni në mënyra të ndryshme:
- caktoni vlera për secilën kunj veç e veç;
- shkruani vlerat e të gjitha rezultateve menjëherë.

Vlerat (sekuenca) mund të merren:
- duke shtypur manualisht të gjitha komandat;
- nga grupi;
- me një metodë matematikore.

Intervali kohor mund të vendoset:
- funksionet e vonesës;
- përmes një kohëmatës.

Le të eksperimentojmë me të gjitha këto metoda. Por së pari ju duhet një bosh ...

Për të krijuar një shabllon programi, ne do të përdorim gjeneratorin e kodit të integruar CVAVR... Për ta bërë këtë, ekzekutoni programin, klikoni Skedar -> E re, në dritaren që hapet, zgjidhni "projekt" dhe klikoni Ne rregull... Për pyetjen "Të përdoret një gjenerator kodi?" ne përgjigjemi "Po".
U shfaq dritarja e gjeneruesit të kodit. Në të zgjedhim llojin e MK dhe frekuencën e orës së tij, lëmë pjesën tjetër ashtu siç është:


Tjetra, shkoni te skeda "Portet" dhe aty brenda "PortB" dhe ekspozoni sa vijon:


Kështu përcaktuam të gjitha kunjat e portit. B pasi daljet dhe zerat nënkuptojnë se kur ndizet energjia, ato do të vendosen në logjikë " 0 ".
Nuk na duhen ende funksionet e tjera.

Ne shtypim "Skedar -> Krijo, Ruaj dhe Dil", zgjidhni ku të ruani skedarët e projektit dhe shikoni një dritare me kodin e krijuar nga gjeneratori.

Tani le të fusim kodin tonë në program.
Opsioni më i thjeshtë i zbatimit (megjithëse nuk është i bukur nga pikëpamja e programimit) - ne shkruajmë vlerat e çdo prodhimi dhe i bëjmë vonesat përmes funksionit. vonesë.

vonesa_ms ( x); - vonesë për x milisekonda

vonoj_ne ( x); - vonesë për x mikrosekonda

PORTB- porti me të cilin punojmë.

PORTB. x - apeloni në përfundim x port B

Rrjedha të tilla i gjejmë në fund të tekstit


Ky është një qark i pafund (d.m.th., ai funksionon për aq kohë sa energjia është e ndezur) e programit tonë. Gjithçka që ndodhet përpara tij janë komanda për paracaktimin e mikrokontrolluesit. Linjat që fillojnë me “//” - komente, ato janë gjithashtu të dobishme për t'u lexuar ndonjëherë.

Fragmenti është i përjashtuar. Revista jonë ekziston me donacione nga lexuesit. Versioni i plotë i këtij artikulli është i disponueshëm vetëm


Ne shtypim butonin Bëni projektin

(në shiritin e veglave).

sharje?
Dhe me të drejtë! Kompiluesi nuk e njeh funksionin vonesa_ms (), kështu që ju duhet ta drejtoni atë te skedari në të cilin përshkruhet ky funksion.
Për ta bërë këtë, në fillim të tekstit të programit, duhet të futni rreshtin #include (këtu pikëpresje nuk nevojitet!)
Diçka si kjo:

Shtypni përsëri butonin magjik.
Projekti i krijuar.
Tani në dosjen ku kemi ruajtur vetë projektin, u shfaq skedari Emri i Projektit.heks- ky është firmware-i i mikrokontrolluesit!

Por prisni, mos nxitoni të kapni hekurin e saldimit ... Ne po mësojmë të programojmë, jo të bashkojmë!

Kjo është arsyeja pse unë propozoj të testojmë programin tonë në modalitetin virtual, domethënë, në një produkt kaq të mrekullueshëm dhe të dashur nga Labcenter Electronics - Proteus VSM Atje mund të simuloni absolutisht çdo skemë (madje ka edhe primitivë Laplace!). Mund ta merrni në arkivin e bashkangjitur, së bashku me skedarët e projektit. Vërtetë, versioni nuk është mjaft i shtrembër, kështu që kursimi nuk funksionon. Unë do t'ju tregoj se çfarë të bëni me këtë në një artikull të veçantë.

Pra, ne vrapojmë ISIS(mjedis zhvillimi për diagramet skematike). Në këtë dritare, shtypni butonin "P".

Ne rresht "Fjalë kyçe" prezantoj "Attiny2313" dhe në të djathtë marrim:


Nuk ka shumë për të zgjedhur, kështu që ne klikojmë dy herë në këtë linjë të vetmuar dhe shohim në të majtë në dritaren kryesore:


Kjo do të thotë se artikulli është shtuar.

Tani futeni në fushë "Fjalë kyçe" fjalët "LED-KUQ" dhe "BRE"... Shtoni rezistencën dhe LED në projekt dhe mbyllni dritaren e zgjedhjes së artikullit.

Përpjekja për të mbledhur një qark(përfundim RISET Sigurohuni që të lidheni me + 5V, përndryshe asgjë nuk do të funksionojë! dhe në jetë është gjithashtu e dëshirueshme!)

Ja një këshillë e shpejtë:

Dhe për të modifikuar vetitë e elementeve, thjesht klikoni dy herë mbi to.

Të mbledhura? Shpresoj të mos kenë lënduar veten, të dashurit dhe objektet përreth.

Na vjen keq për talljen, vetëm nëse e kuptoni vetë - nuk do ta harroni, kështu që, kuptoni, programi është shumë i fuqishëm dhe ia vlen ta zotëroni atë!

Kur qarku është mbledhur, ju mund të ndezni MC-në tonë virtuale. Për ta bërë këtë, klikoni dy herë mbi të dhe shihni një dritare.

Mirëdita, të dashur radioamatorë!
Mirë se vini në faqen ""

Çfarë është një mikrokontrollues dhe për çfarë shërben. Le të kthehemi në përkufizimin e tij:

- një mikroqark i krijuar për të kontrolluar pajisjet elektronike, ose në një mënyrë tjetër - një kompjuter i thjeshtë (mikro-kompjuter) i aftë për të kryer detyra të thjeshta.

Kjo është, në fakt, një mikrokontrollues është një pajisje që na lejon të realizojmë idetë tona (edhe ato të çmendura), por, natyrisht, brenda mundësive të tij. Dhe më e rëndësishmja, mishërimi i një ideje në jetë arrihet jo nga krijimi i strukturave të sofistikuara elektronike, por vetëm, në thelb, nga fuqia e mendimit tonë (a doni të bëheni magjistar?).
Më të njohurit në mesin e amatorëve të radios janë dy lloje të mikrokontrolluesve:
PIC- nga Microchip Technology
AVR- Firmat Atmel

Thjesht dua të bëj një digresion të vogël dhe të sqaroj një nga pozicionet e mia. Nuk do të flas, as tani, as më vonë, për meritat e këtij apo atij lloji mikrokontrolluesish, këtij apo atij softueri dhe në përgjithësi gjithçka që lidhet me mikrokontrolluesit, për të këshilluar diçka, por edhe më shumë - për t'u imponuar lexuesve. . E gjithë kjo është çështje shije, preferenca personale dhe qëllimet përfundimtare në studimin e mikrokontrolluesve. Epo, meqenëse "pafundësia është të mos përqafosh", unë do të bëj të gjithë rrëfimin tim të mëtejshëm në lidhje me mikrokontrolluesit AVR dhe, jo shumë të zakonshëm, por të preferuarin tim, programin "Algorithm Builder". Llojet e ndryshme të mikrokontrolluesve, programeve, natyrisht, kanë dallime, por ato gjithashtu kanë shumë të përbashkëta. Dhe ne do të mësojmë botën e mikrokontrolluesve në mënyrë që më vonë, njohuritë e marra të mund të aplikohen lehtësisht në PIC dhe në çdo softuer. Më lejoni t'ju kujtoj edhe një herë se kjo seri artikujsh është përpjekja ime për të ndihmuar ata që dëgjuan për herë të parë për ekzistencën e mikrokontrolluesve dhe duan të kuptojnë se si të punojnë me ta.

Çfarë ju nevojitet për të mësuar se si të punoni me mikrokontrolluesit? Do të veçoja disa, për mendimin tim, kushtet kryesore:
1. Dëshira dhe këmbëngulja .
Gjithçka është shumë e thjeshtë këtu: ka një dëshirë - gjithçka do të funksionojë. Dhe dëshira me këmbëngulje është, në përgjithësi, një gjë super-duer.
2. Njohuri për pajisjen e mikrokontrolluesit.
Njohuria e thellë nuk është e rëndësishme këtu (dhe mund të mos jetë fare e nevojshme), por është e nevojshme të dini se çfarë është "në bord" mikrokontrolluesi. Vetëm duke ditur se nga përbëhet mikrokontrolluesi, çfarë pajisje përmban, aftësitë e tyre, si funksionojnë - vetëm atëherë do të jemi në gjendje t'i përdorim në maksimum aftësitë e mikrokontrolluesit.
3. Njohuri të gjuhës së programimit dhe komandave të kontrollit të mikrokontrolluesit.
Se si do të funksionojë mikrokontrolluesi, çfarë detyrash i caktoni dhe si do t'i kryejë ato, përcaktohet nga programi i ngulitur në të - programi që krijoni vetë për mikrokontrolluesin. Dhe ne do të ndalemi në këtë pikë në mënyrë më të detajuar për të shqyrtuar pyetjet që mund të shfaqen në të ardhmen.

Programi(përkthyer, kjo fjalë do të thotë - "recetë") - një përshkrim paraprak i ngjarjeve ose veprimeve të ardhshme.

Për shembull, ne duam që mikrokontrolluesi të ndezë një LED. Një detyrë e thjeshtë, por megjithatë, në mënyrë që mikrokontrolluesi të kryejë këtë detyrë, duhet së pari, hap pas hapi, të përshkruajmë të gjitha veprimet e mikrokontrolluesit, të shkruajmë një program që duhet të ekzekutojë për të marrë rezultatin që na nevojitet - një LED që vezullon. . Diçka si kjo:
♦ Ndizni LED:
- konfiguroni daljen me të cilën është lidhur LED për të punuar në daljen e informacionit
- aplikoni një nivel logjik në këtë kunj, i cili do të lejojë që LED të ndizet
♦ Prit pak:
- shkoni në nënprogramin e formimit të pauzës (e cila gjithashtu duhet të "përtypet")
- pas ekzekutimit të nënprogramit të pauzës, kthehuni në programin kryesor
♦ Fik LED:
- aplikoni një nivel logjik në dalje, duke fikur LED
etj.
Me termin Programi një term tjetër është i lidhur pazgjidhshmërisht - Algoritmi(si Ujku dhe Lepuri, Tom dhe Xheri).

Algoritmi- një grup udhëzimesh që përshkruajnë rendin e veprimeve për të arritur rezultatin e dëshiruar.

Nëse në program jemi në mënyrën më të detajuar përshkrimin e veprimeve mikrokontrollues, pastaj në algoritmin ne përcaktojmë radhën e veprimeve mikrokontrollues, në bazë të të cilit më pas do të krijojmë një program. Ngjashëm me shembullin e mësipërm:
♦ Ndiz LED
♦ Prit pak
♦ Fik LED
etj.
Në këtë mënyrë, algoritmi është paraardhësi i programit... Dhe sa më me kujdes dhe menduar të krijohet algoritmi, aq më e lehtë do të jetë krijimi i një programi.

Në total, një program për një mikrokontrollues është një sekuencë veprimesh të një mikrokontrollues në formën e një grupi komandash dhe udhëzimesh që ai duhet të ekzekutojë për të arritur qëllimet tona.

Komandat për mikrokontrolluesin janë në formën e një grupi njësh dhe zero:
00110101 011000100
i ashtuquajturi - kodet e komandës, dhe kodet komanduese janë gjuha që kupton mikrokontrolluesi. Dhe për të përkthyer algoritmin tonë nga gjuha ruse në gjuhën e mikrokontrolluesit - pikërisht në këto grupe zero dhe njësh, ka programe speciale.
Këto programe na lejojnë të përshkruajmë rendin e punës për mikrokontrolluesin në një gjuhë pak a shumë të kuptueshme për ne, dhe më pas ta përkthejmë këtë renditje në një gjuhë të kuptueshme për mikrokontrolluesin, si rezultat i së cilës të ashtuquajturat kodi i makinës- një sekuencë komandash dhe udhëzimesh (ato të njëjta zero dhe njëshe) që i kupton vetëm mikrokontrolluesi. Teksti i programit i shkruar nga programuesi quhet Kodi i burimit... Bëhet përkthimi i programit nga gjuha e programimit (kodi burimor) në gjuhën e mikrokontrolluesit (kodi i makinerisë). përkthyesve... Përkthyesi konverton tekstin e programit në kode makinerie, të cilat më pas shkruhen në memorien e mikrokontrolluesit.
Në programe të tilla, rendi i funksionimit të mikrokontrolluesit përshkruhet në një gjuhë të veçantë - gjuhën e programimit. Gjuha e programimit është e ndryshme nga gjuha jonë njerëzore. Nëse gjuha jonë e komunikimit shërben kryesisht për shkëmbimin e informacionit, atëherë:

Gjuhë programimi Është një mënyrë e transmetimit të komandave, udhëzimeve, një udhëzues i qartë për veprim për mikrokontrolluesin.

Ka shumë gjuhë programimi dhe ato mund të ndahen në dy lloje:
gjuhë programimi të nivelit të ulët
gjuhë programimi të nivelit të lartë
Qfare eshte dallimi. Dhe ato ndryshojnë në afërsinë e tyre me mikrokontrolluesin.
Në agimin e lindjes së teknologjisë së mikroprocesorit, programet u shkruan në kodet e makinës, domethënë, i gjithë algoritmi i funksionimit u shkrua në mënyrë sekuenciale në formën e zeros dhe njësh. Kështu dukej programi:

01000110
10010011
01010010

Vështirë se dikush do të jetë në gjendje të kuptojë një grup të tillë kombinimesh të dy numrave, dhe puna e programuesve të parë ishte shumë e mundimshme. Për ta bërë jetën e tyre më të lehtë, programuesit filluan të krijojnë gjuhët e para të programimit. Pra, sa më afër të jetë një gjuhë programimi me një grup të tillë zero dhe njësh, aq më "nivel i ulët" është dhe sa më larg tyre, aq më "nivel i lartë".
Gjuhët më të zakonshme të programimit për mikrokontrolluesit:
- gjuhë e nivelit të ulët - montues
- gjuhë e nivelit të lartë - C (C)
Le të shohim një shembull të dallimeve të tyre (këta shembuj janë abstraktë).
Le të themi se duhet të shtojmë dy numra: 25 dhe 35.
Në kodet e makinës, kjo komandë mund të duket si kjo:
00000101 1101001
Në gjuhë të nivelit të ulët:
SHTO Rd, Rr
Në gjuhë të nivelit të lartë:
25+35
Dallimi midis gjuhëve të nivelit të ulët dhe të lartë është i dukshëm me sy të lirë, komentet, siç thonë ata, janë të tepërta.
Por le të gërmojmë pak më thellë në këta shembuj. Ne nuk do të analizojmë shembullin e kodit të makinës, pasi është identik me shembullin në Assembler. Në thelbin e tij, udhëzimet e Assembler janë të njëjtat kode (udhëzime) makinerish që thjesht u caktohen shkurtesat alfabetike në mënyrë që të mos humbasin në zero dhe një. Me komandën e assembler-it ADD Rd, Rr, vendosim mikrokontrolluesin të shtojë dy numra që ndodhen (dhe për këtë fillimisht duhet t'i shkruajmë atje) - i pari në Rd, i dyti në Rr dhe rezultatin e mbledhjes e vendosim në Rd. Siç mund ta shihni, ne vendosëm një detyrë shumë specifike për mikrokontrolluesin: ku ta merrni atë, çfarë të bëni me të dhe ku ta vendosni rezultatin. Në këtë rast, ne punojmë drejtpërdrejt me mikrokontrolluesin.
Një komandë në një gjuhë të nivelit të lartë: 25 + 35, një shënim matematikor i njohur për ne, i këndshëm për sytë tanë. Por në këtë rast, ne nuk punojmë drejtpërdrejt me mikrokontrolluesin, thjesht i vendosim detyrën për të shtuar dy numra. Rezultati dhe sekuenca e veprimeve në këtë rast do të jenë të njëjta si gjatë ekzekutimit të një komande asembler: së pari, këta dy numra do të shkruhen diku, pastaj do të shtohen dhe rezultati do të vendoset diku.
Dhe këtu qëndron dallimi kryesor midis gjuhëve të nivelit të lartë dhe të nivelit të ulët. Nëse në Assembler kontrollojmë të gjithë procesin (nëse na pëlqen apo jo): ne e dimë se ku janë shkruar këta dy numra dhe e dimë se ku do të jetë rezultati, atëherë në një gjuhë të nivelit të lartë ne nuk e kontrollojmë procesin. Vetë programi vendos se ku të parashkruhen numrat dhe ku të vendoset rezultati. Në shumicën e rasteve, ne nuk kemi nevojë ta dimë, sepse për ne rezultati kryesor është numri 60 në dalje. Si rezultat, programet në gjuhët e nivelit të lartë janë më të lexueshëm, të këndshëm për syrin dhe me përmasa më të vogla - në fund të fundit, ne nuk duhet të "hyjmë në të gjitha vrimat" dhe të përshkruajmë çdo hap të mikrokontrolluesit, programit. e bën këtë për ne më vonë, kur e përpilon - e përkthen në kode makinerie ... Por ka edhe një minus. Dy algoritme identike të shkruara në Assembler dhe në C, pasi t'i konvertojnë në kode makinerie do të kenë madhësi të ndryshme: një program i shkruar në Assembler do të jetë 20-40% më i shkurtër se një program i shkruar në C - djalli e di vetëm se në cilën rrugë shkon C për të arritur. rezultati që na duhet... Dhe ka raste kur nuk ka besim në një gjuhë të nivelit të lartë dhe futjet e kodit të shkruara në Assembler bëhen në një program C.
Programuesit profesionistë zakonisht dinë disa gjuhë programimi (ose punojnë në një ekip që ka specialistë në gjuhë të ndryshme), duke kombinuar në mënyrë krijuese aftësitë dhe avantazhet e tyre në një program. Epo, ne, amatorët, duhet të dimë të paktën një gjuhë (për të filluar), dhe duhet të fillojmë (dhe unë jam fort i bindur për këtë, dhe askush nuk do të më bindë) me një gjuhë të nivelit të ulët - Assembler.

Epo, unë mendoj, dhe këtu gjithçka është e qartë për ne - ne duhet të mësojmë një gjuhë programimi, në një mënyrë tjetër - asgjë.

Komandat dhe udhëzimet për kontrollin e mikrokontrolluesit.
Mikrokontrolluesit AVR kanë më shumë se 130 komanda të ndryshme që e lejojnë atë të realizojë të gjitha aftësitë e tij. Por unë do të them menjëherë - pak nga amatorët i njohin të gjitha, dhe aq më tepër i përdorin të gjitha. Zakonisht, në praktikën amatore, njohuritë janë të mjaftueshme dhe gjysma e ekipeve, ose edhe më pak. Por ju duhet të studioni komandat. Sa më shumë komanda të dini, aq më të sofistikuara (në kuptimin e mirë të fjalës) dhe më elegante do të jenë programet.

Njësia logjike aritmetike dhe organizimi i memories - memoria e programit, memoria e të dhënave, memoria jo e paqëndrueshme


Artikujt kryesorë të lidhur