itthon / Avatar / Firmware mk. A mini pc villogásának folyamata. Berendezések az MK firmware-hez

Firmware mk. A mini pc villogásának folyamata. Berendezések az MK firmware-hez

2015. december

1. A javasolt módszer előnyei

A mikrokontrollereken (MC) alapuló eszközáramköröket általában két nehezen kombinálható tulajdonság kombinációja különbözteti meg: a maximális egyszerűség és a magas funkcionalitás. Ezenkívül a funkcionalitás a jövőben megváltoztatható és bővíthető anélkül, hogy bármilyen változtatást kellene végezni az áramkörön - egyszerűen a program cseréjével (villogással). Ezeket a tulajdonságokat az magyarázza, hogy a modern mikrokontrollerek megalkotói igyekeztek egy chipre elhelyezni mindazt, amire egy elektronikai eszközfejlesztőnek szüksége lehet – legalább a lehető legnagyobb mértékben. Ennek eredményeként a hangsúly eltolódott az áramkörökről és az összeszerelésről a szoftverre. Az MK használatával ma már kevésbé kell részletekkel "terhelni" az áramkört, kevesebb a csatlakozás az alkatrészek között. Ez természetesen vonzóbbá teszi az áramkört mind a tapasztalt, mind a kezdő elektronikai mérnökök számára az ismétléshez. De szokás szerint mindenért fizetni kell. Itt sem ment minden nehézség nélkül. Ha új MK-t vásárol, telepítse a szervizelhető alkatrészekből megfelelően összeállított áramkörbe, és áramellátást biztosít, akkor semmi sem fog működni - az eszköz nem fog működni. A mikrokontrollerhez program kell.

Úgy tűnik, hogy ezzel is minden egyszerű - az interneten számos sémát találhat ingyenes firmware-rel. De itt van egy bökkenő: a firmware-t valahogy "be kell tölteni" a mikrokontrollerbe. Annak, aki még soha nem csinált ilyet, egy ilyen feladat gyakran problémává és fő taszító tényezővé válik, gyakran arra kényszeríti, hogy feladja az MK használatának varázsát, és "laza" és merev logikán alapuló sémákat keressen. De nem minden olyan nehéz, mint amilyennek első pillantásra tűnik.

Az internetes publikációk elemzése után látható, hogy ez a probléma leggyakrabban kétféleképpen oldják meg: kész programozó vásárlásával vagy házi készítésű programozással. Ugyanakkor a házi készítésű programozók közzétett sémái nagyon gyakran indokolatlanul összetettek - sokkal bonyolultabbak a valóban szükségesnél. Persze, ha állítólag minden nap villog az MK, akkor jobb, ha van egy "menő" programozó. De ha egy ilyen eljárás szükségessége ritkán, időről időre felmerül, akkor általában programozó nélkül is megteheti. Természetesen nem, beszélgetünk nem arról van szó, hogy megtanuld az elméd erejével csinálni. Ez azt jelenti, hogy megértve, hogy a programozó hogyan lép interakcióba a mikrokontrollerrel, amikor a programozási módban információkat ír és olvas, a rendelkezésre álló eszközökkel tágabb célt szolgálhatunk. Ezeknek az eszközöknek ki kell cserélniük a programozó szoftverét és hardverét is. A hardverrésznek biztosítania kell a fizikai kapcsolatot az MK chippel, képesnek kell lennie logikai szintekkel ellátni a bemeneteit, és adatokat olvasni a kimeneteiről. A szoftverrésznek biztosítania kell az összes szükséges folyamatot vezérlő algoritmus működését. Azt is megjegyezzük, hogy az információ rögzítésének minősége az MK-ban nem függ attól, hogy mennyire "menő" a programozója. Nincs olyan, hogy "jobb" vagy "rosszabb". Csak két lehetőség van: "beiratkozott" és "nem regisztrált". Ez annak köszönhető, hogy az MC maga vezérli a kristályon belüli rögzítési folyamatot. Csak jó minőségű tápellátást kell biztosítania (nincs interferencia és hullámzás), és megfelelően megszervezze az interfészt. Ha az ellenőrzési leolvasás eredménye szerint nem észleltek hibát, akkor minden rendben van - használhatja a vezérlőt a rendeltetésszerűen.

Ahhoz, hogy programozó nélkül írhassunk programot az MK-ra, szükségünk van egy USB-RS232TTL port konverterre, és szintén. Az USB-RS232TTL konverter lehetővé teszi egy COM port létrehozását az USB-porton keresztül, amely csak abban különbözik az "igazi"-tól, hogy be- és kimenetein TTL logikai szinteket használnak, azaz 0 és 5 közötti feszültséget. volt (további részletekért lásd a " " cikket). Mindenesetre hasznos, ha a „háztartásban” van egy ilyen átalakító, így ha még nincs, akkor mindenképpen vásároljon. Ami a logikai szinteket illeti, esetünkben a TTL még előnyt jelent a normál COM porttal szemben, mert egy ilyen port be- és kimenetei közvetlenül csatlakoztathatók bármilyen 5 V-ról táplált mikrokontrollerhez, beleértve az ATtiny-t és az ATmegát is. De ne próbáljon meg normál COM-portot használni - -12 és +12 V (vagy -15 ... + 15 V) közötti feszültséget használnak. A mikrokontrollerhez való közvetlen csatlakozás ebben az esetben elfogadhatatlan!!!

A programozó funkcióit megvalósító „Perpetuum M” program szkriptjének létrehozásának ötlete azután merült fel, hogy számos internetes publikációt elolvastak, amelyek bizonyos megoldásokat kínálnak az MK firmware-hez. Mindegyik esetben súlyos hiányosságokat vagy túlzott bonyolultságokat találtak. Gyakran találkoztunk mikrokontrollert tartalmazó programozói áramkörökkel, ugyanakkor elég komoly tanácsokat adtak: "... és ahhoz, hogy ehhez a programozóhoz programozzuk a mikrokontrollert, szükségünk van... ez így van - egy másik programozó!" . Aztán azt javasolták, hogy menjen el egy baráthoz, keressen fizetett szolgáltatás stb. Az ilyen célokra a neten terjesztett szoftverek minősége sem volt lenyűgöző - sok probléma merült fel mind a funkcionalitásban, mind a felhasználói felület "zavarosságában". A program használatának megértése gyakran sok időt vesz igénybe - a legegyszerűbb műveletek elvégzéséhez is meg kell tanulni. Egy másik program sokáig és szorgalmasan tud valamit csinálni, de a felhasználó csak azután tudja meg, hogy semmit nem írnak az MK-ba, miután a teljes firmware elkészült, és az ezt követő vezérlőolvasás befejeződött. Van egy ilyen probléma is: a felhasználó megpróbálja kiválasztani az MK-ját a támogatott kristályok listájából, de az nincs a listában. Ebben az esetben a program nem használható - általában nem szerepel a hiányzó MK-k listájában. Ezenkívül furcsán néz ki egy vezérlő manuális kiválasztása a listából, tekintettel arra, hogy a programozó sok esetben maga határozza meg az MK típusát. Mindezt nem azért mondják, hogy sárba dobják a meglévő termékeket, hanem azért, hogy megmagyarázzák a cikkben leírt "Perpetuum M" program forgatókönyvének megjelenésének okát. A probléma valóban létezik, és elsősorban a kezdőket érinti, akiknek nem mindig sikerül leküzdeniük ezt a „falat”, hogy megtegyék az első lépést a mikrokontrollerek világába. A javasolt szkript figyelembe veszi a más programokban talált hiányosságokat. Megvalósult az algoritmus maximális „átláthatósága”, egy rendkívül egyszerű felhasználói felület, amely nem igényel tanulmányozást, és nem hagy esélyt az összezavarodásra és a „rossz helyre kattintásra”. A támogatottak közül a szükséges MK hiányában lehetőség van saját maga is hozzáadni annak leírását, a szükséges adatokat az MK fejlesztő weboldaláról letöltött dokumentációból átvéve. És ami a legfontosabb, a forgatókönyv nyitva áll tanulmányozásra és módosításra. Bárki, miután megnyitotta egy szövegszerkesztőben, saját belátása szerint tanulmányozhatja és szerkesztheti, ízlése szerint módosíthatja meglévő funkciókatés a hiányzók hozzáadása.

A forgatókönyv első verziója 2015 júniusában készült. Ez a verzió csak az Atmel ATtiny és ATmega sorozatú MCU-it támogatja flash memória írási/olvasási funkcióval, konfigurációs bitekkel, automatikus észlelés vezérlő típusa. Az EEPROM írása és olvasása nincs megvalósítva. Tervezték a szkript funkcionalitásának kiegészítését: írási és olvasási EEPROM hozzáadását, PIC vezérlők támogatásának bevezetését stb. Emiatt a forgatókönyvet még nem tették közzé. Ám időhiány miatt a terv megvalósítása késett, és hogy a legjobb ne legyen a jó ellensége, úgy döntöttek, hogy közzéteszik a meglévő verziót. Ha a már megvalósított funkciók nem elegendőek, ne keseredjen el. Ebben az esetben megpróbálhatja saját maga hozzáadni a kívánt funkciót. Nem titkolom: a forgatókönyv megalkotásának ötlete kezdetben oktatási jelentést is hordoz. Miután megértette az algoritmust, és hozzáadott hozzá valamit, jobban megértheti az MK működését programozási módban, hogy a jövőben ne találja magát egy lány helyzetében egy törött előtt. autó, elgondolkodva nézegeti a belsejét, és nem érti, miért "nem megy".

2. MK interfész programozási módban

Több is van különböző módokonállítsa a vezérlőt programozási módba, és ebben az üzemmódban dolgozzon vele. Az ATtiny és ATmega sorozatú vezérlőkhöz a legkönnyebben megvalósítható valószínűleg az SPI. Használni fogjuk őket.

Mielőtt azonban rátérnénk az SPI kialakulásához szükséges jelekre, számos fenntartással élünk. A mikrokontroller konfigurációs bitekkel rendelkezik. Ez olyasmi, mint a váltókapcsolók, amelyek kapcsolása lehetővé teszi a mikroáramkör bizonyos tulajdonságainak megváltoztatását a projekt igényei szerint. Fizikailag ezek nem felejtő memória cellái, mint például azok, amelyekbe a program be van írva. A különbség az, hogy nagyon kevés van belőlük (az ATmegánál legfeljebb három bájt), és egyetlen memória címterében sem szerepelnek. A konfigurációs adatok írása és olvasása az MK programozási mód külön parancsaival történik. Most fontos megjegyezni, hogy néhány konfigurációs bit befolyásolja az SPI használatának képességét. Egyes értékükből kiderülhet, hogy az SPI nem használható. Ha ilyen mikrokontrollerrel találkozik, akkor az ebben a cikkben javasolt módszer nem segít. Ebben az esetben vagy módosítania kell a konfigurációs bitek beállításait a programozóban, amely más programozási módot támogat, vagy másik mikrokontrollert kell használnia. De ez a probléma csak a használt MK-kat érinti, vagy azokat, amelyekkel valaki már sikertelenül "játszott". A helyzet az, hogy az új MK-k olyan konfigurációs bitbeállításokkal érkeznek, amelyek nem akadályozzák az SPI használatát. Ezt igazolják a „Perpetuum M” program programozói szkriptjének teszteredményei is, amely során négy különböző MK-t (ATmega8, ATmega128, ATtiny13, ATtiny44) sikerült felvillantani. Mind újak voltak. A konfigurációs bitek kezdeti beállítása összhangban volt a dokumentációval, és nem zavarta az SPI használatát.

A fentiek ismeretében érdemes figyelni a következő bitekre. A SPIEN bit kifejezetten engedélyezi vagy letiltja az SPI használatát, ezért esetünkben az értékének megengedőnek kell lennie. Az RSTDISBL bit képes az egyik mikroáramköri kimenetet (előre meghatározott) "reset" jelbemenetre fordítani, vagy nem fordítani (a bitre írt értéktől függően). Esetünkben a "reset" bemenet szükséges (ha hiányzik, az MK-t nem lehet SPI-n keresztül programozási módba vinni). A CKSEL csoportnak vannak olyan bitjei is, amelyek meghatározzák az órajel forrását. Nem akadályozzák az SPI használatát, de ezekre is gondolni kell, mert ha nincsenek órajelimpulzusok, vagy azok frekvenciája alacsonyabb az adott SPI sebességnél megengedettnél, abból sem lesz semmi jó. Általában a belső RC oszcillátorral rendelkező új MCU-k CKSEL csoportbitjei vannak beállítva a használatára. Ezzel nagyon meg vagyunk elégedve - az órajelet minden további erőfeszítés nélkül biztosítjuk. Nem kell forrasztania a kvarc rezonátort, és nem kell külső generátort csatlakoztatnia. Ha a megadott bitek eltérő beállítást tartalmaznak, akkor gondoskodnia kell a beállításnak megfelelő órajelről. Ebben az esetben szükség lehet kvarc rezonátor vagy külső órajelgenerátor csatlakoztatására az MK-hoz. De ennek a cikknek a keretén belül nem fogjuk figyelembe venni, hogyan történik ez. A cikkben található példák az MK programozáshoz való csatlakoztatására a legegyszerűbb esetre készültek.

Rizs. 1. SPI kommunikáció programozási módban

Most térjünk át az 1. ábrára, amely az MK ATmega128A dokumentációjából származik. Azt a folyamatot mutatja be, amikor egy bájtot küldenek az MCU-nak, és egyidejűleg fogadnak egy bájtot az MCU-tól. Mindkét folyamat, mint látjuk, ugyanazokat az órajel impulzusokat használja, amelyek a programozótól a mikrokontrollerhez érkeznek az SCK bemenetén - a mikroáramkör egyik érintkezőjén, amelyhez ez a szerep az SPI programozási módban van hozzárendelve. Két további jelvonal biztosítja az adatvételt és az órajelenkénti egy bites átvitelt. A MOSI bemeneten keresztül az adatok a mikrokontrollerbe jutnak, és a MISO kimenetről veszik az olvasási adatokat. Jegyezze meg az SCK-tól a MISO-ig és a MOSI-ig húzott két pontozott vonalat. Megmutatják, hogy a mikrokontroller melyik pillanatban "nyeli" a MOSI bemeneten beállított adatbitet, és melyik pillanatban állítja be a saját adatbitjét a MISO kimeneten. Minden nagyon egyszerű. De ahhoz, hogy az MK-t programozási módba hozzuk, továbbra is RESET jelre van szükségünk. Ne feledkezzünk meg a közös GND vezetékről és a VCC tápegységről sem. Összességében kiderül, hogy csak 6 vezetéket kell csatlakoztatni a mikrokontrollerhez, hogy SPI-n keresztül villogjon. Az alábbiakban ezt részletesebben elemezzük, de egyelőre hozzátesszük, hogy az adatcsere az MK-val SPI-n keresztül programozási módban 4 bájtos csomagokban történik. Minden csomag első bájtja alapvetően a parancs kódolására van fenntartva. A második bájt az elsőtől függően lehet a parancskód folytatása, vagy a cím egy része, vagy tetszőleges értékű. A harmadik bájt főként címek továbbítására szolgál, de sok parancsban tetszőleges értéke lehet. A negyedik bájt általában adatokat hordoz, vagy tetszőleges értéke van. A negyedik bájt átvitelével egyidejűleg egyes parancsok az MK-tól érkező adatokat kapják. Az egyes utasítások részletei a vezérlő dokumentációjában találhatók az "SPI Serial Programming Instruction Set" nevű táblázatban. Egyelőre csak azt jegyezzük meg, hogy a teljes csere a vezérlővel 32 bites csomagok sorozatából épül fel, amelyek mindegyikében legfeljebb egy bájt kerül átvitelre. hasznos információ. Ez nem túl optimális, de általában jól működik.

3. Az MK csatlakoztatása programozáshoz

Ahhoz, hogy a mikrokontroller bemenetei minden szükséges jelet megkapjanak az SPI interfész megszervezéséhez és a MISO kimenetről történő adatok kiolvasásához, nem szükséges programozót létrehozni. Ez könnyen megtehető a leggyakoribb USB-RS232TTL átalakítóval.

Az interneten gyakran lehet olyan információt találni, hogy az ilyen konverterek gyengébbek, és semmi komolyat nem lehet velük csinálni. De a legtöbb konvertermodell esetében ez a vélemény téves. Igen, vannak eladók olyan konverterek, amelyek nem rendelkeznek minden bemenettel és kimenettel a szabványos COM porthoz képest (például csak TXD és RXD), miközben nem szétválasztható kialakításúak (a mikroáramkör műanyaggal van feltöltve - ez lehetetlen következtetéseket levonni). De ezeket nem érdemes megvenni. Egyes esetekben a port hiányzó be- és kimeneteit úgy kaphatja meg, hogy a vezetékeket közvetlenül a mikroáramkörre forrasztja. Egy ilyen "továbbfejlesztett" konverter példája a 2. ábrán látható (PL-2303 mikroáramkör - a tűk céljáról bővebben a "" cikkben). Ez az egyik legolcsóbb modell, de megvannak a maga előnyei, ha házi készítésű tervekben használják. Szintén elterjedtek a teljes funkcionalitású adapterkábelek, amelyek végén szabványos kilenc tűs csatlakozó található, mint például a COM-port. Csak a TTL-szintben és az elavulttal való összeférhetetlenségben különböznek a hagyományos COM-portoktól szoftverés néhány régi berendezés. Az is megjegyezhető, hogy a CH34x chipre épülő vezetékek a különböző extrém tesztekben sokkal megbízhatóbbnak és stabilabbnak bizonyultak a PL-2303 alapú konverterekhez képest. Normál használat mellett azonban nem észrevehető a különbség.

Az USB-RS232TTL konverter kiválasztásakor ügyeljen arra is, hogy az illesztőprogram kompatibilis-e a használt operációs rendszer verziójával.

Nézzük meg részletesebben a mikrokontroller és az USB-RS232TTL konverter csatlakoztatásának elvét négy különböző MK modell példáján: ATtiny13, ATtiny44, ATmega8 és ATmega128. A 3. ábra egy ilyen kapcsolat általános sémáját mutatja. Meglepheti, hogy az RS232 jelekkel (RTS, TXD, DTR és CTS) visszaélnek. De ne aggódjon miatta: a Perpetuum M program képes közvetlenül dolgozni velük - állítsa be a kimeneti értékeket és olvassa be a bemeneti állapotokat. A széles körben elterjedt, CH34x és PL-2303 chipekre épülő USB-RS232TTL konverterek mindenesetre ilyen lehetőséget biztosítanak – ez beigazolódott. A többi népszerű konverter sem okozhat gondot, hiszen a szabványos Windows-funkciók segítségével érik el a portot.

A képen látható ellenállások általános séma, elvileg nem lehet telepíteni, de mégis jobb telepíteni. Mi a céljuk? A konverter TTL "be- és kimeneteit, valamint a mikrokontroller öt voltos tápegységét használva ezzel megszabadulunk a logikai szintek egyeztetésének szükségességétől - amúgy minden teljesen korrekt. Ez azt jelenti, hogy a bekötések lehetnek közvetlenek. De a kísérletek során bármi megtörténhet. Például az aljasság törvénye szerint egy csavarhúzó éppen arra a helyre zuhanhat, ahonnan semmiképpen nem eshetett, és bezárhat valamit, amit semmi esetre sem szabad lezárni. csavarhúzó", persze bármi kiderülhet. Az ellenállások ilyenkor néha csökkentik a következményeket. Inkább az egyik céljuk a kimenetek esetleges ütközésének kiküszöbölése. Az a helyzet, hogy a programozás végén a mikrokontroller normál mód munkát, és előfordulhat, hogy az átalakító kimenetére (RTS, TXD vagy DTR) csatlakoztatott kimenete is kimenet lesz az MK-ban most rögzített program szerint. Ebben az esetben nagyon rossz lesz, ha két közvetlenül csatlakoztatott kimenet "harcol" - próbálja meg különböző logikai szinteket beállítani. Egy ilyen „harcban” valaki „veszíthet”, de erre nincs szükségünk.

A három ellenállás értéke 4,3 kOhm szinten van kiválasztva. Ez vonatkozik az átalakító kimenete és a mikrokontroller bemenete közötti kapcsolatokra. Az ellenállások pontossága nem játszik szerepet: az ellenállásukat 1 KΩ-ra csökkentheti, vagy 10 KΩ-ra növelheti (de a második esetben az interferencia kockázata nő, ha hosszú vezetékeket használnak az MC felé). Ami az átalakító bemenete (CTS) és a mikrokontroller kimenete (MISO) közötti kapcsolatot illeti, itt 100 ohmos ellenállást használnak. Ez a használt konverter bemenetének sajátosságaiból adódik. A tesztek során egy átalakítót használtak egy PL-2303 chipen, amelynek bemenetei látszólag viszonylag kis ellenállással (több száz ohmos nagyságrendben) vannak felhúzva a teljesítmény pluszig. Ahhoz, hogy "megöljem a felhúzást" egy ilyen kis ellenállású ellenállást kellett raknom. Azonban egyáltalán nem lehet feltenni. A konverteren mindig ez a bemenet. Nem válhat kilépéssé, ami azt jelenti, hogy az események alakulásában nem lesz konfliktus a kilépések között.

Ha az IC külön AVCC érintkezővel rendelkezik az A/D konverter (például ATmega8 vagy ATmega128) táplálására, akkor azt a VCC közös tápcsatlakozójához kell csatlakoztatni. Egyes IC-k egynél több VCC tápcsatlakozóval vagy egynél több GND-vel rendelkeznek. Például az ATmega128-nak 3 GND és 2 VCC érintkezője van. Állandó kialakításban jobb, ha az azonos nevű következtetéseket összekapcsolják egymással. Esetünkben a programozáskor egy VCC és GND kimenet használható.

És így néz ki az ATtiny13 kapcsolat. Az ábrán az SPI-n keresztüli programozás során használt lábkiosztások láthatók. A fotó mellett - hogyan néz ki egy ideiglenes kapcsolat a valóságban.


Valaki azt mondhatja, hogy ez nem komoly - vezetékek csatlakozásai. De mi értelmes emberek vagyunk. Célunk, hogy a mikrokontrollert minimális idővel és egyéb erőforrásokkal programozzuk, és ne mutogassunk valaki előtt. A minőség nem romlik. A „kiküldetéseken” módszer ebben az esetben meglehetősen hatékony és indokolt. A vezérlő firmware-je egyszeri eljárás, ezért nincs értelme "strasszokkal" felakasztani. Ha a jövőben úgy kell módosítani a firmware-t, hogy a vezérlőt nem eltávolítják az áramkörből (a késztermékben), akkor ezt figyelembe veszik a telepítés során az eszköz gyártása során. Általában erre a célra csatlakozót szerelnek be (RESET, SCK, MOSI, MISO, GND), és az MK lapra szerelés után is flashelhető. De ezek már kreatív gyönyörök. A legegyszerűbb esetet tekintjük.

Most térjünk át az ATtiny44 MK-ra. Itt minden nagyjából ugyanaz. A rajz és a fotó szerint még egy kezdőnek sem lesz nehéz kitalálni a kapcsolatot. Az ATtiny44-hez hasonlóan csatlakoztathatja az MK ATtiny24-et és az ATtiny84-et is – ennek a hármasnak a tűkiosztása ugyanaz.


Egy másik példa a vezérlő ideiglenes csatlakoztatására a programozáshoz az ATmega8. Itt több következtetés is van, de az elv ugyanaz - több vezeték, és most a vezérlő készen áll arra, hogy információkat "töltsön" bele. A képen látható extra fekete vezeték, amely a 13-as érintkezőből származik, nem vesz részt a programozásban. Úgy tervezték, hogy eltávolítsa a hangjelzést, miután az MK kilép a programozási módból. Ez annak a ténynek köszönhető, hogy a "Perpetuum M" forgatókönyvének hibakeresése során a zenedoboz-program letöltődött az MK-ra.


Gyakran egy vezérlő áll rendelkezésre különböző esetekben. Ebben az esetben a következtetések hozzárendelése minden esethez a maga módján oszlik meg. Ha az Ön vezérlőjének háza nem úgy néz ki, mint az ábrán látható, adja meg a tűk rendeltetését a műszaki dokumentáció szerint, amely letölthető az MK fejlesztői weboldaláról.

Hogy teljes legyen a kép, nézzük meg az MK chip csatlakozását egy nagy szám"lábak". A fotón a 15-ös tűről érkező extra fekete vezeték célja pontosan ugyanaz, mint az ATmega8 esetében.


Valószínűleg már láttad, hogy minden nagyon egyszerű. Aki tudja, hogyan kell megszámolni a mikroáramkörök következtetéseit (az óramutató járásával ellentétes körben lévő jeltől), az kitalálja. És ne felejtsd el óvatosnak lenni. A mikroáramkörök szeretik az ügyességet, és nem bocsátanak meg hanyag hozzáállást magukkal szemben.

Mielőtt továbblépne a szoftver részre, győződjön meg arról, hogy az USB-RS232TTL átalakító illesztőprogramja megfelelően van telepítve (ellenőrizze a kezelőt Windows eszközök). Emlékezzen vagy írja le a konverter csatlakoztatásakor megjelenő virtuális COM-port számát. Ezt a számot kell majd beírni a forgatókönyv szövegébe, amiről alább olvashat.

4. Script - programozó a "Perpetuum M"-hez

Kitaláltuk a "programozó" hardveres részét. Ez már a csata fele. Most a szoftverrel kell foglalkozni. Szerepét a „Perpetuum M” program látja majd el forgatókönyv irányítása alatt, amelyben minden szükséges funkciókat a mikrokontrollerrel való interakcióhoz.

A szkriptet tartalmazó archívumot ugyanabba a mappába kell kicsomagolni, ahol a perpetuum.exe program található. Ebben az esetben a perpetuum.exe fájl futtatásakor egy menü jelenik meg a képernyőn a telepített szkriptek listájával, amelyek között ott lesz az "MK AVR programozó" sor (lehet, hogy ez az egyetlen). Erre a vonalra van szükségünk.

A szkript az "MK Programmer AVR.pms" fájl PMS mappájában található. Ez a fájl megtekinthető, tanulmányozható és szükség szerint szerkeszthető egy általános szövegszerkesztőben, például a Windows Jegyzettömbben. A szkript használata előtt valószínűleg módosítania kell a portbeállítással kapcsolatos szöveget. Ehhez lépjen be az eszközkezelőbe windows név az Ön által használt portot, és ha szükséges, javítsa ki a "PortName="COM4";" sort - a 4-es szám helyett egy másik szám is lehet. Másik USB-RS232TTL konvertermodell használata esetén szükség lehet a jelinverziós beállítások módosítására is (a "Magas" szóval kezdődő szkriptsorok). A jelek inverzióját az USB-RS232TTL konverterrel ellenőrizheti a Perpetuum M program utasításaiban található példák egyikével (a porttal való munkavégzés funkcióinak szakasza).

Az MK_AVR almappa a támogatott vezérlők leírását tartalmazó fájlokat tartalmazza. Ha a kívánt vezérlő nincs köztük, analógia útján saját maga is hozzáadhatja a kívánt vezérlőt. Vegyük az egyik fájlt mintának, és használjuk szöveg szerkesztő adja meg a szükséges adatokat a mikrokontroller dokumentációjából. A lényeg az, hogy legyen óvatos, hiba nélkül adja meg az adatokat, különben az MK nem lesz programozva, vagy rosszul lesz programozva. Az eredeti verzió 6 mikrokontrollert támogat: ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATmega8 és ATmega128. A szkript megvalósítja a csatlakoztatott vezérlő automatikus felismerését - nem kell manuálisan megadnia. Ha a rendelkezésre álló leírások között nincs az MK-ból kiolvasott azonosító, akkor megjelenik egy üzenet, hogy a vezérlőt nem lehetett felismerni.

A szkriptet tartalmazó archívum is tartalmazza további információ. Az "AVR controllers inc files" mappa a vezérlőleíró fájlok nagyon hasznos és kiterjedt gyűjteményét tartalmazza. Ezeket a fájlokat használja, amikor saját programokat ír az MK számára. Négy további "MusicBox_..." mappa tartalmaz fájlokat összeszerelő programmal és firmware-rel, amely készen áll a letöltésre az MK-ba külön az ATtiny13, ATtiny44, ATmega8 és ATmega128 számára. Ha már csatlakoztatta az egyik ilyen MK-t programozáshoz, amint azt ebben a cikkben javasoljuk, akkor azonnal felvillanthatja - kapsz egy zenedobozt. Erről lentebb bővebben.

Ha a script menüben kiválasztja a "Programmer MK AVR" sort, a szkript végrehajtása megkezdődik. Ezzel egyidejűleg megnyitja a portot, parancsot küld a programozási módba váltásra az MC-nek, visszaigazolást kap az MC-től a sikeres átállásról, lekéri az MC azonosítót és megkeresi ennek az MC-nek a leírását az azonosítója alapján a vezérlők között. elérhető fájlok leírásokkal. Ha nem találja a szükséges leírást, megfelelő üzenetet ad ki. Ha a leírás megtalálható, akkor megnyílik a programozó főmenüje. A képernyőképe a 8. ábrán látható. Nem nehéz tovább kitalálni – a menü nagyon egyszerű.

A szkript első verziójában a teljes értékű programozó egyes funkciói nincsenek megvalósítva. Például nincs mód EEPROM-ra olvasni és írni. De ha megnyitja a szkriptet egy szövegszerkesztőben, látni fogja, hogy nagyon kicsi a mérete, annak ellenére, hogy a fő dolog már benne van. Ez arra utal, hogy a hiányzó funkciók hozzáadása nem olyan nehéz - a nyelv nagyon rugalmas, lehetővé teszi a gazdag funkcionalitás megvalósítását egy kis programban. De a legtöbb esetben még a meglévő funkciók is elegendőek.

Néhány funkciókorlátozás közvetlenül a szkript szövegében van leírva:
//csak a nulla címről implementált rekord (a kiterjesztett szegmens címrekordot figyelmen kívül hagyja, a LOAD OFFSET is)
//a rekordok sorrendje és folytonossága a HEX fájlban nincs ellenőrizve
//az ellenőrző összeg nincs bejelölve
Ez a HEX fájlokkal való munkavégzésre vonatkozik, amelyből az MK firmware kódja származik. Ha ez a fájl nem sérült, ellenőrizze ellenőrző összeg nem befolyásol semmit. Ha torz, akkor nem lehet észlelni a szkript segítségével. A fennmaradó korlátozások a legtöbb esetben nem ártanak, de továbbra is szem előtt kell tartania őket.

5. Zenedoboz - könnyű kézműves kezdőknek

Ha rendelkezik a következő mikrokontrollerek egyikével: ATtiny13, ATtiny44, ATmega8 vagy ATmega128, könnyen átalakíthatja zenedobozsá vagy zenekártyává. Ehhez elegendő a megfelelő firmware-t beírni az MK-ba - annak a négynek az egyikébe, amelyek a "MusicBox_..." mappákban találhatók egy archívumban a szkripttel. A firmware kódok „.hex” kiterjesztésű fájlokban tárolódnak. Az ATmega128 használata egy ilyen mesterséghez természetesen „kövér”, akárcsak az ATmega8. De hasznos lehet teszteléshez vagy kísérletezéshez, más szóval - oktatási célokra. Az Assembler program szövegei is csatolva vannak. A programokat nem a semmiből hozták létre - a zenedoboz programját vették alapul A. V. Belov "AVR mikrovezérlők az amatőr rádiógyakorlatban" című könyvéből. Az eredeti program számos jelentős változáson ment keresztül:
1. adaptálva mind a négy MK-hoz: ATtiny13, ATtiny44, ATmega8 és ATmega128
2. a gombok megszűnnek - a vezérlőhöz semmit sem kell csatlakoztatni, kivéve a tápellátást és a hangkibocsátót (a dallamok egymás után játszódnak végtelen hurokban)
3. az egyes hangok időtartamát csökkentik a hangok közötti szünet időtartamával a zenei ritmuszavarok kiküszöbölése érdekében
4. a nyolcadik dallam kapcsolódik, a könyvváltozatban nem használják
5. szubjektív: néhány "javítás" az optimalizálás és az algoritmus könnyebb észlelése érdekében

Egyes dallamokban hamisság, sőt baklövés is hallható, különösen a "Smile"-ben - középen. A dallamkódok a könyvből származnak (pontosabban a szerző honlapjáról az eredeti asm-fájllal együtt letöltve), és nem változtak. Nyilvánvalóan hibák vannak a dallamok kódolásában. De ez nem probléma - aki "barát" a zenével, az könnyen rájön, és mindent megjavít.

Az ATtiny13-ban a 16 bites hangszámláló hiánya miatt 8 bites számlálót kellett használni, ami némileg csökkentette a hangok hangzásának pontosságát. De füllel alig észrevehető.

A konfigurációs bitekről. Beállításuknak meg kell felelnie az új mikrokontroller állapotának. Ha az Ön MCU-ját korábban valahol használták, akkor ellenőriznie kell a konfigurációs bitjei állapotát, és szükség esetén összhangba kell hoznia az új mikrokontroller beállításaival. Az új mikrokontroller konfigurációs bitjeinek állapotát ennek az MK-nak a dokumentációjából találhatja meg ("Fuse bits" fejezet). A kivétel az ATmega128. Ez az MCU M103C bittel rendelkezik, amely lehetővé teszi a kompatibilitási módot a régebbi ATmega103-mal. Az M103C bit aktiválása nagymértékben csökkenti az ATmega128 képességeit, és ez a bit aktív az új MK-n. Az M103C-t vissza kell állítania inaktív állapotba. A konfigurációs bitek kezeléséhez használja a programozói parancsfájl megfelelő részét.

Nincs értelme diagramot adni a zenedobozról: csak mikrokontroller, tápegység és piezo hangkibocsátó van benne. Az áramellátás pontosan ugyanúgy történik, mint az MK programozása során. A hangkibocsátó a közös vezeték (a vezérlő GND kimenete) és az MK egyik kimenete közé csatlakozik, melynek száma a program assembler kódjával (*.asm) található fájlban található. A program szövegének elején minden egyes MK-hoz a megjegyzésekben van egy sor: " hangjelzés az XX kimeneten jön létre". Amikor a script-programozó véget ér, a mikrokontroller kilép a programozási módból és normál üzemmódba kapcsol. A dallamok azonnal megszólalnak. A hangkibocsátó csatlakoztatásával ezt ellenőrizheti. Kiléphet a hangkibocsátó csak akkor van csatlakoztatva a kristály programozás során, ha a hangot nem SPI-ben használt tűről veszi, ellenkező esetben a tűn lévő többletkapacitás zavarhatja a programozást.

Hogyan lehet flashelni egy AVR mikrokontrollert? Ebben a cikkben ezt fogjuk megtenni.

Mi a "flash" és a "firmware"?

Először is határozzuk meg, mit jelent a szó "vaku"? Azt hiszem, gyakran hallottál ilyen kifejezéseket "flash the phone", "firmware repült", "elhibázott firmware" stb. Mi a "firmware"?

A firmware durván szólva egy operációs rendszer kis eszközökhöz, mint pl mobiltelefon, Mp3 lejátszó, digitális kamera stb. Vagyis ez egy kis program, amely ezt az eszközt vezérli. Gyakran hallani ezt is: „Van egy „bugos” mobiltelefon, sürgősen szükség van rá „reflash“.

Ebben az esetben ez azt jelenti, hogy újra kell telepítenie operációs rendszer egy mobiltelefonhoz. Eszközök, "flash MK" azt jelenti, hogy feltöltünk benne egy programot, ami ezt az MK-t vezérelné, és az MK már vezérelne valamilyen eszközt. Azaz elméletileg az MK egy közvetítő a program és néhány olyan eszköz között, amelyet vezérelni kell ;-)


Berendezések az MK firmware-hez

Szóval, mire van szükségünk az MK felvillantásához?

  1. Maga a mikrokontroller.
  2. Számítógép előre telepített szoftverrel (SW).
  3. Programozó.
  4. Több jumper.
  5. Kenyér deszka. Azt javaslom, hogy azonnal vásároljon egy kezdő AVR készletet. Ez a készlet USB tápellátású.
  6. Egyenes karok nőnek a megfelelő helyről.

Megállapodtunk, hogy az Atiny2313 MK-t a DIP-20 csomagban használjuk:

MK előkészítése firmware-hez

Korábbi cikkeinkben a Gromov programozóra gondoltunk. Legfőbb hátránya, hogy szükségünk van egy COM portra, ami ma már alig található meg egy számítógépben, de USB csatlakozó minden gépen van. Ezért úgy döntöttek, hogy megvásárolják a legolcsóbb USB programozót az AVR MK-hoz. Egy ilyen programozót hívnak, és valahogy így néz ki


Ha jól kotorászik az Ali, akkor nagyon édes árat találhat egy ilyen programozóért. Például, . Még az is lehet, hogy olcsóbban találod. Ha másik eladótól vesz, akkor alaposan nézze meg feliratai és rádióelemei pontosan úgy helyezkedtek el, mint a fotómon. Átlagosan az ára az írás idején körülbelül 120 rubel. Egy ilyen programozó egy kicsit többe fog kerülni.

Íme a hátulnézete:


A működő csatlakozója valahogy így néz ki:


A programozóhoz kábel is jár


amely az egyik végén a programozó működő csatlakozójához tapad:


A kábel másik végét az MK-hoz rögzítjük.


Ha alaposan megnézi, megtudhatja, hogy a csatlakozóban melyik érintkező az első. A nyíl a csatlakozó első érintkezőjére mutat:


Ha tudja, hol van az első tű, könnyen azonosíthatja a többi tűt:


Tehát az a feladatunk, hogy az MK kimeneteit összekapcsoljuk a programozó kimeneteivel.

Ehhez a kábeleket a MOSI, RST, SCK, MISO, VTG (VCC), GND aljzatokba dugjuk a kábelcsatlakozóba. GND Vettem a 10. aljzatot, lehetséges, és egy másikat, ahol GND van írva. Összesen 6 áthidaló vezeték:


VTG (más néven VCC) az MK 20. szakaszába kapaszkodunk

SCK (UCSK) ragaszkodunk a 19 lábú MK-hoz

MISO az MK 18. szakaszába kapaszkodunk

MOSI 17 lábhoz

GND 10 lábra

RST az első lábon

Valahogy így kell kijönnie:


Miután a programozót először csatlakoztatta a számítógép USB-portjához, Eszközkezelőúj készüléket kapunk:

Nem félünk, töltse le innen az archiválót, csomagolja ki, és a „tűzifa” telepítésekor jelezze a hozzá vezető utat. Amikor a „tűzifa” telepítve van a programozóra, valami ilyesmit fogunk látni:

Minden rendben, a programozó készen áll a harcra.

Ugyanebben az archívumban találjuk meg az „avrdudeprog” mappát, nyissa meg, keresse meg ott az AVRDUDEPROG futtatható fájlt, és futtassa. Ez a szoftverhéj az MK villogásához a programozónk segítségével.

Így néz ki. Ne felejtse el kiválasztani az MK-t a listából.

Az MK felvillantásához ki kell választanunk egy HEX kiterjesztésű fájlt. Tehát itt az én aktám. Először is megnyomom a gombot "Törölj mindent". Mi van akkor, ha valaki használta már az MK-t, és már felkerült oda valamilyen program? Ezért villogás előtt töröljük az MK memóriáját. Ha a „mosás” sikeres volt, akkor a program valami ehhez hasonló üzenetet ad nekünk:

Villogó MK AVR

Kattintson a fájlválasztó gombra:

És most kiválasztjuk a „Lesson 1.hex” fájlunkat. Ez a mi programunk.

És most megnyomjuk a gombot "Programozás"

Miután minden jól ment, valami ilyesmi jelenik meg:

De ez még nem minden! Mint emlékszel, az utolsó cikkben 8 megahertzre állítottuk a frekvenciát. A félreértések elkerülése végett most el kell osztani ezt a frekvenciát 8-cal. Ehhez van egy biztosíték, amely elosztja az órajel frekvenciáját 8-cal. A jelölőt a „közvetlen biztosítékokra” helyezzük, majd jelöljük be a CKDIV négyzetet.

Miután elvégezte ezt a két lépést, kattintson a gombra "Programozás":

MK ellenőrzése hardverben

Most összeállítjuk az áramkörünket, amelyet az utolsó cikkben említettünk:


és élvezd az eredményt:

Ezzel a bejegyzéssel egy olyan ciklust szeretnék elindítani, amelyben a mikrokontrollereken történő eszközök fejlesztésének, villogásának és beállításának alapvető technikáit részletesen áttekintik. A bejegyzések azok számára is hasznosak lesznek, akik csak megismétlik a kész eszközöket anélkül, hogy a fejlesztésükkel és hibakeresésükkel foglalkoznának. Reméljük (én és az oldal adminisztrációja), hogy ennek a ciklusnak a megjelenése sok kezdő és kevésbé rádióamatőr számára segít abban, hogy elkezdje a mikrokontroller alapú berendezések fejlesztését és (vagy) ismétlését. Ez a cikk különféle nyílt forrásokból származó anyagokat gyűjt össze és rendszerez, beleértve kedvenc rádió magazinunkat is. Röviden megnézzük, mi az MK, és mivel eszik, miért van szükség fordítókra, és milyen szörnyű állatok ülnek a *-val ellátott fájlokban. HEX , *. kuka , *. asm stb., merüljünk el egy kicsit a történelemben, és alkossuk meg végre az első programozónkat SI-Prog (szerintem egy nagyon egyszerű, megbízható, univerzális és nem méltán elfeledett) és felvillantjuk az MK-t, emellett egy konkrét példán keresztül a RopuRgo szoftverhéjakkal fogunk foglalkozni g 2000 és IS-Prog . És hát kezdjük is. Nem titok, hogy a digitális integrált áramkörök között az MK-k ma nagyjából ugyanazt a helyet foglalják el, mint a műveleti erősítők az analógok között. Ezek univerzális eszközök, használatuk elektronikus eszközök különböző célokra folyamatosan bővül. Szinte minden nagy és sok félvezető elektronika területére szakosodott középvállalat foglalkozik MC-k fejlesztésével és gyártásával. Néhány népszerű család MK listája és fő paraméterei megtalálhatók például az interneten.

A modern mikroszámítógépek (korábban egychipes mikroszámítógépeknek nevezték) esetükben egy erős processzormagot, a végrehajtható program és adatok tárolására szolgáló memóriaeszközöket, bemeneti és kimeneti jelek fogadására és generálására szolgáló eszközöket, valamint számos segédcsomópontot kombinálnak. A modern "mikrokontroller-építés" általános trendje a normál működéshez szükséges külső elemek számának csökkenése. Egy mikroáramköri chipen nem csak komparátorokat, analóg-digitális és digitális-analóg átalakítókat helyeznek el, hanem mindenféle terhelési és "felhúzó" ellenállást, reset áramkört is.

Az MK kimeneti puffereit a legjellemzőbb terhelések, például LED-jelzők közvetlen csatlakoztatására tervezték. Az MK szinte bármelyik kimenetét (természetesen a közös vezeték és a táp kimenetei kivételével) a fejlesztő saját belátása szerint használhatja bemenetként vagy kimenetként. Ennek eredményeként a funkcióit tekintve meglehetősen összetett eszköz gyakran csak egyetlen mikroáramkörön is végrehajtható.

Az MK költségének folyamatos csökkentése és azok bővítése funkcionalitás csökkentették az eszközök komplexitásának küszöbét, amelyet célszerű ezek alapján építeni. Ma már van értelme MK-ra olyan eszközöket is tervezni, amelyek hagyományos módszerekkel való megvalósításához kevesebb, mint egy tucat közepes és alacsony integrációs fokú logikai mikroáramkörre lenne szükség. Ezen az úton talán a fő akadály a fejlesztők konzervativizmusa, akik közül sokan még mindig felfoghatatlanul bonyolultnak tartják az MK-t.

Eközben az MK-program és a digitális eszköz hagyományos kapcsolási rajzának fejlesztési folyamatai sok tekintetben hasonlóak. Mindkét esetben elemi „téglákból" épül fel a kívánt alakú „épület". Csak annyi, hogy a „téglák" különböznek: az első esetben - logikai elemek halmaza, a másodikban - egy mikrokontroller parancskészlet. .

Ahelyett, hogy az elemek között kölcsönhatásba lépnének a jelek vezetékeken keresztüli cseréjével, az adatok átvitele egyik memóriacellából a másikba az MK-n belül. Az átviteli folyamat "kifröccsenik", amikor az MK kommunikál a hozzá csatlakoztatott érzékelőkkel, jelzőkkel, aktuátorokkal és külső memóriával. Az eszközök is mások. A ceruzát, a papírt, a forrasztópákát és az oszcilloszkópot számítógép és programozó váltja fel, bár a termék hibakeresésének utolsó szakaszában még mindig nem nélkülözheti az oszcilloszkópot és a forrasztópákát.

Egy másik nehézség a teljes értékű műszaki dokumentáció és az orosz nyelvű referenciairodalom hiánya. A folyóiratokban és különösen az orosz nyelvű interneten megjelenő legtöbb ilyen jellegű publikáció gyakran nem más, mint az angol eredetik interlineáris fordítása. Ráadásul a témában és terminológiában olykor kevéssé jártas fordítók a maguk módján értelmezik a "sötét" helyeket, és ezek (a helyek) meglehetősen távol állnak az igazságtól. Gyakorlatilag nincsenek orosz nyelvű szoftverek fejlesztésére. és az MK programok hibakeresése.

Sokak számára az MK-val való első ismerkedés az ugyanabban a Rádió magazinban vagy egy másik kiadványban megjelent, ezek alapján készült terv megismétlésével kezdődik. És itt azonnal megmutatkozik a fő különbség az MC és a hagyományos mikroáramkör között: addig nem tud semmi hasznosat csinálni, amíg egy program be nem kerül a belső (néha külső) tárolóeszközébe, pl. kódkészlet, amely meghatározza a végrehajtandó műveletek sorrendjét. A kódok MK memóriájába írásának eljárását programozásnak vagy firmware-nek nevezik (nem tévesztendő össze az azonos nevű program korábbi fejlesztési folyamatával).

A firmware szükségessége első pillantásra hátránynak tűnhet. Tulajdonképpen ez a fő előnye, aminek köszönhetően, ha például csak egy MK-val ellátott táblát készítünk, és több LED-es jelzőt és nyomógombot is csatlakoztatunk hozzá, ha szükséges, mindent frekvenciamérővé, impulzusszámlálóvá, elektronikus órává alakítunk. , digitális mérő bármilyen fizikai mennyiségben, távirányító és felügyelet és még sok más.

A programkódok titokban tartásának képessége segíti az MK berendezések gyártóit a versenytársak elleni küzdelemben. Igaz, a programok túlzott titkossága gyakran további nehézségeket okoz az „idegen” tervezésű MK-n lévő eszközök javításában vagy fejlesztésében. De ez más kérdés.

Egészen a közelmúltig, amikor elkezdett egy szerkezetet MC-n tervezni, a fejlesztő azzal a problémával szembesült, hogy meg lehet-e oldani a problémát egy vagy két általa ismert eszközzel. Mára a helyzet gyökeresen megváltozott. A rendelkezésre álló MC készletből ki kell választani azt, amivel a probléma optimálisan megoldódik. Sajnos nem mindenki csinálja ezt. Még bizonyos "divat" is volt a különféle típusú termékeknek, sajátos csoportosulások jönnek létre bizonyos családok MK-t támogatói között. Választásukat általában a „tetszik-nemtetszik” szinten indokolják.Az eszközről alkotott negatív véleményt gyakran egyetlen sikertelen használati kísérlet magyarázza, gyakran a hiba okainak elemzése és megszüntetése nélkül. Egyes cégek „The Truth About...” elnevezésű dokumentumokat terjesztenek, amelyekben eszközeiket „objektíven” hasonlítják össze a versenytársak termékeivel, és általában az első javára. Nem szabad különösebben megbízni az ilyen kiadványokban, mindig lesz összehasonlító jelentés visszamenőleges eredményekkel és következtetésekkel.

Azt akarom mondani, hogy mint sok más esetben, itt sincsenek nyilvánvalóan jó vagy rossz MK-k, és nem is lehetnek. Mindegyikük kiváló eredményeket tud felmutatni egy bizonyos osztály problémáinak megoldásában, és alig birkózik meg másokkal. Ebből adódik a típusok sokfélesége. Általános szabály, hogy az egyik paraméter növekedése a többi paraméter romlásával jár. A legegyszerűbb példák: egy többszörös újraprogramozásra tervezett MK mindig drágább, mint egy egyszer programozható analóg, és egy gyorsabb eszköz érzékenyebb az impulzuszajra, mint egy lassú, és igényesebb a PCB nyomkövetése. Természetesen vannak univerzális eszközök, amelyek kellően alkalmasak egy széles problémakör megoldására. Ha azonban csak egy vagy másik tervezés megismétlésére van szükség, nincs különleges lehetőség az MK kiválasztására, akkor a leírásban szereplőt vagy annak teljes analógját kell használnia, például a más cégek által licenc alapján gyártott termékek közül. . Arra a kérdésre, hogy lehetséges-e az egyik típusú MK-t egy másikra cserélni, gyakran nemleges választ kell adni, bár elméletileg van ilyen lehetőség: csak át kell dolgozni a programot, és ha a tűk száma és célja a kicserélt és a csere MK-é különbözik, akkor a nyomtatott áramköri lapé.

Ha hasonló felépítésű és ugyanabba a családba tartozó mikrovezérlők cseréjéről van szó, vagy egy elavult termék modern analógra való cseréjéről van szó, általában lehetőség van a program adaptálására. Mikrochip és ATMEL sőt ajánlásokat is tartalmaz az ilyen adaptációra az MC referenciaadatai között. Általános esetben egy program teljes értékű átviteléhez egy másik MK-ra nem csak az EPROM általában közzétett "firmware"-ének, hanem a teljes forrásszövegnek is meg kell jelennie, lehetőleg a programozó megjegyzéseivel. A "firmware" szétszerelése eredményeként kapott lista messze nem teljes értékű egyenértékű. A programozónak lényegesen magasabb végzettségre lesz szüksége, mint amennyi a nulláról való fejlesztéshez elegendő, és a munkaerőköltség sem lesz kevesebb.

Javasoljuk, hogy az eszköz önálló fejlesztését az MK-n és természetesen a hozzá tartozó programban kezdje meg a tanulmányból, és készítse el a működéséhez szükséges algoritmus blokkdiagramját. Csak ennek a szakasznak az eredményei alapján lehet helyesen választani az MC-t.

A további történetünket egy konkrét példára építjük fel. Valahogy a közelmúltban szükség volt egy számlálóra, amely meg tudja számolni egy bizonyos határ adott objektumának kereszteződéseit az egyik és a másik irányban. A Rádió magazin számait átnézve találtam egy megfelelő eszközt, de túl bonyolultnak tűnt (11 mikroáramkör, köztük egy nagy kapacitású EPROM), ráadásul nem volt benne néhány szükséges funkció, különösen az elő- állítsa be a mérőállást és emlékezzen az állapotára az áram kikapcsolása után. Volt egy ötlet, hogy az MK-n készítsék el a szükséges eszközt. Az alábbiakban ismertetett okok miatt az MK PIC16F84 (PIC16F84А) esetet választottuk. Ennek eredményeként a készülék séma a született ( rizs. 1),


csak két mikroáramkört tartalmaz. A készülék PIC16F84 és PIC16F84 mikrokontrollereket tud használni A bármilyen korlátozó frekvenciával, háztípussal és üzemi hőmérséklet-tartományban (ezeket a paramétereket numerikus és alfabetikus indexek jelzik a chip megjelölésében a kötőjel után, például -101 / P). És ha nem várható a program javulása, használhatja a PIC16CR84 olcsó egyszeri programozható analógját is, ha természetesen megtalálja.

Objektum mozgásérzékelők - tranzisztoros optocsatolók nyitott csatornával AOT147B (U1, U2). A fototranzisztorok terhelése az MK-ban elérhető belső ellenállások. Megengedett külön fény- és fotodiódákból (fototranzisztorok) álló optocsatolók használata. Az optikai érzékelőket szükség esetén bármilyen másra cseréljük: mágneses, érintkező, induktív. Csak az a fontos, hogy aktiválásukkor a logikai szintek megváltozzanak az MK megfelelő bemenetein.

A készülék a Kingbright négyjegyű, hétszegmenses, CA56-11SR LED-jelzőjét használja. Lehetőség van bármely hétszegmensű LED-jelző használatára közösenanód, például négy hazai ALS324B. Egy DR1 ellenálláskészlet helyettesítheti a családothagyományos 300 ohmos ellenállások.Meg van adva az a program, amelyet be kell vinni az MK DD2 memóriájába, hogy a készüléket számlálóvá alakítsuktáblázatban. 1. A tápfeszültség bekapcsolásakor a jelzőfény minden számjegyében nullák világítanak. A ciklus minden egyes végrehajtása után „U1 árnyékolt” - „U1 és U2 árnyékolt” - „U1 nincs árnyékolva” - „U2 nincs árnyékolva”, a leolvasások eggyel nőnek.A számláló megfordítható, tehát amikor az érzékelők aktiválódnak fordított sorrendben ugyanennyivel csökken a leolvasás. A maximális szám 9999, amelyet nulla követ.

A ciklus következő cikke a számláló áramkörének és programjának létrehozásáról és hibakereséséről, fejlesztéséről és további funkciók bevezetéséről szól. Ez a példa bemutatja a PIC16F84 MK főbb jellemzőit, valamint az ingyenes programozási és hibakereső eszközök használatát. Ezeket az MPLAB csomagba egyesítik, amelynek legfrissebb verziója „letölthető” a www.microchip.com vagy a www.microchip.ru internetes oldalakról. Vagy a fórum oldaláról ALEXANDRA Részletesen leírja a telepítés módját is.

A táblázatból a kódok beírásához. 1 hüvelyk belső memória MK, szükséged van egy programozóra. Azonban nem "tudja" az internetes oldalak kódjainak olvasását, ezért először is létre kell hoznia egy fájlt ezekkel a kódokkal a számítógépen, a programozó által "érthető" formátumban. táblázatban. 1 az Intel által kifejlesztett úgynevezett HEX formátumban jelennek meg, amely a ROM-ok különféle célú programozásának de facto szabványává vált. (Meg kell mondanom, hogy más azonos nevű formátumok, például Microchip HEX, nem léteznek, az ilyen neveket csak félreértésből használják). A más cégek által kifejlesztett hasonló formátumok nem találtak széles körű alkalmazást, és általában csak hardverekhez és hardverekhez készültek szoftver eszközök saját tervezésű, legtöbbjük az Intel HEX formátumot "érti".

A kódok bármely szövegszerkesztővel, beleértve a Microsoft Word-t is, pontosan abban a formában kerülnek be a számítógépbe, ahogyan a lapon. 1.


Ha van szkennere és szövegfelismerő programja, például a FineReader, használhatja ezeket. De ez utóbbi esetben az olvasott adatokat össze kell vetni az eredetivel, mivel az automatikus felismerés nem tökéletes (hibák előfordulhatnak). Felhívjuk figyelmét, hogy HEX-benfájlokban csak a kettőspont, a számok és a latin betűk A - F. Minden sor kettősponttal kezdődik az első helyen, és az ENTER billentyű lenyomásával ér véget. Szóközök nem megengedettek. Ha befejezte a beírást és ellenőrizte a kódokat, mentse el a fájlt "DOS szöveg" vagy "Csak szöveg" módban, és adjon neki bármilyen nevet *.hex kiterjesztéssel.

A programkódokat gyakran úgynevezett "memóriakiíratások" formájában teszik közzé. Ez egy vizuálisabb (mint a HEX formátumú) táblázat. Hexadecimális címmel (általában négy számjegyből) kezdődő sorokból áll, amelyeket szóközök követnek, amelyeket kétjegyű hexadecimális kódok választanak el egymástól, egymást követő memóriacellákban (bájtokban). A sor elején lévő cím az első cellára vonatkozik, és általában összesen 16 van belőlük. Összehasonlításképpen a lapon. 2 itt van egy dump, amely ugyanazokat az adatokat tartalmazza, mint lapon. 1. A HEX és a dump könnyen konvertálható egyikről a másikra az alábbiak szerint (lásd lapon. 3).

A kettőspont utáni első két karakter a karakterláncban lévő információ bájtjainak száma. Ebben az esetben 16 (10 H ). Ezt követi az első bájt címe (0020H), majd egy kétjegyű vonalkiosztási kód:

0 - a sor adatokat tartalmaz;

1 - a fájl utolsó sora (:00000001 FF); nem tartalmaz adatot, a bájtok száma és a benne lévő cím nulla. Sok esetben nulla bájt is elegendő ahhoz, hogy egy karakterláncot lezáróként ismerjen fel;

2 - az adatterületen a memóriaszegmens címe található, amelynek elejéhez viszonyítva a következő sorokban megadott címek számítanak. Vegye figyelembe, hogy a szegmens címének két bájtja magas-alacsony sorrendben van. Az aktuális címekhez hozzáadandó számot váltással kapjuk meg bináris kód szegmenscímet négy bittel balra, azaz 16-tal megszorozva;

3 - az adatterületen négy bájt található a program kezdőcíméből a szokásos IBM PC CS:IP formátumban;

4 - az adatterületen (a legmagasabbtól a legalacsonyabbig) négy bájt található az abszolút címből, amelyek értékét mindenféle átalakítás nélkül hozzá kell adni a következő sorokban feltüntetett címekhez;

5 - ugyanaz, mint a 04, de a program kezdőcímének abszolút értékét adja meg.

A 02 és 04 célkódú sorok akkor használatosak, ha 0FFFFH-nál nagyobb címeket kell megadni. Kis memóriával rendelkező MCU programozásához (például PIC16F84) nincs szükség rájuk. Néha azonban egy hasonló, nulla kezdőcímet megadó karakterlánc kerül a HEX fájl elejére. Fájdalommentesen eltávolítható.

A 03 és 05 kódú sorok nagyon ritkák, mivel az MK program kezdőcímét leggyakrabban az utóbbi architektúrája határozza meg, és nem módosítható. A PICmicro családba tartozó MK esetében ez nulla.

A célkódot a sor elején megadott számú bájtnyi adatterület követi. A karakterláncot egy vezérlő bájt zárja le. Az érték kiszámításának algoritmusa meglehetősen egyszerű: a karakterlánc összes bájtja összegének nyolc legkisebb jelentőségű bitjének, beleértve a hosszát, a cím két bájtját, a célkódot, az adatokat és a vezérlést, nullával kell egyenlőnek lennie.

A HEX formátumot eredetileg 8 bites adatok tárolására tervezték. A nagyobb kapacitású kódok a megfelelő számú bájtra vannak osztva, amelyeket a fájlba írnak az alacsonytól a magasig. Például az MK IS16F84 minden 14 bites utasításához két bájt van hozzárendelve, és a második bájt két legjelentősebb bitje szabad marad (a kód ebben a bájtban nem haladja meg a 3FH-t).

Ennek eredményeként a HEX fájl címei megduplázódnak a programutasítások tényleges címeihez képest. Például a vonal

:080008008C0003088D000408C0 a programkódok ilyen sorozatát írja le;

Címkód

4008C

5 0803

6008D

7 0804

Egyes szoftvereszközök (rendszerint nem IBM-kompatibilis számítógépekről vezetik a genealógiát) egy fájlba írnak, és fordított sorrendben érzékelik az adatbájtokat - a régebbi, majd a fiatalabb. Erre figyelni kell, ha a programozó "szemtelen", nem akarja helyesen olvasni a fájlt.

A leírt többbites adatábrázolási formátumot gyakran egyesítettnek nevezik. Időnként van egy másik lehetőség: a HEX fájl két részre oszlik, amelyek közül az egyik tartalmazza az összes alsó bájtot, a második pedig a program szavainak összes felső bájtját. Ezt a formátumot felosztottnak nevezik.

Kérjük, vegye figyelembe, hogy a fájl nem határozhat meg folyamatos kódsorozatot. Például az első két sorban lévő kódok között lapon. 1 hat bájtnyi hézag marad kitöltetlenül (három programutasítás). A HEX formátum nem ad tájékoztatást a tartalmukról. A programozó algoritmusától függően programozatlan kezdeti állapotban maradnak, vagy tárolják a korábban rögzített kódokat. BAN BEN lapon. 2 a fel nem használt cellák nulla kódokkal vannak feltöltve.

Mint tudják, az MK állandó memóriát tartalmaz különféle célokra: FLASH vagy egyszer programozható a programhoz, EEPROM az adatokhoz, speciális cellák az MK konfigurálásához és azonosításához. Az ezekre a területekre szánt információkat gyakran külön fájlokban tárolják és

programozáskor kézzel kell megadni, hogy pontosan hova kell írni. A PICmicro családban azonban úgy döntöttek, hogy mindent egy HEX fájlban egyesítenek. A fent említett területek, amelyek az MK processzor számára különböző címterekben helyezkednek el, a programozó szempontjából egybe vannak vonva. A PIC16F84 esetében a megoszlás a következő (zárójelben - "byte" címek):

0-3FFH (0-7FFH) - programkódok; nagyobb memóriával rendelkező MK esetén ez a terület 1FFFH-ra (3FFFH) bővíthető;

2000N-2003N (4000N-4007N) - azonosító kódok;

2007H (400EN, 400FH) - konfigurációs szó;

2100H-213FH (4200H-427FH) - 0-3FH EEPROM címekre írt kódok.

Annak ellenére, hogy az EEPROM szervezet nyolc bites, ebben az esetben a HEX fájlban a neki szánt kódok mindegyikéhez két bájt van hozzárendelve, amelyek közül a legmagasabb nulla tartalommal.

FOLYTATJUK >>>>>

MINDEN KÉRDÉS BE

Tehát, ha a program telepítve van, kezdjük el a képességeinek feltárását.

Telepítjük a mikrokontrollert a programozópultba, csatlakoztatjuk a programozót a számítógéphez és futtatjuk a "PICkit 2 Programmer"-t.

Indításkor a program lekérdezi a programozót, és azonosító bitekkel (ún. eszközazonosítóval) automatikusan meghatározza a programozandó mikrokontroller típusát. Figyelem! A Baseline család chipjei, valamint az EEPROM és KeeLOG chipek nem rendelkeznek eszközazonosítóval. Ahhoz, hogy a program működjön ezekkel a mikroáramkörökkel, ki kell választania egy adott terméket az „Eszközcsalád” menüben.

Ha egy ilyen barátságos kép helyett ez jelenik meg...

Ezután ellenőriznie kell, hogy az USB-kábel megfelelően van-e csatlakoztatva, és az "Eszközök" - "Kommunikáció ellenőrzése" menün keresztül csatlakoztassa újra az eszközt.

Firmware fájl megnyitása.

Az MK program memóriájába írásához válassza a "Fájl" - "Import Hex" menüpontot.

Ezután válassza ki a megnyíló ablakban kívánt fájlt firmware.

Ezt követően a programmemória (Program Memory) és az adatok (EEPROM Data) ablakban megjelenik a .hex fájl tartalma.

A műsor felvétele MK-ban.

Most már programozhatja az MK-t. Ehhez kattintson az "Írás" gombra. A felvételi folyamat 3-5 másodpercet vesz igénybe.

A „Programozás sikeres” felirat értesíti Önt a rögzítési eljárás sikeres befejezéséről.

A nagyobb biztonság érdekében ellenőrzési eljárást hajthat végre. Ha az "Ellenőrzés" gombra kattint, a program összehasonlítja a hexa fájl adatait és az MK-ban rögzített adatokat. Ha az ellenőrzés sikeres volt, az üzenetmezőben megjelenik az "Ellenőrzés sikeres".

Figyelem! Ha PIC12F675, PIC12F629 és hasonló mikrokontrollereket villog belső óragenerátorral, akkor az ellenőrzés során hiba léphet fel. A helyzet az, hogy a PICkit2 Programmer (6.21-es verzió) elmenti a kalibrációs állandót, majd beírja az MK utolsó memóriacellájába. Nyilvánvaló, hogy az eredeti firmware fájl és a memóriában rögzített adatok különböznek. A kalibrációs állandóról később lesz szó.

Gyors gombok.

Az "Auto Import Hex + Write Device" gomb azoknak fog tetszeni, akik egyetlen gombnyomással szeretnék "bevinni a firmware-t" az MK-ba. Egy kattintás, és a program felszólítja, hogy válassza ki a firmware fájlt, majd azonnal írja be az MK-ba.

Az "Eszköz olvasása + Hexa fájl exportálása" gomb az ellenkező funkciót látja el - beolvassa az adatokat az MK-ból, és felajánlja a firmware-fájl .hex fájlba mentését.

Konfigurációs bitek módosítása.

A konfigurációs bitek beállítják az MK működésének alapvető paramétereit. Ez a generátor típusa (kvarc, RC áramkör), amely engedélyezi / letiltja az úgynevezett "figyelőkutya időzítőt", beállítja a programmemória olvasása elleni védelmet és néhány mást. Általános szabály, hogy egy MK (program) működéséhez szükséges algoritmus írásakor olyan értékeket kell írni, amelyeket a konfigurációs bitekre kell írni. Villogáskor a shell magából a firmware-fájlból veszi a konfigurációs adatokat, és nem kell kényszeríteni ezen adatok megadására.

Kezdőkként azonban nem lenne felesleges, ha tudnunk kell, hogyan tekintsünk meg vagy módosítsunk bizonyos konfigurációs biteket. Ehhez kattintson a "Konfiguráció" feliratra. Megnyílik a Konfigurációs bitek szerkesztése ablak.

Ha 0-t 1-re kell módosítania, akkor módosítsa - kattintson a "Mentés" gombra. Természetesen tudatosan kell változtatni. Ismétlem, ha kész firmware fájlt használ, nem kell semmit módosítania, a program mindent automatikusan megtesz.

Mikrokontroller modell kiválasztása.

A mikrokontrollerek különbözőek. Ezért az MK programozásakor szükség lehet megadásra konkrét modell mikrokontroller. Ha kiválasztja az "Eszközcsalád" menüpontot, megjelenik a mikrokontroller családok listája. Ezen a listán EEPROM memória chipek is találhatók.

A mikrokontrollerekkel ellentétben az EEPROM memóriachipeket nem észleli automatikusan az "Eszközök" - "Kommunikáció ellenőrzése" parancs. Ezért az EEPROM chipek programban való olvasásakor / írásakor meg kell adnia a chip jelölését.

A menüben válassza ki az "Eszközcsalád" - "EEPROMS" - "24LC" elemet.

Kalibrációs állandó.

Mint tudják, a mikrokontroller működéséhez óragenerátorra van szükség. Ennek a generátornak a frekvenciáját beállító elem lehet egy külső kvarcrezonátor, RC - áramkör. De a PIC mikrokontrollerek között vannak olyanok, amelyek magában a mikroáramkörben tartalmazzák a szükséges meghajtó áramköröket. Ilyen MK-k közé tartozik például a PIC12F629, PIC12F675.

Gyárilag az ilyen mikrokontrollerek memóriájába egy speciális állandót írnak, amely a beépített oszcillátor paramétereit 4 MHz-re állítja. Ez a 34xx kalibrációs állandó az utolsó programmemória-helyre íródik 0x3FF értéknél.

A mikrokontroller programozásakor ez az állandó könnyen törölhető. És bár a PICkit2 Programmer 2.61-es verziója automatikusan elmenti ezt a konstanst, majd a programozás során leírja, nem lesz felesleges az OSCCAL állandó értékét felírni.

Szükség esetén az állandó kézzel egyszerűen megadható. Ehhez válassza az "Eszközök" - "OSCCAL" - "Kézi beállítás" menüpontot.

Az "OSCCAL érték" mezőben adja meg a konstans korábban rögzített értékét. Kattintson a "Beállítás" gombra.

Most, hogy ismeri a PICkit2 programozó alapvető funkcióit, nyugodtan elkezdheti összeszerelni néhány eszközt egy mikrokontrollerre, például

Mikrokontrollerek kezdőknek. Videó lecke. Felírjuk a programot a mikrokontrollerre (villogtatjuk a chipet)

________________________________________________________________________________________________________

Első a legegyszerűbb program, amely szabályozza a feszültséget a mikrokontroller kimenetein. Programozás a CodeVisionAVR szerkesztőben. A program átvitele a mikrokontroller memóriájába (chip firmware). Letöltés(36 MB)


Tartalom

Ha a videó nem készül, állítsa beFlash player és ellenőrizze hangkártya, vagyLetöltés anyag (36 MB). Ha videó helyett zöld képernyő van, telepítse újra a flash lejátszót (csak töltse le legújabb verzió). Ha a videó "megrándul", állítsa szünetre, és hagyja egy kicsit betölteni. Lejátszó flash-videók megtekintéséhez otthoni gépen. Bontsa ki a videót teljes képernyőre. Ha azt írják, hogy "A videó nem található", "A videó nem található" - indítsa újra a videót.

CodeVisionAVR szerkesztő - hivatalos oldal

Ha a mikrokontroller nem villog, akkor:
1) Ne izgulj. Tedd félre a tervezést, tarts egy kis szünetet, igyál egy csésze teát és lazíts. A valódi tervek ritkán kezdenek működni az első alkalommal – ez normális, különösen a kezdők számára (mert túl sok a fel nem vett tényező, amit az agy nem képes azonnal felfogni).
A professzionális fejlesztők több tucatszor újraírják a terveiket :))))
Az agy érdekes tulajdonsága: Ahogy Mark Twain mondta: "Ne halaszd holnapra, amit el tudsz halasztani holnaputánra." Néha pont üres tartományban nem lehet programot írni, jöjjön ki elektronikus áramkörés így tovább. Ebben az esetben nincs szükség extra erőfeszítésre. Helyezze be a feladatot a tudatalattiba, és várjon néhány napot. Szünet után sokszor minden magától megoldódik. És sokkal gyorsabban és jobban, mintha ugyanazt a pár napot szenvednéd reggeltől estig.

2) Pihenés után alaposan ellenőrizze újra:
Táplálkozás - nem alacsonyabb, mint 4,5 volt, célszerű annak a számítógépnek az USB-jéről venni, amelyre a programozó csatlakozik (az esetleges kiegyenlítő áramok kizárása érdekében). Ellenőrizze a feszültséget egy teszterrel;
Túl hosszúak a vezetékek a számítógéptől a programozóig? A hosszú vezetékeket megzavarják, és megnő az adatátvitel meghibásodásának valószínűsége;
Lehet, hogy belül eltört a kábel? Gyűrje le az összes vezetéket teszterrel.
Összekeveredtek a vezetékek? MOSI, MISO, SCK, Visszaállítás, GND, jó helyen ragadt?
A programozó megfelelően van beállítva Beállítás >> Programozó;
Projekt >> Konfigurálás >> C Fordító;
A kristály típus megfelelő? Eszközök >> Chip programozó;

Fuzy nem érintette? Ha megérinti, külső kvarcot kell tennie.
Megtisztítottad a chipet villogás előtt? Eszközök >> Chip Programozó >> Program >> Chip törlése;
Néha segít teljes tisztítás Forgács Eszközök >> Chip programozó nagy k
Reset Chip gomb (egyenértékű az impulzus küldésével a RESET lábra);
Tedd az ablak aljára Eszközök >> Chip programozó három kullancs Ellenőrizze az aláírást, Ellenőrizze a törlést , Ellenőrizze ;
Vagy fordítva – törölje a jelölést ezekből a négyzetekből. Próbáld ki így és úgy.
Ha minden más nem sikerül, akkor rendeljen új chipet. Valahonnan kihúzott chipről kiderülhet, hogy megégett, és külső generátorra van hangolva, meg égett tűkkel, meg hasonlókkal.
Igen, és a boltokban néha hibásan szívják, tk. ki tudja hol tartják. Néha könnyebb új chipet venni, mint arra gondolni, hogy mi történt a régivel (de ne dobd ki, ha tapasztalatot szerzel – építs újra).
Ha talál régi számítógép- próbáld ki
e igen LPT programozó(hirtelen megcsúszott egy hibás USB programozó?). Nincs egyszerűbb egy LPT programozónál; Egy tucat számítógépen csináltam – mindig azonnal működni kezdett, és soha nem volt hiba.
Ne feledje a telepítés előtt földelje le a kezét o akkumulátort, csapot vagy masszív acélszerkezetet (kerítés, könyvespolc), vagy vásároljon antisztatikus csuklópántot vagy szőnyeget (a kézből származó statikus elektromosság károsíthatja a gyenge mikroáramköröket).
Végül a legelvetemültebb módszer - próbáljon ki egy másik számítógépet. Előfordul, hogy alaplapok hibásak, kiégnek rajtuk a portok, az érintkezőkről eltávolodnak a vezetékek stb.

Ismerje meg a mikrokontrollereket nem csak az ezen az oldalon található videókból. Az agynak változatosságra van szüksége. Olvasson könyveket, fórumokat, Wikipédiát és más oldalakat. Kérjen tanácsot elektronikai barátaitól. Gyakoroljon és kísérletezzen egyedül. Gyűjtsön tudást és tapasztalatot.