A legegyszerűbb JDM programozó PIC-hez passzív komponenseken. Házi készítésű programozó PIC vezérlőkhöz Csináld magad univerzális programozó pic mikrokontrollerekhez

Történt ugyanis, hogy az AVR-rel kezdtem a mikrokontrollerekkel való ismerkedésemet. Egyelőre kerültem a PIC mikrokontrollereket. De ennek ellenére egyedi tervezésűek is, amelyeket érdekes megismételni! De ezeket a mikrokontrollereket is flashelni kell. Ezt a cikket elsősorban magamnak írom. Annak érdekében, hogy ne felejtsük el a technológiát, hogyan lehet PIC mikrokontrollert probléma és időveszteség nélkül flashelni.

PIC mikrokontrollerek vagy Simple JDM programozó programozása

Az első áramkörnél - hosszan és keményen próbáltam PIC-programozót készíteni az interneten található áramkörök segítségével - semmi nem lett belőle. Kár, de egy barátomhoz kellett fordulnom, hogy felvillantsam az MK-t. De nem jó ötlet állandóan a barátokkal rohangálni! Ugyanez a barát egy egyszerű áramkört ajánlott, amely COM portról működik. De még az összeszereléskor sem működött semmi. Végül is nem elég összeszerelni a programozót - testre kell szabni a programot is, amelyet a villogáshoz használunk. De pontosan ez az, amit nem tudtam megtenni. Rengeteg utasítás található az interneten, és ezek közül néhány segített nekem...

Aztán sikerült flashelni egy mikrokontrollert. De mivel komoly időkényszer alatt végeztem a varrást, nem gondoltam, hogy legalább egy hivatkozást mentsek el az utasításokhoz. És utána nem találtam meg. Ezért ismétlem - azért írok egy cikket, hogy saját utasításaim legyenek.

Szóval, egy programozó PIC mikrokontrollerekhez. Egyszerű, bár nem 5 vezeték, mint az AVR mikrokontrollerek, amelyeket még mindig használok. Íme a diagram:

Itt van a nyomtatott áramköri lap ().

A COM-csatlakozó csapokkal közvetlenül az érintkezőfelületekre van forrasztva (a lényeg, hogy ne keverjük össze a számozással). A második csapsor kis áthidalókkal van a táblához kötve (nagyon homályosan mondtam, igen). Megpróbálok fotót adni... bár ijesztő (most nincs rendes fényképezőgépem).
A legrosszabb az, hogy a PIC mikrokontrollerekhez 12 volt szükséges a firmware-hez. És jobb, ha nem 12, hanem egy kicsit több. Mondjuk 13. Vagy 13,5 (egyébként szakértők - javítsatok ki kommentben, ha tévedek. Kérem.). 12 voltot még lehet kapni valahol. Hol van a 13? Egyszerűen kikerültem a helyzetből - vettem egy frissen feltöltött lítium-polimer akkumulátort, amiben 12,6 volt volt. Nos, vagy akár négycellás akkumulátor, a maga 16 voltával (egy PIC-et így villantottam - semmi gond).

De megint elzavartam. Tehát - utasítások a PIC mikrokontrollerek villogásához. Megkeressük a WinPIC800 programot (sajnos az egyszerű és népszerű icprog nekem nem jött be) és beállítjuk a képernyőképen látható módon.

Ezután nyissa meg a firmware fájlt, csatlakoztassa a mikrokontrollert, és villogjon.

Amikor elkezdtem a PIC vezérlőkkel foglalkozni, természetesen elsőként felmerült a programozóválasztás kérdése. Mivel a márkás programozók nem olcsók, és általában sportszerűtlennek tűnt programozót venni, úgy döntöttem, hogy magam szerelem össze. Internetezés után letöltöttem a kapcsolási rajzot és összeállítottam egy JDM programozót. Nagyon rosszul működött: vagy feltöltött valami baromságot, aztán nem töltötte fel az első néhány bájtot, vagy nem töltött fel semmit.

A JDM programozó jelentős hátránya, hogy nem tudja vezérelni a Vdd vonalat, és ennek következtében nem tudja megvalósítani a megfelelő feszültségellátási algoritmust (először Vpp, majd Vdd) a programozás során. Ha a vezérlő a következőképpen van konfigurálva: „Belső oszcillátor”, „MCLR kikapcsolva”, akkor ha a feszültségellátási sorrend hibás, akkor először elindul és elkezdi végrehajtani az előzőleg beleprogramozott programot, majd programozási módba lép (pl. ebben az esetben a mutató bárhová mutathat, és nem a programmemória elejére). Ezzel kapcsolatban: hova kerül fel a programod, és hogy egyáltalán felkerül-e, az nagy kérdés!

Miután megszenvedtem a JDM programozót, az egyik polgári oldalon találtam egy programozó diagramját, amelyen ezeket a hiányosságokat kijavították. A mai napig használom ezt a programozót, és ajánlom figyelmedbe a kapcsolási rajzát:

Egy egyszerű RS232->TTL szintátalakító készül a D1...D4 diódák és a D6 zener dióda felhasználásával. Ha a DATA és CLOCK vezetékek feszültsége kisebb, mint 0 V, akkor a D1, D2 diódákon keresztül a földre húzódnak, ha pedig ezeken a vonalakon a feszültség meghaladja az 5 V-ot, akkor a D3, D4 diódákon keresztül a +5 V-ra. tápellátás, amelyet a D6 zener dióda állít be.

Ez az eszköz közvetlenül a COM-portról kap áramellátást. Az ebben az áramkörben található zener-diódák és diódák könnyen cserélhetők háztartási diódákkal: D814D, KS147A stb.

Hogyan valósul meg a helyes feszültségellátási algoritmus, és honnan származik a 13 voltos programozási feszültség? Minden, mint mindig, nagyon egyszerű.

Amikor a port inicializálva van, a „-10V” lóg a TxD kimeneten. Ebben az esetben a C1 kondenzátort a D7 zener-diódán keresztül töltik fel (amely ebben az esetben előre van kapcsolva, és diódaként működik). Azok. a C1 pozitív lábán a feszültség a GND-hez viszonyítva nulla, de a TxD-hez viszonyítva = +10V (vagy bármi legyen is a feszültség a COM port kimenetén).

Most képzeljük el, mi történik, ha a TxD kimenet feszültsége -10 V-ról +10 V-ra változik. A TxD érintkező feszültségének növekedésével egyidejűleg a C1 kondenzátor pozitív lábán lévő feszültség növekedni kezd. A töltés nem tud földre áramolni a D7-en keresztül, mert Most a D7 vissza van kapcsolva, az egyetlen út a szivárgás a PIC-en keresztül, de ott az áram elhanyagolható. Tehát a C1 pozitív lábán (és ennek következtében az MCLR érintkezőjén) lévő feszültség növekedni kezd. Abban a pillanatban, amikor a TxD a földhöz képest nulla, a C1 kondenzátor (a pozitív lábán, tehát az MCLR) +10 V a földhöz képest. Amikor TxD +3V, akkor C1 már 3+10=13V. Ennyi, a Vpp feszültség már be van kapcsolva, de a VDD vonalon még mindig csak +3V van.

A TxD feszültségének további növekedésével a C1 feszültsége nem növekszik, mivel a D7 zener-dióda működni kezd. Amikor a TxD feszültsége +5 V fölé emelkedik, a D6 zener dióda működésbe lép.

A C1 kondenzátor kisülési áramának a D7 zener-diódán keresztül történő korlátozása érdekében az áramkörbe egy R6 ellenállás van beépítve, a C1 feszültsége nem pontosan egyenlő a stabilizációs feszültséggel, de valamivel magasabb: UC1 = Ust + IRESR * R6. A programozási feszültség beállításához az R3 ellenállást használják. Beállíthatja a változót 10KOhm-ra, vagy választhat egy állandót, így a programozási feszültség körülbelül 13 V (az alábbi ábrán látható készülékben R3 = 1,2 kOhm).

Sikeresen programoztam a vezérlőket, és ezzel a programozóval a szerző azonban azt állította, hogy ezzel a programozóval (az általam bemutatott verzióban) lehet , és . Ezeken kívül a szerző feng3.cool.ne.jp weboldalán más PIC vezérlők programozói módosításai is megtalálhatók.

Kész eszközök:


Programozói lehetőség a Mixertől:

Az IC-prog 1.05D program villogó vezérlőkhöz a " " részben tölthető le. A firmware villogásakor válassza ki a JDM programozó típusát. Vcc vezérlés engedélyezése a JDM számára. Ha Windows 2000/NT/XP operációs rendszerekkel együtt használja, válassza ki a Windows API felületet, és engedélyezze az "NT/2000/XP illesztőprogram engedélyezése" jelölőnégyzetet, egyéb esetekben használja a Közvetlen I/O interfészt.


Egy másik. Uraim, kérem mentsék el a kalibráló biteket a firmware felvillantásakor, vagy ne panaszkodjanak, hogy instabil/nem működik a belső generátor!!!

A nyomtatott áramköri lapot (AutoCAD2000i) a linkről töltheti le. A Mixer PCB-je (DipTrace 2.0) itt érhető el

Így hát elhatároztuk, hogy első házi készítésű termékünket egy mikrokontrollerre szereljük össze, már csak az van hátra, hogy megértsük, hogyan kell programozni. Ezért szükségünk lesz egy PIC programozóra, és te magad is összeállíthatod az áramkörét, nézzünk meg néhány egyszerű konstrukciót.

Az áramkör lehetővé teszi a mikrokontrollerek és az EEPROM I2C memória programozását.

A támogatott mikrokontrollerek listája, amelyek az IC-PROG v1.05D segédprogrammal közösen használhatók:

Microchip mikrovezérlők: A PIC16C62A, PIC16C62B, PIC16C63, PIC16C63A, PIC16C64A, PIC16C65A, PIC16C65B, PIC16C66, PIC16C67, PIC16C71, PIC16C72, PIC16C72A, PIC16C73A, PIC16C73B, PIC16C74A, PIC16C74B, PIC16C76, PIC16C77, PIC16F72, PIC16F73, PIC16F74, PIC16F76, PIC16F76, PIC416, PIC16F7 6F84A, PIC16F88, PIC16C505*, PIC16C620, PIC16C620A, PIC16C621, PIC16C621A, PIC16C622, PIC16C622A, PIC16CE623 A PIC16C745, PIC16C765, PIC16C770*, PIC16C771*, PIC16C773, PIC16C774, PIC16C781*, PIC16C782*, PIC16F818 A , PIC18F242, PIC18F248, PIC18F252, PIC18F258, PIC18F442, PIC18F448, PIC18F452, PIC18F458, PIC18F1220, PIC18F1320, PIC18F23 , PIC18F4320, PIC18F4539, PIC18F6620*, PIC18F6720*, PIC18F8620*, PIC18F8720*

Jegyzet: a csillaggal (*) jelölt mikrokontrollereket ICSP csatlakozón keresztül kell a programozóhoz csatlakoztatni.

Soros EEPROM I2C memória(IIC): X24C01, 24C01A, 24C02, 24C04, 24C08, 24C16, 24C32, 24C64, AT24C128, M24C128, AT24C256, M24C256, 1AT24C56.


Szerelje be a mikroáramkört az aljzatba, szigorúan ügyelve a kulcs helyzetére. Csatlakoztassa a kábelt, kapcsolja be a tápfeszültséget. Indítsa el az IC-PROG programot. Válassza ki a PIC mikrokontrollert a legördülő listából.

Ha nincs meg a firmware, készítse el: ehhez nyissa meg a szabványos Jegyzettömb programot vagy bármely más szerkesztőt; helyezze be a firmware szövegét a dokumentumba; mentse el bármilyen néven *.txt vagy *.hex kiterjesztéssel.

Ezután az IC-PROG Fájl >> Fájl megnyitása >> segédprogramjában keresse meg a firmware-t tartalmazó fájlunkat. A „Programkód” ablakot különböző kódokkal kell kitölteni.

Az IC-PROG ablakban kattintson a „Program the chip” elemre, és az eszközdiagram piros LED-je kigyullad. A programozás körülbelül 30 másodpercet vesz igénybe. Az ellenőrzéshez válassza a - Chip összehasonlítása pufferrel lehetőséget.

A fenti zöld hivatkozás segítségével megnyithatja az EXTRA-PIC programozó áramkör egy alternatív változatát egy kész nyomtatott áramköri lappal a Sprint Layout alkalmazásban.

A mikrokontrollereket használó áramkörök igen nagy népszerűségre tesznek szert az interneten. A mikrokontroller egy speciális chip, amely lényegében egy kis számítógép saját bemeneti/kimeneti portokkal és memóriával. A mikrokontrollernek köszönhetően nagyon funkcionális áramkörök hozhatók létre minimális passzív komponenssel, például elektronikus órákkal, lejátszókkal, különféle LED-effektusokkal és automatizálási eszközökkel.

Ahhoz, hogy a mikroáramkör elkezdjen ellátni bármilyen funkciót, villogni kell, pl. töltse be a firmware kódot a memóriájába. Ezt egy speciális eszközzel, úgynevezett programozóval lehet megtenni. A programozó összekapcsolja azt a számítógépet, amelyen a firmware fájl található, és a mikrokontrollert felvillantja. Érdemes megemlíteni, hogy vannak az AVR család mikrokontrollerei, például Atmega8, Attiny13 és pic sorozatok, például PIC12F675, PIC16F676. A Pic sorozat a Microchiphez, az AVR sorozat pedig az Atmelhez tartozik, így a PIC és az AVR firmware-módszerei eltérőek. Ebben a cikkben egy Extra-pic programozó létrehozásának folyamatát tekintjük át, amellyel egy pic sorozatú mikrokontrollert flashelhetünk meg.
Ennek a programozónak az előnyei közé tartozik az áramkör egyszerűsége, a működés megbízhatósága és a sokoldalúság, mivel az összes általános mikrokontrollert támogatja. A számítógépet a legelterjedtebb firmware programok is támogatják, mint például az Ic-prog, WinPic800, PonyProg, PICPgm.

Programozó áramkör


Két mikroáramkört tartalmaz, az import MAX232-t és a hazai KR1533LA3-at, mely KR155LA3-ra cserélhető. Két tranzisztor, KT502, amely KT345, KT3107 vagy bármilyen más kis teljesítményű PNP tranzisztorra cserélhető. A KT3102 is módosítható például BC457-re, KT315-re. A zöld LED az energia rendelkezésre állását jelzi, a piros LED a mikrokontroller firmware folyamata alatt világít. Az 1N4007 dióda arra szolgál, hogy megvédje az áramkört a nem megfelelő polaritású feszültségtől.

Anyagok


A programozó összeszereléséhez szükséges alkatrészek listája:
  • Stabilizátor 78L05 – 2 db.
  • Stabilizátor 78L12 – 1 db.
  • LED 3 V. zöld – 1 db.
  • LED 3 V. piros – 1 db.
  • Dióda 1N4007 – 1 db.
  • Dióda 1N4148 – 2 db.
  • Ellenállás 0,125 W 4,7 kOhm – 2 db.
  • Ellenállás 0,125 W 1 kOhm – 6 db.
  • Kondenzátor 10 uF 16V – 4 db.
  • Kondenzátor 220 uF 25V – 1 db.
  • Kondenzátor 100 nF – 3 db.
  • KT3102 tranzisztor – 1 db.
  • KT502 tranzisztor – 1 db.
  • Chip MAX232 – 1 db.
  • Chip KR1533LA3 – 1 db.
  • Tápcsatlakozó – 1 db.
  • Nő COM port csatlakozó - 1 db.
  • DIP40 aljzat – 1 db.
  • DIP8 aljzat – 2 db.
  • DIP14 aljzat – 1 db.
  • DIP16 aljzat – 1 db.
  • DIP18 aljzat – 1 db.
  • DIP28 aljzat – 1 db.
Ezenkívül szükség van egy forrasztópáka és a használat képességére.

PCB gyártás

A programozó 100x70 mm méretű nyomtatott áramköri lapra van összeszerelve. A nyomtatott áramköri kártya LUT módszerrel készül, a fájl a cikkhez van csatolva. Nyomtatás előtt nincs szükség a kép tükrözésére.


A tábla letöltése:

(letöltések száma: 639)

Programozó összeállítás

Először jumpereket forrasztanak a nyomtatott áramköri lapra, majd ellenállásokat, diódákat. Végül le kell forrasztania az aljzatokat és a tápcsatlakozókat és a COM portot.



Mert A nyomtatott áramköri lapon sok aljzat található a flashes mikrokontrollerekhez, de nem minden érintkezőt használunk, ezzel a trükkel eltávolíthatjuk a nem használt érintkezőket. Ugyanakkor kevesebb időt kell fordítani a forrasztásra, és sokkal könnyebb lesz egy mikroáramkört behelyezni egy ilyen aljzatba.


A COM port csatlakozójának (amelyet DB-9-nek hívnak) két érintkezője van, amelyeket „be kell ragasztani” a kártyába. Hogy ne fúrjon nekik extra lyukakat a táblára, kicsavarhatja a csatlakozó oldalai alatti két csavart, és a csapok leesnek, ahogy a csatlakozó fém szegélye is.


Az összes alkatrész forrasztása után a táblát le kell mosni a fluxustól, és a szomszédos érintkezőket be kell gyűrűzni, hogy lássák, nincs-e rövidzárlat. Győződjön meg arról, hogy nincsenek mikroáramkörök az aljzatokban (a MAX232-t és a KR1533LA3-at is ki kell venni), csatlakoztassa a tápfeszültséget. Ellenőrizze, hogy van-e 5 V feszültség a stabilizátorok kimenetein. Ha minden rendben van, telepítheti a MAX232 és KR1533LA3 mikroáramköröket, a programozó készen áll a használatra. Az áramkör tápfeszültsége 15-24 volt.



A programozólap 4 aljzatot tartalmaz a mikrokontrollerekhez és egyet a flash memória chipek számára. Mielőtt a flashelendő mikrovezérlőt a kártyára telepítené, ellenőriznie kell, hogy a kivezetése megegyezik-e a programozói kártya kivezetésével. A programozó közvetlenül vagy hosszabbító kábelen keresztül csatlakoztatható a számítógép COM portjához. Boldog építkezést!

A javasolt programozó a „Radio” magazin 2004. évi 2. számú kiadványán alapul, „Modern PIC16, PIC12 programozása PonyProg-on”. Ez az első programozóm, amivel otthon villogtam PIC chipeket. A programozó a JDM programozó leegyszerűsített változata, az eredeti áramkörben RS-232-TTL konverter található MAX232 chip formájában, univerzálisabb, de nem lehet „térdre állva” összerakni. Ez az áramkör egyáltalán nem tartalmaz egyetlen aktív alkatrészt, nem tartalmaz szűkös alkatrészeket, és nagyon egyszerűen összeszerelhető nyomtatott áramköri kártya használata nélkül.

Rizs. 1: A programozó sematikus diagramja.

Az áramkör működésének leírása
A programozó áramkör az ábrán látható. 1. A CLK (órajel), DATA (információ), Upp (programozási feszültség) áramkörök ellenállásai az áram áramlásának korlátozására szolgálnak. A PIC vezérlőket a beépített zener diódák védik a leállástól, így van némi kompatibilitás a TTL és az RS-232 logika között. A bemutatott áramkör VD1, VD2 diódákat tartalmaz, amelyek „leveszik” a pozitív feszültséget a COM-portról az 5-ös érintkezőhöz képest, és átadják a vezérlő táplálására, aminek köszönhetően bizonyos esetekben meg lehet szabadulni egy további áramforrástól.

Felállítása
A gyakorlatban nem mindig fordul elő, hogy ez a programozó első próbálkozásra beállítás nélkül fog működni, mert... Ennek az áramkörnek a működése nagymértékben függ a COM port paramétereitől. Viszont nekem két alaplapon a Gigabyte 8IPE1000 és a WinFast XP alatt azonnal működött minden. Ha túl lusta egy törött, bonyolultabb programozói áramkörrel foglalkozni, akkor próbálja meg összeszerelni ezt. Íme néhány dolog, amely hatással lehet:

Minél újabb a szőnyeg. tábla, a fejlesztők kevesebb figyelmet fordítanak ezekre a portokra, mert ezek a portok már régen elavultak. Ettől megszabadulhat USB-COM adapter vásárlásával, bár előfordulhat, hogy a vásárolt eszköz ismét nem megfelelő. A szükséges paraméterek a következők: a változtatható feszültségnek legalább -10V és +10V között kell változnia (logikai 0 és 1) a csatlakozó 5. érintkezőjéhez képest. A betáplált áramerősségnek legalább olyannak kell lennie, hogy amikor az 5. érintkező és a vizsgált érintkező közé 2,7 kOhm-os ellenállást csatlakoztatunk, akkor a feszültség ne csökkenjen 10 V alá (magam nem láttam ilyen táblát). A portnak megfelelően meg kell határoznia a 0 V-hoz közeli, de legfeljebb 2 V-os feszültségszinten a vezérlőtől érkező feszültséget, és ennek megfelelően 2 V feletti feszültséget kell meghatározni.

Problémák adódhatnak szoftverek miatt is.
Ez különösen igaz a LINUX operációs rendszerre, mert... Az emulátorok, például a wine, a VirtualBox jelenléte miatt előfordulhat, hogy a portok nem működnek megfelelően, és sok képességre van szükség tőlük. Ezeket a problémákat egy másik cikkben fogom részletesebben érinteni.

Ezen funkciók ismeretében kezdjük el a beállítását.
Ehhez nagyon kívánatos az ICProg 1.05D program.
A program menüben először ki kell választani a megfelelő beállítást a beállításoknál. port (COM1. COM2), válassza ki a JDM programozót. Ezután nyissa meg a „Hardver ellenőrzése” ablakot a „Beállítások” menüben. Ebben a menüben egyenként be kell jelölnie a négyzeteket, és egy voltmérővel meg kell mérnie a feszültséget a csatlakoztatott csatlakozó érintkezőinél. Ha a feszültség paraméterei nem felelnek meg a normának, akkor sajnos ez a működésképtelenség oka lehet, akkor össze kell szerelnie egy áramkört egy RS-232 TTL átalakítóval. Az összes doboz ellenőrzése után meg kell győződnie arról, hogy a zener-diódán körülbelül 5 V tápfeszültség keletkezik. Ha a feszültségek normálisak és nincsenek telepítési hibák, akkor mindennek működnie kell. Behelyezzük a vezérlőt az aljzatba, megnyitjuk a firmware-t, programozzuk. Nem szükséges engedélyezni az olyan jelölőnégyzeteket, mint az „Adatok megfordítása” (mindegyik nincs bejelölve). Ne feledje továbbá, hogy egyes vezérlőkötegek nem szabványos paraméterekkel rendelkeznek, és ilyen esetekben nem lehet villogni, ezzel a programozóval csak a tápfeszültséget 5 V-ról 3-4 V-ra lehet csökkenteni; ennek megfelelően csatlakoztatva. Zener dióda, nézd meg a vezérlőt az LVP (alacsony feszültségű programozás) mód hibás aktiválására, hogyan lehet megakadályozni, az interneten egy adott típusú vezérlőről olvashat. Valószínűleg csak az áramkör bonyolításával lehetséges a problémás vezérlő programozási feszültségének növelése egy közös emitterrel rendelkező erősítő fokozat bevezetésével, amely további áramforrásról táplálkozik.

Most beszéljünk többet az eszköz tápellátásával kapcsolatos problémáról. A programozót ICProg programokkal és konzol picproggal tesztelték Linux alatt, minden JDM-et támogatóval működnie kell, ha további tápforrást csatlakoztat (1 kOhm-os ellenálláson keresztül csatlakozik a zener diódához, az ellenállásos diódákat ebben az esetben lehet teljesen kizárva). A helyzet az, hogy az egyes szoftverek programozói vezérlési algoritmusai eltérőek, az ICProg program a legszerényebb. Észrevettük, hogy a Windows operációs rendszerben ez a program megemelte a szükséges tápfeszültséget a nem használt 2-es érintkezőn, ugyanez a program az emulátor alatt Linux alatt egy másik szőnyegre. A tábla erre már nem volt képes, de a programozási feszültségről vétellel találtak kiutat. Általában úgy gondolom, hogy ezt a programozót az ICProg-val további energia nélkül is használhatja. Más szoftverekkel ez aligha garantálható, például a tápellátás nélküli Ubuntu tárolókból származó „natív” picprog egyszerűen nem érzékeli a programozót, és a „JDM hardver nem található” üzenetet jeleníti meg. Valószínűleg vagy kap néhány adatot a programozási feszültség alkalmazása nélkül, vagy túl gyorsan, így a szűrőkondenzátornak még nincs ideje feltölteni.