„Mikrokontrollerek alkalmazástechnikája - Mintavizsga” változatai közötti eltérés

A VIK Wikiből
Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|MintaVizsga}} <!-- Mikrokontrollerek alkalmazástechnikája --> ==I.== ===1. Melyik volt a világ első uC-je?=== TMS1000 (Texas Inst…”
 
Szikszayl (vitalap | szerkesztései)
a vissza link
 
(2 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{GlobalTemplate|Valaszthato|MintaVizsga}}
__NOTOC__
 
{{Vissza|Mikrokontrollerek alkalmazástechnikája}}
<!-- Mikrokontrollerek alkalmazástechnikája -->
 
==I.==
 
===1. Melyik volt a világ első uC-je?===
===1. Melyik volt a világ első uC-je?===
  TMS1000 (Texas Instruments)
TMS1000 (Texas Instruments)


===2. Sorolja fel, hogy milyen tipusú memóriákban tárolják a mikrokontrollerek programját és jellemezze ezeket!===
===2. Sorolja fel, hogy milyen típusú memóriákban tárolják a mikrokontrollerek programját és jellemezze ezeket!===
 
* Egyszer programozható (One Time Programmable): Olcsó, főleg nagy szériánál alkalmazzák.
* Egyszer programozható (One Time Programmable):  
* Többször programozható: Régebben EPROM (UV fénnyel törölhető, nehézkes), manapság FLASH (ISP, reset lábon keresztül pl., PIC-nél járulékos feszültség kellhet).
Olcsó, főleg nagy szériánál alkalmazzák.
* Többször programozható:  
Régebben EPROM (UV fénnyel törölhető, nehézkes), manapság FLASH (ISP, reset lábon keresztül pl., PIC-nél járulékos feszültség kellhet).


===3. Milyen óragenerátorai lehetnek  egy uC-nek, és melyek ezek jellemzői?===
===3. Milyen óragenerátorai lehetnek  egy uC-nek, és melyek ezek jellemzői?===
* RC oszcillátor: gyenge stabilitás, pontatlan frekvencia, de gyors beállási idő, olcsó.
* RC oszcillátor: gyenge stabilitás, pontatlan frekvencia, de gyors beállási idő, olcsó.
* Kvarc oszcillátor: gyakori, nagy pontosságú, nagy frekvencia stabilitás, de nagy beállási idő (~100 ms).
* Kvarc oszcillátor: gyakori, nagy pontosságú, nagy frekvencia stabilitás, de nagy beállási idő (~100 ms).
23. sor: 15. sor:


===4. Rajzoljon le egy felharmonikus Pierce oszcillátort!===
===4. Rajzoljon le egy felharmonikus Pierce oszcillátort!===
Jegyzet 12. old.
Jegyzet 12. old.


===5. Milyen frekvencia tartományban használható felharmonikuson rezgő kvarc oszcillátor?===
===5. Milyen frekvencia tartományban használható felharmonikuson rezgő kvarc oszcillátor?===
40 - 80 Mhz (általában a 3. felharmónikuson rezegnek)
40 - 80 MHz (általában a 3. felharmonikuson rezegnek)


===6. Milyen forrásai lehetnek egy uC belső RESET jelének?===
===6. Milyen forrásai lehetnek egy uC belső RESET jelének?===
34. sor: 26. sor:


===7. Rajzolja fel egy uC párhuzamos slave portjának belső kialakítását továbbá rajzolja fel, hogyan lehet rákapcsolni egy mikroprocesszoros rendszer buszára!===
===7. Rajzolja fel egy uC párhuzamos slave portjának belső kialakítását továbbá rajzolja fel, hogyan lehet rákapcsolni egy mikroprocesszoros rendszer buszára!===
33. old.
33. old.


===8. Hogyan lehet egyszerű kialakítású időzítővel ciklikus működést megvalósítani?===
===8. Hogyan lehet egyszerű kialakítású időzítővel ciklikus működést megvalósítani?===
 
*Init:
Init:
**timer inicializálása
* timer inicializálása
**üzemmód beállítás
* üzemmód beállítás
**kezdőérték beírás
* kezdőérték beírás
**timer engedélyezés
* timer engedélyezés
*interrupt:
 
**kezdőérték újratöltése
interrupt:
* kezdőérték újratöltése
   
   
===9. Rajzolja le egy fel-le számlálóval és egyenlőség komparátorral kialakított PWM egység blokkvázlatát, és magyarázza el működését! Rajzolja le az egység  jellemző idődiagrammját is!===
===9. Rajzolja le egy fel-le számlálóval és egyenlőség komparátorral kialakított PWM egység blokkvázlatát, és magyarázza el működését! Rajzolja le az egység  jellemző idődiagramját is!===
 
31. old.
31. old.


===10. Mi a funkciója a parity error, frameing error és overrun státus biteknek a SIO egységben?===
===10. Mi a funkciója a parity error, frameing error és overrun státus biteknek a SIO egységben?===
 
*parity error: jelzi a vett adat paritáshibáját (vett és számított paritás nem egyezik)
* parity error: jelzi a vett adat paritáshibáját (vett és számított paritás nem egyezik)
*frameing error: jelzi, hogy a stop bit nem volt végig H szintű
* frameing error: jelzi, hogy a stop bit nem volt végig H szintű
*overrun: nem bufferelt vevőegységeknél jelzi, hogy új adat érkezett még a régi kiolvasása előtt
* overrun: nem bufferelt vevőegységeknél jelzi, hogy új adat érkezett még a régi kiolvasása előtt


===11. Mely paraméterektől függ leginkább a CMOS logikák fogyasztása?===
===11. Mely paraméterektől függ leginkább a CMOS logikák fogyasztása?===
 
Órajeltől.
Órajeltől.


===12. Milyen esetekben célszerű interruptosan kezelni egy perifériát?===
===12. Milyen esetekben célszerű interruptosan kezelni egy perifériát?===
 
*ha a periféria két kiszolgálása közt sok utasítást tudna a mikrokontroller végrehajtani (lassú periféria)
* ha a periféria két kiszolgálása közt sok utasítást tudna a mikrokontroller végrehajtani (lassú periféria)
*ha véletlenszerű a kiszolgálási igény, de gyorsan ki kell szolgálni
* ha véletlenszerű a kiszolgálási igény, de gyorsan ki kell szolgálni
*ha nem túl hosszú az interrupt, vagy megszakítható (többszintű interrupt rendszer)
* ha nem túl hosszú az interrupt, vagy megszakítható (többszintű interrupt rendszer)
*ha ettől áttekinthetőbb lesz a program
* ha ettől áttekinthetőbb lesz a program


===13. Jellemezze az AVR mikrokontrollerek I/O, adat RAM és regiszter címzési lehetőségeit!===
===13. Jellemezze az AVR mikrokontrollerek I/O, adat RAM és regiszter címzési lehetőségeit!===
 
*regiszterek: r0-r31-ig, utolsó 3 pár (X, Y, Z) használható pointerként (inkrementálás pre/post), stack SP (I/O területen)
* regiszterek: r0-r31-ig, utolsó 3 pár (X, Y, Z) használható pointerként (inkrementálás pre/post), stack SP (I/O területen)
*A regiszterek memóriaként is címezhetők (0x00-0x1F cím)
* A regiszterek memóriaként is címezhetők (0x00-0x1F cím)
*Másolás memóriából regiszterbe: ld, st, indexelés: ldd
* Másolás memóriából regiszterbe: ld, st, indexelés: ldd
*I/O regiszterek: in, out (I/O regiszterek első fele bitcímezhető is: sbi, cbi, sbic).
* I/O regiszterek: in, out (I/O regiszterek első fele bitcímezhető is: sbi, cbi, sbic).


===14. Jellemezze az AVR mikrokontrollerek interrupt rendszerét!===
===14. Jellemezze az AVR mikrokontrollerek interrupt rendszerét!===
* Interrupt esetén SP lementése, IT letiltása, majd a kódmemória elején lévő megfelelő címre ugrik a vezérlés, ide kell a jmp utasítást írni.
* Interrupt esetén SP lementése, IT letiltása, majd a kódmemória elején lévő megfelelő címre ugrik a vezérlés, ide kell a jmp utasítást írni.
* Az interrupton belül érdemes lementeni az SREG és a használt regiszterek tartalmát.
* Az interrupton belül érdemes lementeni az SREG és a használt regiszterek tartalmát.
84. sor: 68. sor:


===15. Rajzolja fel az MCS-51 mikrokontroller külső memória írás ciklusának jellemző idődiagramját!===
===15. Rajzolja fel az MCS-51 mikrokontroller külső memória írás ciklusának jellemző idődiagramját!===
 
Csak az AVR-ekhez van a jegyzetben ilyen diagram, de valószínű hasonló az MCS-knél is. (54. old.)
Csak az AVR-ekhez van a jegyzetben ilyen diagram, de valószínű hasonló az MCS-knél is. (54. old.)


===16. Mit csinálnak az MCS-51 mikrokontrollerek idle és power down állapotban?===
===16. Mit csinálnak az MCS-51 mikrokontrollerek idle és power down állapotban?===
 
*Power down: leállítja az oszcillátort, regiszterek megőrzik a tartalmukat, de minden órajelet igénylő funkció leáll, RESET hatására ébred.
* Power down: leállítja az oszcillátort, regiszterek megőrzik a tartalmukat, de minden órajelet igénylő funkció leáll, RESET hatására ébred.
*Idle: CPU órajele leáll, de a perifériák (időzítő, soros vonal) tovább működnek, IT, RESET hatására ébred.
* Idle: CPU órajele leáll, de a perifériák (időzító, soros vonal) tovább működnek, IT, RESET hatására ébred.


===17. Milyen funkciói vannak a programozó (égető) készülékeknek?===
===17. Milyen funkciói vannak a programozó (égető) készülékeknek?===
 
*Adat betöltés (pl. intel hex fájlból).
* Adat betöltés (pl. intel hex fájlból).
*Betöltött adatok módosítása.
* Betöltött adatok módosítása.
*CRC kód generálása (a feltöltendő kód hibavédő kódja).
* CRC kód generálása (a feltöltendő kód hibavédő kódja).
*Eszköz törlése (EEPROM-nál. FLASH-nél).
* Eszköz törlése (EEPROM-nál. FLASH-nél).
*Törölt állapot ellenőrzése.
* Törölt állapot ellenőrzése.
*Spec. bitek beállítása (lock bitek, FUSE bitek).
* Spec. bitek beállítása (lock bitek, FUSE bitek).
*Felprogramozás, és ellenőrzés (visszaolvasás után).
* Felprogramozás, és ellenőrzés (visszaolvasás után).
*Ellenőrzés: a chipben lévő tartalom megegyezik-e a bufferben lévővel.
* Ellenőrzés: a chipben lévő tartalom megegyezik-e a bufferben lévővel.


===18. Részletesen írja le, hogyan lehet megvalósítani a monitorok lépésenkénti program végrehajtás funkcióját?===
===18. Részletesen írja le, hogyan lehet megvalósítani a monitorok lépésenkénti program végrehajtás funkcióját?===
 
*Lehet törésponti hardverrel, ekkor minden memóriaolvasáskor kell NMI-t kérni.
* Lehet törésponti hárdverrel, ekkor minden memóriaolvasáskor kell NMI-t kérni.
*Lehet szoftverből kiváltott IT-vel, ha nincs engedélyezve, akkor szoftverből kiváltott NMI-vel.
* Lehet szoftverből kiváltott IT-vel, ha nincs engedélyezve, akkor szoftverből kiváltott NMI-vel.
*Lehet úgy, hogy a program folytatását kiváltó ret alatt idézünk elő interruptot, ekkor a ret utáni utasítás mindenképpen végrehajtódik még (feature), és csak utána lépünk be az IT-be. Ez megoldható mondjuk egy szabad timer egységgel. pl.:
* Lehet úgy, hogy a program folytatását kiváltó ret alatt idézünk elő interruptot, ekkor a ret utáni utasítás mindenképpen végrehajtódik még (feature), és csak utána lépünk be az IT-be. Ez megoldható mondjuk egy szabad timer egységgel. pl.:
**monitorból visszatérés:
 
***timer init
monitorból visszatérés: <br/>
***timer start
-timer init<br/>
***sei (ha kell)
-timer start<br/>
***reti
-sei (ha kell)<br/>
**progi:
-reti<br/>
***a reti utáni utasítás akkor is végrehajtódik, ha közeben IT jött.
<br/>
progi:<br/>
-a reti utáni utasítás akkor is végrehajtódik, ha közeben IT jött.<br/>
 
* Timer helyett használhatunk szoftveresen hívható IT-t is.
* Timer helyett használhatunk szoftveresen hívható IT-t is.


===19. Sorolja fel a mikrokontrolleres assemblerek néhány mikrokontroller specifikus tulajdonságát!===
===19. Sorolja fel a mikrokontrolleres assemblerek néhány mikrokontroller specifikus tulajdonságát!===
 
*WinAVR: lokális címkék
* WinAVR: lokális címkék
*A51 abszolút szegmenshivatkozás: CSEG/DSEG/XSEG/ISEG/BSEG AT cím.
* A51 abszolút szegmenshivatkozás: CSEG/DSEG/XSEG/ISEG/BSEG AT cím.
*A51 helyfoglalás a RAM területen DS/DBIT direktívával.
* A51 helyfoglalás a RAM területen DS/DBIT direktívával.
*Regiszterekre hivatkozás a nevükkel a megfelelő fájl beinkludolása után (AVR) / be van építve az assemblerbe (MCS-51).
* Regiszterekre hivatkozás a nevükkel a megfelelő fájl beinkludolása után (AVR) / be van építve az assemblerbe (MCS-51).
*A51: hivatkozás portra pl.: P1.2
* A51: hivatkozás portra pl.: P1.2
*A51: egyes bankok regisztereire hivatkozás a USING kulcsszó után AR0-AR7-el. pl.: USING 1, majd push AR2
* A51: egyes bankok regisztereire hivatkozás a USING kulcsszó után AR0-AR7-el. pl.: USING 1, majd push AR2
 


===20. Hogyan oldják meg a több modulból álló assembly programban a modulok szimbólumaira történő külső hivatkozást?===
===20. Hogyan oldják meg a több modulból álló assembly programban a modulok szimbólumaira történő külső hivatkozást?===
 
*A megosztandó szimbólumokat PUBLIC direktívával kell definiálni pl.: PUBLIC SUB1, SUB2<br>
* A megosztandó szimbólumokat PUBLIC direktívával kell definiálni pl.: <br/>
SUB1: függvény...<br>
PUBLIC SUB1, SUB2
SUB2: függvény...
 
*Ahol használni akarjuk, ott az EXTRN direktívával kell erre utalni: EXTRN CODE(SUB1, SUB2)<br>
SUB1:
call SUB1 ... call SUB2
  függvény...
SUB2:
  függvény...
 
* Ahol használni akarjuk, ott az EXTRN direktívával kell erre utalni: <br/>
EXTRN CODE(SUB1, SUB2)  
 
call SUB1
...
call SUB2


===21. Ábrákkal és szövegesen mutassa be az egyszerű mikrokontrolleres programok tipikus felépítését!===
===21. Ábrákkal és szövegesen mutassa be az egyszerű mikrokontrolleres programok tipikus felépítését!===
 
90. oldal
90. oldal
*perifériák és változók inicializálása
* perifériák és változók inicializálása
*IT engedélyezés
* IT engedélyezés
*végtelen ciklus, amit a perifériák interruptjai megszakítanak időről időre
* végtelen ciklus, amit a perifériák interruptjai megszakítanak időről időre
*IT-ken belül: mentés, kiszolgálás, visszatöltés, reti
* IT-ken belül: mentés, kiszolgálás, visszatöltés, reti


===22. Mi a szerepe a bufferelésnek, hogyan lehet jelzést bufferelni?===
===22. Mi a szerepe a bufferelésnek, hogyan lehet jelzést bufferelni?===
 
* A burst-ösen jövő adatokat lehet vele becacheelni, hogy aztán processzálni tudjuk a main_loop-ban :)
* A burstösen jövő adatokat lehet vele becacheelni, hogy aztán processzálni tudjuk a main_loop-ban :)
* A jelzés bufferelésére általában elég egy unsigned char változó, amit a beérkező jelzéskor növelünk (esetleg az overrunt is vizsgáljuk), feldolgozáskor pedig csökkentjük (ha nem 0).
* A jelzés bufferelésére általában elég egy unsigned char változó, amit a beérkező jelzéskor növelünk (esetleg az overrunt is vizsgáljuk), feldolgozáskor pedig csökkentjük (ha nem 0).
==II.==


===23. Mi az In-circuit Programming és az In-circuit Debugging? Hogyan valósul meg mindez a PIC mikrokontrollereknél?===
===23. Mi az In-circuit Programming és az In-circuit Debugging? Hogyan valósul meg mindez a PIC mikrokontrollereknél?===
169. sor: 128. sor:


===25. Ismertesse a H8/300H processzor regiszterkészletét és annak jellegzetességeit, valamint a CCR regiszter bitjeit!===
===25. Ismertesse a H8/300H processzor regiszterkészletét és annak jellegzetességeit, valamint a CCR regiszter bitjeit!===
==III.==


===26. Rajzolja fel egy 4x2-es billentyű mátrix mikrontrollerhez illesztését, ha 6 I/O port áll rendelkezésre! Írja meg a hardvert kezelő szubrutint (AVR assembly nyelven), mely főprogram szinten fut. Rendelkezésre áll egy timer IT, mely a tim 1 byte-os változó értékét csökkenti 1ms-onként, mindaddig, amíg az 0 nem lesz. Ekkor a timout nevű flaget 1-be írja. (Mellékletként megkapja az AVR utasításkészletét tartalmazó táblázatot.)===
===26. Rajzolja fel egy 4x2-es billentyű mátrix mikrontrollerhez illesztését, ha 6 I/O port áll rendelkezésre! Írja meg a hardvert kezelő szubrutint (AVR assembly nyelven), mely főprogram szinten fut. Rendelkezésre áll egy timer IT, mely a tim 1 byte-os változó értékét csökkenti 1ms-onként, mindaddig, amíg az 0 nem lesz. Ekkor a timout nevű flaget 1-be írja. (Mellékletként megkapja az AVR utasításkészletét tartalmazó táblázatot.)===
101. old.


101. old.
===27. Készítse el az alábbi feladat részletes specifikációját, a részletes funkcionális blokkvázlatát, végezze el a hardver szoftver szétválasztást és készítse el a hardver rendszertervet! Egy hagyományos orvosi vérnyomásmérőt kell kiváltani a mandzsetta automatikus felfújását és leeresztését elvégző készülékkel, mely a mandzsetta aktuális nyomását is kijelzi. (Az orvos hagyományos módon állapítja meg szisztolés és diasztolés értéket.) A készülék hálózatról működik. A készüléknek megadható a felfújáskor elérendő végnyomás értéke (3 értékből lehet választani 180, 200, 220 Hgmm). A készülék kézzel indítható. Az indítás hatására először egy SZ1 gyors leeresztő szeleppel teljesen leereszti mandzsettát, majd vár 1sec-ot. A nyomásérzékelővel ekkor mért értéket tekinti 0Hgmm-nek. Ezután elkezdi felfújni egy előzőleg kiválasztott nyomásértékig. Ha ezt elérte egy SZ2 lassú leeresztő szelep kinyitásával lassan leereszti, 30 Hgmm elérésekor pedig az SZ1 szelep kinyitásával teljesen leereszti. A mandzsetta felhasználói beavatkozásra is bármikor gyorsan leereszthető. A készülék hibajelzést ad, ha a felfújó motor kikapcsolása után is növekszik a nyomás. Ekkor az SZ1 gyors leeresztő szelep kinyitásával leereszti a mandzsettát. A nyomás érzékelő a nyomással fordítottan arányos frekvencia kimenettel rendelkezik, 0 Hgmm esetén 1MHz, 300 Hgmm esetén 500kHz frekvenciájú TTL jelet ad ki.===
 
==IV.==
 
===27. Készítse el az alábbi feladat részletes specifikácókját, a részletes funkcionális blokkvázlatát, végezze el a hardver szoftver szétválasztást és készítse el a hardver rendszertervet! Egy hagyományos orvosi vérnyomásmérőt kell kiváltani a mandzstta automatikus felfújását és leeresztését elvégző készülékkel, mely a mandzstta aktuális nyomását is kijelzi. (Az orvos hagyományos módon állapítja meg szisztolés és diasztolés értéket.) A készülék hálózatról működik. A készüléknek megadható a felfújáskor elérendő végnyomás értéke (3 értékből lehet választani 180, 200, 220 Hgmm). A készülék kézzel indítható. Az indítás hatására először egy SZ1 gyors leeresztő szeleppel teljesen leereszti mandszettát, majd vár 1sec-ot. A nyomásérzékelővel ekkor mért értéket tekinti 0Hgmm-nek. Ezután elkezdi felfújni egy előzőleg kiválasztott nyomásértékig. Ha ezt elérte egy SZ2 lassú leeresztő szelep kinyitásával lassan leereszti, 30 Hgmm elérésekor pedig az SZ1 szelep kinyitásával teljesen leereszti. A mandzsetta felhasználói beavatkozásra is bármikor gyorsan leereszthető. A készülék hibajelzést ad, ha a felfújó motor kikapcsolása után is növekszik a nyomás. Ekkor az SZ1 gyors leeresztő szelep kinyitásával leereszti a mandzsettát. A nyomás érzékelő a nyomással fordítottan arányos frekvencia kimenettel rendelkezik, 0 Hgmm esetén 1MHz, 300 Hgmm esetén 500kHz frekvenciájú TTL jelet ad ki.===
 
   
   
-- [[CsuzdyCsabaDavid|Csaba]] - 2009.06.02.
[[CsuzdyCsabaDavid|Csaba]] - 2009.06.02.


{{Vissza|Mikrokontrollerek alkalmazástechnikája}}


[[Category:Valaszthato]]
[[Category:Valaszthato]]

A lap jelenlegi, 2013. december 28., 14:00-kori változata

1. Melyik volt a világ első uC-je?

TMS1000 (Texas Instruments)

2. Sorolja fel, hogy milyen típusú memóriákban tárolják a mikrokontrollerek programját és jellemezze ezeket!

  • Egyszer programozható (One Time Programmable): Olcsó, főleg nagy szériánál alkalmazzák.
  • Többször programozható: Régebben EPROM (UV fénnyel törölhető, nehézkes), manapság FLASH (ISP, reset lábon keresztül pl., PIC-nél járulékos feszültség kellhet).

3. Milyen óragenerátorai lehetnek egy uC-nek, és melyek ezek jellemzői?

  • RC oszcillátor: gyenge stabilitás, pontatlan frekvencia, de gyors beállási idő, olcsó.
  • Kvarc oszcillátor: gyakori, nagy pontosságú, nagy frekvencia stabilitás, de nagy beállási idő (~100 ms).
  • Kerámia oszcillátor: elfogadható pontosság, kiváló stabilitás, rövidebb beállási idő, mint a kvarcnál, olcsó.
  • Oszcillátor chip

4. Rajzoljon le egy felharmonikus Pierce oszcillátort!

Jegyzet 12. old.

5. Milyen frekvencia tartományban használható felharmonikuson rezgő kvarc oszcillátor?

40 - 80 MHz (általában a 3. felharmonikuson rezegnek)

6. Milyen forrásai lehetnek egy uC belső RESET jelének?

  • Bekapcsolási reset áramkör
  • Külső reset (pl. nyomógomb)
  • Egyéb (pl. brown-out, watch-dog, egyéb hiba)

7. Rajzolja fel egy uC párhuzamos slave portjának belső kialakítását továbbá rajzolja fel, hogyan lehet rákapcsolni egy mikroprocesszoros rendszer buszára!

33. old.

8. Hogyan lehet egyszerű kialakítású időzítővel ciklikus működést megvalósítani?

  • Init:
    • timer inicializálása
    • üzemmód beállítás
    • kezdőérték beírás
    • timer engedélyezés
  • interrupt:
    • kezdőérték újratöltése

9. Rajzolja le egy fel-le számlálóval és egyenlőség komparátorral kialakított PWM egység blokkvázlatát, és magyarázza el működését! Rajzolja le az egység jellemző idődiagramját is!

31. old.

10. Mi a funkciója a parity error, frameing error és overrun státus biteknek a SIO egységben?

  • parity error: jelzi a vett adat paritáshibáját (vett és számított paritás nem egyezik)
  • frameing error: jelzi, hogy a stop bit nem volt végig H szintű
  • overrun: nem bufferelt vevőegységeknél jelzi, hogy új adat érkezett még a régi kiolvasása előtt

11. Mely paraméterektől függ leginkább a CMOS logikák fogyasztása?

Órajeltől.

12. Milyen esetekben célszerű interruptosan kezelni egy perifériát?

  • ha a periféria két kiszolgálása közt sok utasítást tudna a mikrokontroller végrehajtani (lassú periféria)
  • ha véletlenszerű a kiszolgálási igény, de gyorsan ki kell szolgálni
  • ha nem túl hosszú az interrupt, vagy megszakítható (többszintű interrupt rendszer)
  • ha ettől áttekinthetőbb lesz a program

13. Jellemezze az AVR mikrokontrollerek I/O, adat RAM és regiszter címzési lehetőségeit!

  • regiszterek: r0-r31-ig, utolsó 3 pár (X, Y, Z) használható pointerként (inkrementálás pre/post), stack SP (I/O területen)
  • A regiszterek memóriaként is címezhetők (0x00-0x1F cím)
  • Másolás memóriából regiszterbe: ld, st, indexelés: ldd
  • I/O regiszterek: in, out (I/O regiszterek első fele bitcímezhető is: sbi, cbi, sbic).

14. Jellemezze az AVR mikrokontrollerek interrupt rendszerét!

  • Interrupt esetén SP lementése, IT letiltása, majd a kódmemória elején lévő megfelelő címre ugrik a vezérlés, ide kell a jmp utasítást írni.
  • Az interrupton belül érdemes lementeni az SREG és a használt regiszterek tartalmát.
  • A RETI utasítás automatikusan engedélyezi az interruptokat.
  • Prioritások: az alacsonyabb címhez tartozó IT rutin magasabb prioritású.
  • Minden perifériának van egyéni IT engedélyező flagje is.

15. Rajzolja fel az MCS-51 mikrokontroller külső memória írás ciklusának jellemző idődiagramját!

Csak az AVR-ekhez van a jegyzetben ilyen diagram, de valószínű hasonló az MCS-knél is. (54. old.)

16. Mit csinálnak az MCS-51 mikrokontrollerek idle és power down állapotban?

  • Power down: leállítja az oszcillátort, regiszterek megőrzik a tartalmukat, de minden órajelet igénylő funkció leáll, RESET hatására ébred.
  • Idle: CPU órajele leáll, de a perifériák (időzítő, soros vonal) tovább működnek, IT, RESET hatására ébred.

17. Milyen funkciói vannak a programozó (égető) készülékeknek?

  • Adat betöltés (pl. intel hex fájlból).
  • Betöltött adatok módosítása.
  • CRC kód generálása (a feltöltendő kód hibavédő kódja).
  • Eszköz törlése (EEPROM-nál. FLASH-nél).
  • Törölt állapot ellenőrzése.
  • Spec. bitek beállítása (lock bitek, FUSE bitek).
  • Felprogramozás, és ellenőrzés (visszaolvasás után).
  • Ellenőrzés: a chipben lévő tartalom megegyezik-e a bufferben lévővel.

18. Részletesen írja le, hogyan lehet megvalósítani a monitorok lépésenkénti program végrehajtás funkcióját?

  • Lehet törésponti hardverrel, ekkor minden memóriaolvasáskor kell NMI-t kérni.
  • Lehet szoftverből kiváltott IT-vel, ha nincs engedélyezve, akkor szoftverből kiváltott NMI-vel.
  • Lehet úgy, hogy a program folytatását kiváltó ret alatt idézünk elő interruptot, ekkor a ret utáni utasítás mindenképpen végrehajtódik még (feature), és csak utána lépünk be az IT-be. Ez megoldható mondjuk egy szabad timer egységgel. pl.:
    • monitorból visszatérés:
      • timer init
      • timer start
      • sei (ha kell)
      • reti
    • progi:
      • a reti utáni utasítás akkor is végrehajtódik, ha közeben IT jött.
  • Timer helyett használhatunk szoftveresen hívható IT-t is.

19. Sorolja fel a mikrokontrolleres assemblerek néhány mikrokontroller specifikus tulajdonságát!

  • WinAVR: lokális címkék
  • A51 abszolút szegmenshivatkozás: CSEG/DSEG/XSEG/ISEG/BSEG AT cím.
  • A51 helyfoglalás a RAM területen DS/DBIT direktívával.
  • Regiszterekre hivatkozás a nevükkel a megfelelő fájl beinkludolása után (AVR) / be van építve az assemblerbe (MCS-51).
  • A51: hivatkozás portra pl.: P1.2
  • A51: egyes bankok regisztereire hivatkozás a USING kulcsszó után AR0-AR7-el. pl.: USING 1, majd push AR2

20. Hogyan oldják meg a több modulból álló assembly programban a modulok szimbólumaira történő külső hivatkozást?

  • A megosztandó szimbólumokat PUBLIC direktívával kell definiálni pl.: PUBLIC SUB1, SUB2

SUB1: függvény...
SUB2: függvény...

  • Ahol használni akarjuk, ott az EXTRN direktívával kell erre utalni: EXTRN CODE(SUB1, SUB2)

call SUB1 ... call SUB2

21. Ábrákkal és szövegesen mutassa be az egyszerű mikrokontrolleres programok tipikus felépítését!

90. oldal

  • perifériák és változók inicializálása
  • IT engedélyezés
  • végtelen ciklus, amit a perifériák interruptjai megszakítanak időről időre
  • IT-ken belül: mentés, kiszolgálás, visszatöltés, reti

22. Mi a szerepe a bufferelésnek, hogyan lehet jelzést bufferelni?

  • A burst-ösen jövő adatokat lehet vele becacheelni, hogy aztán processzálni tudjuk a main_loop-ban :)
  • A jelzés bufferelésére általában elég egy unsigned char változó, amit a beérkező jelzéskor növelünk (esetleg az overrunt is vizsgáljuk), feldolgozáskor pedig csökkentjük (ha nem 0).

23. Mi az In-circuit Programming és az In-circuit Debugging? Hogyan valósul meg mindez a PIC mikrokontrollereknél?

24. Milyen üzemi paraméterek állíthatók régiónként a H8/3002-es eszköz esetében? Mik a megkötések?

25. Ismertesse a H8/300H processzor regiszterkészletét és annak jellegzetességeit, valamint a CCR regiszter bitjeit!

26. Rajzolja fel egy 4x2-es billentyű mátrix mikrontrollerhez illesztését, ha 6 I/O port áll rendelkezésre! Írja meg a hardvert kezelő szubrutint (AVR assembly nyelven), mely főprogram szinten fut. Rendelkezésre áll egy timer IT, mely a tim 1 byte-os változó értékét csökkenti 1ms-onként, mindaddig, amíg az 0 nem lesz. Ekkor a timout nevű flaget 1-be írja. (Mellékletként megkapja az AVR utasításkészletét tartalmazó táblázatot.)

101. old.

27. Készítse el az alábbi feladat részletes specifikációját, a részletes funkcionális blokkvázlatát, végezze el a hardver szoftver szétválasztást és készítse el a hardver rendszertervet! Egy hagyományos orvosi vérnyomásmérőt kell kiváltani a mandzsetta automatikus felfújását és leeresztését elvégző készülékkel, mely a mandzsetta aktuális nyomását is kijelzi. (Az orvos hagyományos módon állapítja meg szisztolés és diasztolés értéket.) A készülék hálózatról működik. A készüléknek megadható a felfújáskor elérendő végnyomás értéke (3 értékből lehet választani 180, 200, 220 Hgmm). A készülék kézzel indítható. Az indítás hatására először egy SZ1 gyors leeresztő szeleppel teljesen leereszti mandzsettát, majd vár 1sec-ot. A nyomásérzékelővel ekkor mért értéket tekinti 0Hgmm-nek. Ezután elkezdi felfújni egy előzőleg kiválasztott nyomásértékig. Ha ezt elérte egy SZ2 lassú leeresztő szelep kinyitásával lassan leereszti, 30 Hgmm elérésekor pedig az SZ1 szelep kinyitásával teljesen leereszti. A mandzsetta felhasználói beavatkozásra is bármikor gyorsan leereszthető. A készülék hibajelzést ad, ha a felfújó motor kikapcsolása után is növekszik a nyomás. Ekkor az SZ1 gyors leeresztő szelep kinyitásával leereszti a mandzsettát. A nyomás érzékelő a nyomással fordítottan arányos frekvencia kimenettel rendelkezik, 0 Hgmm esetén 1MHz, 300 Hgmm esetén 500kHz frekvenciájú TTL jelet ad ki.

Csaba - 2009.06.02.