Vissza a főoldalra    Vissza a PIC főoldalra

<< Előző oldal   Vissza a tartalomjegyzékhez   Következő oldal >>

 


11.2.2. FLASH mikrovezérlők programozása


      A FLASH programmemóriájú PIC mikrovezérlők programozási eljárása programozási parancsok és programozás-időzítési előírások tekintetében eltér az EPROM programmemóriát tartalmazó típusokétól. A FLASH programmemóriájú mikrovezérlők fejlesztése során a gyártó több különböző programozási eljárást alakított ki, így a jelenleg beszerezhető FLASH mikrovezérlők különböző programozási módokat igényelnek. A program "beégetése" típustól függően 1, 2, 4 vagy 8 szavas blokkonként végezhető. Egy blokk "beégetése" egyetlen 1..8ms-os beíróimpulzus segítségével megy végbe, amely belső (vagy az újabb típusoknál választhatóan külső) időzítésű.
      Külön törölhető a program- és adatmemória. Egyes típusoknál egyetlen törlési folyamattal (Chip Erase) törölhető a mikrovezérlő program-, konfigurációs- és adatmemóriája. A programmemória törlésénél minden esetben választható, hogy a konfigurációs memóriaterület is törlődjön-e.
      Az egyes típusoknál előforduló beépített 8 bites EEPROM adatmemória szintén előre programozható.

ˇ Belépés programozási üzemmódba
ˇ Programozási parancsok
ˇ Adat betöltése a programmemóriába
ˇ Adat kiolvasása a programmemóriából
ˇ Cím növelése
ˇ Konfiguráció betöltése
ˇ Adat betöltése az adatmemóriába
ˇ Adat kiolvasása az adatmemóriából
ˇ PIC16x8x parancsok
ˇ PIC16F84A parancsok
ˇ PIC16F7xx parancsok
ˇ PIC16F716 parancsok
ˇ PIC12/16 F63x/F68x parancsok
ˇ PIC12F6xx/16F630/16F676 parancsok
ˇ PIC16F62x parancsok
ˇ PIC16F6xxA parancsok
ˇ PIC16F81x/F87/F88 parancsok
ˇ PIC16F87x parancsok
ˇ PIC16F87xA parancsok
ˇ Programozási folyamatábrák
ˇ Ellenőrző összeg

      Az egyes FLASH memóriás mikrovezérlő típusok angol nyelvű gyári programozási dokumentációja:

PIC12F629
PIC12F635
PIC12F675
PIC12F683
PIC16F627
PIC16F627A   
PIC16F628
PIC16F628A   
PIC16F630
PIC16F636
PIC16F639
PIC16F648A
PIC16F676   
PIC16F684
PIC16F688
PIC16F716
PIC16F72
PIC16F73
PIC16F737   
PIC16F74
PIC16F747
PIC16F76
PIC16F767
PIC16F77
PIC16F777   
PIC16F818
PIC16F819
PIC16F83
PIC16C84
PIC16F84
PIC16F84A   
PIC16F87
PIC16F870
PIC16F871
PIC16F872
PIC16F873
PIC16F873A   
PIC16F874
PIC16F874A
PIC16F876
PIC16F876A
PIC16F877
PIC16F877A
PIC16F88
 
 
 
 

 


 

Belépés programozási üzemmódba

      A hagyományos magas feszültségű programozási üzemmódba történő belépés típustól függően kétféle módon mehet végbe:
     ˇ
belső oszcillátor alkalmazása esetén először az bemenet kapja meg a programozófeszültséget, majd később jelenik meg a tápfeszültség, amivel biztosítható, hogy a belső oszcillátor ne induljon el;
     ˇ belső oszcillátor alkalmazása nélkül, illetve a belső oszcillátort nem is tartalmazó típusoknál először a tápfeszültség bemenet, majd azután az bemenet kap feszültséget.

      Az alacsony feszültségű programozás (LVP) egy későbbi fejezetben kerül bemutatásra.
      Az, hogy egy konkrét típusnál melyik belépési módok választhatóak, a mikrovezérlő programozási útmutatójában található meg.
      A régebbi mikrovezérlő típusoknál programozás során a tápfeszültségnek a 4,75..5,25V-os tartományban kell lennie. Programellenőrzés ideje alatt a tápfeszültségnek a mikrovezérlő teljes tápfeszültség-tartományán belül kell lennie.
      Az újabb mikrovezérlő típusoknál programozás és ellenőrzés során a tápfeszültség a mikrovezérlő működési tartományban (általában 2..5,5V) bárhol megválasztható. (Viszont az alkalmazott tápfeszültségtől függően két különböző programozási algoritmus és külön programozási parancsok alkalmazása szükséges.)
      A régebbi típusoknál a programozó feszültség maximális terhelése 50mA. Az újabb mikrovezérlő típusoknál az kivezetésre kapcsolt feszültség csak az üzemmódkiválasztást végzi (a programozást nem). Így ezen a csatlakozón nincs számottevő teljesítményfelvétel.
      Programozási üzemmódban az Adat és Órajel bemenet Schmitt-trigger jellegű.
      A programozási üzemmódba történő belépés az bemenetre kapcsolt (típustól függően 10..13V-os) programozó feszültség hatására megy végbe. Ezalatt az Adat és az Órajel bemeneteknek logikai "0" szinten kell lenniük.
      A programozási üzemmódba való be- és kilépés időkorlátait szemléltetik a következő ábrák. Az első ábrán látható esetben nincs, vagy tiltva van a belső oszcillátor áramkör és az kivezetés sincs általános I/O kivezetésnek konfigurálva.

Programozási üzemmód aktivizálása
11.2.2-1. Ábra

      A következő ábrán a belső RC oszcillátor vagy az általános I/O kivezetésnek konfigurált kivezetés miatt módosított indulási és leállási folyamat látható.

Programozási üzemmód aktivizálása INTRC üzemmód mellett
11.2.2-2. Ábra

      Látható, hogy az kivezetésre kell elsőként rákapcsolni és utoljára megszüntetni a táplálást.

Vissza a lap tetejére


 

Programozási parancsok

      A programozási lépések végrehajtási folyamata 6 bites programozási parancsokkal vezérelhető, amelyeket betöltési és kiolvasási feladatok esetében a 16 bites adatszó követ.
      A következő táblázatok a mindegyik FLASH mikrovezérlő típusnál egyaránt előforduló programozási parancsokat mutatják be. Az első táblázatban az
EEPROM adatmemória meglététől függetlenül használható parancsok láthatóak.

11.2.2-1. Táblázat
Parancs Parancsszó Adatszó
5.bit ...... 0.bit 15.bit ........ 0.bit
Adat betöltése a programmemóriába 0 0 0 0 1 0 0, 14bit adat, 0
Adat kiolvasása a programmemóriából 0 0 0 1 0 0 0, 14bit adat, 0
Cím növelése 0 0 0 1 1 0 -
Konfiguráció betöltése 0 0 0 0 0 0 0, 14bit adat, 0

      (A parancsok legfelső vagy két felső helyiértéken levő bitjének értéke egyes típusoknál közömbös, mindegy, hogy "0" vagy "1".)

      Az EEPROM adatmemóriával is rendelkező FLASH mikrovezérlő típusok közös EEPROM adatmemória-kezelő parancsai láthatóak a következő táblázatban.

11.2.2-2. Táblázat
Parancs Parancsszó Adatszó
5.bit ...... 0.bit 15.bit . . . . . . . . 0.bit
Adat betöltése az adatmemóriába 0 0 0 0 1 1 0, 000000, 8bit adat, 0
Adat kiolvasása az adatmemóriából 0 0 0 1 0 1 0, 000000, 8bit adat, 0

      (A parancsok legfelső vagy két felső helyiértéken levő bitjének értéke egyes típusoknál közömbös, mindegy, hogy "0" vagy "1".)

      Tulajdonképpen ezen parancsok bevitele választja ki, hogy a beprogramozás, illetve a kiolvasás az EEPROM adatmemória-területről történjen. (Az "Adat betöltése a programmemóriába" parancs hatására a programmemória, az "Adat betöltése az adatmemóriába" parancs hatására az EEPROM adatmemória választódik ki.)

      A 14 bites adat (program utasítás) elöl és hátul egy-egy "0" bittel van kiegészítve, amelyek a START és STOP bitek szerepét töltik be.
      A parancsszó és az adatszó az Adat bemeneten keresztül léptethető be a mikrovezérlőbe az Órajel bemeneten alkalmazott órajel ütemére. Közöttük minimálisan 1µs szünetet kell biztosítani. A bevitelt a legkisebb helyiértékű bittel kell kezdeni a parancsszó és az adatszó esetében is.
      A bevitel során az Adat bemenet tesztelése (vagyis a tényleges bevitel) a bevezetett órajel lefutó élénél történik
      Az adatbevitel időzítési követelményeit mutatja be a következő ábra.

A soros bevitel időzítése
11.2.2-3. Ábra

Vissza a lap tetejére


 

Adat betöltése a programmemóriába

      Az utasításokat egyesével, utasításonként külön Adat betöltése a programmemóriába paranccsal kell betölteni a mikrovezérlőbe. Az adatbetöltés után kerül sor a beléptetett utasítás típustól függően 1-esével, 2-esével, 4-esével vagy 8-asával történő "beégetésére", amely folyamat a későbbiekben bemutatásra kerül.
      Az utasítás a
PC által mutatott memóriacímre kerül betöltésre, amely cím a Cím növelése utasítással változtatható.
      Az Adat betöltése a programmemóriába parancs idődiagramja látható a következő ábrán.

Az adat betöltésének időzítése
11.2.2-4. Ábra

      Látható az ábrán a 6 bites parancsszó és a 16 bites adatszó bitsorrendje: először mindig a legkisebb helyiértékű bit kerül bevitelre. A 16 bites adatszó a "0" értékű START bitből, a 14 bites utasításból és a "0" értékű STOP bitből áll. Természetesen a 14 bites utasítás bit-beviteli sorrendje is a már említetteknek megfelelő.
      Az Adat bemenetre vezetett adatbitek beolvasása az órajel lefutó élénél történik meg, ehhez biztosítani kell, hogy a lefutó él előtt 100ns-mal már, és a lefutó él után 100ns-mal még jelen legyen az érvényes adat.
      A parancsszó és az adatszó között minimum 1µs szünetet kell tartani.

Vissza a lap tetejére


 

Adat kiolvasása a programmemóriából

      Az Adat kiolvasása a programmemóriából paranccsal kiolvashatóak a felhasználói program utasításai, az azonosítók és a konfigurációs szó, így lehetővé válik a "beégetett" utasítások ellenőrzése.
      A
PC által mutatott memóriacímen levő utasítás kerül kiolvasásra, amely cím a Cím növelése utasítással változtatható.
      A parancsszó vétele után következő második órajel felfutó élét követően a mikrovezérlő Adat csatlakozása kimenetként funkcionál és a felfutó élek ütemében maximum 80ns késéssel az Adat kimeneten biztosítja az érvényes adatbitet, illetve összesen a 14 adatbitet (START és STOP bit nincs, az adatszó első és utolsó órajelének ideje alatt nincs érvényes adat a kimeneten).
      Az Adat kiolvasása a programmemóriából parancs idődiagramja látható a következő ábrán.

Az adat kiolvasásának időzítése
11.2.2-5. Ábra

      Látható az ábrán a 6 bites parancsszó és a 16 bites adatszó bitsorrendje: először mindig a legkisebb helyiértékű bit kerül bevitelre, illetve kiolvasásra.
      Az Adat bemenetre vezetett parancsszó-bitek beolvasása az órajel lefutó élénél történik meg, ehhez biztosítani kell, hogy a lefutó él előtt 100ns-mal már, és a lefutó él után 100ns-mal még jelen legyen az érvényes adat.
      A parancsszó és az adatszó között a fenti ábrának megfelelően minimum 1µs szünetet kell tartani.

Vissza a lap tetejére


 

Cím növelése

      A Cím növelése parancs bevitelének hatására a PC értéke eggyel nő.
      A programozási üzemmódba való belépés után a programszámláló (PC) a felhasználói programmemória-területhez van rendelve és egyesével előre léptethető a 0000h-tól az 1FFFh címig, ami után túlcsordulva újra a 0000h címre mutat.
      A Konfiguráció betöltése paranccsal a PC a konfigurációs memóriaterülethez rendelhető, így ezen belül egyesével előre léptethető a 2000h-tól a 3FFFh címig, ami után túlcsordulva újra a 2000h címre mutat. A PC csak a programozási üzemmódból való kilépéssel és újra belépéssel rendelhető újra a felhasználói programmemória-területhez.
      A Cím növelése parancs idődiagramja látható a következő ábrán.

A memóriacím növelése
11.2.2-6. Ábra

      Látható az ábrán a 6 bites parancsszó bitsorrendje: először a legkisebb helyiértékű bit kerül bevitelre.
      Az Adat bemenetre vezetett adatbitek beolvasása az órajel lefutó élénél történik meg, ehhez biztosítani kell, hogy a lefutó él előtt 100ns-mal már, és a lefutó él után 100ns-mal még jelen legyen az érvényes adat.
      A parancsszó és a következő parancsszó között a fenti ábrának megfelelően minimum 1µs szünetet kell tartani.

Vissza a lap tetejére


 

Konfiguráció betöltése

      A Konfiguráció betöltése parancs hatására a PC a 2000h programmemóriacímre mutat és az adatszóban bevitt utasítás "beégethető" erre a címre.
      A PC egyesével előre léptethető a 2000h-tól a 3FFFh címig, ami után túlcsordulva újra a 2000h címre mutat.
      A Konfiguráció betöltése parancs idődiagramja látható a következő ábrán.

A konfiguráció betöltése parancs
11.2.2-7. Ábra

      Látható az ábrán a 6 bites parancsszó és a 16 bites adatszó bitsorrendje: először mindig a legkisebb helyiértékű bit kerül bevitelre. A 16 bites adatszó a "0" értékű START bitből, a 14 bites utasításból és a "0" értékű STOP bitből áll. Természetesen a 14 bites utasítás bit-beviteli sorrendje is a már említetteknek megfelelő.
      Az Adat bemenetre vezetett adatbitek beolvasása az órajel lefutó élénél történik meg, ehhez biztosítani kell, hogy a lefutó él előtt 100ns-mal már, és a lefutó él után 100ns-mal még jelen legyen az érvényes adat.
      A parancsszó és az adatszó között minimum 1µs szünetet kell tartani.

Vissza a lap tetejére


 

Adat betöltése az adatmemóriába

      A 8 bites EEPROM adatmemória kívánt értékekkel való előzetes feltöltésekor az adatok az Adat betöltése az adatmemóriába paranccsal léptethetők be a mikrovezérlőbe. Az adatbetöltés után kerül sor a beléptetett adat "beégetésére", amelynek folyamata a későbbiekben bemutatásra kerül.
      Az adat a
PC alsó 8 bitje által mutatott logikai címnek megfelelő helyre kerül, amely cím a Cím növelése utasítással változtatható.
      Az Adat betöltése az adatmemóriába parancs idődiagramja látható a következő ábrán.

Az adat betöltésének időzítése
11.2.2-8. Ábra

      Látható az ábrán a 6 bites parancsszó és a 16 bites adatszó bitsorrendje: először mindig a legkisebb helyiértékű bit kerül bevitelre. A 16 bites adatszó a "0" értékű START bitből, a 8 bites utasításból, egy 6 bites "000000" szóból és a "0" értékű STOP bitből áll. Természetesen a 8 bites adat bit-beviteli sorrendje is a már említetteknek megfelelő.
      Az Adat bemenetre vezetett adatbitek beolvasása az órajel lefutó élénél történik meg, ehhez biztosítani kell, hogy a lefutó él előtt 100ns-mal már, és a lefutó él után 100ns-mal még jelen legyen az érvényes adat.
      A parancsszó és az adatszó között minimum 1µs szünetet kell tartani.

Vissza a lap tetejére


 

Adat kiolvasása az adatmemóriából

      Az Adat kiolvasása az adatmemóriából paranccsal kiolvashatóak a beépített EEPROM adatmemória-terület egyes 8 bites szavai, így lehetővé válik a programozáskor (vagy az üzemelés során) beírt adatok kiolvasása és ellenőrzése.
      A
PC alsó 8 bitje által mutatott logikai címnek megfelelő helyen levő adat kerül kiolvasásra, amely cím a Cím növelése utasítással változtatható.
      A parancsszó vétele után következő második órajel felfutó élét követően a mikrovezérlő Adat csatlakozása kimenetként funkcionál és a felfutó élek ütemében maximum 80ns késéssel az Adat kimeneten biztosítja az érvényes adatbitet, illetve összesen 14 adatbitet, amelyből az első nyolc a hasznos adat (START és STOP bit nincs, az adatszó első és utolsó órajelének ideje alatt nincs érvényes adat a kimeneten).
      Az Adat kiolvasása az adatmemóriából parancs idődiagramja látható a következő ábrán.

Az adat kiolvasásának időzítése
11.2.2-9. Ábra

      Látható az ábrán a 6 bites parancsszó és a 16 bites adatszó bitsorrendje: először mindig a legkisebb helyiértékű bit kerül bevitelre, illetve kiolvasásra.
      Az Adat bemenetre vezetett parancsszó-bitek beolvasása az órajel lefutó élénél történik meg, ehhez biztosítani kell, hogy a lefutó él előtt 100ns-mal már, és a lefutó él után 100ns-mal még jelen legyen az érvényes adat.
      A parancsszó és az adatszó között a fenti ábrának megfelelően minimum 1µs szünetet kell tartani.

Vissza a lap tetejére


 

PIC16x8x parancsok

      A következő programozási parancsok a PIC16C84, PIC16F83 és PIC16F84 mikrovezérlők esetében használandók. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-3. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Törlési/programozási ciklus indítása 0 0 1 0 0 0 belső 4,5..5,5V
Programmemória teljes törlése 0 0 1 0 0 1   4,5..5,5V
Adatmemória teljes törlése 0 0 1 0 1 1   4,5..5,5V
Teljes törlés előkészítése 1. 0 0 0 0 0 1   4,5..5,5V
Teljes törlés előkészítése 2. 0 0 0 1 1 1   4,5..5,5V

      A parancsok időzítési követelményei az eddigieknek megfelelőek. A programozást indító parancsok hatására megkezdődik az adatok beírása a memóriahelyekre. Ez egy belső időzítésű folyamat, ezért egy bizonyos idő elteltével a folyamat automatikusan leáll, így nincs szükség "programozás leállítása" utasításra.

      Az utasítások beprogramozása szavanként történik. Egy utasítás programozásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 10ms (PIC16C84), illetve 20ms (PIC16F8x) várakozás, ami alatt a beprogramozás automatikusan végbemegy.

      A konfigurációs memória programozása is szavanként történik. Az első adatszó beprogramozásához a következő lépéseket kell végrehajtani:
     ˇ a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és az egyúttal betöltött érték erre a címre be is programozható;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 10ms (PIC16C84), illetve 20ms (PIC16F8x) várakozás, ami alatt a beprogramozás automatikusan végbemegy;
      A további adatok beprogramozása már a programmemória-területhez hasonlóan történik:
     ˇ a Cím növelése paranccsal be kell állítani egy másik PC értéket, vagyis a kívánt programmemória-címet
     ˇ az Adat betöltése a programmemóriába paranccsal lehet betölteni a következő adatszót;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 10ms (PIC16C84), illetve 20ms (PIC16F8x) várakozás, ami alatt a beprogramozás automatikusan végbemegy.

      Az EEPROM adatmemória feltöltése is szavanként történik. Egy 8 bites adat beírásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC alsó 8 bitjének értékét, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beírandó 8 bites adatot;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 10ms (PIC16C84), illetve 20ms (PIC16F8x) várakozás, ami alatt a beírás automatikusan végbemegy.

      A Törlési/programozási ciklus indítása parancs, mint a neve is mutatja a programozás előtt az adott címen végrehajt egy törlést is. Így a mikrovezérlő újraprogramozása előtt nem feltétlenül kell teljes törlést végezni, illetve akár a program egyetlen utasítása is módosítható úgy, hogy a többi érintetlen marad.

      A kódvédelem nélküli programmemória teljes törlésének folyamata:
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ a Programmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 10ms (PIC16C84), illetve 20ms (PIC16F8x) várakozás, ami alatt a törlés automatikusan végbemegy.

      Ha a PC a konfigurációs memóriaterületre mutat, akkor a konfigurációs memória és a felhasználói programmemória egyaránt törlődni fog. Ha a PC a 2007h címre mutat, a konfigurációs szó nem fog törlődni.

      A kódvédelem nélküli adatmemória teljes törlésének folyamata:
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ az Adatmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 10ms (PIC16C84), illetve 20ms (PIC16F8x) várakozás, ami alatt a törlés automatikusan végbemegy.

      A kódvédelemmel ellátott programmemória és adatmemória teljes törlésének és a kódvédelem megszűntetésének folyamata:
     ˇ a Konfiguráció betöltése paranccsal be kell tölteni az (1111111111xxxx)b értéket a mikrovezérlőbe;
     ˇ a Cím növelése paranccsal a 2007h cím beállítása;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 10ms (PIC16C84), illetve 20ms (PIC16F8x) várakozás, ami alatt a törlés automatikusan végbemegy;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs.

      Az (1111111111xxxx)b érték beírásával a konfigurációs szó 10db kódvédelem bitje "1" értékűvé válik, ami a kódvédelem kikapcsolását jelenti.

      A PIC16x8x mikrovezérlők VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 12..14V.

Vissza a lap tetejére


 

PIC16F84A parancsok

      A következő programozási parancsok a PIC16F84A mikrovezérlő esetében használandók. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-4. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Törlési/programozási ciklus indítása 0 0 1 0 0 0 belső 4,5..5,5V
Programozási ciklus indítása 0 1 1 0 0 0 belső 4,5..5,5V
Programmemória teljes törlése x x 1 0 0 1 belső 4,5..5,5V
Adatmemória teljes törlése x x 1 0 1 1 belső 4,5..5,5V
Teljes törlés előkészítése 1. 0 0 0 0 0 1   4,5..5,5V
Teljes törlés előkészítése 2. 0 0 0 1 1 1   4,5..5,5V

      A parancsok időzítési követelményei az eddigieknek megfelelőek. A programozást indító parancsok hatására megkezdődik az adatok beírása a memóriahelyekre. Ez egy belső időzítésű folyamat, ezért egy bizonyos idő elteltével a folyamat automatikusan leáll, így nincs szükség "programozás leállítása" utasításra.

      Az utasítások beprogramozása szavanként történik. Egy utasítás programozásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a beprogramozás automatikusan végbemegy.

      A Törlési/programozási ciklus indítása parancs, mint a neve is mutatja a programozás előtt az adott címen végrehajt egy törlést is. Így a mikrovezérlő újraprogramozása előtt nem feltétlenül kell teljes törlést végezni, illetve akár a program egyetlen utasítása is módosítható úgy, hogy a többi érintetlen marad.

      Az utasítások beprogramozása másképpen is megoldható, de előtte el kell végezni egy teljes törlést. Egy utasítás programozásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 4ms várakozás, ami alatt a beprogramozás automatikusan végbemegy.

      Üres memóriaterület esetén a Törlési/programozási ciklus indítása parancs helyett minden esetben célszerűbb a Programozási ciklus indítása parancs használata, mivel ez csak fele időtartamú.

      A konfigurációs memória programozása is szavanként történik. Az első adatszó beprogramozásához a következő lépéseket kell végrehajtani:
     ˇ a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és az egyúttal betöltött érték erre a címre be is programozható;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a törlés és a beprogramozás automatikusan végbe megy;
      A további adatok beprogramozása már a programmemória-területhez hasonlóan történik:
     ˇ a Cím növelése paranccsal be kell állítani egy másik PC értéket, vagyis a kívánt programmemória-címet
     ˇ az Adat betöltése a programmemóriába paranccsal lehet betölteni a következő adatszót;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt az adott cím törlése és beprogramozása automatikusan végbemegy.

      Az EEPROM adatmemória feltöltése is szavanként történik. Egy 8 bites adat beírásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC alsó 8 bitjének értékét, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beírandó 8 bites adatot;
     ˇ a Törlési/programozási ciklus indítása vagy Programozási ciklus indítása parancs;
     ˇ 4 vagy 8ms várakozás, ami alatt a beírás automatikusan végbemegy.

      A kódvédelem nélküli programmemória teljes törlésének folyamata:
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ a Programmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      Ha a PC a konfigurációs memóriaterületre mutat, akkor a konfigurációs memória és a felhasználói programmemória egyaránt törlődni fog. Ha a PC a 2007h címre mutat, a konfigurációs szó nem fog törlődni.

      A kódvédelem nélküli adatmemória teljes törlésének folyamata:
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ az Adatmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A kódvédelemmel ellátott programmemória és adatmemória teljes törlésének és a kódvédelem megszűntetésének folyamata:
     ˇ a Konfiguráció betöltése paranccsal be kell tölteni a (1111111111xxxx)b értéket a mikrovezérlőbe;
     ˇ a Cím növelése paranccsal a 2007h cím beállítása;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a törlés automatikusan végbemegy;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs.

      Az (1111111111xxxx)b érték beírásával a konfigurációs szó 10db kódvédelem bitje "1" értékűvé válik, ami a kódvédelem kikapcsolását jelenti.

      A PIC16F84A mikrovezérlő VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 12..14V.

Vissza a lap tetejére


 

PIC16F7xx parancsok

      A következő programozási parancsok a PIC16F7x és PIC16F7x7 mikrovezérlők esetében használandók, amely típusok EEPROM adatmemóriát nem tartalmaznak. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-5. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Programozás indítása x x 1 0 0 0 külső 4,5..5,5V
Programozás leállítása x x 1 1 1 0 külső 4,5..5,5V
Programmemória teljes törlése x x 1 0 0 1 belső 4,5..5,5V

      A parancsok időzítési követelményei az eddigieknek megfelelőek. Az utasítások beprogramozása külső időzítésű folyamat, ezért mind "programozás indítása", mind "programozás leállítása" parancsra szükség van. Az utasítások programozása egyesével vagy kettesével történhet.
      A mikrovezérlő teljes újraprogramozása előtt el kell végezni egy teljes törlést, amely viszont egy belső időzítésű folyamat.

      Ha az utasítások beprogramozása szavanként történik, a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 1ms várakozás;
     ˇ a Programozás leállítása parancs.

      Ha az utasítások beprogramozása kettesével történik, a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket úgy, hogy a legkisebb helyiértékű bit "0" értékű legyen;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni az 1. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 2. beprogramozandó 14 bites utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 1ms várakozás;
     ˇ a Programozás leállítása parancs.

      A konfigurációs memória programozása is szavanként történik. Az első adatszó beprogramozásához a következő lépéseket kell végrehajtani:
     ˇ a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és az egyúttal betöltött érték erre a címre be is programozható;
     ˇ a Programozás indítása parancs;
     ˇ 1ms várakozás;
     ˇ a Programozás leállítása parancs
      A további adatok beprogramozása már a programmemória-területhez hasonlóan történik:
     ˇ a Cím növelése paranccsal be kell állítani egy másik PC értéket, vagyis a kívánt programmemória-címet
     ˇ az Adat betöltése a programmemóriába paranccsal lehet betölteni a következő adatszót;
     ˇ a Programozás indítása parancs;
     ˇ 1ms várakozás;
     ˇ a Programozás leállítása parancs.

      A programmemória teljes törlésének folyamata, amelynek hatására a kódvédelem is megszűnik:
     ˇ a Programmemória teljes törlése parancs;
     ˇ 30ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A PIC16F7xx mikrovezérlők VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 12,75..13,25V.

Vissza a lap tetejére


 

PIC16F716 parancsok

      A következő programozási parancsok a PIC16F716 mikrovezérlő esetében használandók, amely típus EEPROM adatmemóriát nem tartalmaz. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-6. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Programozás indítása x 1 1 0 0 0 külső 4,5..5,5V
Programozás leállítása x 0 1 1 1 0 külső 4,5..5,5V
Programmemória teljes törlése x x 1 0 0 1 belső 4,5..5,5V

      A parancsok időzítési követelményei az eddigieknek megfelelőek. Az utasítások beprogramozása külső időzítésű folyamat, ezért mind "programozás indítása", mind "programozás leállítása" parancsra szükség van. Az utasítások programozása egyesével vagy négyesével történhet.
      A mikrovezérlő teljes újraprogramozása előtt el kell végezni egy teljes törlést, amely viszont egy belső időzítésű folyamat.

      Ha az utasítások beprogramozása szavanként történik, a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      Ha az utasítások beprogramozása négyesével történik, a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket úgy, hogy a két legkisebb helyiértékű bit "0" értékű legyen;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni az 1. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 2. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 4. beprogramozandó 14 bites utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      A konfigurációs memória programozása is szavanként történik. Az első adatszó beprogramozásához a következő lépéseket kell végrehajtani:
     ˇ a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és az egyúttal betöltött érték erre a címre be is programozható;
     ˇ a Programozás indítása parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs
      A további adatok beprogramozása már a programmemória-területhez hasonlóan történik:
     ˇ a Cím növelése paranccsal be kell állítani egy másik PC értéket, vagyis a kívánt programmemória-címet
     ˇ az Adat betöltése a programmemóriába paranccsal lehet betölteni a következő adatszót;
     ˇ a Programozás indítása parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      A programmemória és konfigurációs szó törlésének folyamata, amelynek hatására a kódvédelem is megszűnik, de az azonosító mező érintetlen marad:
     ˇ a Programmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A programmemória teljes törlésének folyamata, amelynek hatására megszűnik a kódvédelem is:
     ˇ a Konfiguráció betöltése parancs tetszőleges érték betöltésével;
     ˇ a Programmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A PIC16F716 mikrovezérlő VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 11..13,5V.

Vissza a lap tetejére


 

PIC12/16 F63x/F68x parancsok

      A következő programozási parancsok a PIC12F635, PIC12F683, PIC16F636, PIC16F639, PIC16F684 és PIC16F688 mikrovezérlők esetében használandók. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-7. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Programozási ciklus indítása x 0 1 0 0 0 belső 2..5,5V
Programozás indítása x 1 1 0 0 0 külső 2..5,5V
Programozás leállítása x 0 1 0 1 0 külső 2..5,5V
Programmemória teljes törlése x x 1 0 0 1 belső 4,5..5,5V
(beépített ICD esetén 2..5,5V)
Adatmemória teljes törlése x x 1 0 1 1 belső 4,5..5,5V
(beépített ICD esetén 2..5,5V)
Programmemória sor törlése x 1 0 0 0 1 belső 4,5..5,5V
(beépített ICD esetén 2..5,5V)

      A parancsok időzítési követelményei az eddigieknek megfelelőek. Egyes utasítások beprogramozása külső időzítésű folyamat, ezért mind "programozás indítása", mind "programozás leállítása" parancsra szükség van, mások belső időzítésűek, így ezeknél "programozás leállítása" parancsra nincs szükség . Az utasítások programozása egyesével vagy négyesével történhet.
      A mikrovezérlő teljes újraprogramozása előtt el kell végezni egy teljes törlést, amely egy belső időzítésű folyamat.

      Az utasítások külső időzítésű beprogramozása egyesével a következő lépésekben hajtható végre:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 2,5ms várakozás;
     ˇ a Programozás leállítása parancs.

      Az utasítások belső időzítésű beprogramozása egyesével a következő lépésekben hajtható végre:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 2,5ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy.

      Az utasítások külső időzítésű beprogramozása négyesével a következő lépésekben hajtható végre:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket úgy, hogy a két legkisebb helyiértékű bit "0" értékű legyen;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni az 1. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 2. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 4. beprogramozandó 14 bites utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 2,5ms várakozás;
     ˇ a Programozás leállítása parancs.

      Az utasítások belső időzítésű beprogramozása négyesével a következő lépésekben hajtható végre:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket úgy, hogy a két legkisebb helyiértékű bit "0" értékű legyen;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni az 1. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 2. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 4. beprogramozandó 14 bites utasítást;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 2,5ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy .

      A csak szavanként írható EEPROM adatmemória külső időzítésű programozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beprogramozni kívánt 8 bites adatszót;
     ˇ a Programozás indítása parancs;
     ˇ 2,5ms várakozás;
     ˇ a Programozás leállítása parancs.

      A csak szavanként írható EEPROM adatmemória belső időzítésű programozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beprogramozni kívánt 8 bites adatszót;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 6ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy.

      A konfigurációs memória programozása is történhet egyesével vagy négyesével. A négyesével történő programozás esetén gondoskodni kell a mikrovezérlő négyszavas belső tároló-regisztertömbjének nullázásáról. Erre azért van szükség, mert a konfigurációs memóriaterület csak részlegesen van fizikailag kialakítva, így előfordulhat, hogy a tároló-regisztertömb nem nullázódik, mivel nincs lehetőség mind a négy szavának programozására. A regisztertömb nullázható négy 3FFFh adat egymás utáni betöltésével, vagy a programozási üzemmódból való kilépéssel.
      A Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és a programozás a fent már bemutatott módszerekkel megkezdhető.

      A konfigurációs memóriába gyárilag beprogramozott kalibrációs értékeket nem szükséges kiolvasni és feljegyezni, mert az azonosító mező és a konfigurációs szó ezek érintetlenül hagyásával, a kódvédelemtől függetlenül törölhető.

      A felhasználói programmemória és a konfigurációs szó törlésének folyamata, az azonosító mező és a kalibrációs szavak törlése nélkül, amely eljárás aktív kódvédelem esetén az EEPROM adatmemóriát is törli:
     ˇ a Programmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A felhasználói programmemória, az azonosító mező és a konfigurációs szó törlésének folyamata, a kalibrációs szavak törlése nélkül, amely eljárás aktív kódvédelem esetén az EEPROM adatmemóriát is törli:
     ˇ a Konfiguráció betöltése parancs tetszőleges érték betöltésével;
     ˇ a Programmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A felhasználói programmemória, az azonosító mező, a konfigurációs szó és a kalibrációs szavak törlésének folyamata, amely eljárás aktív kódvédelem esetén az EEPROM adatmemóriát is törli:
     ˇ a Konfiguráció betöltése parancs tetszőleges érték betöltésével;
     ˇ a Cím növelése paranccsal be kell állítani a PC értékét 2008h-ra vagy 2009h-re;
     ˇ a Programmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A programmemória 16 szavas törlése, amely eljárás hatástalan, ha a PC a konfigurációs memóriaterületre mutat vagy, ha a kódvédelem aktív:
     ˇ a Programmemória sor törlése parancs;
     ˇ 6ms várakozás, ami alatt a törlés automatikusan végbemegy.

      A programmemória 16 szavas törlésekor a PC négy legkisebb helyiértékű bitje nincs figyelembe véve.

      Az EEPROM adatmemória törlésének folyamata, amely eljárás aktív kódvédelem esetén hatástalan:
     ˇ az Adatmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A kódvédelem ajánlott megszűntetési eljárása, amely nem törli a kalibrációs regisztereket:
     ˇ a Programmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy;
     ˇ a Konfiguráció betöltése parancs tetszőleges érték betöltésével;
     ˇ a Programmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy;
     ˇ az Adatmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A PIC12/16 F63x/F68x mikrovezérlők VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 10..12V.

Vissza a lap tetejére


 

PIC12F6xx/16F630/16F676 parancsok

      A következő programozási parancsok a PIC12F629, PIC12F675, PIC16F630 és PIC16F676 mikrovezérlők esetében használandók. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-8. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Programozási ciklus indítása 0 0 1 0 0 0 belső 4,5..5,5V
(beépített ICD esetén 2..5,5V)
Programozás indítása 0 1 1 0 0 0 külső 4,5..5,5V
(beépített ICD esetén 2..5,5V)
Programozás leállítása 0 0 1 0 1 0 külső 4,5..5,5V
(beépített ICD esetén 2..5,5V)
Programmemória teljes törlése x x 1 0 0 1 belső 4,5..5,5V
(beépített ICD esetén 2..5,5V)
Adatmemória teljes törlése x x 1 0 1 1 belső 4,5..5,5V
(beépített ICD esetén 2..5,5V)

      A parancsok időzítési követelményei az eddigieknek megfelelőek. Egyes utasítások beprogramozása külső időzítésű folyamat, ezért mind "programozás indítása", mind "programozás leállítása" parancsra szükség van, mások belső időzítésűek, így ezeknél "programozás leállítása" parancsra nincs szükség .
      A mikrovezérlő teljes újraprogramozása előtt el kell végezni egy teljes törlést, amely egy belső időzítésű folyamat.

      Az utasítások külső időzítésű beprogramozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      Az utasítások belső időzítésű beprogramozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 2,5ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy.

      Az EEPROM adatmemória külső időzítésű programozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beprogramozni kívánt 8 bites adatszót;
     ˇ a Programozás indítása parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      Az EEPROM adatmemória belső időzítésű programozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beprogramozni kívánt 8 bites adatszót;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 6ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy.

      A konfigurációs memória programozása is szavanként történik. Az első adatszó beprogramozásához a következő lépéseket kell végrehajtani:
     ˇ a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és az egyúttal betöltött érték erre a címre be is programozható;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 2,5ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy;
      A további adatok beprogramozása már a programmemória-területhez hasonlóan történik:
     ˇ a Cím növelése paranccsal be kell állítani egy másik PC értéket, vagyis a kívánt programmemória-címet
     ˇ az Adat betöltése a programmemóriába paranccsal lehet betölteni a következő adatszót;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 2,5ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy.

      A felhasználói programmemória (0000h..1FFFh) törlésének folyamata, amely eljárás aktív kódvédelem esetén az EEPROM adatmemóriát is törli:
     ˇ a Programmemória teljes törlése parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A programmemória törlése előtt az oda gyárilag beprogramozott belső oszcillátor és feszültség-referencia kalibrációs értékeket ki kell olvasni és feljegyezni, mert ezeket a törölt értékeket a helyes működés érdekében a programozás során vissza kell írni.

      A programmemória teljes törlésének folyamata, amelynek hatására törlődik az azonosító mező és megszűnik az esetleges kódvédelem is:
     ˇ a Konfiguráció betöltése parancs tetszőleges érték betöltésével;
     ˇ a Programmemória teljes törlése parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      Az EEPROM adatmemória törlésének folyamata, amely eljárás aktív kódvédelem esetén hatástalan:
     ˇ az Adatmemória teljes törlése parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A kódvédelem ajánlott megszűntetési eljárása:
     ˇ a Konfiguráció betöltése parancs tetszőleges érték betöltésével;
     ˇ a Programmemória teljes törlése parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy;
     ˇ az Adatmemória teljes törlése parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A PIC12F6xx/16F630/16F676 mikrovezérlők VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 10..12V.

Vissza a lap tetejére


 

PIC16F62x parancsok

      A következő programozási parancsok a PIC16F627 és PIC16F628 mikrovezérlők esetében használandók, amelyek alacsony feszültségű programozási üzemmóddal (LVP) is rendelkeznek. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-9. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Törlési/programozási ciklus indítása 0 0 1 0 0 0 belső 4,5..5,5V
Programozási ciklus indítása 0 1 1 0 0 0 belső 4,5..5,5V
Programmemória teljes törlése x x 1 0 0 1 belső 4,5..5,5V
Adatmemória teljes törlése x x 1 0 1 1 belső 4,5..5,5V
Teljes törlés előkészítése 1. 0 0 0 0 0 1   4,5..5,5V
Teljes törlés előkészítése 2. 0 0 0 1 1 1   4,5..5,5V

      A parancsok időzítési követelményei az eddigieknek megfelelőek. A programozást indító parancsok hatására megkezdődik az adatok beírása a memóriahelyekre. Ez egy belső időzítésű folyamat, ezért egy bizonyos idő elteltével a folyamat automatikusan leáll, így nincs szükség "programozás leállítása" utasításra.

      Az utasítások beprogramozása szavanként történik. Egy utasítás programozásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 13ms várakozás, ami alatt a beprogramozás automatikusan végbemegy.

      A Törlési/programozási ciklus indítása parancs, mint a neve is mutatja a programozás előtt az adott címen végrehajt egy törlést is. Így a mikrovezérlő újraprogramozása előtt nem feltétlenül kell teljes törlést végezni, illetve akár a program egyetlen utasítása is módosítható úgy, hogy a többi érintetlen marad.

      Az utasítások beprogramozása másképpen is megoldható, de előtte el kell végezni egy teljes törlést. Egy utasítás programozásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a beprogramozás automatikusan végbemegy.

      Üres memóriaterület esetén a Törlési/programozási ciklus indítása parancs helyett minden esetben célszerűbb a Programozási ciklus indítása parancs használata, mivel ez csak fele időtartamú.

      A konfigurációs memória programozása is szavanként történik. Az első adatszó beprogramozásához a következő lépéseket kell végrehajtani:
     ˇ a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és az egyúttal betöltött érték erre a címre be is programozható;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 13ms várakozás, ami alatt a törlés és a beprogramozás automatikusan végbe megy;
      A további adatok beprogramozása már a programmemória-területhez hasonlóan történik:
     ˇ a Cím növelése paranccsal be kell állítani egy másik PC értéket, vagyis a kívánt programmemória-címet
     ˇ az Adat betöltése a programmemóriába paranccsal lehet betölteni a következő adatszót;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 13ms várakozás, ami alatt az adott cím törlése és beprogramozása automatikusan végbemegy.

      Az EEPROM adatmemória feltöltése is szavanként történik. Egy 8 bites adat beírásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC alsó 8 bitjének értékét, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beírandó 8 bites adatot;
     ˇ a Törlési/programozási ciklus indítása vagy Programozási ciklus indítása parancs;
     ˇ 8 vagy 13ms várakozás, ami alatt a beírás automatikusan végbemegy.

      A kódvédelem nélküli programmemória teljes törlésének folyamata:
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ a Programmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 5ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      Ha a PC a konfigurációs memóriaterületre mutat, akkor az azonosító mező és a felhasználói programmemória fog törlődni, de a konfigurációs szó érintetlen marad.

      A kódvédelem nélküli adatmemória teljes törlésének folyamata:
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ az Adatmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 5ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A kódvédelemmel ellátott programmemória és adatmemória teljes törlésének és a kódvédelem megszűntetésének folyamata:
     ˇ a Konfiguráció betöltése paranccsal be kell tölteni a 0000h értéket a mikrovezérlőbe;
     ˇ a Cím növelése paranccsal a 2007h cím beállítása;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 13ms várakozás, ami alatt a törlés automatikusan végbemegy;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs.

      A PIC16F62x mikrovezérlők VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 9..13,5V.

Vissza a lap tetejére


 

PIC16F6xxA parancsok

      A következő programozási parancsok a PIC16F627A, PIC16F628A és PIC16F648A mikrovezérlők esetében használandók, amelyek alacsony feszültségű programozási üzemmóddal (LVP) is rendelkeznek. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-10. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Programozási ciklus indítása x 0 1 0 0 0 belső 2..5,5V
Programmemória teljes törlése x x 1 0 0 1 belső 4,5..5,5V
Adatmemória teljes törlése x x 1 0 1 1 belső 4,5..5,5V

      A parancsok időzítési követelményei az eddigieknek megfelelőek. A programozást indító parancs hatására megkezdődik az adatszó beírása a kiválasztott memóriahelyre. Ez egy belső időzítésű folyamat, ezért egy bizonyos idő elteltével a folyamat automatikusan leáll, így nincs szükség "programozás leállítása" utasításra..
      A mikrovezérlő teljes újraprogramozása előtt el kell végezni egy teljes törlést.

      Az utasítások beprogramozása szavanként történik. Egy utasítás programozásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 2,5ms várakozás, ami alatt a beprogramozás automatikusan végbemegy.

      A konfigurációs memória programozása is szavanként történik. Az első adatszó beprogramozásához a következő lépéseket kell végrehajtani:
     ˇ a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és az egyúttal betöltött érték erre a címre be is programozható;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 2,5ms várakozás, ami alatt a beprogramozás automatikusan végbe megy;
      A további adatok beprogramozása már a programmemória-területhez hasonlóan történik:
     ˇ a Cím növelése paranccsal be kell állítani egy másik PC értéket, vagyis a kívánt programmemória-címet
     ˇ az Adat betöltése a programmemóriába paranccsal lehet betölteni a következő adatszót;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 2,5ms várakozás, ami alatt az adott cím beprogramozása automatikusan végbemegy.

      Az EEPROM adatmemória feltöltése is szavanként történik. Egy 8 bites adat beírásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC alsó 8 bitjének értékét, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beírandó 8 bites adatot;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 6ms várakozás, ami alatt a beírás automatikusan végbemegy.

      A programmemória és a konfigurációs szó törlésének folyamata:
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ a Programmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.
      A folyamat nem törli az azonosító mezőt, de törli az EEPROM adatmemóriát, ha az kódvédett volt.

      A programmemória, az azonosító mező és a konfigurációs szó törlésének folyamata:
     ˇ a Konfiguráció betöltése paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ a Programmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.
      A folyamat törli az EEPROM adatmemóriát is, ha az kódvédett volt.

      Az EEPROM adatmemória teljes törlésének folyamata:
     ˇ az Adatmemória teljes törlése parancs;
     ˇ 6ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.
      Ha a kódvédelem aktív, a törlési folyamat hatástalan.

      A PIC16F6xxA mikrovezérlők VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 10..13,5V.

Vissza a lap tetejére


 

PIC16F81x/F87/F88 parancsok

      A következő programozási parancsok a PIC12F818, PIC16F819, PIC16F87 és PIC16F88 mikrovezérlők esetében használandók. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-11. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Programozás indítása x 1 1 0 0 0 külső 2..5,5V
Törlés indítása x 0 1 0 0 0 külső 2..5,5V
Programozás leállítása x 1 0 1 1 1 külső 2..5,5V
Programmemória teljes törlése x 0 1 0 0 1 külső 4,5..5,5V
Adatmemória teljes törlése x 0 1 0 1 1 külső 4,5..5,5V
Teljes törlés x 1 1 1 1 1 belső 4,5..5,5V

      A parancsok időzítési követelményei az eddigieknek megfelelőek. Egyes utasítások beprogramozása külső időzítésű folyamat, ezért mind "programozás indítása", mind "programozás leállítása" parancsra szükség van, mások belső időzítésűek, így ezeknél "programozás leállítása" parancsra nincs szükség .
      Az utasítások programozása négyesével, az EEPROM adatmemória programozása szavanként történhet. A "törlés indítása" paranccsal a programmemória 32 szavas blokkokban, míg az adatmemória csak szavanként törölhető. Egy blokk, illetve egy szó beprogramozása előtt az adott memóriahelyeket törölni kell. A mikrovezérlő teljes újraprogramozása előtt célszerű elvégezni egy teljes törlést, amely egy belső időzítésű folyamat.

      Az utasítások beprogramozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt 00b-re végződő programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni az 1. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 2. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3. beprogramozandó 14 bites utasítást;
     ˇ a Cím növelése paranccsal növelni kell a PC értéket;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 4. beprogramozandó 14 bites utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 4,5V-os tápfeszültség felett 1ms, 4,5V-os tápfeszültség alatt 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      A Programozás leállítása parancs a programozáshoz használt ideiglenes négyszavas tárolóregiszter-tömb regisztereit 3FFFh értékkel tölti fel, vagyis "nullázza".

      Az EEPROM adatmemória programozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beprogramozni kívánt 8 bites adatszót;
     ˇ a Programozás indítása parancs;
     ˇ 4,5V-os tápfeszültség felett 1ms, 4,5V-os tápfeszültség alatt 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      A konfigurációs memória programozása a programmemóriához hasonlóan történik, de a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-re változik. A konfigurációs szó csak akkor írható, ha a PC értéke 2007h-re van beállítva.

      A programmemória egy 32 szavas blokkjának törlése, amely eljárás aktív kódvédelem esetén hatástalan:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt 00000b-re végződő programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni egy tetszőleges értéket;      ˇ a Törlés indítása parancs;
     ˇ 4,5V-os tápfeszültség felett 1ms, 4,5V-os tápfeszültség alatt 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      Az EEPROM adatmemória egy szavának törlése, amely eljárás aktív kódvédelem esetén hatástalan:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni egy tetszőleges értéket;
     ˇ a Törlés indítása parancs;
     ˇ 4,5V-os tápfeszültség felett 1ms, 4,5V-os tápfeszültség alatt 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      A programmemória törlése előtt az oda gyárilag beprogramozott belső oszcillátor kalibrációs értékeit ki kell olvasni és feljegyezni, mert ezeket a törölt értékeket a helyes működés érdekében a programozás során vissza kell írni.

      A felhasználói programmemória teljes törlése, amely eljárást 4,5..5,5V-os tápfeszültség mellett kell alkalmazni, de aktív kódvédelem esetén hatástalan:
     ˇ a Programmemória teljes törlése parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      A felhasználói és a konfigurációs programmemória teljes törlése, amely eljárást 4,5..5,5V-os tápfeszültség mellett kell alkalmazni, de aktív kódvédelem esetén hatástalan:
     ˇ a Konfiguráció betöltése parancs tetszőleges értékkel, amellyel megcímződik a konfigurációs memória;
     ˇ a Programmemória teljes törlése parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      Ha teljes törléskor a PC értéke a konfigurációs szóra mutat, vagyis 2007h, akkor a konfigurációs szó nem törlődik.

      Az EEPROM adatmemória teljes törlése, amely eljárást 4,5..5,5V-os tápfeszültség mellett kell alkalmazni, de aktív kódvédelem esetén hatástalan:
     ˇ a Adatmemória teljes törlése parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      A kódvédelem megszűntetése teljes törléssel jár, amely eljárást 4,5..5,5V-os tápfeszültség mellett kell alkalmazni:
     ˇ a Teljes törlés parancs;
     ˇ 8ms várakozás, ami alatt a programmemória, az EEPROM adatmemória, az azonosító mező és a konfigurációs szó törlése teljesen végbemegy.

      A kódvédelem nélküli felhasználói programmemória és a konfigurációs szó törlése, amely eljárást 4,5..5,5V-os tápfeszültség mellett kell alkalmazni:
     ˇ a Teljes törlés parancs;
     ˇ 8ms várakozás, ami alatt a törlés teljesen végbemegy.

      A kódvédelem nélküli felhasználói, konfigurációs programmemória és EEPROM adatmemória törlése, amely eljárást 4,5..5,5V-os tápfeszültség mellett kell alkalmazni:
     ˇ a Konfiguráció betöltése parancs tetszőleges értékkel, amellyel megcímződik a konfigurációs memória;
     ˇ a Teljes törlés parancs;
     ˇ 8ms várakozás, ami alatt a törlés teljesen végbemegy.

      A PIC16F81x/F87/F88 mikrovezérlők VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 9..13,5V.

Vissza a lap tetejére


 

PIC16F87x parancsok

      A következő programozási parancsok a PIC16F870, PIC16F871, PIC16F872, PIC16F873, PIC16F874, PIC16F876 és PIC16F877 mikrovezérlők esetében használandók, amelyek alacsony feszültségű programozási üzemmóddal (LVP) is rendelkeznek. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-12. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Törlési/programozási ciklus indítása 0 0 1 0 0 0 belső 2,2..5,5V
Programozási ciklus indítása 0 1 1 0 0 0 belső 4,5..5,5V
Teljes törlés előkészítése 1. 0 0 0 0 0 1   4,5..5,5V
Teljes törlés előkészítése 2. 0 0 0 1 1 1   4,5..5,5V

      A parancsok időzítési követelményei az eddigieknek megfelelőek. A programozást indító parancsok hatására megkezdődik az adatok beírása a memóriahelyekre. Ez egy belső időzítésű folyamat, ezért egy bizonyos idő elteltével a folyamat automatikusan leáll, így nincs szükség "programozás leállítása" utasításra.

      Az utasítások beprogramozása szavanként történik. Egy utasítás programozásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a beprogramozás automatikusan végbemegy.

      A Törlési/programozási ciklus indítása parancs, mint a neve is mutatja a programozás előtt az adott címen végrehajt egy törlést is. Így a mikrovezérlő újraprogramozása előtt nem feltétlenül kell teljes törlést végezni, illetve akár a program egyetlen utasítása is módosítható úgy, hogy a többi érintetlen marad.

      Az utasítások beprogramozása másképpen is megoldható, de előtte el kell végezni egy teljes törlést. Egy utasítás programozásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozási ciklus indítása parancs;
     ˇ 4ms várakozás, ami alatt a beprogramozás automatikusan végbemegy.

      Üres memóriaterület esetén a Törlési/programozási ciklus indítása parancs helyett minden esetben célszerűbb a Programozási ciklus indítása parancs használata, mivel ez csak fele időtartamú.

      A konfigurációs memória programozása is szavanként történik. Az első adatszó beprogramozásához a következő lépéseket kell végrehajtani:
     ˇ a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és az egyúttal betöltött érték erre a címre be is programozható;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a törlés és a beprogramozás automatikusan végbe megy;
      A további adatok beprogramozása már a programmemória-területhez hasonlóan történik:
     ˇ a Cím növelése paranccsal be kell állítani egy másik PC értéket, vagyis a kívánt programmemória-címet
     ˇ az Adat betöltése a programmemóriába paranccsal lehet betölteni a következő adatszót;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt az adott cím törlése és beprogramozása automatikusan végbemegy.

      Az EEPROM adatmemória feltöltése is szavanként történik. Egy 8 bites adat beírásához a következő lépéseket kell végrehajtani:
     ˇ a Cím növelése paranccsal be kell állítani a PC alsó 8 bitjének értékét, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beírandó 8 bites adatot;
     ˇ a Törlési/programozási ciklus indítása vagy Programozási ciklus indítása parancs;
     ˇ 8, illetve 4ms várakozás, ami alatt a beírás automatikusan végbemegy.

      A kódvédelem nélküli programmemória teljes törlésének folyamata, amely az azonosító mezőre és a konfigurációs szóra nincs hatással:
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a törlés automatikusan végbemegy;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs.

      A kódvédelem nélküli adatmemória teljes törlésének folyamata:
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a törlés automatikusan végbemegy;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs.

      A kódvédelemmel ellátott programmemória és adatmemória teljes törlésének és a kódvédelem megszűntetésének folyamata:
     ˇ a Konfiguráció betöltése paranccsal be kell tölteni a 3FFFh értéket a mikrovezérlőbe;
     ˇ a Cím növelése paranccsal a 2007h cím beállítása;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a törlés automatikusan végbemegy;
     ˇ a Teljes törlés előkészítése 1. parancs;
     ˇ a Teljes törlés előkészítése 2. parancs.

      A PIC16F87x mikrovezérlők VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 9..13,5V.

Vissza a lap tetejére


 

PIC16F87xA parancsok

      A következő programozási parancsok a PIC16F873A, PIC16F874A, PIC16F876A és PIC16F877A mikrovezérlők esetében használandók. Ezek 6 bites programozás- és törlésvezérlő parancsok, amelyeket nem követ adatszó.

11.2.2-13. Táblázat
Parancs Parancsszó Az időzítés típusa Az alkalmazás
feszültség-
tartománya
5.bit ...... 0.bit
Törlési/programozási ciklus indítása x 0 1 0 0 0 belső 2,2..5,5V
Programozás indítása x 1 1 0 0 0 külső 4,5..5,5V
Programozás leállítása x 1 0 1 1 1 külső 4,5..5,5V
Programmemória teljes törlése x 0 1 0 0 1 belső 4,5..5,5V
Adatmemória teljes törlése x 0 1 0 1 1 belső 4,5..5,5V
Teljes törlés x 1 1 1 1 1 belső 4,5..5,5V

      A parancsok időzítési követelményei az eddigieknek megfelelőek. Egyes utasítások beprogramozása külső időzítésű folyamat, ezért mind "programozás indítása", mind "programozás leállítása" parancsra szükség van, mások belső időzítésűek, így ezeknél "programozás leállítása" parancsra nincs szükség .
      A mikrovezérlő teljes újraprogramozása előtt el kell végezni egy teljes törlést, amely egy belső időzítésű folyamat.

      Az utasítások külső időzítésű szavankénti beprogramozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      Az utasítások belső időzítésű szavankénti beprogramozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a beprogramozni kívánt 14 bites utasítást;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy.

      Az utasítások külső időzítésű nyolcszavas beprogramozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt programmemória-címet;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni az 1. utasítást;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 2. utasítást;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 3. utasítást;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 4. utasítást;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni az 5. utasítást;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 6. utasítást;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 7. utasítást;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal be kell tölteni a 8. utasítást;
     ˇ a Programozás indítása parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      Az EEPROM adatmemória külső időzítésű programozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beprogramozni kívánt 8 bites adatszót;
     ˇ a Programozás indítása parancs;
     ˇ 2ms várakozás;
     ˇ a Programozás leállítása parancs.

      Az EEPROM adatmemória belső időzítésű programozása a következő lépésekből áll:
     ˇ a Cím növelése paranccsal be kell állítani a PC értéket, vagyis a kívánt adatmemória-címet;
     ˇ az Adat betöltése az adatmemóriába paranccsal be kell tölteni a beprogramozni kívánt 8 bites adatszót;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy.

      A konfigurációs memória programozása is szavanként történik:
     ˇ a Konfiguráció betöltése paranccsal ki kell választani a konfigurációs memóriaterületet, aminek hatására a PC értéke 2000h-ra változik és egyúttal betöltődik az azonosító mező 1. eleme;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal betöltődik az azonosító mező 2. eleme;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal betöltődik az azonosító mező 3. eleme;
     ˇ a Cím növelése parancs;
     ˇ az Adat betöltése a programmemóriába paranccsal betöltődik az azonosító mező 4. eleme;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy;
     ˇ a Cím növelése paranccsal be kell állítani a PC értékét 2007h-re;
     ˇ az Adat betöltése a programmemóriába paranccsal lehet betölteni a konfigurációs szót;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a programozási ciklus automatikusan végbemegy.

      A felhasználói programmemória teljes törlésének folyamata, amely eljárás aktív kódvédelem esetén hatástalan:
     ˇ a Programmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A felhasználói és konfigurációs programmemória teljes törlésének folyamata, amely eljárás aktív kódvédelem esetén hatástalan:
     ˇ a Konfiguráció betöltése parancs tetszőleges érték betöltésével;
     ˇ a Programmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A felhasználói és konfigurációs programmemória teljes törlésének folyamata a konfigurációs szó törlése nélkül, amely eljárás aktív kódvédelem esetén hatástalan:
     ˇ a Konfiguráció betöltése parancs tetszőleges érték betöltésével;
     ˇ a Cím növelése paranccsal be kell állítani a PC értékét 2007h-re;
     ˇ a Programmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      Az EEPROM adatmemória teljes törlésének folyamata, amely eljárás aktív kódvédelem esetén hatástalan:
     ˇ az Adatmemória teljes törlése parancs;
     ˇ a Törlési/programozási ciklus indítása parancs;
     ˇ 8ms várakozás, ami alatt a teljes törlés automatikusan végbemegy.

      A kódvédelem megszűntetése teljes törléssel jár, amely eljárást 4,5..5,5V-os tápfeszültség mellett kell alkalmazni:
     ˇ a Teljes törlés parancs;
     ˇ 8ms várakozás, ami alatt a programmemória, az EEPROM adatmemória, az azonosító mező és a konfigurációs szó törlése teljesen végbemegy.

      A kódvédelem nélküli felhasználói programmemória és a konfigurációs szó törlése az azonosító mező meghagyásával, amely eljárást 4,5..5,5V-os tápfeszültség mellett kell alkalmazni:
     ˇ a Teljes törlés parancs;
     ˇ 8ms várakozás, ami alatt a törlés teljesen végbemegy.

      A kódvédelem nélküli felhasználói és konfigurációs programmemória törlése, amely eljárást 4,5..5,5V-os tápfeszültség mellett kell alkalmazni:
     ˇ a Konfiguráció betöltése parancs tetszőleges értékkel, amellyel megcímződik a konfigurációs memória;
     ˇ a Teljes törlés parancs;
     ˇ 8ms várakozás, ami alatt a törlés teljesen végbemegy.

      A PIC16F87xA mikrovezérlők VPP gyári jelölésű programozó, illetve programozási üzemmód kiválasztó feszültsége: 9..13,5V.

Vissza a lap tetejére


 

Programozási folyamatábrák

      A következő ábrán látható egy szavankénti felhasználói memória programozási algoritmus, amely a sikerességet a tápfeszültség szélsőértékeinél is ellenőrzi. (Ehhez természetesen megfelelő programozó készülékre is szükség van.)

A programozás blokkvázlata
11.2.2-10. Ábra

      Az adatmemória és a konfigurációs memória-terület szavankénti programozásának folyamatábrája látható a következő ábrán.

Az adatmemória-programozás blokkvázlata
11.2.2-11. Ábra

      Belső időzítésű programozási ciklus szubrutin:

Belső időzítésű programozási ciklus
11.2.2-12. Ábra

      Külső időzítésű programozási ciklus szubrutin:

Külső időzítésű programozási ciklus
11.2.2-13. Ábra

      A programkiolvasás folyamatábrája:

A programkiolvasás blokkvázlata
11.2.2-14. Ábra

      A programozási ciklusok típusfüggő pontos várakozási időtartamai és a többszavas programozási folyamatok menete az egyes mikrovezérlő típusok fenti bemutatásaiban és a fejezet elején felsorolt és letölthető gyári programozási útmutatókban megtalálhatóak.

Vissza a lap tetejére


 

Ellenőrző összeg

      Egy adott állapotú programmemóriához előállított ellenőrző összeg lehetővé teszi a gyors hibakeresést, illetve ellenőrzést. Egy felprogramozott mikrovezérlő esetében a beprogramozott utasításokat bináris számként összeadva, minden esetben ugyanannak az összegnek kell adódnia. Bármilyen kis eltérés hibát jelent.

      Az ellenőrző összeg több módszerrel is képezhető:
     ˇ a teljes felhasználói programmemória összegzésével, amely egyszerűen megoldható, mert nem szükséges a program hosszának ismerete;
     ˇ csak a felhasznált programmemória összegzésével, amely bizonyos szempontból pontosabb ellenőrzést tesz lehetővé, mert a maradék memóriában fellépő hibát nem jelzi (ez konstans értékkel feltöltött maradék memória esetén lényeges).

      Az ellenőrző összeghez hozzáadható még a konfigurációs szó is, így egyetlen lépéssel ellenőrizhető az adott mikrovezérlő.
      Az azonosító mező tartalmát nem mindig célszerű az ellenőrző összegben felhasználni. Egyedi mikrovezérlő azonosítók esetén különben minden azonosra programozott, de egyedileg azonosított mikrovezérlő ellenőrző összege más lesz.
      Egy 8kx14 bites programmemória utasításainak összege akár egy 27 bites szám is lehet, amely hexadecimálisan hét számjegyű. Az ellenőrző összeg képzésénél, illetve alkalmazásánál nincs szükség a teljes összegre, hiszen bármilyen kis programhiba is már az alsó helyiértékekben elváltozást okoz. Általában az összeg alsó 8 bitje már kielégítő ellenőrző számot alkot.

      A Microchip programozó készülékei a fejezet elején megtalálható programozási útmutatókban leírt összegzési algoritmusokat használják, amelyek mikrovezérlő típusonként és típuson belül is memória kódvédelemtől függően eltérőek. A Microchip 16 bites ellenőrző összegeket használ.

  Tudomány és Technika (test@t-es-t.hu)


 

<< Előző oldal   Vissza a tartalomjegyzékhez   Vissza a lap tetejére   Következő oldal >>

Vissza a főoldalra    Vissza a PIC főoldalra