Mikrokontrollerek alkalmazástechnikája - Mintavizsga

A VIK Wikiből

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.