
Reiz man prÄtÄ ienÄca dÄ«vaina doma apvienot . Es pavadÄ«ju daudz laika un to izdarÄ«ju. IzdevÄs iespaidÄ«gi un bezjÄdzÄ«gi, bet man patika. Pirms pusgada man ienÄca cita dÄ«vaina doma. Å oreiz pavisam neiespaidÄ«ga, bet daudz noderÄ«gÄka. Es arÄ« pavadÄ«ju daudz laika, strÄdÄjot pie tÄs. Å ajÄ rakstÄ es piedÄvÄju savas otrÄs dÄ«vainÄs idejas beta versiju.
Es nosaucu projektu par Nanonyam (Nanonjams) un pat izdomÄju tam logo (zÄ«mÄju veselas 5 minÅ«tes).

Tiem, kas domÄ Arduino terminos, var teikt, ka Nanonyam ir virtuÄls Arduino shields Windows kontrolei.
Citiem vÄrdiem sakot, Nanonyam ir virtuÄla maŔīna, kurÄ kÄ baitu kods tiek izmantota AVR mikroshÄmas programmatÅ«ra (ieteicams ATMEGA2560). Å Ä«s virtuÄlÄs maŔīnas iekÅ”ienÄ atrodas AVR kodola simulators, bet vietÄ perifÄrijas ierÄ«cÄm, kas atrodas adresÄs SRAM no 0x0060 lÄ«dz 0x01FF, ir Ä«paÅ”s interfeiss virtuÄlÄm funkcijÄm (tajÄ skaitÄ Windows API funkcijÄm). Ä»oti svarÄ«gi ir uzreiz saprast: kodam Nanonyam nedrÄ«kst bÅ«t nekÄdu piekļuvi norÄdÄ«tajam atmiÅas diapazonam, lai nejauÅ”i nesauktu, piemÄram, failu dzÄÅ”anas funkciju vai diska formatÄÅ”anu. PÄrÄjais SRAM atmiÅas diapazons no 0x0200 lÄ«dz 0xFFFF (tas ir vairÄk nekÄ reÄlÄ mikroshÄmÄ) ir pieejams lietotÄjam jebkÄdiem mÄrÄ·iem. Uzreiz jÄatzÄ«mÄ, ka ir speciÄla aizsardzÄ«ba pret nejauÅ”u reÄlÄs mikroshÄmas programmatÅ«ras (vai citas arhitektÅ«ras programmatÅ«ras) aktivizÄÅ”anu: pirms
lai izveidotu programmas Nanonyam, jÄizmanto speciÄlas bibliotÄkas, kurÄs ir Ä«stenotas visas paÅ”laik pieejamÄs virtuÄlÄs funkcijas. LejupielÄdÄjiet virtuÄlo maŔīnu Nanonyam un bibliotÄkas tai . Bet . JÄ, un manas vietnes ir ļoti primitÄ«vas un nav pielÄgotas mobilajiem ierÄ«cÄm.
ProgrammÄ Nanonyam ir bezmaksas izmantoÅ”anai mÄjas un komerciÄlÄm vajadzÄ«bÄm. Nanonyam programma tiek piedÄvÄta uz "kÄ ir" principa. Avota kods netiek nodroÅ”inÄts.
Å obrÄ«d programma ir testÄÅ”anas stadijÄ. Ir ieviestas aptuveni 200 virtuÄlo funkciju, kas ļauj izveidot vienkÄrÅ”as programmas Windows operÄtÄjsistÄmai.
AcÄ«mredzot, veidot kaut ko sarežģītu Å”ÄdÄ virtuÄlajÄ maŔīnÄ nevarÄs, jo kodam ir pieejami tikai 256 kB atmiÅas. Datus var glabÄt atseviŔķÄs failos, grafiskÄ daļa tiek Ä«stenota ÄrÄji. Visas funkcijas ir vienkÄrÅ”otas un pielÄgotas 8 bitu arhitektÅ«rai.
Ko tad var izdarÄ«t Nanonyam? Es esmu izdomÄjis dažas uzdevumu iespÄjas.
Programmu bloku izstrÄde
Reiz man bija jÄraksta sarežģīts izvÄlÅu sistÄma 128Ć64 punktu grafiskajam displejam. Man ļoti negribÄjÄs katru reizi ielÄdÄt programmaparÄdi reÄlajÄ mikroprocesorÄ, lai redzÄtu, kÄ izskatÄs pikseļi. TÄ radÄs ideja par Nanonyam. ZemÄk redzams attÄls no reÄlÄ OLED displeja, kurÄ attÄlots viens no izvÄlÅu punktiem. Tagad es varu to izstrÄdÄt bez reÄlas ierÄ«ces.

Nanonyam (savas galÄ«gÄs ieceres ietvaros) ir lielisks rÄ«ks programmu bloku izstrÄdei mikroprocesoriem, jo tajÄ ir grafikas funkcijas (var simulÄt displejus un indikatorus), failu apstrÄde (var izveidot žurnÄlus, nolasÄ«t testÄÅ”anas datus), klaviatÅ«ras funkcijas (var nolasÄ«t lÄ«dz 10 pogÄm vienlaikus), kÄ arÄ« COM portu (par Å”o ir atseviŔķs punkts).
Ätru programmu izveide
PiemÄram, jums ir Ätri jÄpÄrstrÄdÄ 100500 teksta faili. Katru no tiem jÄatver, nedaudz jÄmaina atbilstoÅ”i kÄdam vienkÄrÅ”am algoritmam, jÄsaglabÄ un jÄaizver. Ja esat Python meistars, tad es jÅ«s apsveicu, jums viss ir. Bet, ja esat aizrautÄ«gs Arduino lietotÄjs (un tÄdu ir daudz), tad Nanonyam jums palÄ«dzÄs atrisinÄt Å”o uzdevumu. TieÅ”i tas ir mans otrais mÄrÄ·is Nanonyam: pievienot daudz noderÄ«gu funkciju, piemÄram, teksta apstrÄdi, ekrÄnuzÅÄmumu izveidi vai taustiÅu nospieÅ”anas simulÄciju sistÄmÄ (tas viss, starp citu, jau ir pieejams), kÄ arÄ« daudz citu funkciju rutÄ«nas uzdevumu risinÄÅ”anai.
Dzelžu testÄÅ”ana caur COM portu
Nanonyam var darboties kÄ terminÄls, kas darbojas saskaÅÄ ar jÅ«su algoritmu. Var izveidot nelielu izvÄlni ierÄ«ces vadÄ«bai un attÄlot datus, kas saÅemti no porta. Var saglabÄt un nolasÄ«t datus no failiem analÄ«zei. Ärts rÄ«ks vienkÄrÅ”ai aparatÅ«ras atkļūdoÅ”anai un kalibrÄÅ”anai, kÄ arÄ« vienkÄrÅ”u virtuÄlo dzinÄja vadÄ«bas paneļu veidoÅ”anai. Å is projekts var bÅ«t ļoti noderÄ«gs studentiem un jaunajiem zinÄtniekiem.
ProgrammÄÅ”anas mÄcīŔana
TomÄr, kÄ tas ir visÄ Arduino projektÄ, galvenÄ Nanonyam priekÅ”rocÄ«ba ir funkciju, interfeisa un ielÄdÄtÄja vienkÄrŔība. TÄpÄc Å”is projekts noteikti bÅ«s interesants iesÄcÄjiem programmÄtÄjiem un tiem, kas ir apmierinÄti ar Arduino lÄ«meni. Starp citu, pats es vÄl neesmu detalizÄti apguvis Arduino, jo vienmÄr izmantoju WinAVR vai AVR Studio, un sÄku ar assembleri. TÄpÄc zemÄk redzamÄ programmas piemÄrs var bÅ«t nedaudz nepareizs, bet tomÄr pilnÄ«bÄ funkcionÄls.
Sveiki, Habr!
Ir pienÄcis laiks iepazÄ«ties ar dažÄm Nanonyam funkcijÄm un uzrakstÄ«t vienkÄrÅ”u programmu. RakstÄ«sim Arduino, bet nevis tÄ, kÄ to parasti dara, bet tÄ, kÄ es to Å”obrÄ«d zinu (es jau teicu, ka vÄl neesmu ļoti labi iepazinies ar Å”o vidi). PirmkÄrt, izveidojam jaunu skici un izvÄlamies Mega2560 plati.

SaglabÄjam skici failÄ un blakus kopÄjam . Pareizi bÅ«tu iekļaut bibliotÄku virsrakstus, bet es nezinu, kÄ Arduino norÄdÄ«t atseviŔķu failu kompilÄciju, tÄpÄc pagaidÄm vienkÄrÅ”i iekļausim bibliotÄkas tieÅ”i (un visas uzreiz):
#include <stdio.h>
#include "NanonyamnN_System_lib.c"
#include "NanonyamnN_Keyboard_lib.c"
#include "NanonyamnN_File_lib.c"
#include "NanonyamnN_Math_lib.c"
#include "NanonyamnN_Text_lib.c"
#include "NanonyamnN_Graphics_lib.c"
#include "NanonyamnN_RS232_lib.c"VÄl pareizÄk bÅ«tu izveidot Ä«paÅ”u moduli āNanonyam for Arduinoā, ko varÄtu instalÄt tieÅ”i no Arduino. Kad es ar to tiku skaidrÄ«bÄ, es to izdarīŔu, bet pagaidÄm vienkÄrÅ”i parÄdīŔu darbÄ«bas principu ar virtuÄlo maŔīnu. RakstÄm Å”Ädu kodu:
//Š”ŃŠ°Š·Ń ŠæŠ¾ŃŠ»Šµ запŃŃŠŗŠ° ŃŠøŃŃŠµŠ¼ ŃŠµŠŗŃŃ Š² окне
void setup() {
sys_Nanonyam();//ŠŠ¾Š“ŃŠ²ŠµŃжГаем коГ виŃŃŃŠ°Š»Ńной Š¼Š°ŃинŃ
g_SetScreenSize(400,200);//ŠŠ°Š“Š°ŃŠ¼ ŃŠ°Š·Š¼ŠµŃ Š“ŠøŃŠæŠ»ŠµŃ 400Ń
200 ŃŠ¾Ńек
sys_WindowSetText("Example");//ŠŠ°Š³Š¾Š»Š¾Š²Š¾Šŗ окна
g_ConfigExternalFont(0,60,1,0,0,0,"Arial");//ŠŠ°Š“Š°ŃŠ¼ ŃŃŠøŃŃ Windows в ŃŃŠµŠ¹ŠŗŠµ ŃŃŠøŃŃŠ¾Š² 0
g_SetExternalFont(0);//ŠŃŠ±ŠøŃŠ°ŠµŠ¼ ŃŃŠµŠ¹ŠŗŃ ŃŃŠøŃŃŠ¾Š² 0 Š“Š»Ń ŃŠøŃŠ¾Š²Š°Š½ŠøŃ ŃŠµŠŗŃŃŠ°
g_SetBackRGB(0,0,255);//Š¦Š²ŠµŃ ŃŠ¾Š½Š° ŃŠøŠ½ŠøŠ¹
g_SetTextRGB(255,255,0);//Š¦Š²ŠµŃ ŃŠµŠŗŃŃŠ° Š¶ŃŠ»ŃŃŠ¹
g_ClearAll();//ŠŃŠøŃŠ°ŠµŠ¼ ŃŠŗŃан (заливка ŃŠ²ŠµŃом ŃŠ¾Š½Š°)
g_DrawTextCenterX(0,400,70,"Hello, Habr!");//Š ŠøŃŃŠµŠ¼ наГпиŃŃ
g_Update();//ŠŃвоГим Š³ŃŠ°ŃŠøŃеŃкий бŃŃŠµŃ на ŃŠŗŃан
}
//ŠŃоŃŃŠ¾ Š¶Š“ŃŠ¼ закŃŃŃŠøŃ ŠæŃŠ¾Š³ŃаммŃ
void loop() {
sys_Delay(100);//ŠŠ°Š“ŠµŃŠ¶ŠŗŠ° Šø ŃŠ°Š·Š³ŃŃŠ·ŠŗŠ° ŠæŃŠ¾ŃеŃŃŠ¾Ńа
}Å Ä«s programmas skici . DetalizÄtu funkciju aprakstu . Ceru, ka Å”ajÄ kodÄ ir pietiekami daudz komentÄru, lai saprastu bÅ«tÄ«bu. Å eit funkcija sys_Nanonyam() pilda 'parola' lomu virtuÄlajai maŔīnai, kas noÅem ierobežojumus virtuÄlajÄm funkcijÄm. Bez Ŕīs funkcijas programma slÄgsies pÄc 3 sekundÄm.
NoklikŔķiniet uz pogas āPÄrbaudÄ«tā un nedrÄ«kst bÅ«t nekÄdu kļūdu.

Tagad jÄiegÅ«st binÄrais fails (iekÄrta). IzvÄlamies izvÄlni āSkice>>EksportÄt binÄro failu (CTRL+ALT+S)Ā«.

TÄdÄjÄdi skices mapÄ tiks kopÄti divi HEX faili. MÄs Åemam tikai failu bez prefiksa Ā«with_bootloader.megaĀ».
Ir vairÄki veidi, kÄ norÄdÄ«t HEX-failu virtuÄlajai maŔīnai Nanonyam, visi tie ir aprakstÄ«ti . Es piedÄvÄju izveidot blakus failam Nanonyam.exe fails Nanonyam.path, kurÄ jÄnorÄda pilns ceļŔ lÄ«dz mÅ«su HEX-failam. PÄc tam varam palaist Nanonyam.exe. SaÅemam logu ar mÅ«su uzrakstu.

TÄpat var izveidot programmas citÄs vidÄs, piemÄram, AVR Studio vai WinAVR.
Å ajÄ brÄ«dÄ« noslÄgsim iepazīŔanos ar Nanonyam. GalvenÄ ideja tagad bÅ«tu skaidra. . Ja pietiks interesentu, kas izmantos Å”o projektu, es izveidoÅ”u vairÄk piemÄru un turpinÄÅ”u Ā«aizpildÄ«tĀ» virtuÄlo funkciju bibliotÄkas. Tiks pieÅemtas konkrÄtas idejas projekta attÄ«stīŔanai un ziÅojumi par bojÄjumiem, kļūdÄm un nepilnÄ«bÄm. VÄlams sÅ«tÄ«t tÄs pa kontaktinformÄciju, . Diskusijas tiek laipni gaidÄ«tas komentÄros.
Paldies visiem par uzmanÄ«bu un veiksmÄ«gu programmÄÅ”anu!
Avots: habr.com
