Ühel päeval tuli mul hull idee tuua
Panin projektile nimeks Nanonyam (Nanonyam) ja mõtlesin sellele isegi logo välja (joonistasin 5 minutit).
Neile, kes mõtlevad Arduino mõistes, võime öelda, et Nanonyam on virtuaalne Arduino kilp Windowsi juhtimiseks.
Teisisõnu on Nanonyam virtuaalne masin, mis kasutab baitkoodina AVR-i mikrokontrolleri püsivara (soovitatav on ATMEGA2560). Selle virtuaalmasina sees on AVR-i tuumasimulaator, kuid välisseadmete asemel, mis asuvad SRAM-i aadressidel 0x0060 kuni 0x01FF, on virtuaalsete funktsioonide (sh Windows API funktsioonide) jaoks spetsiaalne liides. Ja siin on väga oluline kohe aru saada: Nanonyami koodil ei tohiks olla juurdepääsu määratud mäluvahemikule, et mitte kogemata kutsuda näiteks failide kustutamise või ketta vormindamise funktsiooni. Ülejäänud SRAM-i mäluvahemik 0x0200 kuni 0xFFFF (seda on rohkem kui päris mikrokontrolleri puhul) on kasutajale igal eesmärgil saadaval. Märgin kohe, et tõelise mikrokontrolleri püsivara (või muust arhitektuurist pärit püsivara) juhusliku käivitamise eest on olemas spetsiaalne kaitse: enne "ohtlike" funktsioonide aktiveerimist peate helistama spetsiaalsele keerulisele virtuaalfunktsioonile. Samuti on mõned muud turvaelemendid.
Nanonyami programmide loomiseks peate kasutama spetsiaalseid teeke, mis rakendavad kõiki praegu saadaolevaid virtuaalseid funktsioone. Laadige alla Nanonyami virtuaalmasin ja selle jaoks teegid
Nanonyam on kodu- ja ärikasutuseks tasuta. Nanonyami programmi pakutakse "nagu on". Lähtekoodi ei pakuta.
Programm on praegu testimisfaasis. Rakendatud umbes 200 virtuaalset funktsiooni, mis võimaldavad luua Windowsi jaoks lihtsaid programme.
Ilmselgelt sellises virtuaalmasinas millegi keerulise loomine ei toimi, kuna koodi mälu on vaid 256 kB. Andmeid saab salvestada eraldi failidesse, graafilise osa puhver on realiseeritud väliselt. Kõik funktsioonid on lihtsustatud ja kohandatud 8-bitise arhitektuuri jaoks.
Mida saate Nanonyamis teha? Mul tekkis paar probleemi.
Programmiplokkide arendamine
Mul oli kunagi vaja kujundada 128x64-punktilise graafilise ekraani jaoks keerukas menüü. Ma tõesti ei tahtnud püsivara pidevalt päris mikrokontrollerisse laadida, et näha, kuidas pikslid välja näevad. Ja nii sündiski Nanonyami idee. Alloleval joonisel on kujutatud pilti päris OLED-ekraanilt ühest sama menüü üksusest. Nüüd saan sellega hakkama ilma päris seadmeta.
Nanonyam (oma lõplikus idees) on hea tööriist mikrokontrollerite programmiplokkide väljatöötamiseks, kuna seal on funktsioonid graafikaga töötamiseks (saate simuleerida kuvasid ja indikaatoreid), failidega (saate teha logisid, lugeda testandmeid), koos klaviatuur (saate lugeda kuni 10 nuppu korraga), COM-portidega (siin on eraldi üksus).
Kiirprogrammide loomine
Näiteks peate kiiresti töötlema 100500 XNUMX tekstifaili. Igaüks neist tuleb avada, mõne lihtsa algoritmi järgi veidi muuta, salvestada ja sulgeda. Kui olete Pythoni meister, siis õnnitlen teid, teil on kõik olemas. Aga kui olete paadunud arduino (ja neid on palju), aitab Nanonyam teid selle probleemi lahendamisel. See on minu teine eesmärk Nanonyamis: lisada süsteemis palju kasulikke funktsioone, nagu tekstitöötlus, ekraanipiltide tegemine või klahvivajutuste simuleerimine (muide, kõik need on juba olemas), samuti palju muid funktsioone rutiinsete ülesannete lahendamiseks. .
Riistvara testimine COM-pordi kaudu
Nanonyam võib toimida terminalina, mis töötab teie algoritmi järgi. Seadme juhtimiseks ja pordist saadud andmete kuvamiseks saate joonistada väikese menüü. Saate salvestada ja lugeda failidest andmeid analüüsimiseks. Mugav tööriist riistvara lihtsaks silumiseks ja kalibreerimiseks, samuti lihtsate virtuaalsete instrumentide juhtpaneelide loomiseks. Üliõpilastele ja noortele teadlastele võib see projekt olla väga kasulik.
Programmeerimise koolitus
Kuid nagu kogu Arduino projekti puhul, seisneb Nanonyami peamine kasulikkus funktsioonide, liidese ja alglaaduri lihtsustamises. Seetõttu peaks see projekt huvi pakkuma algajatele programmeerijatele ja neile, kes on arduino tasemega rahul. Muide, ma ise pole siiani arduinot täpsemalt uurinud, sest kasutasin alati WinAVR-i või AVR Studiot, aga alustasin assemblerist. Seetõttu on allolev näidisprogramm veidi vale, kuid üsna töötav.
Tere Habr!
On aeg tutvuda mõne Nanonyami funktsiooniga ja kirjutada lihtne programm. Kirjutame Arduinos, aga mitte tavapärasel viisil, vaid nii, nagu ma praegu oskan (ma juba ütlesin, et ma pole seda keskkonda veel väga hästi välja mõelnud). Esmalt looge uus visand ja valige Mega2560 tahvel.
Salvestage visand faili ja kopeerige järgmisena
#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"
Veelgi õigem oleks teha spetsiaalne moodul “Nanonyam for Arduino”, mille saab paigaldada otse Arduinost. Niipea kui ma selle välja mõtlen, teen seda, aga praegu näitan vaid virtuaalmasinaga töötamise olemust. Kirjutame järgmise koodi:
//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}
Visanda selle programmiga
Vajutame nuppu "Kontrolli" ja vigu ei tohiks olla.
Nüüd peate hankima binaarfaili (püsivara). Valige menüü "Sketch>> Ekspordi binaarfail (CTRL+ALT+S)"
See kopeerib kaks HEX-faili visandikausta. Võtame ainult faili ilma eesliiteta "with_bootloader.mega".
Nanonyami virtuaalmasinale HEX-faili määramiseks on mitu võimalust, neid kõiki kirjeldatakse
Samamoodi saate luua programme ka teistes keskkondades, näiteks AVR Studio või WinAVR.
Siin lõpetame Nanonyamiga tutvumise. Põhiidee peaks olema selge.
Tänan teid kõiki tähelepanu ja hea programmeerimise eest!
Allikas: www.habr.com