80C51/80C552 Mikrokontroladoreak: Etenak eta Atakak

Enviado por Chuletator online y clasificado en Inglés

Escrito el en vasco con un tamaño de 4,45 KB

80C51/80C552 Mikrokontroladorearen Eten-sistema

80C51 (eta 80C552) mikrokontroladorearen eten-sistemak etenak gaitzeko edo desgaitzeko aukera ematen du IE erregistroaren bidez, eta lehentasunak ezartzeko IP erregistroarekin. Etenak lehentasun handikoak edo txikikoak izan daitezke, eta lehentasun handikoek lehentasun txikikoak eten ditzakete. Sistema honek gertaera kritikoak behar bezala kudeatzen direla ziurtatzen du, zeregin asinkronoak eraginkortasunez kudeatuz.

Eten-sistemaren blokeoa 80C552 mikrokontroladorean

Zein 3 kasutan dago blokeatuta eten-sistema eta eten-bektorerako jauzia ez da gauzatzen 80C552 mikrokontroladore batean?

  1. Eten globalak desgaituta: EA bita (Enable All) 0an dago.
  2. Lehentasun handiagoko eten bat abian bada: Lehentasun handiagoko eten bat abian dagoenean, lehentasun txikiagoko eten batzuk blokeatuta geratzen dira.
  3. Energia baxuko modua: Mikrokontroladorea energia baxuko edo itxaroteko modu batean dago.

LJMP eta AJMP aginduen arteko ezberdintasunak

Zein da LJMP eta AJMP aginduen arteko ezberdintasuna? Zein izango litzateke eragina, errore baten ondorioz, etiketa jakin batera LJMP izan beharko lukeen instrukzio bat, AJMP batez aldatuko balitz?

LJMP instrukzioak mikrokontroladorearen 64KB-ko memoria espazioaren (16 bit) barruan edozein helbidetara jauzi egiteko aukera ematen du, eta AJMPk, berriz, 2KB-ko bloke baten barruan (11 bit) jauzi egiteko aukera ematen du. LJMP instrukzio bat AJMP batez aldatzen bada errore baten ondorioz, jauzia 2KB-ko tarte batera mugatuta egongo da. Horrek programa norabide oker batera desbideratzea eragin dezake, exekuzioan erroreak eraginez.

Ataken hasieratzea 80C552 mikrokontroladorean

Nola hasieratzen dira atakak bere bitak sarrera edo irteerakoak izateko?

  • Sarrera gisa programatu nahi diren bitetan 1 bat idazten da (latchean).
  • Irteerakoak, berriz, atera nahi den balioarekin idazten dira zuzenean.

Etenen erantzuna 80C552 mikrokontroladorearen programazioan

Honako egoera hauetarako, justifikatu hurrengo instrukzio-zikloan etendura erantzuteko errutinara jauzi egingo litzatekeen, eta, kasu horretan, zein etendurari legokiokeen. Programaren hasieratik IEN0 (A8h) erregistroaren balioa 0xC8 da eta IEN1 (E8h) erregistroarena 0x00.

i. DIV A,B instrukzioaren exekuzio erdian

DIV A,B dibisio-instrukzio baten exekuzio erdian (erdiko instrukzio-ziklo batean). (0,25 pt.)

Etenak gaitzeko dauden edo lehentasunei esleitutako balioa gorabehera, eten-mekanismoa blokeatuta dago instrukzio baten barne-zikloa gauzatzen ari denean.

ii. ADC etenaren azpierrutinan, IP0=0x08, IP1=0xFF

Edozein* instrukzioren exekuzio amaieran (azken instrukzio-zikloan), AD bihurgailuaren (ADC) etenari erantzuteko azpierrutinaren barruan, IP0 (B8h) erregistroak 0x08 balio du eta IP1 (F8h) erregistroak 0xFF. (0,25 pt.)

IP0 (B8h) = 0x08 = 0000 1000, IP1 (F8h) = 0xFF = 1111 1111. AD bihurgailuaren etenak lehentasun txikia du esleituta, eta Timer 1-ekoak, berriz, altua. Gainerako eten guztiek lehentasun handia dute esleituta, baina desgaituta daude. Beste ADC eten bat balego, ez litzateke betearaziko lehentasun berdinagatik. Timer 1-en etena gertatuko balitz, bere eten-bektorerako (001Bh) salto egingo luke.

iii. Eten-azpierrutinetik kanpo, IP0=0x48, IP1=0xF0

Edozein* instrukzioren exekuzio amaieran (azken instrukzio-zikloan), edozein eten-azpierrutinetik kanpo, IP0 (B8h) erregistroak 0x48 balio du eta IP1 (F8h) erregistroak 0xF0. (0,25 pt.)

IP0 (B8h) = 0x48 = 0100 1000, IP1 (F8h) = 0xF0 = 1111 0000. Bi etenak lehentasun handiko taldean definitu dira, IP1 lehentasun-erregistroan agertzen direnekin batera; horiek, ordea, desgaituta daude. Bai ADC etenak, bai Timer 1-en etenak, beren eten-bektoreetara jauzi egitea eragin lezakete. Biak aldi berean gertatuko balira, 8. taularen arabera, “Interrupt Priority Structure. 80C51 FAMILY DERIVATIVES. 8XC552/562 overview” izenekoaren arabera, ADCren eten-bektorerako (0053h) jauzi egingo luke.

Entradas relacionadas: