Mérés laboratórum 2 - 1. mérés ellenőrző kérdései
AZ ELLENŐRZŐ KÉRDÉSEKRE ÖSSZEÍRT VÁLASZOK BEMAGOLÁSA/MEGTANULÁSA NEM HELYETTESÍTI A MÉRÉSI ÚTMUTATÓ ÁTOLVASÁSÁT!!! OLVASSÁTOK ÁT A JEGYZETEKET, MÉRÉSI ÚTMUTATÓKAT IS!!!
1. Miben különbözik az oszcilloszkóp a logikai analizátortól?
A logikai analizátorral egyidejűleg sok (16 - 256) jel vizsgálható, az oszcilloszkóppal általában csak kettő jel vizsgálható egyidejűleg. A logikai analizátor csak a jelek logikai értékét vizsgálja, tárolja, (1 bit felbontású mintavételezés,) az oszcilloszkóp a jel feszültségét, amplitúdóját is tarolja, megjeleníti (8 - 12 bit felbontással).
2. Mire szolgál a trigger? Tipikusan milyen paraméterei vannak?
Az analóg oszcilloszkópban a triggerjel az időeltérítést indítja, ezért az analóg oszcilloszkóp gyakorlatilag csak a triggerjel utáni jeltartományt jeleníti meg. Ki kell jelölni a vizsgálandó jelszakaszt, be kell állítani a vizsgálat amplitúdó-tartományát és időtartományát. A triggerelési feltételt úgy kell megválasztani, hogy a kijelzés stabil legyen, a trigger-esemény az ismétlődő jelnek mindig ugyanazon pontja legyen.
3. Hány különböző érték ábrázolható egy 8 bites kettes komplemens változó segítségével? Mi a legkisebb és a legnagyobb ábrázolható szám?
Összesen: 256 db
0,..,127 pozitiv számok (0b0000 0000 - 0b0111 1111)
-1,...,-128 negatív számok (0b1000 0000 - 0b1111 1111)
4. Adja meg decimális és bináris formában a következő számot: 0x42! Hány bitet foglal kettes komplemens számábrázolásban?
Dec: 66
Bin: 1000010
2-es komplemens(101111110): 9 bit
5. Mekkora a periódusideje egy 25 MHz-es négyszögjelnek?
(Mikó Laci megoldása alapján:)
f=25MHz=25*10^6 Hz
T(periódus idő) = 1 /f
T= 1/25*10^6 Hz =4*10^(-8) sec
6. Mit jelent az, hogy az ATmega128 8 bites mikrokontroller?
8 bites regiszterek, 16 (és 32) bites utasításkódok -> 8 bites mikrokontroller
7. Memória szervezés szempontjából milyen architektúrájú processzor az ATmega128?
Harvard architektúra. Külön adat és program memória.
8. Hány általános célú regisztere van az ATmega128-nak? Mi a különbség az első fél és a második fél használatában?
32 általános célú regiszter:
kiemelt fontosságú, 32 db 8 bites adat
szinte minden művelet rajtuk keresztül zajlik, „változók”
csak R16-R31 használható konstansokkal dolgozó műveletekhez (LDI, ANDI, SUBI…)
9. Hány regiszter tartozik egy I/O porthoz, mi ezeknek a funkciója?
Egy I/O porthoz 3 regiszter tartozik.
DDRx – irányregiszter, PORTx – bemenet felhúzása / kimeneti érték, PINX – ki/bemeneti érték
Ha DDRx = 1 -> kimenet, ekkor PORTx-re kerülhet a kimenetre írandó érték.
Ha DDRx = 0 -> bemenet, ekkor PORTx-szel szabályozzuk a port felhúzását.
PINx-et főleg bemeneti port esetén használjuk, innen olvassuk le a bemenet állapotát. (Pl.: kapcsoló állapota.)
10. Mi a PC? Mi a stack és a stack pointer? Mi a státusz regiszter?
PC: Program Counter, program számláló. Az aktuális utasítás címét tárolja 16 bites memóriában. Ugrások és elágazások közvetlenül módosítják az értékét. A CALL utasítás hatására a PC a verembe mentődik, RET innen tölti vissza a rutin végén.
A stack (verem) egy LIFO (last in first out) memóriatartomány a belső SRAM végén, a szubrutinok visszatérési címeire, ill. regiszterek átmeneti tárolására. A stack pointer (SP, veremmutató) 16 bites regiszter, verem tetejére mutat. Verem az alacsonyabb memóriacímek felé nő.
Státuszregiszter: nem része a regisztertömbnek, de igen fontos szerepe van az ún. státuszregiszternek, amely számos jelző bitet (flag) tartalmaz. A jelzőbitek egy része aritmetikai műveletek eredményétől függően változhat, de itt engedélyezhetjük/tilthatjuk a globális megszakítást is.
11. Mi az X, Y, Z regiszterek speciális funkciója?
Az ATmega128 regisztertömbjében 32 darab 8 bites regiszter található. Az utolsó 6 regiszterből képzett 3 darab 16 bites regiszterpár (elnevezésük: X, Y, Z) felhasználható 16 bites címzést használó load/store utasításokhoz (valamint létezik néhány aritmetikai utasítás, ami ezeken tud műveletet végezni).
12. Mire szolgál a CALL utasítás?
Assembly nyelvben a függvény helyett a szubrutin kifejezést használjuk. Egy szubrutint a CALL utasítással tudunk meghívni, a hívás hatására elmentődik a programszámláló a verembe, majd a szubrutinban folytatjuk a program végrehajtását. A szubrutin végén a RET utasítás hatására visszaállítódik a programszámláló a veremből (a CALL utasítást követő utasítás címére), így a program végrehajtása a CALL utasítás után folytatódik tovább.
13. Mi a különbség a JMP és a BREQ között?
A JMP utasítás egy feltétel nélküli ugró utasítás. A feltétel nélküli ugrás a C nyelvből száműzött (de létező) goto utasításra hasonlít. A JMP utasítással az operandusként szereplő címre ugrik a programszámláló, amit a fordító az általunk megadott címkéből számít ki.
A BREQ (Branch if equal) utasítás egy feltételes elágazó utasítás, párja a BRNE (Branch if not equal) utasítás. Ezekkel az utasításokkal a státusz regiszterben lévő Z flag állapota alapján készíthetünk elágazásokat.
14. Adja meg egy 8 bites felfelé számláló assembly kódját (a teljes főciklust).
Egy lehetséges megoldás (temp-et inicializáljuk 0-ba, majd folyamatosan növeljük.)
ldi temp, 0 WHILE: inc temp jmp WHILE
15. Adja meg azt az assembly kódot, amely a PORTC minden bitjét kimenetként inicializálja.
.def temp = r16 ldi temp, 0xFF out DDRC, temp
Levlistán szerepelt egy doksi a válaszokról, ezért felraktam ide is, kicsit jobban kiegészítve. -- Tóth Gábor - 2011.02.17.
BSC-n most ebből voltak az ellenőrző kérdések. Plusz kérdés: 9 bites visszacsatolt balra shiftelő shiftregiszter teljes assembly kódja.