<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bbluff</id>
	<title>VIK Wiki - Felhasználó közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bbluff"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Bbluff"/>
	<updated>2026-05-17T07:07:59Z</updated>
	<subtitle>Felhasználó közreműködései</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=M%C3%A9r%C3%A9s_laborat%C3%B3rum_2_-_2._m%C3%A9r%C3%A9s_ellen%C5%91rz%C5%91_k%C3%A9rd%C3%A9sei&amp;diff=164201</id>
		<title>Mérés laboratórum 2 - 2. mérés ellenőrző kérdései</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=M%C3%A9r%C3%A9s_laborat%C3%B3rum_2_-_2._m%C3%A9r%C3%A9s_ellen%C5%91rz%C5%91_k%C3%A9rd%C3%A9sei&amp;diff=164201"/>
		<updated>2013-04-10T10:08:54Z</updated>

		<summary type="html">&lt;p&gt;Bbluff: /* 1. Az ATmega128 mikrokontroller Neumann-architektúrájú-e? A válaszát indokolja is meg! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==1. Az ATmega128 mikrokontroller Neumann-architektúrájú-e? A válaszát indokolja is meg!==&lt;br /&gt;
&lt;br /&gt;
	 &amp;lt;center&amp;gt;[[Fájl:meres2_2_Von_neumann.png]] [[Fájl:meres2_2_avrarchitect.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
(c) by wikimedia.org &amp;amp; Hainzmann János&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A képen balra: Neumann architektúra, jobbra: Harvard architektúra (AVR ATmega128 mikrokontroller)&amp;lt;br&amp;gt;&lt;br /&gt;
Válasz: Nem. A mikrokontroller tömbvázlatát megnézve megállapíthatjuk, hogy a programkódnak és az adatoknak külön memóriája van, nem egy közös tárban találhatóak. Az adatátviteli csatorna is más a programkód számára, mint az adatok számára. Ebből nyilvánvalóan kitűnik, hogy nem Neumann-architektúráról van szó.&amp;lt;br&amp;gt;&lt;br /&gt;
Válasz2: Nem. A vezérlő &#039;&#039;Módosított Harvard&#039;&#039; architektúrát használ, melyben a Neumanntól eltérően elkülönül egymástól és külön címtartományban helyezkedik el az utasításokat és adatokat tároló memória. Azért módosított, mert speciális utasításokkal lehetőség van a programmemória adatainak olvasására is.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2. Van-e egy kitüntetett funkciójú akkumulátor-regiszter az AVR architektúrájú processzorokban?==&lt;br /&gt;
Nincs. Az utasítások paramétere - kevés kivételtől eltekintve - bármelyik regiszter lehet.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==3. Milyen memória-tartományai vannak az ATmega128 mikrokontrollernek?==&lt;br /&gt;
Az AVR architektúrának két fő memóriatartománya van:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
- program memória:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
	|alkalmazás szakasz  &lt;br /&gt;
|}&lt;br /&gt;
	|boot szakasz		  &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
- adat memória:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
	|regiszterek			&lt;br /&gt;
|}&lt;br /&gt;
	|standard I/O reg.	&lt;br /&gt;
|}&lt;br /&gt;
	|extended I/O reg.&lt;br /&gt;
|}&lt;br /&gt;
	|belső SRAM		  &lt;br /&gt;
|}&lt;br /&gt;
	|külső SRAM		  &lt;br /&gt;
|}&lt;br /&gt;
	&lt;br /&gt;
==4. Milyen fő csoportjai vannak az utasításoknak?==&lt;br /&gt;
* aritmetikai és logikai&lt;br /&gt;
* elágazások&lt;br /&gt;
* adatátviteli&lt;br /&gt;
* bitmódosító és bittesztelő utasítások&lt;br /&gt;
&lt;br /&gt;
==5. Vázolja fel az általános digitális I/O portok felépítését! Hány regiszter tartozik egy porthoz, és mi az egyes regiszterek feladata?==&lt;br /&gt;
&lt;br /&gt;
[[Fájl:meres2_2_portok.png]]&lt;br /&gt;
&lt;br /&gt;
A digitális I/O portok kétirányúak, tehát be-és kimenetként is működhetnek. Minden porthoz 3 regiszter tartozik, egy adatregiszter (PORTx), egy irányregiszter (DDRx), és egy, csak olvasható regiszter (PINx). Az irány-és adatregiszter bitenként programozható.&lt;br /&gt;
&lt;br /&gt;
Ha a DDRx (ahol x: A&amp;amp;#8230;G) értéke 1, akkor kimenetként, ha DDRx értéke 0, akkor bemenetként definiáltuk a portot. Kimeneti port esetén a PORTx-re írjuk a kimeneti értéket, bemeneti port esetén a felhúzó ellenállást (pull-up) szabályozzuk. (Ha a bemeneti portokat nem húzzuk fel logikai 1-be, akkor lebegni fognak, ezáltal a környezetben fellépő zajok miatt kiszámíthatatlan lesz a bemenetek értéke.) Bemeneti port esetén a PINx regiszterekből a bemeneten lévő érték olvasható ki, kimeneti port esetén a PORTx értéke olvasható ki egy órajellel később. (Utóbbit ritkán használjuk.)&lt;br /&gt;
&lt;br /&gt;
==6. Mikor szokás egy perifériát interrupttal kezelni? Mi az interruptos kezelés előnye?==&lt;br /&gt;
Akkor, ha:&lt;br /&gt;
* a megszakítás kérés előreláthatólag nem túl sűrűn következik be, közöttük a CPU sok műveletet el tud végezni&lt;br /&gt;
* IT bekövetkezése véletlenszerű, de gyorsan ki kell szolgálni&lt;br /&gt;
* IT alatt elvégzendő feladatok nem vesznek sok időt igénybe, vagy ha igen, akkor megszakítható az IT (vagyis többszintű az IT rendszer)&lt;br /&gt;
* az IT-s szervezés a program struktúráltságát szolgálja&lt;br /&gt;
&lt;br /&gt;
Előnyei ebból adódóan:&lt;br /&gt;
* növeli a program áttekinthetőségét&lt;br /&gt;
* a periféria kérések gyorsan kiszolgálódnak (aktuális utasítás ciklus végén válaszol IT-ra a CPU)&amp;lt;br/&amp;gt;&lt;br /&gt;
* kiszámíthatatlan idejű kérések esetén sokkal jobb a CPU kihasználtága, mintha lekérdezéses ütemezést választanánk&lt;br /&gt;
&lt;br /&gt;
Hátrányos lehet akkor, ha túl sűrűn jönnek a kérések, mert ekkor az IT rutin nem a periféria kezeléséhez tartozó részeit is folyton el kell végezni, ami rontja a CPU kihasználtságát.&lt;br /&gt;
&lt;br /&gt;
Egy jó példa erre a kezelésre a billentyűzet, mint periféria kezelése.&lt;br /&gt;
&lt;br /&gt;
==7. Mit takar az az elnevezés, hogy keresztfejlesztő rendszer (cross-development system)?==&lt;br /&gt;
A beágyazott rendszerek többségében nincs elég szabad erőforrás a fejlesztő szoftver és vele egyidejűleg az alkalmazás futtatására. A gyártott termékekek költségérzékenyek, jelentősebb tartalék számítási kapacitás betervezése ezért nem elfogadható. Másik problémát a fejlesztői konzol (display + klaviatúra) jelenti, mert a beágyazott rendszereknek általában speciális be/kimeneti eszközeik vannak. A vázolt problémák miatt a beágyazott rendszereknél az ún. keresztfejlesztő rendszer (cross-development system) alkalmazása szokásos. Ebben az esetben a fejlesztő szoftver egy másik platformon, rendszerint egy PC-n fut. Ezt a számítógépet nevezik host-nak, a fejlesztendő készülék pedig a target. Keresztfejlesztés esetén kapcsolatot kell létesíteni a két platform között. Ennek szokásos eszközei:&lt;br /&gt;
* RS-232 soros port;&lt;br /&gt;
* processzorba, mikrovezérlőbe integrált speciális soros port (JTAG stb.);&lt;br /&gt;
* speciális emulátor hardver.&lt;br /&gt;
&lt;br /&gt;
==8. Milyen célt szolgál az ún. töréspont?==&lt;br /&gt;
A törésponttal a programban egy helyet jelölhetünk meg; ha a program futása oda ér, akkor a futás felfüggesztődik. A debugger programmal debuggolás céljából megnézhetjük a regisztereket és a memóriatartalmakat (memory dump).&lt;br /&gt;
&lt;br /&gt;
==9. Mi a különbség a szoftver és a hardver töréspont között?==&lt;br /&gt;
A fordítóprogam a szoftveres töréspontot úgy hozza létre, hogy a kijelölt helyen az ott található utasítást kicseréli egy ugrás vagy hívás utasításra, mely a futást a debug rendszernek adja át.&lt;br /&gt;
&lt;br /&gt;
Hardver töréspont esetén a chipbe már be van építve a törésponttámogatás. Sokszor külön regisztert tartanak fenn, amiben eltárolható a töréspont címe. Ha a program counter értéke megegyezik ezzel az értékkel (ez egyszerűen komparátorral vizsgálható), akkor a CPU kivételt generál, ezzel jelez a debuggernek.&lt;br /&gt;
&lt;br /&gt;
==10. Létrehozható-e szoftver töréspont ICE (In-Circuit Emulator - áramkörbe ágyazott emulátor) nélkül?==&lt;br /&gt;
{tipp}: ha elég ügyesek vagyunk, tudunk írni egy szubrutint, ami az egyik porton keresztül átadja a hostnak a futás körülményeit (pc, regiszterek, stb), és végtelen ciklusban fut, amíg a host nem küld neki jelet a továbbfutásra. Fix töréspontokat el tudunk úgy helyezni, hogy ezt a szubrutint hívjuk meg az adott helyen (még feltételt is beleprogramozhatunk). Neumann szervezésű gépnél (a vizsgált chip nem az :( ) még a lépésenkénti végrehajtást is belehegeszthetjük: minden utasítás (kivéve az ugrók) után teszünk két NOP-ot, és a töréspont kezelő rutin a host utasításától függően a NOP-ot átírja a töréspontot meghívó utasításra (a CALL 2 hosszú), vagy visszaírja NOP-ra.&lt;br /&gt;
&lt;br /&gt;
Ez mind egy csomó szívás (pl az ugró utasításokat újra kell számolni), plusz pazarolja a programmemóriát, és leginkább: nem akarjuk újra feltalálni a spanyolviaszt. -- [[SzaMa|SzaMa]] - 2005.09.26.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
-- [[KissAnett|Olthyer]] - 2005.09.25.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==11. Mit jelentenek és hogyan működnek a CALL ill. JUMP utasítások?==&lt;br /&gt;
A CALL utasítás egy szubrutint (függvényt) hív meg, a JUMP pedig egy adott utasításra ugrik. Javitsatok ki ha valami pontatlan!!!&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-- [[GabrovitsPal|Nyuzo]] - 2008.04.08.&amp;lt;br/&amp;gt;&lt;br /&gt;
A &amp;lt;b&amp;gt;CALL&amp;lt;/b&amp;gt; (pl. egy függvényhívás C-ben) utasítás a szubrutin meghívása előtt a visszatérési címet (a CALL utáni utasítás címe) elmenti a Stack-be. Szubrutinból a &amp;lt;b&amp;gt;RET&amp;lt;/b&amp;gt; utasítással lehet visszatérni, ilyenkor értelemszerűen a STACK-be elmentett címen folytatódik a program futása.&lt;br /&gt;
Egy példa erre:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...					; utasítások&lt;br /&gt;
call szubrutin	 			; szubrutinhívás&lt;br /&gt;
...					; további utasítások&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;szubrutin:  ...				; még mindig utasítások&lt;br /&gt;
ret					; visszatérés szubrutinból&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Egy &amp;lt;b&amp;gt;Jump&amp;lt;/b&amp;gt; (C-ben goto) utasítás (JMP) során az utasítás végrehajtása a megadott címen folytatódik.&lt;br /&gt;
Erre is egy egyszerű példa:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
M_LOOP:	  jmp M_LOOP		  	; ugrás M_LOOP cimkére, ami nem más mint egy végtelen hurok&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
-- [[MateNagy|mate]] - 2009.03.09.&lt;br /&gt;
&lt;br /&gt;
==12. kb.: ~Sorolj fel integrált perifériákat az AVR mikrokontrollertől!==&lt;br /&gt;
&amp;amp;#8226; 2. db 8-bites Timer/Counter külön előosztó (Prescaler) egységgel és Compare üzemmóddal&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; 2 db 16-bites Timer/Counter külön előosztó (Prescaler) egységgel és Compare valamint&lt;br /&gt;
Capture üzemmóddal&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; Real Time Counter külön saját oszcillátorral&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; 2 db 8-bites PWM (pulzus-szélesség modulációs) csatorna&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; 6 db PWM csatorna with 2 től 16 bitig programozható felbontással&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; Output Compare Modulator&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; Egy 8-csatornás, 10-bit felbontású A/D átalakító (ADC), melynek bemeneti egysége az&lt;br /&gt;
alábbi módok valamelyikébe konfigurálható&lt;br /&gt;
- 8 Single-ended Channels&lt;br /&gt;
- 7 Differential Channels&lt;br /&gt;
- 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; Byte-orientált kétvezetékes soros interfész (Two-wire Serial Interface)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; Dual Programmable Serial USARTs&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; Master/Slave SPI soros interfész&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; Programozható Watchdog Timer integrált óragenerátorral&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;#8226; Analog komparátor&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-- [[GabrovitsPal|Nyuzo]] - 2008.04.08.&lt;br /&gt;
&lt;br /&gt;
==13. Milyen módon történik egy megszakitáskérés (interrupt) kiszolgálása? Folyamatábra is!==&lt;br /&gt;
Az interruptok engedélyezése két szinten történik. Minden interruptkérő vonalhoz tarozik egy&lt;br /&gt;
külön engedélyező bit az adott kérő-vonalat használó egység vezérlő/státusz regiszterében, és a&lt;br /&gt;
mikrokontroller státuszregiszterében van még egy interruptot általánosan engedélyező bit, az ún.&lt;br /&gt;
Global Interrupt Enable bit, röviden I bit.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-- [[GabrovitsPal|Nyuzo]] - 2008.04.08.&lt;br /&gt;
&lt;br /&gt;
==14. Milyen utasításokkal lehet menteni a státuszregisztert az interrupt előtt ill. visszaállítani a főprogram környezetét az IT rutin kiszolgálása után? ==&lt;br /&gt;
  * magyarul mik ezek a sablonkódok, amit minden IT előtt és után be kell irni?!:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
itrutin:&lt;br /&gt;
&lt;br /&gt;
push temp 	; temp regiszter mentése stacioner&lt;br /&gt;
in temp,SREG 	; proc. státusz mentése&lt;br /&gt;
push temp	; megszakítást kérő egység kiszolgálása&lt;br /&gt;
pop temp 		; proc. státusz visszaállítása&lt;br /&gt;
out SREG,temp&lt;br /&gt;
pop temp 		; temp regiszter visszaállítása&lt;br /&gt;
reti 			; rutin vége&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-- [[GabrovitsPal|Nyuzo]] - 2008.04.08.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that the Status Register is not automatically stored when entering an interrupt routine, nor restored when returning from an interrupt routine. This must be handled by software ([http://www.mit.bme.hu/oktatas/targyak/vimia216/jegyzet/avr/atmega128.pdf atmega128.pdf], &lt;br /&gt;
14. oldal lap közepe).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;cli&amp;lt;/b&amp;gt; kiadása a rutin elején, és az &amp;lt;b&amp;gt;sei&amp;lt;/b&amp;gt; kiadása a &amp;lt;b&amp;gt;reti&amp;lt;/b&amp;gt; előtt nem kell:&amp;lt;br/&amp;gt;&lt;br /&gt;
When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts are disabled. ... The I-bit is automatically set when a Return from Interrupt instruction &amp;amp;#8211; RETI &amp;amp;#8211; is executed ([http://www.mit.bme.hu/oktatas/targyak/vimia216/jegyzet/avr/atmega128.pdf atmega128.pdf], 14. oldal lap teteje).&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;RETI&amp;lt;/b&amp;gt;:&amp;lt;br/&amp;gt;&lt;br /&gt;
Returns from interrupt. The return address is loaded from the STACK and the Global Interrupt Flag is set ([http://www.mit.bme.hu/oktatas/targyak/vimia216/jegyzet/avr/avr_instr_set.pdf avr_instr_set.pdf]). -- [[MateNagy|mate]] - 2009.05.15.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Én ebben nem vagyok biztos: http://www.mit.bme.hu/oktatas/targyak/vimia216/jegyzet/avr/atmega128.pdf (14. oldal). Itt eléggé használja. -- [[SzeleiTomi|Tomi]] - 2009.03.10.&lt;br /&gt;
&lt;br /&gt;
De ha jól megnézed, az nem interrupt-kezelő rutin, hanem azon kívül valahol letiltotta meg engedélyezte a megszakításokat, ahol éppen kedve volt. De az egésznek az a lényege, hogy mikor belép a program egy interrupt-kezelő rutinba, akkor ő tul.képp benyom magának egy cli-t, azaz letiltódnak az interrupt-ok. És a legvégén, mikor a reti-hez érsz, az meg benyom egy sei-t, tehát újra engedélyezve lettek. -- [[JuhaszGyula|Gyuszi999]] - 2011.03.31.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Bbluff</name></author>
	</entry>
</feed>