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

David14 (vitalap | szerkesztései)
Szikszayl (vitalap | szerkesztései)
aNincs szerkesztési összefoglaló
1. sor: 1. sor:
{{GlobalTemplate|Valaszthato|MintaVizsga}}
__NOTOC__
 
<!-- 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: 14. 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: 25. 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: 67. 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: 127. 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.
 


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