Xra-2 (Ver 2008-01-30) Yre signaler som påverkar exekveringen hos processorn CPU12 (Förenklad beskrivning) Nedan beskrivs re olika syrsignaler som på olika sä syr exekveringen hos processorn CPU12. Signalerna kopplas in via re olika ben ("pinnar") på microconrollerns kapsel. 1. Rese' (Akiv som nolla) När en nolla uifrån läggs på Rese'-ingången upphör processorns arbee. När sedan Rese'-ingången ges värde 1 händer följande: I-bien (I-flaggan), X-bien (X-flaggan), och S-bien (S-flaggan) i CC-regisre esälls. Processorn läser sedan innehålle i den sk "resevekorn" på minnesadresserna FFFEH och FFFFH och placerar de båda 8-biars daaorden som en 16-biars adress i programräknaren (PC). Sedan hämar processorn näsa insrukion från denna adress. Genom a akivera Rese'-signalen kan man allså få processorn a sara om programexekveringen från den adress som finns lagrad i resevekorn på adresserna FFFEH och FFFFH i minne. Rese'- signalen akiveras allid när maningsspänningen ill processorn slås på från början. 2. IRQ' (Inerrup reques, Avbrosbegäran) (Akiv som nolla) En yre enhe kan få processorn a (ofas illfällig) bya program genom a lägga en nolla på insignalen IRQ'. Processorn exekverar då färdig den insrukion den håller på med. Om avbrossyseme är akivera, dvs om I-bien i flaggregisre (CC-regisre) är nollsälld, kommer processorn sedan a accepera avbroe. I anna fall kommer programexekveringen a forsäa som vanlig. Om avbrosbegäran acceperas sparar processorn innehållen i de inerna regisren i ordningen PC, Y, X, A, B och CC på sacken. (Innehålle i PC är här adressen ill näsa insrukion i de avbruna programme.) Därefer esälls I-bien i CC-regisre för a nya avbro skall uesängas. Processorn läser sedan innehålle i den sk "IRQ-vekorn" på minnesadresserna FFF2H och FFF3H. Dea innehåll, som är adressen ill en avbrosruin, placeras i programräknaren. Därmed har processorn uför e hopp från de vanliga programme ill avbrosruinen. CPU12 Rese IRQ XIRQ
Xra-2 (Ver 2008-01-30) När avbrosruinen börjar exekveras ve man a den händelse som orsakar avbro har inräffa. Avbrosruinen skall därför uföra arbee som är förknippa med avbroshändelsen och sedan åervända ill de vanliga (avbruna) programme med åersällda regiserinnehåll. De finns en speciell insrukion, RTI (Reurn from inerrup), som åersäller innehållen i samliga processorregiser genom a läsa de gamla regiserinnehållen från sacken. Efersom RTI även åersäller innehålle i PC kommer exekveringen efer RTI a forsäa i de program som idigare blev avbrue. En avbrosruin avsluas därför med insrukionen RTI. Vid åerhoppe från avbrosruinen är de vikig a den akiva signal som orsakade de pågående avbroe har försvunni, annars kommer ju e ny avbro direk a genereras av den "gamla" signalen efer åerhoppe. Lägg märke ill a avbrossyseme auomaisk akiveras då de gamla regiserinnehållen i processorn åersälls vid åerhopp från avbrosruinen efersom de gamla CCR-innehålle, som hämas från sacken, innehåller en nolla i I-bien. 3. XIRQ (Non maskable inerrup reques) (Akiv som nolla) XIRQ'-ingången har i princip samma funkion som IRQ'-ingången. En sak som skiljer dem å är a e program ine kan uesänga XIRQ-avbro genom a esälla X- flaggan. Efer Rese är dock XIRQ-avbro uesäng efersom X-flaggan esälls vid Rese. Vill man använda XIRQ-avbro måse man förs nollsälla X-flaggan med någon av insrukionerna ANDCC #$BF, TFR A,CC, eller en RTI. Avbrosvekorn för XIRQ-avbro finns på adresserna FFF4H och FFF5H. Nedan visas hur några olika vekorer är placerade i processorns adressrum. FFF2H: FFF3H: FFF4H: FFF5H: FFF6H: FFF7H: FFFEH: FFFFH: IRQ H IRQ L XIRQ H XIRQ L SWI H SWI L RESET H RESET L SWI-vekorn ovan används av SWI-insrukionen som sparar processorns inerna regiser och esäller I-flaggan på samma sä som vid e avbro. Den beskrivs i insrukionslisan för CPU12.
Xra-2 (Ver 2008-01-30) Exempel på avbro med CPU12 E daorsysem med microconrollern 68HCS12 skall användas för a köra e huvudprogram. Samidig som huvudprogramme körs skall en variabel KNAPP (8 biar) på minnesadressen 2800H ökas med e varje gång en ryckknapp akiveras. Ökningen av variabeln KNAPP skall ske med hjälp av IRQ-avbro genom a huvudprogramme avbrys vid varje knappryckning och en avbrosruin KNPINC då körs. Se figuren på näsa sida. Avbrosruinen KNPINC skall ha saradressen 2400H i minne. Avbrosvekorn för IRQ-avbro anas finnas i RWM (läs- och skrivbar minne) på adresserna FFF2H och FFF3H. Avbrosruinen på adressen KNPINC (2400H) blir: KNPINC INC $2800 Variabel KNAPP ökas med e. TST $0900 Nollsäll avbrosvippan. RTI Åervänd ill huvudprogramme. Nedan visas nödvändiga iniieringar i huvudprogramme för a avbro på IRQ-ingången skall acceperas. Dessuom visas hur IRQ-vekorn ges si räa värde KNPINC (2400H). Huvudprogram: MAINPG LDS #STACKADR BOS definieras förs. LDX #KNPINC Adr KNPINC = 2400H. STX $FFF2 Ge IRQ-vekorn värde KNPINC. TST $0900 Nolla avbrosvippan. CLR $2800 Nolla variabeln KNAPP (2800H). CLI Akivera avbrossyseme (IRQ).. (Nolla I-bien i CC-regisre.).
Xra-2 (Ver 2008-01-30) A 15 - A 0 Tryckknapp Puls vid nedryckning av ryckknapp CPU12 E "1" 1D Q C1 R/W R Q IRQ D 7 - D 0 A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 0 R/W E & Read address 0900H Puls då processorn läser på adressen 0900H
Xra-2 (Ver 2008-01-30) In- och umaning av daa En daor måse ha möjlighe a a emo daa från omgivningen och skicka u daa ill omgivningen. Därför förses daorer med daaingångar (inporar) och daaugångar (uporar) som ugör gränssnie mellan daorn och omvärlden. Från daorns synvinkel besår omvärlden av olika yre enheer som kan lämna daa eller a emo daa. All inmaning av daa ill en daor görs från yre enheer (YE). All umaning av daa från en daor görs ill yre enheer (YE). Vid ovillkorlig in- eller umaning av daa besämmer daorn själv in- eller umaningshasigheen uan medverkan av den yre enheen. Figuren nedan visar principen för ovillkorlig inmaning ill en daor. YE Daa I n p o r Daor Vid ovillkorlig inmaning förusäs a YE allid har akuell daa illgänglig för daorn. Figuren nedan visar principen för ovillkorlig umaning från en daor. I n p o r U p o r Daa Daor YE Vid ovillkorlig umaning förusäs a YE allid kan a emo daa från daorn. Vid villkorlig in- eller umaning av daa besämmer den yre enheen in- eller umaningshasigheen genom a daorn på någo sä frågar YE om den är beredd a a emo eller lämna daa. Daorn frågar YE om dess illsånd genom a läsa sausinformaion som YE allid håller illgänglig på en av daorns inporar. Av sausinformaionen framgår om YE är klar för en daaöverföring. Principen för villkorlig daaöverföring framgår av flödesplanen nedan.
Xra-2 (Ver 2008-01-30) Undersök saus hos YE Sauses i väneloop Är YE beredd? Nej Ja Överför daa ill YE Processorn ligger allså i en programslinga och vänar på a YE skall bli klar för en daaöverföring. Efersom YE ofa är en långsam enhe kommer processorn under en mycke sor del av iden a befinna sig i väneslingan och ine få så mycke "produkiv arbee uför. Man säger a processorn är "busy-waiing". I sälle för a bara väna på a YE skall bli klar kan processorn uföra nyig arbee om YE:s saus konrolleras på lämpliga sällen i programme och överföringen uförs så snar saus säger a YE är beredd. En annan möjlighe a låa processorn arbea med nyig arbee medan den yre enheen gör sig klar är a låa YE signalera ill processorn via avbrossyseme a den är redo för en daaöverföring. De olika varianerna av villkorlig överföring kan illusreras med följande exempel: Du är hemma på di rum och behöver sudera mae inför omenan. De är förmiddag och du vänar e vikig brev (CSN) med posen. Under väneiden kan du bee dig på e av följande sä. a) "busy-waiing" Du sår ivrig vänande vid dörren och iakar luckan ill brevinkase. b) "upprepad sauses" Du går ill dörren en gång var feme minu för a se om breve har kommi. c) "avbro" Du har förse brevinkase med en anordning som signalerar när posen kommer. I de vå försa fallen ägnar du mycke id å a se om breve kommi på bekosnad av sudierna. I de sisa falle suderar du vidare ills du hör signalen a posen har kommi. Nedan följer vå illämpningar på villkorlig överföring av daa mellan yre enhe och daor enlig principen "busy-wai".
Xra-2 (Ver 2008-01-30) Villkorlig inmaning av daa ill daorn från YE med "busy-wai". YE Daa DAC I I nn pp oo r r Daor Daapor CS Read Daa Daa DAV DAC 1 2 3 4 DAV I I nn pp oo r r Sauspor CS Read Saus De signalmässiga samspele 1-4 (markera i diagramme ovan) kallas "handskakning". Exempel: I den yre enheen finns 32 daabye som skall överföras ill daorn och placeras i dess minne på adresserna DATABUF ill och med DATABUF + 31. Yre enheens daaugång är kopplad ill en av daorns inporar på adressen 800H. Saussignalen, DAV, är kopplad ill bi noll (mins signifikan bi) på en annan av daorns inporar med adressen 801H. Den signal som verksäller läsningen av inporen på adress 800H (CS' Readadr 800H) är också kopplad ill den yre enheen under namne DAC'. När en negaiv puls ( ) anländer på DAC' nollsäller YE signalen DAV efersom de akuella daaorde då är läs av daorn. Programavsnie för inmaningen blir: LDAB #$20 Byeräknare säs ill 20H = 32 LDX #DATABUF Pekare ill daaarean WAIT LDAA $0801 Läs saus hos YE ANDA #%00000001 Maska fram DAV-bien. (bi nr 0) BEQ WAIT Väna ills DAV = 1 LDAA $0800 DAV = 1. Läs daa från YE STAA 1,X+ Placera läs daabye i minne och öka X DECB Räkna ner byeräknare med e BNE WAIT Forsä med inläsning av näsa daabye. Samliga daabye i YE läsa..
Xra-2 (Ver 2008-01-30) Villkorlig umaning av daa från daorn ill YE med "busy-wai". YE Daa DAV I U n pp oo r r Daor Daapor CS Wrie Daa Daa DAV Ready 1 2 3 Ready (DAC) I I nn pp oo r r Sauspor CS Read Saus Handskakningsförloppe är markera med 1-3 i figuren ovan. Exempel: Daorn skall maa u 48 daabye ill den yre enheen. De 48 daaorden är lagrade i daorns minne på adresserna DATABUF ill och med DATABUF + 47. En av daorns uporar med adressen 400H är kopplad ill den yre enheens daaingång. Saussignalen, Ready, från den yre enheen är kopplad ill bi noll (mins signifikan bi) på en av daorns inporar med adressen 600H. Den signal som verksäller skrivningen av daa på adress 400H (CS' Wrie adr 400H) är också kopplad ill den yre enheen under namne DAV'. När en negaiv puls ( ) anländer på DAV' nollsäller YE signalen Ready för a a hand om den daabye som jus har kommi från daorn. Programavsnie för umaningen blir: LDAB #$30 Byeräknare säs ill 30H = 48 LDX #DATABUF Pekare ill daaarean WAIT LDAA $0600 Läs saus hos YE ANDA #%00000001 Maska fram Ready-bien. (bi nr 0) BEQ WAIT Väna ills Ready = 1 LDAA 1,X+ Ready =1. Läs daa från minne och öka X STAA $0400 Skriv daabye ill YE DECB Räkna ner byeräknare med e BNE WAIT Forsä med umaning av näsa daabye. Samliga daabye i daaarean umaade..
Xra-2 (Ver 2008-01-30) Villkorlig inmaning av daa ill daorn från YE med användning av avbro. Exempel: I den yre enheen finns 32 daabye som skall överföras ill daorn och placeras i dess minne på adresserna DATABUF ill och med DATABUF + 31. Hur YE är kopplad ill processorn i dea fall framgår av figuren nedan. Yre enheens daaugång är kopplad ill en av daorns inporar på adressen 600H. Saussignalen, DAV, är kopplad ill klockingången på en flankriggad D-vippa med esälld D-ingång. En posiiv flank på signalen DAV från YE esäller därför D-vippan, dvs Q = 1 och Q' = 0. Efersom vippans Q'-ugång är kopplad ill processorns IRQ'-ingång får processorn då en avbrosbegäran (IRQ' = 0). Om processorns avbrossysem är akivera ( dvs I-bien i CC-regisre = 0) kommer processorn a avbrya de pågående programme, lagra samliga regiserinnehåll på sacken och sedan hoppa ill en avbrosruin som pekas u av IRQ-vekorn. I avbrosruinen läser processorn daaorde från YE på adress 600H. CS-signalen som akiverar inporen på adress 600H är även kopplad ill D-vippans reseingång. Vid läsningen av daa från YE kommer därför D-vippan a nollsällas, dvs Q = 0 och Q' = 1. Efersom Q' är kopplad ill processorns IRQ'-ingång kommer avbrosbegäran därför a upphöra. Den signal som verksäller läsningen av inporen på adress 600H (CS' Read Adr 600H) är också kopplad ill den yre enheen under namne DAC'. När en negaiv puls ( ) anländer på DAC' nollsäller YE signalen DAV efersom de akuella daaorde då är läs av daorn. Programme för inmaningen visas på näsa sida. Daor YE Daa DAV ( ) 1 1D C1 Q I I n n p p o o r r Daapor Adress 600H 68HCS12 R Q' IRQ DAC ( ) CS Read Daa Adr 600H ( ) & A15 A14 A11 A10 A9 A0 R/W E
Xra-2 (Ver 2008-01-30) 1. Huvudprogram I huvudprogramme iniieras inmaningen av 32 bye från YE ill minne. IRQ-vekorn på adresserna FFF2H och FFF3H anas vara placerad i e RWM. Sackpekaren anas vara iniierad idigare. LDX #DATABUF Saradress ill daaarean STX DATAPNT Placera saradressen (16 biar) för daaarean på adresserna DATAPNT och DATAPNT+1 i minne LDAA #32 STAA BYTECNT Anal daabye som skall överföras Placera byeräknare på adressen BYTECNT i minne CLR INFLAGGA Nollsäll en flagga som visar a inmaningen är klar. Denna flagga säs ill FFH av avbrosruinen när samliga 32 daabye är överförda LDX #ARUT Adressen ill avbrosruinen STX $FFF2 Placera adressen ill avbrosruinen i IRQ-vekorn. Denna anas här finnas i RWM. CLI Akivera avbrossyseme genom a nollsälla I-bien i CC-regisre WAIT LDAA INFLAGGA BEQ WAIT Väna på a inmaningen skall bli klar 2. Avbrosruin Hi kommer man varje gång YE signalerar a e ny daaord finns illgänglig på inporen på adress 600H. Signaleringen sker genom a YE ger signalen DAV värde e. Dea riggar D-vippan som ger signalen IRQ' värde noll. Dvs en avbrosbegäran kommer ill processorn. ARUT LDAA $0600 LDX DATAPNT STAA 1,X+ STX DATAPNT DEC BYTECNT BNE UT LDAA #$FF STAA INFLAGGA Läs daabye från YE. Dea nollsäller också D-vippan som därmed ar bor avbrosbegäran. Häma daapekaren Skriv daabyen i daaarean och öka X Skriv illbaka daapekaren (ökad med e) Minska anal åersående daabyes med e Om vi ine är klara forsäer vi med näsa daabye när YE är färdig Flagga ill huvudprogramme a samliga 32 daabye är moagna. Om vi vill kan vi också sänga av avbrossyseme här genom a esälla I-bien i de CC-värde som finns i sacken UT RTI Åervänd ill huvudprogramme