CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 1/63
4
MicroMite=MM
:
MM28,MM44,MM+(MM64,MM100) PIC32-n FUTÓ MMBASIC RENDSZEREK
DR. KÓNYA LÁSZLÓ http://www.drkonya.eu
[email protected]
SZERZŐI JOG DEKLARÁLÁSA: A JELEN OKTATÁSI CÉLÚ BEMUTATÓ ANYAG DR KÓNYA LÁSZLÓ SZELLEMI TULAJDONÁT KÉPEZI. EZEN TANANYAG BÁRMILYEN CÉLÚ FELHASZNÁLÁSA CSAK A SZERZŐ BELEEGYEZÉSÉVEL LEHETSÉGES.
2016.11.25
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 2/63
Programfejlesztési módszerek:
4
:
A szövegszerkesztővel megírt programot forrásprogramnak hívjuk. Kétféle megoldás lehetséges, hogy a forráskódot a processzor által végrehajtható tárgykóddá (bináris kóddá) alakítsuk. Ezek: fordítás (kompilálás) vagy az értelmezés (interpretálás). Az interpretációnál az értelmező a forrásprogram minden egyes elemzett sorát néhány gépi nyelvű utasításra lefordítja, amiket azonnal a processzor végrehajt. Természetesen ilyenkor a program futtatását végző interpreternek is folyamatosan működnie kell. A kompilálás a teljes forrásszöveget bináris kóddá alakítja. Ezt már a fordítóprogramtól függetlenül végrehajtathatjuk, és egy fájlban tárolhatjuk. ( ez a végrehajtható fájl ).
Mindegyik technikának vannak előnyei és hátrányai: Az interpretáció azért jó, mert ilyenkor azonnal tesztelhető a forráskód minden módosítása, és az esetleges formai hibák javítása is azonnal elvégezhető. A program futása a hibás sornál megáll.
Kompilálás esetén a lefordított programunk mindig lényegesen gyorsabban fog működni, mint az interpreteres változat, mivel a számítógépnek a végrehajtás előtt nem kell minden egyes utasítást újra bináris kódra lefordítani, de minden program módosítást és javítást egy fordítási fázis követ.
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 3/63
MIKROMITE JELLEMZŐK 1.
4
:
Micromite MKII a Microchip valamelyik PIC32MX170/470 (28,44,64, vagy 100 kivezetésű) mikrovezérlő típusába programozott Microsoft MBASIC kompatibilis interpreter, az MMBasic firmware. A BASIC interpreter a program sorait alkotó utasításait olvasva azokat értelmezi és végrehajtja. Kezeli a lebegőpontos, egész karakteres változókat, tömböket, hosszú változó neveket, miközben a beírt forrásprogram mindig szerkeszthető marad. Beépített BASIC interpreter: Gyors 32 bites CPU 256K flash és 64k RAM memóriájú PIC mikrovezérlőben van elhelyezve egy gyors BASIC interpreter. 60KB, nem felejtő flash memória van fenntartva a programoknak, 52KB RAM áll rendelkezésre a BASIC változók, tömbök, pufferek, stb. tárolására. Ez akár több mint 2500 soros BASIC programok tárolására is alkalmas A BASIC interpreter 32 bites lebegőpontos, 64-bites egész és sztring változókat fogad el. Támogatja a hosszú változónevek és több dimenziós tömb struktúrák használatát. 19/33 input / output láb áll rendelkezésre az MM28/MM44 modulokban. Ezek egymástól függetlenül konfigurálhatók digitális bemenetnek vagy kimenetnek, analóg bemenetnek, valamint frekvencia- vagy időmérési és számítási célokra. Közülük tíz láb analóg feszültség mérésére is használható, hét port láb 5V toleráns.
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 4/63
MIKROMITE JELLEMZŐK 2.
4
:
A tok programozása egy soros, TTL feszültség szintű, alapértelmezés: 38.400 baud sebességű, vonalon történik, amit konzolnak nevezünk. Automatikus programfuttatás: Miután a programot megírtuk, a Micromite képes automatikusan futtatni a programot bekapcsoláskor, felhasználói beavatkozás nélkül. Teljes képernyős szerkesztő használatát is támogatja az interpreter, ami számos fejlett funkcióval rendelkezik, mint például a keresés és a másolás, kivágás és beillesztés vágólap segítségével.
Egyszerű adatátvitel segítségével a BASIC program egy másik számítógépről (Windows, Mac vagy Linux) XMODEM protokoll használatával betölthető vagy kimenthető. Input / Output funkciók MMBasic képes impulzusok hardveres, háttérben történő előállítására a BASIC program futása közben. A belső időzítő áramkör 1 ezred másodperc felbontásban állítható időzítő megszakítási lehetőséget biztosít. Nyolc lábon beállítható digitális állapotváltozásoktól függő megszakítás. Több elterjedt kommunikációs protokollt támogat: I2C, aszinkron soros, RS232, IEEE 485, SPI és az 1 vezetékes átvitelt. Számos érzékelő típussal képes kommunikálni (Hőmérséklet, páratartalom, gyorsulás, stb.).
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 5/63
MIKROMITE JELLEMZŐK 3.
4
:
Beépített perifériakezelők: A Micromite beépített meghajtó programokat (drivereket) tartalmaz, közvetlen parancsokkal kezelhetők az infravörös távirányítók, a DS18B20 hőmérséklet-érzékelők, LCD kijelző modulok, stb. Analóg kimenetként legfeljebb öt PWM vagy szervo használható, hang generálási, mechanikus vezérlési célokra. Az MMBasic támogatja a CPU órajel frekvencia változtatását Fogyasztás: a CPU BASIC programból alvó állapotba tehető, ilyenkor az áramfelvétel mindössze 90uA. Alvó állapotban az összes változó értéke megmarad. Watchdog funkció is rendelkezésre áll, ez ellenőrzi a futó programot, és arra lehet használni, hogy újraindítsa a processzort, ha a program hibás állapotba, vagy végtelenhurokba kerül. Kódvédelem: A futó program védhető egy PIN számkóddal, amely megakadályozza, hogy bárki listázza vagy módosítsa a programot, vagy megváltoztassa bármilyen jellemzőjét. Működéséhez 2.3-3.6 V feszültség szükséges (két ceruzaelem), áramfelvétele 6-31mA között változhat (MM28).
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 6/63
MIKROMITE CSALÁD
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 7/63
NEW!!!>> MZ – MM EXTREME EDITION-2016 NOVEMBER
4
:
The PIC32MZ 198MHz-en működik, a RAM-ja 512Kbájt. Van hardveres lebegőpontos koprocesszora és 12-bites A/D konverterei. MMBasic legalább kétszer olyan fut, mint az MX470-en. A tokban van hardveres véletlenszám generátor. Minden 5.2 Micromite Plus tulajdonságot tartalmazza (pl. SDcard, USB stb.) A használható MZ tokok: PIC32MZ2048EFG064, PIC32MZ2048EFG100, PIC32MZ2048EFH064, PIC32MZ2048EFH100 A tok képes VGA monitort is meghajtani. Órajelgenerátora 2MHz-es kristályt használ. Áramfelvétele: 3.3V / 135mA = kb. 0.5W, perifériák nélkül.
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 8/63
MICROMITE
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 9/63
A FÖRMVER PROGRAMOZÁSA
4
:
http://geoffg.net/micromite.html
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 10/63
A FÖRMVER PROGRAMOZÁSA
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 11/63
MM28 KIVEZETÉSEK
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 12/63
MM28 KIVEZETÉSEK
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 13/63
MM44 KIVEZETÉSEK
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 14/63
SZÜKSÉGES BEKÖTÉSEK A HASZNÁLATHOZ
OPTION AUTORUN ON
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 15/63
OPTION PARANCSOK
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 16/63
PIN BIZTONSÁG
4
:
Néha fontos, hogy az adatokat és a programot egy beépített vezérlőben nem akarjuk elérhetővé tenni. Micromite esetében ez az OPTION PIN xxx parancs használatával történik. Ez a parancs beállít egy akár 8 számjegyből álló PIN-kódot (ami a flash memóriában tárolódik) és amikor a Micromite visszatér a parancssorba (bármilyen okból) a felhasználónak a konzolon meg kell adnia a PIN-kódot. A helyes PIN megadása nélkül a felhasználó nem tud eljutni a parancssorba, és a lehetőség az, hogy vagy megadja a helyes PIN kódot, vagy újraindítja a Micromiteot. Amikor újraindul, a felhasználónak továbbra is szüksége van a helyes PIN-kód megadására a parancssor eléréséhez. Mivel a behatoló nem éri el a parancssort, nem tudja sem listázni, sem lemásolni a programot. nem tudja azt megváltoztatni, vagy bármilyen szempontból módosítani. Miután beállította a PIN kódot, a működése csak úgy szüntethető meg, hogy a helyes PIN-el belépünk, és kikapcsoljuk (parancssorba beírjuk: OPTION PIN 0). Ha a szám elveszett az egyetlen módszer az MMBasic resetelése, alapállapotba hozása a később leírtak szerint (amely persze törli a programot). Persze ha egy PIC32 programozóval kiolvassuk a tokot, és fáradságos, sok munkával elemezzük a flash memória tartalmát, eredményre juthatunk. Ezért ez nem tekinthető a 100%-os biztonsági megoldásnak, de elég jó védelem.
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 17/63
EGY ÖNÁLLÓ, BIZTONSÁGOS HEX FÁJL
4
:
Ha írunk egy programot a Micromite-ra, és kiegészítjük a következő beállításokkal: OPTION BREAK 0
OPTION AUTORUN ON akkor egy olyan programot kapunk, amit nem lehet megállítani vagy megszakítani. További biztonságot jelent a watchdog időzítő és PIN-kód használata. Akkor elővehetjük a PICKit3 programozót, és MPLAB IPE szoftvert, hogy kiolvassa a Micromite teljes flash memória tartalmát és ez exportálható, mint egy hex fájl. Ez tartalmazza majd a Micromite MMBASIC interpretert, valamint a BASIC programot és a futtatási opciókat. Ez a fájl küldhető bárkinek mint egy működő alkalmazást, és ha betöltjük egy Micromite kompatibilis tokba, az futni fog. Ilyenkor már meg megkülönböztethetetlen az hogy ezt nem C-ben írtuk (kivéve az MMBasic által kiírt indítási szöveget). Így a felhasználó egy kompakt, működő programot kapott.
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 18/63
MEGSZAKÍTÁSOK
4
:
Megszakítások használatával olyan eseményeket tudunk feldolgozni, amelyek bekövetkezésének időpontja előre nem ismert. Erre példa az, amikor a felhasználó megnyom egy gombot. Bár lehet olyan programot írni, ami ciklikusan vizsgálja a gomb állapotát, de a gomb megszakítással történő figyelése sokkal egyszerűbb. Beállíthatjuk, hogy a gomb megnyomása megszakítást okozzon. Ilyenkor az éppen futó program futása megszakad és egy megszakítást kiszolgáló programrész hajtódik végre, majd a program a megszakított résztől tovább folytatódik. Az INT-el jelölt I/O lábak használhatók megszakítást kérő bemeneteknek, a SETPIN parancs segítségével lehet beállítani a megszakítást használó bemeneteket, akár többet is. Be lehet állítani, hogy a megszakítás a lábon megjelenő jel fel, vagy lefutó élére történjen. Bekövetkezésekor egy azonnali ugrás történik egy megadott címkével megjelölt szubrutinra. A megszakításból való visszatérés a megszakítási alprogram végén lévő END SUB vagy EXIT SUB utasítások végrehajtásával történik. Ha két vagy több megszakítás történik ugyanabban az időben, a feldolgozás a lábszámok sorrendjében történik. Megszakítások bármikor kiszolgálásra kerülnek, de az INPUT utasítások végrehajtásakor nem lesznek felísmerve. Néhány hosszú, hardverrel kapcsolatos műveleteknél (pl TEMPR() függvény hívása) is igaz ez, és csak akkor lehet ezeket kiszolgálni, ha megszakítást kérő esemény még fennáll. Az MMBasic legtöbb programjánál a megszakítás kérésre adott válasz 30 mikrosec alatt megtörténik. A főprogram lelassúlásának a megelőzésére a megszakítások legyenek rövidek és gyorsan fejeződjenek be. Fontos hogy akkor tiltsuk le a megszakítást, amikor nincs szükség rá, mert a háttérben futó megszakítások misztikus hibákat okozhatnak.
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 19/63
A GYAKORLÓ…
4
:
A GYAKORLÓ EGY MM44-ES MODULT FOGAD, ÉS PROGRAMOK FUTTATHATÓK AZ MM HASZNÁLATÁNAK ELSAJÁTÍTÁSÁHOZ. PERIFÉRIÁK: 4 LED, 4 NYOMÓGOMB,
ROTARY ENCODER, LCD, ZÜMMER(BUZZER) POTMÉTER ÓRA, RAM, EEPROM, HŐMÉRŐ MODULOK, IQRF, CLIPBOARD CSATLAKOZÓK…PLUSZ GRAFIKUS LCD!!!
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 20/63
A GYAKORLÓ KAPCSOLÁSI RAJZA
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 21/63
MM44 KAPCSOLÁSI RAJZ
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 22/63
A MMITE BEÉPÍTETT SZÖVEGSZERKESZTŐJE
4
:
Gyors programfejlesztést tesz lehetővé a teljes képernyős szövegszerkesztő. Ez együttműködik TeraTerm programmal. Szerkesztő indítása az EDIT paranccsal történik (vagy F4). A kurzor automatikusan a legutóbb szerkesztett helyre kerül. Esetleges programhiba okozta leállás esetén a kurzor a hibás sorra áll. Nyilakkal tudjuk mozgatni a kurzort a szövegben, a Home és az End billentyűvel a sor elejére vagy végére állhatunk. A Page Up és Page Down gombokkal lapozhatunk előre és hátra a programunkban. A Delete gombbal töröljük azt a karaktert, ahol a kurzor áll, BS törli a kurzor előtti karakter. Az Insert billentyűvel választhatunk a beillesztő és felülíró mód között. Az egyetlen szokatlan billentyűkombináció, hogy az egymás utáni két Home gombnyomás a program kezdetére, a kétszeres End gombnyomás pedig a program végére visz.
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 23/63
Tera Term emulátor
A BASIC programok kezelése, szerkesztése és a hibakereséshez kell egy terminál emulátor ami soros kommunikációs kapcsolaton csatlakozik a Micromite-hoz. Az emulátor futhat Windows, Mac vagy Linux számítógépen vagy lehet egy önálló terminál. A használt terminál emulátornak támogatnia kell VT100 emulációt, mivel ezt a Micromite-ba beépített szerkesztő elvárja. Windows-felhasználók számára ajánlott, hogy használják a Tera Term programot, mivel ez egy jó VT100 emulátor, és ismeri az XMODEM protokollt, amelynek segítségével lehet a programokat a Micromiteba/ból tölteni. Tera Term letölthető:
http://ttssh2.sourceforge.jp/
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 24/63
TERATERM TERMINAL EMULÁTOR
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 25/63
MMEDIT EZ A MICROMITE IDE
4
A program lényegében egy terminálfunkciókat megvalósító szövegszerkesztő és okos kiegészítőkkel a MMBasic programfejlesztést is lehetővé tevő program.
A TOVÁBBIAKBAN EZT HASZNÁLJUK!!! http://www.c-com.com.au/MMedit.htm
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 26/63
MMBASIC PROGRAMOZÁS – PÉLDÁKON KERESZTÜL
RENDELKEZÉSRE ÁLL EGY MAGYAR NYELŰ KÉZIKÖNYV:
HIVATALOS OLDAL:
http://geoffg.net/micromite.html CHIPCAD:www.chipcad.hu/micromite
FÓRUM:
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 27/63
MMBASIC SZÁMÁBRÁZOLÁS
4
:
Lebegőpontos szám (FLOAT) (32 bites=4 bájt=1 word) Ezekben a változókban tizedes ponttal elválasztott egész és törtrész számokat tárolhatunk, pl. 45.386 és ezek igen nagy számok is lehetnek. Azonban kisebb pontosságúak, amikor több mint hét számjegyből álló számokat tárolunk, vagy módosítunk velük. A lebegőpontos változókat megadhatjuk a névhez hozzáírt “!” utótaggal (pl. i!, NBR!, stb). Ez az alapértelmezés szerint számábrázolási formátum, amikor nem használjuk a “!” utótagot. 64-bites előjeles egész szám (INTEGER) (8 bájt=2 word) Ezek pozitív vagy negatív számokat tárolhatnak, akár 19 decimális számjegyből állókat a pontosság elvesztése nélkül. Viszont törtrészt nem tartalmazhat. Ezt a formát megadhatjuk a névhez írt “%” utótag megadásával (pl. i%, NBR%, stb.). Megjegyezzük, hogy aritmetikai műveletek (különösen összeadás és a szorzás) során nem történik meg az esetleges számábrázolási tartományból való kilépés (túl-vagy alulcsordulás) ellenőrzése. Ilyenkor az eredmény rossz lehet! Karakterfüzérek (STRING) (256 bájt=64 word) Ezek karaktersorozatokat tárolnak (pl., "Tom"). A karterfüzér változók végződhetnek a “'$” karakterrel (pl. name$, s$, stb) automatikusan jelölve a típusokat. A karakterfüzér akár 255 karakter hosszú lehet. Látható, hogy a karakterek használata, erősen fogyasztja a felhasználható RAM területet.
FONTOS! NINCS KÜLÖN BIT ILLETVE LOGIKAI (BOOLE) VÁLTOZÓTÍPUS!
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 28/63
MMBASIC SZÁMÁBRÁZOLÁS
4
option explicit 'MINDEN VÁLTOZÓT DEKLARÁLNI KELL option default NONE 'NINCS ALAPÉRTELMEZETT VÁLTOZÓTÍPUS (EGYÉBKÉNT FLOAT A DEFAULT 'DIM A(1000) AS INTEGER 'MEMORY RESERVATION 1000*8 BYTE -OK 'DIM A(1000) AS FLOAT 'MEMORY RESERVATION 1000*4 BYTE - OK 'DIM A(100) AS STRING 'MEMORY RESERVATION 100*256 BYTE - OK DIM string a(1000) LENGTH 10 'MEMORY RESERVATION 1000*11 BYTE - OK
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 29/63
MENTETT VÁLTOZÓK
Sokszor szükség lehet arra, hogy a tápfeszültség megjelenésekor néhány változót vissza tudjunk állítani. Erre a célra a VAR SAVE parancsot használhatjuk, amivel a parancsban megadott változókat adhatunk meg, hogy azokat elmentse a Micromite flash memóriájába. Az erre a célra fenntartott hely mérete 2KiB.
Ha gyakran kell adatot menteni, akkor érdemes egy valós idejű óra (RTC) tokot használni. Ekkor az RTC SETREG és RTC GETREG parancsokkal lehet tárolni és visszatölteni a változókat az RTC akkumulátorral védett RAM memóriáját használva.
4
:
A mentett változók tartalma visszaállítható a VAR RESTORE paranccsal, amely visszateszi az összes elmentett változót futó programunk változótáblázatába. Általában ezt a parancsot a program elején célszerű elhelyezni. Ez alkalmas kalibrációs adatok, a felhasználó által kiválasztott opciók, beállítások és ritkán változó adatok tárolására. Intenzív használata nem javasolt, mert a flash memória elhasználódhat (például ciklusban hívjuk)
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 30/63
MMBASIC PROGRAMOK
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 31/63
MÉRÉS: LEDVIL.BAS
EGY LEDET VILLOGTAT ADOTT ÜTEMBEN
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 32/63
MÉRÉS: LEDVIL.BAS
4
:
EGY LEDET VILLOGTAT ADOTT ÜTEMBEN AUTORUN OPCIÓ: PARANCSSORBÓL ÉS PROGRAMBÓL PIN BIZTONSÁG: Ha a program titkosítására használjuk az OPTION PIN xxx parancsot. Ezzel beállítható egy akár 8 számjegyből álló PIN-kód, parancssorba visszatéréskor ezt kéri. A helyes PIN megadása nélkül a felhasználó nem tud eljutni a parancssorba, és a lehetőség az, hogy vagy megadja a helyes PIN kódot, vagy újraindítja a Micromite-ot. Amikor újraindul a felhasználónak továbbra is szüksége van a helyes PINkód megadására a parancssor eléréséhez. Mivel a behatoló nem éri el a parancssort, nem tudja sem listázni, sem lemásolni sem módosítani a programot. A védelem megszüntetéséhez: a helyes PIN-el belépünk és kikapcsoljuk (parancssorba beírjuk: OPTION PIN 0). Ha a szám elveszett az egyetlen módszer az MMBasic resetelése, alapállapotba hozása (amely persze törli a programot).
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 33/63
SZUBRUTINOK, FÜGGVÉNYEK
4
:
Gyakran használt tevékenységeket tetszőleges helyen aktivizálható alprogramok (szubrutinok), és függvények alkalmazásával jobb programszervezést, és könnyű módosíthatóságot tudunk megvalósítani. A megadott szubrutin vagy függvény pusztán csak egy programrész, amely meghívható bárhonnan a programon belül, és olyan, mintha az MMBasic beépített parancsait kiterjesztenénk. A szubrutinon belül sokszor szükséges használnunk átmeneti változókat. Hordozható kód írásakor nem célszerű olyan neveket használni, ami azonossága miatt ütközhet a főprogramban használt változónevekkel. Ezért lehet definiálni a szubrutinon belül használható, ún. belső változókat (lokális). Ezt a LOCAL parancs segítségével végezhetjük el. A definiált függvények hasonlóak a definiált szubrutinokhoz, azzal a kivétellel, hogy az egyetlen visszaadott értéket a függvény neve hordozza. Ha egy egyszerű változót (nem kifejezést) használunk, mint értéket, amikor hívunk egy szubrutint vagy függvényt, akkor ennek a változása a kilépés után is megmarad. Ezt hívjuk név szerinti paraméterátadásnak.
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 34/63
MÉRÉS: FUTÓFÉNY
CSOPORTOS LED KEZELÉS
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 35/63
MÉRÉS: 05LEDALAKZAT.BAS
TÁBLÁZAT ELEMEIT A LEDSORON KIJELEZZÜK
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 36/63
MÉRÉS: 03GOMBNYOMASOK.BAS
4
:
BEMENETEK KEZELÉSE Ha a bemeneti feszültség nagyobb, mint 2.5 V a logikai szint igaz lesz (számértéke 1) és bármi 0.65V alatt hamis lesz (numerikus értéke 0). A bemenetek Schmitt trigger bemenetűek, így bármilyen bemeneti feszültség ezek közötti szintek esetén megmaradnak az előző logikai szinten. Az 5V-el jelölt lábak 5V toleránsak, és közvetlenül feszültségejtő ellenállások nélkül kapcsolódhatnak olyan áramkörökhöz, amik 5V tápfeszültségről működnek A SETPIN parancsban használható pár lehetőség, például, hogy a bemenet belső ellenállással a tápfeszültségre vagy a földpontra kapcsolódjon. Ezek az úgynevezett "pullup" vagy "pulldown" ellenállások és hasznosak, ha egy kapcsolóval csatlakozunk a bementhez, mert az illesztéséhez szükséges ellenállást nem kell külső ellenállásként elhelyezni. A gombkezelés három alapfüggvény segítségével valósítható meg: 1. Ránézünk a gombra, és 0 vagy 1 állapotával térünk vissza. 2. Várjuk a gombnyomást, ha megnyomjuk, akkor kilépünk. 3. Várjuk a gombnyomást, ha megnyomjuk, akkor várjuk, hogy elengedjük, és utána lépünk ki. +Rutin: Rövid-hosszú gombnyomás megkülönböztetése, a visszaadott kód ettől függ. PROGRAMOK: LEDSOR LÉPTETÉS, R-H GOMBNYOMÁS, STOPPER
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 37/63
MÉRÉS: 04ANATOLCD.BAS - LCD
LCD KEZELÉS A modul indítása az LCD INIT paranccsal történik: LCD INIT d4,d5,d6,d7,rs,en d4, d5, d6 és d7 az I/O lábak számai, ami a modul D4, D5, D6 és D7 kivezetéséhez csatlakozik (a modul D0- D3 és R/Wkivezetéseit le kell földelni). 'rs' modul register select bemenetéhez csatlakozó láb (néha a neve CMD vagy DAT). 'en' a modul engedélyező lábára van kötve. A Micromite bármelyik I/O lábát lehet használni, és nem kell az irányukat előre beállítani (az LCD parancs automatikusan megteszi ezt). A modulon történő karaktermegjelenítéséhez használjuk az LCD parancsot: LCD line,pos,data$ Ahol line a kijelző adott sorának száma (1-4) , pos a sor kezdőkarakter, ahova az adatokat kell beírni (az első sor 1 pozíciója 1). data$ az adatokat tartalmazó megjelenítendő karakterlánc az LCD-kijelzőn. Példa: LCD INIT 11, 12, 13, 14, 4, 6 LCD 1, 2, "Temperature" LCD 2, 6, STR$(TEMPR(15))'hőmérő a 15-ös lábon
4
+3.3V
:
+5V
10K
2
3
Vdd CONTRAST RS
4
EN
6
Micromite
RS EN
LCD Module
D7 D6 D5 D4 D3 D2 D1 D0 GND R/W 14 13 12 11 10 9 8 7 1 5 D7 D6 D5 D4
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 38/63
MÉRÉS: 04ANATOLCD.BAS - ANALÓG
ANALÓG MÉRÉS EREDMÉNYE LCD-RE
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 39/63
MÉRÉS: 06ORALCD.BAS
BELSŐ ÓRÁT MEGJELENÍTI AZ LCD-N
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 40/63
MCP7940 RTC
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 41/63
SZÁMOK TÁROLÁSA 64 BITES SZÁMOKBAN
4
:
Tételezzük fel, hogy adatgyűjtés során az időpontot, és három érzékelő adatait kivánjuk gyűjteni. Ez utóbbiak egy 12 bites és két 10 bites eredményt szolgáltatnak. Ezeket egy 64 bites számba is tárolni tudjuk: 32bit-időbélyeg 12bit-S1 érzékelő 10bit-S2 érzékelő 10bit-S3 érzékelő '<32><12><10><10> KODOLÁS VALTOZOKBOL SZAM FUNCTION VT2KONV%(I_32,S1_12,S2_10,S3_10) LOCAL KS% KÓDOLÁS VT2KONV%=I_32<<32 KS%=S1_12<<20 VT2KONV%=VT2KONV% OR KS% KS%=S2_10<<10 VT2KONV%=VT2KONV% OR KS% KS%=S3_10 VT2KONV%=VT2KONV% OR KS% END FUNCTION
'======[ PROGRAM ]========================= S%=VT2KONV%(121024,4095,1023,1000) D2VKONV(S%,A,B,C,D) ? S%,A,B,C,D ELLENŐRZÉS DO:LOOP
'SZAMBOL VALTOZOK SUB D2VKONV(B64%,I_32,S1_12,S2_10,S3_10) I_32=B64%>>32 B64%=B64% AND &H00000000FFFFFFFF S1_12=B64%>>20 B64%=B64% AND &H00000000000FFFFF S2_10=B64%>>10 DEKÓDOLÁS S3_10=B64% AND &H3FF END SUB
EREDMÉNY
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 42/63
STORING CHARACTERS IN A 64 BITS NUMBERS
We can store ten 6-bits characters in a 64 bits variable. In the ASCII table we select and use 64 characters (coding with 6 bit) between 20H-5FH. ’TEN CHARACTERS CODING TO AN 64 BITS NUMBER ’C$ CONTAINS THE 10 CHARACTERS FUNCTION CH10TONUM%(C$) CODING LOCAL K%,I FOR I=1 TO 10 K%=(ASC(MID$(C$,I,1))-32)<<(I-1)*6 CH10TONUM%=CH10TONUM% OR K% NEXT I END FUNCTION
'======[ PROGRAM ]========================== C10$="ABCD123HIJ" P%=CH10TONUM%(C10$) TESTING C20$=NUMTOCH10$(P%) ? C20$ DO:LOOP
RESULT:
FUNCTION NUMTOCH10$(P1%) ' LOCAL I,C$ C$="" FOR I=1 TO 10 C$=C$+CHR$(((P1%>>(I-1)*6) AND 63)+32) NEXT I NUMTOCH10$=C$ DECODING END FUNCTION
4
:
CHIPCAD KFT
9
MICROMITE TANFOLYAM 43/63
3
I2C BUSZ - BEVEZETÉS
4
:
Az adatforgalom két vezetéken történik. Az SCL vezeték az órajelet szolgáltatja , az SDA jelű végzi az adatforgalmazást. A közös potenciált a GND összekötés biztosítja. Az SCL és SDA vonalak kimenetei nyitott kollektoros megoldásúak, így a vonalak alaphelyzetben magas állapotban vannak. Ennek elônye ebben rejlik, hogy nem csupán két , hanem számos eszközt köthetünk össze. Minden egység lehet Adó ill. Vevő. Ezen felül megkülönböztetünk Master és Slave eszközöket.: A funkciók: TRX = Transmitter (adó): Az az egység amelyik adatot küld a buszra. RCV = Recevier (vevő): Az az egység amelyik adatot fogad a buszról. A szerepek: MST = Master (mester): Az az egység amelyik kezdeményezi az átvitelt, az átvitelhez az órajelet generálja, és be is fejezi az átvitelt. SLV = Slave (szolga): A mester által megcímzett egység. VCC
SDA SCL SDA1 KI
SCL1 KI
SDA2 KI
SCL2 KI
SDA1 BE
SCL1 BE
SDA2 BE
SCL2 BE
EGYSÉG I.
EGYSÉG II.
CHIPCAD KFT
9
MICROMITE TANFOLYAM 44/63
3
I2C-SCAN
4
:
'TT-I2CSCAN.BAS ' I2CSCAN UTILITY - CRACKERJACK, MARCH 2012 ' FUNCTION: SCANS THE FULL 7-BIT I2C ADDRESS RANGE AND REPORTS ADDRESSES WHERE DEVICE ' RESPONDS TO AN "I2C WRITE". ADDRESSES ARE SHOWN AS "RAW" AND 7-BIT (W/R). USE 7-BIT ADDRESSING ' WITH MMBASIC'S I2C IMPLEMENTATION. ' ------------------------------------------------------------ -----------OPTION EXPLICIT DIM I I2C OPEN 100, 100 ' ENABLE I2C AT 100KHZ, TIMEOUT 100 MS ? "SEARCHING I2C 7-BIT ADDRESS SPACE..." CHR$(10) ? "FOUND DEVICE(S) AT:" CHR$(10) ' RAW WRITE RAW READ ' ---- ------ ---- -----' 0XA0(0X50 W) 0XA1(0X50 R)
FOR I=&H8 TO &H77 ' VALID 7-BIT I2C ADDRESS RANGE I2C WRITE I, 0, 1, 0 ' SEND A SINGLE-BYTE TO THE ADDRESS IF MM.I2C = 0 THEN ' AN ACK WAS RECEIVED, DEVICE @ THIS ADDRESS ' LEFT-SHIFT ADDRESS FOR "RAW" DISPLAY VALUE ? "0X" HEX$(I*2) "(0X" HEX$(I) "W) 0X" HEX$(I*2+1) "(0X" HEX$(I) "R)" ENDIF NEXT I ? CHR$(10) I2C CLOSE END
' DISABLE I2C
CHIPCAD KFT
9
MICROMITE TANFOLYAM 45/63
3
4
SPI - SERIAL PERIPHERAL INTERFACE
:
• Az SPI lényegében egy két vonalon összekötött shift regiszter, • Az adatátvitelnél egy master és több szolga lehet. A mester vezérli a folyamatot, adja az órajelet. Az SPI két adat és két vezérlő vonalból áll. • Master Out Slave In – MOSI • Master In Slave Out – MISO • Serial Clock – SCLK a mester által küldött órajel • Slave Select - SS a szolgát jelöli ki MSB
MESTER
LSB
MSB MISO
LSB
MISO
SHIFT REGISZTER (8BIT)
SHIFT REGISZTER (8BIT) MOSI
SCK SPI ÓRAJEL
SZOLGA
SS VCC
MOSI
SCK
SS GND
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 46/63
SPI - SERIAL PERIPHERAL INTERFACE
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 47/63
4
SPI MÓDOK
:
CKP: CLOCK POLARITY 1: ÓRAVONAL ALAPÁLLAPOTA H CKE: ORAJEL AKTÍV ÉLE SMP:SAMPLE BIT 1: BEJÖVŐ ADATOT AZ ADATBIT KIVITELE VÉGÉN MINTAVÉTELEZZÜK 0: BEJÖVŐ ADATOT AZ ADATBIT KIVITELE KÖZEPÉN MINTAVÉTELEZZÜK
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 48/63
DALLAS: EGY-VEZETÉKES ÁTVITEL
4
:
DALLAS: EGY-VEZETÉKES ÁTVITEL The 1-Wire net is a low-cost bus based on a PC or microcontroller communicating digitally over twisted-pair cable with 1-Wire components. The network is defined with an open-drain (wired-AND) master/slave multidrop architecture that uses a resistor pull-up to a nominal 5V supply at the master.
CHIPCAD KFT
9
MICROMITE TANFOLYAM 49/63
3
4
1 VEZETÉKES ÁTVITEL - ALAPOK 1
U TX
TX
60 usec
HOSZT 1 - ET KÜLD SLAVE-NEK
DQ RX
:
1
60 usec
RX HOSZT 0 - ÁT KÜLD SLAVE-NEK
HOSZT (MASTER)
PERIFÉRIA (SLAVE)
1
60 usec
SLAVE BEFEJEZI A B IT ADÁ SÁ 0 VAGY 1
ÁRAMKÖRI KIALAKÍTÁS H OSZT L SZIN TET AD
1
15
SLAVE 0 VAGY 1 B IT - ET (ADATOT) AD VISSZA
HOSZT SLAVE ALTAL KULDOTT BITET OLVAS
1 VEZETÉKES ÁTVITEL (DALLAS) Az adatforgalom egy vezetéken történik. Mivel az átvitel alapja a pontos időzítés, ezért a biteket IDŐSZELETEK-ben visszük át. Minden szelet min. 60 mikrosec hosszú. , és ezeket min 1 mikrosec hosszú H szintű szünetjel választja el. Minden időszelet kezdetét a hoszt jelöli ki a DQ pont L-be húzásával.
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 50/63
MIKROELEKTRONIKA - MIKROBUS
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 51/63
MIKROELEKTRONIKA - MIKROBUS
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 52/63
PERIFERIAK
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 53/63
DHT22 click
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 54/63
PWM
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 55/63
HŐMÉRSÉKLET MÉRÉS
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 56/63
MICK-MITE-NANOMITE
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 57/63
GRAFIKUS LCD = GLCD KIJELZŐK
4
:
MMBasic 5.0-ás és későbbi verziói támogatják az olyan színes LCD kijelző panelek használatát, amelyek ILI9341 vezérlővel és SPI interfésszel működnek. Ezeknek 240x320 pixeles színes TFT kijelzőjük van, és több méretben: 2.2”, 2.4" és 2.8” elérhetők, és viszonylag olcsók. Az SPI buszon kommunikáló kijelző és érintésvezérlő (ha van) a Micromite SPI csatornáján osztozik a Micromite-on futó BASIC programmal. A legtöbb ILI9341 alapú LCD panelen van egy hozzá illesztett, rezisztív érintőképernyő, annak vezérlőjével együtt. Programozásuk:
KONFIGURÁLÁS: OPTION LCDPANEL…,TEST LCDPANEL, OPTION TOUCH, GUI CALIBRATE CSAK OLVASHATÓ VÁLTOZÓK: MM.HRES,MM.VRES,MM.FONTHEIGHT,MM.FONTWIDTH X (0…319) SZÍNEK: RGB,COLOUR BETŰKÉSZLETEK (FONTOK): Y(0…239) DEFINEFONT (1…16) …. END DEFINEFONT RAJZOLÓ PARANCSOK: CLS,PIXEL,LINE,BOX,RBOX,CIRCLE,TEXT,GUI BITMAP
MM+ ESETÉN A GRAFIKA JÓVAL BŐVEBB!
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 58/63
MICK-MITE – BACKPACK170
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 59/63
MM-BACKPACK
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 60/63
GLCD – DEMO PÉLDÁK
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 61/63
GLCD - DEMO
4
:
CHIPCAD KFT
9
3
MICROMITE TANFOLYAM 62/63
MM+
4
:
CHIPCAD KFT
9
MICROMITE TANFOLYAM 63/63
VÉGE - MOST
3
4
:
Lao-Ce mondta:
VÉGE Az emberek rang, hatalom és vagyon után sóvárognak, de ezek a dolgok a testhez képest jelentéktelenek. Ezért a bölcs csak annyit eszik, hogy az üresség megteljen és az energia el ne vesszen; úgy öltözik, hogy a testét eltakarja, s meg ne fázzon. Eredeti állapotához igazodik, és minden mást elutasít; szerzésre nem vágyik és nem gyűjt magának túl sokat.
A boldogságnak nincs köze ranghoz és vagyonhoz: egyszerűen csak harmónia dolga.
Kezdődhet a tanulás... A VÉGÉRE ÉRTÜNK…
Ha van társad, ha vannak céljaid és barátaid, ha van étel az asztalodon, tető a fejed felett, ruha a hátadon, rendes fizetésed, valamint szeretet és hit a szívedben... Légy boldog és örülj. Bármi más, amit még az élet eléd kínál, már csupán: Trallala