Tsiku lina ndinali ndi maganizo openga oti ndibweretse
Ndinayitcha pulojekitiyi kuti Nanonyam (Nanonyam) ndipo ndinabweranso ndi chizindikiro chake (ndinajambula kwa mphindi zisanu).
Kwa iwo omwe amaganiza molingana ndi Arduino, titha kunena kuti Nanonyam ndi chishango cha Arduino chowongolera Windows.
Mwanjira ina, Nanonyam ndi makina enieni omwe amagwiritsa ntchito firmware kwa AVR microcontroller (ATMEGA2560 ndiyomwe ikulimbikitsidwa) ngati bytecode. M'kati mwa makinawo muli choyimira cha AVR, koma m'malo mwa zida zotumphukira, zomwe zili pa ma adilesi a SRAM kuchokera ku 0x0060 mpaka 0x01FF, pali mawonekedwe apadera ogwirira ntchito (kuphatikiza ntchito za Windows API). Ndipo apa ndikofunikira kwambiri kumvetsetsa nthawi yomweyo: kachidindo ka Nanonyam sayenera kukhala ndi mwayi wofikira pamakumbukidwe omwe atchulidwa, kuti musayimbe mwangozi, mwachitsanzo, ntchito yochotsa mafayilo kapena kupanga diski. Makumbukidwe ena onse a SRAM amachokera ku 0x0200 mpaka 0xFFFF (izi ndizoposa mu microcontroller yeniyeni) zimapezeka kwa wogwiritsa ntchito pazifukwa zilizonse. Ndikuwona nthawi yomweyo kuti pali chitetezo chapadera pakuyambitsa mwangozi firmware ya microcontroller yeniyeni (kapena fimuweya kuchokera kumamangidwe ena): musanayambe ntchito "zowopsa", muyenera kuyimba ntchito yapadera yachinyengo. Palinso mbali zina zachitetezo.
Kuti mupange mapulogalamu a Nanonyam, muyenera kugwiritsa ntchito malaibulale apadera omwe amagwiritsa ntchito zonse zomwe zilipo. Tsitsani makina enieni a Nanonyam ndi malaibulale ake
Nanonyam ndi yaulere kugwiritsa ntchito kunyumba ndi malonda. Pulogalamu ya Nanonyam imaperekedwa pa "monga momwe ziliri". Khodi yochokera sikunaperekedwe.
Pulogalamuyi pakadali pano ili mu gawo loyesera. Yakhazikitsidwa pafupifupi 200 magwiridwe antchito omwe amakupatsani mwayi wopanga mapulogalamu osavuta a Windows.
Mwachiwonekere, kupanga chinthu chovuta mu makina oterowo sikungagwire ntchito, chifukwa kukumbukira code ndi 256 kB yokha. Deta ikhoza kusungidwa m'mafayilo osiyana, buffer ya gawo lazithunzi imayendetsedwa kunja. Ntchito zonse ndizosavuta komanso zimasinthidwa kuti zikhale ndi zomangamanga za 8-bit.
Kodi mungatani ku Nanonyam? Ndinakumana ndi mavuto angapo.
Kupanga midadada ya pulogalamu
Nthawi ina ndidafunikira kupanga menyu yovuta yowonetsera madontho 128x64. Sindinkafuna nthawi zonse kuyika firmware mu microcontroller yeniyeni kuti ndiwone momwe ma pixel amawonekera. Ndipo kotero lingaliro la Nanonyam linabadwa. Chithunzi chomwe chili pansipa chikuwonetsa chithunzi kuchokera ku chiwonetsero chenicheni cha OLED cha chimodzi mwazinthu zomwe zili patsamba lomwelo. Tsopano nditha kugwira ntchito popanda chipangizo chenicheni.
Nanonyam (m'lingaliro lake lomaliza) ndi chida chabwino chogwiritsira ntchito midadada yamapulogalamu a microcontrollers, popeza pali ntchito zogwirira ntchito ndi zithunzi (mungathe kuyerekezera zowonetsera ndi zizindikiro), ndi mafayilo (mungathe kupanga zipika, kuwerenga deta yoyesera), ndi kiyibodi (mutha kuwerenga mpaka mabatani 10 nthawi imodzi), yokhala ndi madoko a COM (pali chinthu chosiyana).
Kupanga Mapulogalamu Ofulumira
Mwachitsanzo, muyenera kukonza mwachangu mafayilo amtundu wa 100500. Iliyonse iyenera kutsegulidwa, kusinthidwa pang'ono molingana ndi algorithm yosavuta, yosungidwa ndi kutsekedwa. Ngati ndinu mbuye wa Python, ndiye ndikukuthokozani, muli ndi chilichonse. Koma ngati ndinu arduino owumitsidwa (ndipo pali ambiri a iwo), ndiye Nanonyam kudzakuthandizani kuthetsa vutoli. Ichi ndi cholinga changa chachiwiri ku Nanonyam: kuwonjezera ntchito zambiri zothandiza monga kukonza malemba, kujambula zithunzi kapena kufananiza makiyi mu dongosolo (zonsezi, mwa njira, zilipo kale), komanso ntchito zina zambiri zothetsera ntchito zachizolowezi. .
Kuyesa zida kudzera pa COM port
Nanonyam imatha kukhala ngati terminal yomwe imagwira ntchito molingana ndi algorithm yanu. Mutha kujambula menyu yaying'ono kuti muwongolere chipangizocho ndikuwonetsa zomwe mwalandira kuchokera padoko. Mutha kusunga ndikuwerenga zomwe zili m'mafayilo kuti muwunike. Chida chothandizira pakuwongolera kosavuta ndikuwongolera ma hardware, komanso kupanga mapanelo osavuta owongolera zida. Kwa ophunzira ndi asayansi achinyamata, ntchitoyi ikhoza kukhala yothandiza kwambiri.
Maphunziro a mapulogalamu
Komabe, monga momwe zilili ndi pulojekiti yonse ya Arduino, phindu lalikulu la Nanonyam liri mu kuphweka kwa ntchito, mawonekedwe ndi bootloader. Chifukwa chake, polojekitiyi iyenera kukhala yosangalatsa kwa olemba mapulogalamu a novice komanso omwe ali okhutira ndi mulingo wa arduino. Mwa njira, ine ndekha sindinaphunzire arduino mwatsatanetsatane, chifukwa nthawi zonse ndimagwiritsa ntchito WinAVR kapena AVR Studio, koma ndinayamba ndi assembler. Choncho, chitsanzo pulogalamu pansipa adzakhala pang'ono cholakwika, koma ndithu ntchito.
Hello Habr!
Yakwana nthawi yoti muzolowere zina za Nanonyam ndikulemba pulogalamu yosavuta. Tidzalemba ku Arduino, koma osati mwachizolowezi, koma momwe ndingathere tsopano (ndanena kale kuti sindinadziwe bwino chilengedwechi). Choyamba, pangani chojambula chatsopano ndikusankha bolodi la Mega2560.
Sungani zojambulazo ku fayilo ndikujambulani lotsatira
#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"
Zingakhale zolondola kwambiri kupanga gawo lapadera "Nanonyam for Arduino", lomwe likhoza kukhazikitsidwa mwachindunji kuchokera ku Arduino. Ndikangozindikira, ndizichita, koma pakadali pano ndikungowonetsa kufunikira kogwira ntchito ndi makina enieni. Timalemba khodi ili:
//Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ Π² ΠΎΠΊΠ½Π΅
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);//ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° ΠΈ ΡΠ°Π·Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
}
Lembani ndi pulogalamuyi
Timakanikiza batani la "Check" ndipo sipayenera kukhala zolakwika.
Tsopano muyenera kupeza fayilo ya binary (firmware). Sankhani menyu "Sketch >> Tumizani fayilo ya binary (CTRL+ALT+S)".
Izi zidzakopera mafayilo awiri a HEX ku chikwatu chojambula. Timangotenga fayilo popanda prefix "with_bootloader.mega".
Pali njira zingapo zofotokozera fayilo ya HEX ku makina enieni a Nanonyam, onse akufotokozedwa
Momwemonso, mutha kupanga mapulogalamu m'malo ena, monga AVR Studio kapena WinAVR.
Apa ndipamene timamaliza kudziwana ndi Nanonyam. Mfundo yaikulu iyenera kukhala yomveka bwino.
Zikomo nonse chifukwa cha chidwi chanu komanso mapulogalamu abwino!
Source: www.habr.com