Vissza a főoldalra    Vissza a PIC főoldalra

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

 


14.4. A párhuzamos slave port kezelése


Megszakításos kezelés
Kezelés jelzőbit figyeléssel
Adatsor gyors átvitele


      A párhuzamos slave port kétféle programozási módszerrel működtethető:
     ˇ megszakításos kezelés esetén a főprogram csak a konkrét I/O műveletek végrehajtásakor szünetel, majd a megszakítás helyétől folytatódik;
     ˇ jelzőbit figyelés esetén a főprogram megfelelően sűrű időközönként ellenőrzi a párhuzamos slave port jelzőbitjeit és ezek állapota alapján kezdeményez különböző műveleteket. Ez a módszer kis adatforgalom esetén viszonylag nagy időhányadot foglal le, de nagyobb forgalom, illetve ismert elemszámú adathalmaz átvitele esetén gyorsabb működtetést tesz lehetővé, mint a megszakításos kezelés.
      A feladatok többségénél azonban a két módszer kombinációja adja az optimális megoldást. Például: a mikroprocesszortól jövő első adat (parancsszó) megszakításos fogadása, majd az azt követő adatsor jelzőbit figyeléses gyors kiküldése.


Megszakításos kezelés:

      A párhuzamos slave port megszakításos kezeléséhez a következő alapbeállításokat kell elvégezni:
     ˇ ha a vezérlő jeleket fogadó E port analóg bemenetként is felhasználható, akkor azt digitális I/O kivezetésként kell konfigurálni az ADCON1 regiszterben;
     ˇ az E port három kivezetését bemenetnek kell beállítani a
TRISE regiszterben;
     ˇ a párhuzamos slave port működését engedélyezni kell a TRISE regiszterben elhelyezett PSPMODE vezérlő bit logikai "1" szintre állításával, ekkor a TRISD regiszter kiiktatódik és a D port adatirányát már a párhuzamos slave port külső vezérlő jelei határozzák meg;
     ˇ nullázni kell a TRISE regiszterben elhelyezett IBOV túlcsordulás-jelzőbitet;
     ˇ nullázni kell a PIRx regiszterben elhelyezett PSPIF megszakítás-jelzőbitet;
     ˇ a párhuzamos slave port megszakításkérését engedélyezni kell a PIEx regiszterben elhelyezett PSPIE engedélyező bit logikai "1" szintre állításával;
     ˇ a perifériák megszakításkérését engedélyezni kell az INTCON regiszterben elhelyezett PEIE engedélyező bit logikai "1" szintre állításával;
     ˇ a megszakításkéréseket globálisan is engedélyezni kell az INTCON regiszterben elhelyezett GIE engedélyező bit logikai "1" szintre állításával.

      A mikroprocesszor/slave-mikrovezérlő kommunikáció kétféle módon kezdődhet:
     ˇ A mikroprocesszor parancsszavának bevitelével, amiből a mikrovezérlővel felépített periféria meghatározhatja mi a teendője (megtudhatja például, hogy adatkiolvasás fog következni, hogy melyik adatot kell biztosítania, hogy mennyi a kiolvasandó bájtok száma...).
     ˇ A slave-mikrovezérlő mikroprocesszor felé történő megszakításkérésével, vagyis a mikrovezérlővel felépített periféria jelzi a mikroprocesszornak, hogy a szükséges (előzőleg kért) adatok megvannak és készen állnak a kiolvasásra.

Vissza a lap tetejére

      A mikroprocesszorból a mikrovezérlőbe történő adatbevitel menete a következő:
     ˇ a mikroprocesszor a vezérlő jelek segítségével, az előző fejezetnek megfelelően, beírja a 8-bites adatot a mikrovezérlő PORTD bemeneti regiszterébe;
     ˇ a PIRx regiszterben elhelyezett PSPIF megszakítás-jelzőbit logikai "1"-re áll be, aminek hatására, ha engedélyezett, létrejön egy megszakításkérés;
     ˇ végrehajtódik a megszakításkezelő-szubrutin, amelynek feladatai:

      a PIRx regiszterben elhelyezett PSPIF megszakítás-jelzőbit vizsgálatával megállapítani, hogy a párhuzamos slave porttól jött-e a megszakítás;
      a TRISE regiszterben elhelyezett IBF és OBF jelzőbitek vizsgálatával megállapítani, hogy milyen irányú adatátvitel történt;
      adatbevitel esetén megvizsgálni a TRISE regiszterben elhelyezett IBOV túlcsordulás-jelzőbit értékét, ha az "1", akkor adatvesztés történt, vagyis a mikroprocesszor egy vagy több, a PORTD bemeneti regiszterbe bevitt adatot még a PORTD regiszterből való kiolvasás előtt egy újabb adattal felülírt (Ilyen esetben hibaüzenetet, illetve újabb lekérést kell kiadni, majd az IBOV jelzőbitet nullázni!);
      a beérkezett adat kiolvasása a PORTD bemeneti regiszterből, aminek hatására az IBF jelzőbit automatikusan nullázódik;
      az adat értelmezése - a mikroprocesszortól jött parancs végrehajtása;
      a PIRx regiszterben elhelyezett PSPIF megszakítás-jelzőbit nullázása.

Vissza a lap tetejére

      A mikrovezérlőből való adatkiolvasás a következőképpen megy végbe:
     ˇ a kiküldendő adatot a szoftver elhelyezi a PORTD kimeneti regiszterben, aminek hatására a TRISE regiszterben elhelyezett OBF jelzőbit automatikusan logikai "1"-re áll be, így jelzi, hogy egy kiolvasatlan adat van a regiszterben;
     ˇ a mikroprocesszor a vezérlő jelek segítségével, az előző fejezetnek megfelelően, kiolvassa a 8-bites adatot a PORTD kimeneti regiszterből, amelynek hatására automatikusan nullázódik az OBF jelzőbit, valamint a PIRx regiszterben elhelyezett PSPIF megszakítás-jelzőbit logikai "1"-re áll be, aminek hatására, ha engedélyezett, létrejön egy megszakításkérés;
     ˇ végrehajtódik a megszakításkezelő-szubrutin, amelynek feladatai:

      a PIRx regiszterben elhelyezett PSPIF megszakítás-jelzőbit vizsgálatával megállapítani, hogy a párhuzamos slave porttól jött-e a megszakítás;
      a TRISE regiszterben elhelyezett IBF és OBF jelzőbitek vizsgálatával megállapítani, hogy milyen irányú adatátvitel történt;
      hibátlanul végbement adatkiolvasás esetén szükség szerint betölteni a PORTD kimeneti regiszterbe a következő adatot;
      a PIRx regiszterben elhelyezett PSPIF megszakítás-jelzőbit nullázása.

Vissza a lap tetejére

      A megszakításos kezelés beállításait mutatja be a következő programrészlet:

... ...    
  b.f STATUS,5 ;az ADCON1 regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;az ADCON1 regiszter memórialapjának kiválasztása
  movlw X ;az X konfigurációs érték megadása
  movwf ADCON1 ;a konfigurációs érték betöltése
  b.f STATUS,5 ;a TRISE regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;a TRISE regiszter memórialapjának kiválasztása
  movlw b'00010111' ;a port bekapcsolása, mindhárom kivezetés bemenet
  movwf TRISE ;az E port konfiguráció betöltése
  bcf PIRx,PSPIF ;a port megszakítás jelzőbit nullázása
  bsf PIEx,PSPIE ;a port megszakítás engedélyezése
  bsf INTCON,PEIE ;a periféria megszakítások engedélyezése
  bsf INTCON,GIE ;a megszakítások globális engedélyezése
  ...    
  ...    

      A beállítások után a párhuzamos slave port működésre kész és a mikroprocesszor bármilyen műveletvégzésére megszakításkérés generálódik. Egy lehetséges megszakításkezelő-szubrutin részletet mutat be a következő programtöredék:

  ...    
ISR ...    
  ...    
  b.f STATUS,5 ;a PIRx regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;a PIRx regiszter memórialapjának kiválasztása
  btfss PIRx,PSPIF ;a port megszakítás jelzőbit vizsgálata
  goto TOVABB ;egyéb megszakításforrások vizsgálata
  b.f STATUS,5 ;a TRISE regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;a TRISE regiszter memórialapjának kiválasztása
  btfsc TRISE,IBF ;A bejövő adat meglétének vizsgálata
  goto PSPBE ;IBF="1", bejövő adat a tárolóban
  goto PSPKI ;IBF="0", nem bevitel történt
  ...    
PSPBE b.f STATUS,5 ;a PORTD regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;a PORTD regiszter memórialapjának kiválasztása
  movf PORTD,0 ;a beérkezett adat kiolvasása W-be
  movwf ADAT ;a beérkezett adat elmentése
  ... ... ;az adattól függő egyéb műveletek
  b.f STATUS,5 ;a PIRx regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;a PIRx regiszter memórialapjának kiválasztása
  bcf PIRx,PSPIF ;a megszakítás jelzőbit nullázása
  retfie   ;visszatérés a megszakításkezelésből
  ...    
PSPKI b.f STATUS,5 ;a TRISE regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;a TRISE regiszter memórialapjának kiválasztása
btfsc TRISE,OBF ;az OBF jelzőbit vizsgálata
  goto HIBA ;az IBF és OBF jelzőbitek állapota ellentmondásos
  b.f STATUS,5 ;az ADAT2 regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;az ADAT2 regiszter memórialapjának kiválasztása
  movf ADAT2 ;a következő kiküldendő adat átírása W-be
  b.f STATUS,5 ;a PORTD regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;a PORTD regiszter memórialapjának kiválasztása
  movwf PORTD ;a következő kiküldendő adat betöltése
  ... ... ;egyéb műveletek
  b.f STATUS,5 ;a PIRx regiszter memórialapjának kiválasztása
  b.f STATUS,6 ;a PIRx regiszter memórialapjának kiválasztása
  bcf PIRx,PSPIF ;a megszakítás jelzőbit nullázása
  retfie   ;visszatérés a megszakításkezelésből
  ...    

Vissza a lap tetejére


Jelzőbit figyelés:

      Jelzőbit figyeléses módszer esetében nincs szükség különleges konfigurációs eljárásokra, csupán a párhuzamos slave port alapbeállításait kell elvégezni:
     ˇ ha a vezérlő jeleket fogadó E port analóg bemenetként is felhasználható, akkor azt digitális I/O kivezetésként kell konfigurálni az ADCON1 regiszterben;
     ˇ az E port három kivezetését bemenetnek kell beállítani a TRISE regiszterben;
     ˇ a párhuzamos slave port működését engedélyezni kell a TRISE regiszterben elhelyezett PSPMODE vezérlő bit logikai "1" szintre állításával, ekkor a TRISD regiszter kiiktatódik és a D port adatirányát már a párhuzamos slave port külső vezérlő jelei határozzák meg;
     ˇ nullázni kell a TRISE regiszterben elhelyezett IBOV túlcsordulás-jelzőbitet;
     ˇ a párhuzamos slave port megszakításkérését le kell tiltani a PIEx regiszterben elhelyezett PSPIE engedélyező bit logikai "0" szintre állításával.

Vissza a lap tetejére

      A mikroprocesszorból a mikrovezérlőbe történő adatbevitel menete a következő:
     ˇ a mikroprocesszor a vezérlő jelek segítségével, az előző fejezetnek megfelelően, beírja a 8-bites adatot a mikrovezérlő PORTD bemeneti regiszterébe;
      a TRISE regiszterben elhelyezett IBF jelzőbit folyamatos vizsgálatával (figyelésével) lehet megállapítani, hogy a bevitel megtörtént-e;
     ˇ adatbevitel észlelése esetén meg kell vizsgálni a TRISE regiszterben elhelyezett IBOV túlcsordulás-jelzőbit értékét, ha az "1", akkor adatvesztés történt, vagyis a mikroprocesszor egy vagy több, a PORTD bemeneti regiszterbe bevitt adatot még a PORTD regiszterből való kiolvasás előtt egy újabb adattal felülírt (Ilyen esetben hibaüzenetet, illetve újabb lekérést kell kiadni, majd az IBOV jelzőbitet nullázni!);
     ˇ a beérkezett adat kiolvasása a PORTD bemeneti regiszterből, aminek hatására az IBF jelzőbit automatikusan nullázódik;
     ˇ az adat értelmezése - a mikroprocesszortól jött parancs végrehajtása.

      A mikrovezérlőből való adatkiolvasás a következőképpen megy végbe:
     ˇ a kiküldendő adatot a szoftver elhelyezi a PORTD kimeneti regiszterben, aminek hatására a TRISE regiszterben elhelyezett OBF jelzőbit automatikusan logikai "1"-re áll be, így jelzi, hogy egy kiolvasatlan adat van a regiszterben;
     ˇ a mikroprocesszor a vezérlő jelek segítségével, az előző fejezetnek megfelelően, kiolvassa a 8-bites adatot a PORTD kimeneti regiszterből, amelynek hatására automatikusan nullázódik az OBF jelzőbit;
     ˇ a TRISE regiszterben elhelyezett OBF jelzőbit folyamatos vizsgálatával (figyelésével) lehet megállapítani, hogy a kiolvasás megtörtént-e;
     ˇ a kiolvasás megtörténte után a következő adat betöltése a PORTD kimeneti regiszterbe, aminek hatására a TRISE regiszterben elhelyezett OBF jelzőbit ismét logikai "1"-re áll be...

Vissza a lap tetejére


Adatsor gyors átvitele:

      A következő folyamatábra egy, az adatmemóriában folyamatosan elhelyezett adatsor gyors átvitelét mutatja be jelzőbit figyeléses módszerrel.

Adatsor átvitele jelzőbit figyeléssel
14.4-1. Ábra

      A folyamatábrát, illetve az adatsor kiküldését (a KEZDET-től a VEGE címig) megvalósító programrészlet:

... ...    
  movlw KEZDET-1 ;W = a kezdőcímnél eggyel kisebb érték
  movwf FSR ;az adatmemória indirekt címzése
LOAD incf FSR,1 ;az indirekt cím növelése
  movf INDF ;W = az indirekt címzett adat
  movwf PORTD ;az adat betöltése a PORTD regiszterbe
WAIT btfsc TRISE,OBF ;a kiolvasottság vizsgálata
  goto WAIT ;ha OBF="1", akkor tovább vár
  movlw VEGE ;W = végcím
  subwf FSR,0 ;W = FSR - W (egyenlőség vizsgálat)
  btfss STATUS,Z ;a zérusjelző bit vizsgálata
  goto LOAD ;ha FSR < végcím, visszalép
  ...   ;ha FSR = végcím, itt folyatatódik
  ...    

 

  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