Avbrott - En enhet. I DAG fo 6 Mera avbrott. Avbrott - Fler enheter. Olika typer av avbrott DMA. Avbrott - Fler enheter -Avbrottshanterare

Relevanta dokument
Dataöverföring på Parallell- och serieform MOP 11/12 1

I DAG fo 4. Printerport v3 med READY o DAV. Avbrott. Hur bra blev det egentligen????

Seriekomunikation. CAN ett kommunikationsprotokoll för realtidssystem. Seriekomunikation -forts. Seriekomunikation -forts

I DAG Fo 4. Programutveckling i assemblerspråk. Programutveckling i assembler. PROGRAMSTRUKTUR Modul Subrutiner USE-direktivet

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Digital- och datorteknik

Undantagstyper. Maskinorienterad Programmering 2010/2011. MC68HC12, Stencil Assemblerprogrammering.pdf CPU12 Reference Guide

Förutsättningar för skrivaranslutningen

Förutsättningar för skrivaranslutningen. Första programexemplet. strängslut. Maskinorienterad Programmering 2011/2012 Synkronisering och undantag

Programmering av inbyggda system

Maskinorienterad programmering

Digital- och datorteknik

Programmering i maskinspråk (Maskinassemblering)

Förutsättningar för skrivaranslutningen. Första programexemplet. Synkronisera arbetstakterna

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Laborationsmoment 2 - En Borrautomat

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. Lars-Eric Arebrink

Digital- och datorteknik

Laborationsmoment 2 - En Borrautomat

Arbetsbok för MC12, kapitel 4 Klocka. Genomgång av laborationer. New disc Här väljer du olika arbetsstycken

EDA Digital och Datorteknik

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen.

Programmering av inbyggda system

Maskinorienterad programmering

Laborationsmoment t 2 - En Borrautomat

Förutsättningar för skrivaranslutningen. Första programexemplet. Inför specialtecken för strängslut

Programmering i maskinspråk (Maskinassemblering)

Laborationsmoment t 2 - En Borrautomat

Programexempel för FLEX

Maskinorienterad Programmering 2010/2011. Maskinorienterad Programmering 2010/2011. Skrivarporten, p Arbetsbok MC12, avsnitt 2

Genomgång av laborationer. New disc: Här väljer du olika arbetsstycken. Control -sektion: Styrord till borrmaskinen

TENTAMEN (med svar och vissa lösningar)

F8: Undantagshantering

Assemblerprogrammering

Avbrottshantering. Övningsuppgifter

F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA

Digital- och datorteknik

EDA215 Digital- och datorteknik för Z

Assemblerprogrammets struktur; exempel

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Maskinorienterad programmering

Maskinorienterad Programmering 2010/11

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

Extrauppgifter för CPU12

Digital- och datorteknik. Mekatronik-, data- och elektroingenjör Åk 1/ lp 1o2. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen

Tentamen. DAT015 Maskinorienterad programmering IT DIT151 Maskinorienterad programmering GU. Tisdag 15 december 2009, kl

Digital- och datorteknik

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller

Villkorliga hopp: 9/26/2011. Dagens mål: Du ska kunna.. Villrorliga (Relativa) hopp - forts Arb s 140. LV5 Fo12. LV5 Fo12. Aktivera Kursens mål:

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Avbrottshantering. Övningsuppgifter Lösningsförslag Uppgift (Reservation för diverse fel!)

Digital- och datorteknik

Digital- och datorteknik

Maskinorienterad programmering

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Facit till övningsuppgifter Kapitel 13 Anslutning av minnes- och I/O-moduler till buss 13-1

TENTAMEN. Digital- och datorteknik E. Institutionen för data- och informationsteknik Avdelningen för datorteknik. Elektro Åk 1/ lp 4 EDA216/DIT790

Tentamen med lösningsförslag

LEU240 Mikrodatorsystem

Tentamen med lösningsförslag

Digital- och datorteknik. Lars-Eric Arebrink. Betyg 4: 36 poäng Betyg 5: 48 poäng

Digital- och datorteknik. Lars-Eric Arebrink. Betyg 4: 36 poäng Betyg 5: 48 poäng

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Övning 7. Timer, serieport

Exempel på tentamen 1

Assemblerprogrammering del 3

Exempel 3 på Tentamen

Övningsuppgifter i Mikrodatorteknik 4p/5p

Printerport. I DAG Fö 3. Adressavkodning för skrivarporten. Printerport - forts

CHALMERS TEKNISKA HÖGSKOLA

LV6 LV7. Aktivera Kursens mål:

Tentamen. EDA432 Digital- och datorteknik, It DIT790 Digital- och datorteknik, GU. Onsdag 12 Januari 2011, kl

Assemblerprogrammering för HCS12

Lösningsförslag till Tenta i Mikrodator

F6: I/O hantering. Typer av I/O i ett datorsystem. Memory mapped

Assemblerprogrammets. struktur; exempel

Lösningsförslag tenta

F5: Högnivåprogrammering

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

F5: Högnivåprogrammering

Seriekommunikation. Ur innehållet: Nätverkstopologier Nätverksprotokoll Asynkron/synkron seriell överföring Programmering av USART-krets

Maskinorienterad programmering

Lösningsförslag till Tenta i Mikrodator

Tentamen. EDA432 Digital- och datorteknik, IT DIT790 Digital- och datorteknik, GU. Måndag 18 Oktober 2010, kl

3. Mikroprogrammering II

Digital- och datorteknik. Lars-Eric Arebrink. vid flera tillfällen. Betyg 4: 36 poäng Betyg 5: 48 poäng

TENTAMEN (Något redigerad)

IS1500 Lösningar övning CE_O CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io.

9/22/2012. Assemblernivå Beskrivning av funktion Automatiskt styrd borrmaskin Positionera borr Starta borr Borra genom arbetsstycke...

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Datorsystemteknik Föreläsning 7DAVA14

Föreläsningsanteckningar 3. Mikroprogrammering II

ALU:n ska anslutas hur då?

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

Digital- och datorteknik. Lars-Eric Arebrink. vid flera tillfällen. Betyg 4: 36 poäng Betyg 5: 48 poäng

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Exempel 1 på Tentamen med lösningar

Transkript:

I DAG fo 6 Mera avbrott Olika typer av avbrott Flera avbrottsingångar Vektoravbrott Mjukvaruavbrott DMA Avbrott - En enhet adressbuss Processor I/O-interface Adress $Q $Q+ Minnet avbrottsrutin databuss MOP fo 6 MOP fo 6 2 Avbrott - Fler enheter Avbrott - Fler enheter -Avbrottshanterare Källa Adress $Q $Q+ Källa 2 Källa 3 2 3 Minnet avbrottsrutin & Processor avbrottsingång, aktiv låg MOP fo 6 3 CPU Adress $Q $Q+ Avbrottssignal Gränssnitt A mot seriell anslutning Minnet avbrottsrutin Processorns Gränssnitt B mot parallell anslutning bussar Gränssnitt C mot A/D anslutning Minne Prioritet i SW Avbrotts hanterare från A? Nej från B? Nej Betjäna enhet C RTE MOP fo 6 4 Ja Ja Avbrotts rutin C Avbrotts rutin A Betjäna enhet A Avbrotts rutin B Betjäna enhet B

Vektor-Avbrott Processor Yttre enhet Minne INTA S In Out YE S In Out YE2 In S Out YE3 Prioritet i HW 7 INTA 4 2 Databuss INTA Vektor Reg Vektor q 3 Adress (Vektor q) avbrottsrutin p avbrottsrutin q avbrottsrutin r 6 Vektor nr Vektor nr Databuss Vektor nr Vektor nr 0 (Adress i) Vektor nr (Adress i+p) avbrottsrutin 0 avbrottsrutin PC 5 Adressbuss MOP fo 6 5 Vektor- Avbrott Vektor nr max (Adress i+max) avbrottsrutin max MOP fo 6 6 Avbrott Flera Avbrottsingångar Olika prioriteter 3 2 CPU Avbrottssignaler Processorns Adress X Adress Y Adress Z bussar Seriell Parallell Analog anslutning anslutning anslutning A B C avbrottsrutin avbrottsrutin 2 2 avbrottsrutin 3 3 Minne MOP fo 6 7 3 2 CPU Huvudprogram 6 Avbrottssignaler Avbrottsrutin för Avbrottsrutin för 2 Avbrottsrutin för 3 2 2 3 3 5 RT E Processorns RT E bussar Seriell Parallell Analog anslutning anslutning anslutning A B C 4 Minne Avbrott Adr 0 Status och återhoppsadress för avbrottsrutin 2 Status och återhoppsadress för avbrottsrutin Status och återhoppsadress för huvudprogrammet RT E Adr max MOP fo 6 8 2

Interna Avbrott Avbrott med HC2 s Interna signaler för detekterig av olika feltillstånd Externa avbrottsignaler Minnet STYRENHET Instruktions Register Datadel D0..D7 Status Register ALU DATAVÄG Avbrottslogik Adressdel A0..A7 och PC Styrbuss Adressbuss RESET 0 X 0 I avbrottshantering för RESET avbrottshantering för X avbrottshantering för Adress i i+ i+2 i+3 i+4 i+5 avbrottsrutin avbrottsrutin avbrottsrutin Databuss 0 MOP Processorns fo 6 externa bussar 9 etc MOP fo 6 0 Adress (hex) FFFE FFFC FFFA FFF8 FFF6 FFF4 FFF2 FF00-FFF0 Avbrott med HC2 Funktion RESET, Startvektor Clock Monitor Fail, (ej impl i simulator) COP Watchdog Timeout, (ej impl i simulator) Illegal Op Code (ej impl i simulator) SWI X S Enhetsspecifika vektorer, skiljer sig något beroende på de olika varianterna Se Appendix D MOP fo 6 Övriga avbrott med HC2 S RESET X (Reset) (Interrupt Request) (Non Maskable Interrupt Request) PLUS - Ett antal avbrottsingångar från Räknare Fel OP-kod För låg klockfrekvens Wake-Up I/O-moduler Seriekretsar Datanät etc MOP fo 6 2 3

Avbrott med 6809 Avbrott med MC6809 Minnet RESET F NMI HALT (Reset) (Interrupt Request) (Fast Interrupt Request) (Non Maskable Interrupt Request) (Halt) VSS 40 HALT NMI 2 39 XTAL 3 38 EXTAL F 4 37 RESET BS 5 36 MRDY BA 6 35 Q VCC 7 34 E A0 8 33 DMA/BREQ A 9 32 R/W A2 0 3 D0 MOP fo 6 3 NMI 0 F F 0 I 0 avbrottshantering för NMI Adress i i+ avbrottsrutin i+2 avbrottshantering för F i+3 avbrottsrutin i+4 avbrottshantering för i+5 avbrottsrutin MOP fo 6 4 Avbrott MC68000 Exceptions Avbrott MC68000 Vektor nr Adress 5 0 0 $0 High Word Stackpekare Low Word 2 $4 $8 High Word Low Word High Word Low Word Resetvektor Bus Error 5 $4 High Word Low Word Division med noll Interna Buss Error RESET Avbrott TRAP Feltillstånd Vektor avbrott Autovektor avbrott Programmerade / externa händelser NORMAL EXCEPT ION RESET HALTED 25 $64 High Word Low Word High Word Low Word 64 $00 High Word Low Word High Word Low Word Autovektor Avbrottsnivå Autovektor Avbrottsnivå 2 Vektoravbrott vektor 0 Vektoravbrott vektor MOP fo 6 5 255 $3fc High Word Vektoravbrott vektor 9 MOP fo 6 Low Word 6 4

Avbrott MC68000 Externa avbrottsingångar i systemet yttre enheter IPL2 IPL IPL0 Avbrotts nivå 0 0 0 7 0 0 6 0 0 5 0 4 0 0 3 0 2 0 Ingen avbrottsbegäran VID AVBROTT: Skrivaren bestämmer när: Printchar SWI - Software Interrupt Processor Datorsystem Skriv ett tecken Avbrott (Redo) Här är data VID Software Interrupt: Programmeraren (DU) bestämmer med instruktionen SWI när rutinen Printchar skall anropas Yttre enhet MOP fo 6 7 MOP fo 6 8 DMA Direct Memory Access Processorn är BUS MASTER DMA Direct Memory Access DMA:n är BUS MASTER Adr Bus Adr Bus CPU2 ExVis DISK Minne CPU2 DMAenhet DMAenhet ExVis DISK Minne R/W Data Bus MOP fo 6 9 R/W Data Bus MOP fo 6 20 5

Ut Port: RADER Tangentbordsrutin med hårdvarustöd Tangentbord, hårdvarustöd 74C922 7 6 5 4 3 2 0 DAV 0 0 0 B3 B2 B B0 Bit 7, DAV: Data Valid; Statusbit som anger nedtryckt tangent b 7 =: Ingen tangent är för tillfället aktiverad på tangentbordet. b 7 =0: En tangent är aktiverad Bit 6-4, 0: Används ej. Bit 3-0, B3-B0: Tangentnummer; Anger aktuell tangentnedtryckning. MOP fo0 2 MOP fo0 22 Tangentbord, hårdvarustöd 74C922 Tangentbordsrutin utan hårdvarustöd PORT A RADER (ML5_ROW) +5 b0 b b2 b3 b4-b7 NC +5 b4-b7 b3 b2 b b0 MOP fo0 23 PORT B KOLUMNER (ML5_COL) In Port: Kolumner MOP fo 6 24 6

I DAG fo 7 Varför Assemblerprogrammera 2-pass assemblatorn Parameteröverföring I register Global Variabel Via Stack Aktiveringspost / Rampekare MOP fo 7 25 PRINTER EQU $0800 PSTATUS EQU $080 PCONTROL EQU $0802 EOT EQU 4 Vår Printerport PrintFil LDX #Text Loop LDAA,X+ CMPA #EOT BEQ Stop LoopForReady: BRCLR PSTATUS,#4,LoopForReady STAA PRINTER BSET PCONTROL,#2 Sätt DAV LoopNotReady: BRSET PSTATUS,#4,LoopNotReady Stop BCLR BRA RTS PCONTROL,#2 Loop Text: FCS "Hej Du Kalle!" FCB EOT (Vår drivrutin) Struct Printer { char Data; char Status; char Control; } #define EOT 4 PrintFil (&Text){ char tecken; while () { tecken = *Text++; if tecken == EOT return; while (Printer.Status & 4 == 0); } } Printer.Data = tecken; Printer.Control = 2; while (Printer.Status & 4!=0); Printer.Control = 0; 26 Programutveckling i assemblerspråk 2-pass assemblatorn Varför programmera i ett maskinorienterat språk? ingen kompilator alla uppgifter kan inte lösas i högnivåspråk tidskritiska uppgifter källprogram i assemblerspråk Assemblator Pass : Skapa Symboltabell Pass 2: Lägg ut kod objektprogram i maskinspråk MOP fo 5 27 MOP fo 5 28 7

Assemblatorns fyra uppgifter Punkt. översätta de mnemoniska instruktionsbeteckningarna till maskinkod. Punkt 2. arbeta med symboliska beteckningar för adresser och datavärden. översätta symboliska beteckningar till sina rätta värden. Punkt 3. beräkna vissa matematiska uttryck Punkt 4. Generera listfil och laddfil MOP fo 5 29 Punkt. Översätta de mnemoniska instruktionsbeteckningarna till maskinkod. LDAA $C080 ANDA #%0000 LDAB $C08 STD $C082 JSR $CA00 *subrutin som ger ms fördröjning JMP $C000 *programavsnittet börjar på adress C000H...i stället för: 86 C0 80 (LDAA svarar mot 86) 84 0F (ANDA # svarar mot 84) F6 C0 8 (LDAB svarar mot F6) 7C C0 82 (STD svarar mot 7C) 6 CA 00 (JSR svarar mot 6) 06 C0 00 (JMP svarar mot 06) MOP fo 5 30 Punkt 2. Arbeta med symboliska beteckningar (namn) LOC LDAA ALFA ANDA #CONST LDAB ALFA2 STD ACOMB JSR DELAYms subrutin som ger ms fördröjning JMP LOC...i stället för: LDAA $C080 ANDA #%0000 LDAB $C08 STD $C082 JSR $CA00 subrutin som ger ms fördröjning JMP $C000 MOP fo 5 3 programavsnittet börjar på adress C000H Punkt 3. Beräkna aritmetiska uttryck LOC LDAA ALFA ANDA #CONST LDAB ALfA+ STD ALfA+2*CONST JSR DELAYms JMP LOC MOP fo 5 32 8

2-pass assemblatorns arbetssätt 2-pass assemblatorns arbetssätt Exempel 002000. ORG $2000 002000 B6 20 2 2. SNURRA LDAA ALFA 2 002003 80 0 3. SUBA # 3 002005 7A 20 2 4. STAA ALFA 4 002008 26 F6 5. BNE SNURRA 5 00200A 86 FF 6. LDAA #ETTOR 6 00200C 7A 20 3 7. STAA BETA 7 00200F 06 E2 00 8. JMP MSTART 8 00202 7 9. ALFA FCB 23 9 00203 0. BETA RMB 0 00FF. ETTOR EQU $FF E200 2. MSTART EQU $E200 2 Pass : Skapa symboltabell Symboltabell: Namn Värde SNURRA $2000 ALFA $202 BETA $203 ETTOR $00FF MSTART $E200 Pass 2: Lägg ut kod MOP fo 5 33 MOP fo 5 34 Kod 2-pass assemblatorns arbetssätt Adress Kod 2000 B6 SNURRA LDAA ALFA 200 20 2002 2 2003 80 SUBA # 2004 0 2005 7A STAA ALFA 2006 20 2007 2 2008 26 BNE SNURRA 2009 F6 200A 86 LDAA #ETTOR 200B FF 200C 7A STAA BETA 200D 20 200E 3 200F 06 JMP MSTART 200 E2 20 00 202 7 ALFA FCB 23 203 - BETA RMB MOP fo 5 35 Generera listfil Punkt 4. 002000. ORG $2000 002000 B6 20 2 2. SNURRA LDAA ALFA 002003 80 0 3. SUBA # 002005 7A 20 2 4. STAA ALFA 002008 26 F6 5. BNE SNURRA 00200A 86 FF 6. LDAA #ETTOR 00200C 7A 20 3 7. STAA BETA 00200F 06 E2 00 8. JMP MSTART 00202 7 9. ALFA FCB 23 00203 0. BETA RMB 00FF. ETTOR EQU $FF E200 2. MSTART EQU $E200 Adress Konst Kod Rad Källkod MOP fo 5 36 9

Start info Ant byte följande kod Kontrollsumma Generera laddfil Punkt 4. Assemblerdirektiv Exempel Förklaring ORG $00 Puts the next and following bytes beginning in location $00. S72000B62028007A20226F686FF7A20306E20070066 S903204C8 Maskinkod och data L RMB 0 Makes the label L have the value of the current location; increments the location counter by 0 0. L2 EQU $0 Makes the symbol L2 have the value 0 6. L3 FCB $20,$34 Makes the symbol L3 have the value of the current location; initializes the current location to the value 20 6 and the next location to 34 6. L4 FDB $234 Makes the symbol L4 have the value of the current location; initializes this location to 2 6 and the next location to 34 6. MOP fo 5 37 L5 FCS "ABC" Makes the symbol L5 have the value of the current location; initializes the word at this location to the ASCII letter "A", the next location MOP to the fo 5ASCII letter "B", and the next to "C 38 Parameteröverföring s Parameteröverföring forts s INDATA SUBRUTIN som utför någon uppgift UTDATA Exempel: Dividera en variabel med två AdrP P H P L Variabel som skall divideras med 2 Parameteröverföring kan ske på tre olika sätt: i register i globala variabler via stacken MOP fo 7 39 P H P L Skifta Höger C Rotera Höger C MOP fo 7 40 0

SubRutin SubRutin Huvud Prog Huvud Prog SubRutin SubRutin Huvud Prog Huvud Prog Parameteröverföring via register LDD AdrP P H A och P L B JSR Div2 STD AdrP s Parameteröverföring via global variabel LDX AdrQ Q P STX AdrP JSR Div2 LDX AdrP P Q STX AdrQ s Div2 PSH S före subrut Div2 PSHD Spara register LDD AdrP Hämta Inparamertar ASRA RORB PUL RTS Skifta P H Rotera P L MOP fo 7 4 ASRA RORB Skifta D H Rotera D L STD AdrP Lämna utparamertar PULD Hämta tillbaka RTS S före subrut MOP fo 7 42 Div2 Parameteröverföring via stacken LDX AdrP P X PSHX JSR Div2 PULX STX AdrP X P PSHD LDAA 4,SP Hämta Inparamertar High Byte LDAB 5,SP Hämta Inparamertar Low Byte ASRA RORB Skifta D H Rotera D L STD 4,SP Lämna utparamertar PULD RTS S före subrut MOP fo 7 43 s Parameteröverföring via stacken LDX AdrP P X PSHX JSR Div2 PULX STX AdrP X P InPar EQU 4 UtPar EQU 4 Div2 PSHD LDD InPar,SP Hämta Inparamertar ASRA RORB STD PULD RTS Skifta D H Rotera D L UtPar,SP Lämna utparamertar S före subrut MOP fo 7 44 s

SubRutin Huvud Prog SubRutin SubRutin Huvud Prog Huvud Prog Parameteröverföring med pekare (här överförd i register) LDX #AdrP Adressen till P JSR Div2 s Parameteröverföring med pekare (här överförd via stack) LDD #AdrP Adressen till P PSHD JSR Div2 LEAS 2,SP Städa Stack s Div2 PSHD LDD,X Hämta Inparamertar Div2 PSHD LDD [4,SP] Hämta Inparamertar ASRA RORB Skifta D H Rotera D L STD,X Lämna utparamertar PULD RTS S före subrut MOP fo 7 45 ASRA RORB Skifta D H Rotera D L STD [4,SP] Lämna utparamertar PULD RTS S före subrut MOP fo 7 46 Parameteröverföring med pekare (här överförd i register) s Funktioners parametrar och returvärden. LDX #AdrP Adressen till P JSR Div2 Adr P P H P L Variabel som skall divideras med 2 Div2 ASR,X Skifta P H ROR,X Skifta P L RTS MOP fo 7 47 MOP fo 7 48 2

Funktioners parametrar och returvärden. Variabler i en subrutin s Åtkomst av variabler Minnesresistenta variabler (var rmb?? Def variabel i minnet) Dynamiska variabler - på stacken ( leas -n,sp Skapa plats på stacken) Aktiveringspost Rampekare MOP fo 7 49 MOP fo 7 50 Par equ??? Def ofs på stack Par2 equ??? Def ofs på stack LokV equ??? Def ofs på stack LokV2 equ??? Def ofs på stack Konst equ??? Def konst En typisk subrutin SubRut leas n,sp Skapa plats för lokala variabler psha/b/x Spara undan nödvändiga register ldx Par,sp ldaa Par2,sp Hämta inparametrar clr LokV,sp movw #Konst,LokV2,sp Initiera Lokala Variabler --- LÖS UPPGIFTEN --- std Par,sp Lämna utparametrar pula/b/x Återhämta register leas n,sp Återställ stacken rts MOP fo 7 5 Par equ??? Def ofs på stack Par2 equ??? etc En typisk subrutin med Rampekare SubRut pshy Spara förra rampekare tfr sp,y Sätt ny rampekare leas n,sp Skapa plats för lokala variabler psha/b/x Spara undan nödvändiga register ldaa Par2,y ldx Par,y Hämta inparametrar clr LokV,y movw #Konst,LokV2,y Initiera Lokala Variabler --- --- LÖS UPPGIFTEN std Par,y Lämna utparametrar pula/b/x Återhämta register tfr y,sp Återställ stacken puly Hämta gamla rampekaren rts MOP fo 7 52 3

Stack för subrutin med Rampekare Reg S Par equ 4 Def ofs In/Utparameter 6-bit Par2 equ 6 Def ofs Inparameter 8-bit LokV equ -3 Def ofs Lokal Var 8-bit LokV2 equ -2 Def ofs Lok Var 6-bit Rampekare för SubRut Aktiveringspost för SubRut Reg Y -3,Y -2,Y -,Y,Y 2,Y 3,Y 4,Y 5,Y 6,Y A B X H X L LokV LokV2 H LokV2 L Y H Y L PC H PC L Par H Par L Par2 Sparade regs (PSH) Lokala Variabler (LEAS) Förra Rampekare (TFR S,Y) PC In/Utparametrar Till/från SubRut Processbyte Lab 3 Seriekommunikation o o o o Synkronisering RS232 HC2 s SCI Datanät Topologi - B I DAG fo 8 Aktiveringspost för den rutin som anropade SubRut Y H MOP fo 7 Y L 53 MOP fo 7 54 Processbyte PROC 4 PROC 3 PROC 2 PROC INIT SWITCH T=0 En processor flera program körs i turordning (pseudoparallellt) En avbrottsrutin (SWITCH) som växlar process 2,5 ms 2,5ms 2,5ms μs μ s μ s RUNNING RUNNING READY READY READY RUNNING RTI RTI RTI t MOP fo 7 55 Processbyte En processor flera program körs i turordning (pseudoparallellt) HDW krav: En avbrottskälla som ger regelbundna avbrott (Ex Timer) SW krav: Pulsgenerator 400 Hz En avbrottsrutin (SWITCH) som växlar process CS vid skrivning D C R Q' Adress $2000 $200 $2200 $2300 $2400 $2500 Init Variabler Kod P Data o stack P Kod P2 Data o Stack P2 Kod P3 Data o Stack P3 Kod P4 Data o Stack P4 Process Process 2 Process 3 Process 4 Ledigt Till processorns $FFFF MOP fo 7 56 4

Adress $2000 $200 $2200 $2300 $2400 $2500 Init Variabler Kod P Data o stack P Kod P2 Data o Stack P2 Kod P3 Data o Stack P3 Kod P4 Data o Stack P4 Ledigt Processbyte Process Process 2 Process 3 Process 4 Adress SPProc SPProc2 SPProc3 SPProc4 ProcNR P AH P AL P2 AH P2 AL P3 AH P3 AL P4 AH P4 AL [0,3] Stackpekare Process Stackpekare Process 2 Stackpekare Process 3 Stackpekare Process 4 Processnummer som kör NU Adress $2000 $200 $2200 $2300 $2400 $2500 Init Variabler Kod P Data o stack P Kod P2 Data o Stack P2 Kod P3 Data o Stack P3 Kod P4 Data o Stack P4 Ledigt $2F7 Stack Process $2200 C B A X H X L Y H Y L PC H PC L 0,X,X 2,X 3,X 5,X 7,X REG X $FFFF MOP fo 7 57 $FFFF MOP fo 7 58 Adress $2000 $200 $2200 $2300 $2400 $2500 $FFFF Init Variabler Main Data o stack P Main2 Data o Stack P2 Main3 Data o Stack P3 Main4 Data o Stack P4 Ledigt Stack Process 3 $23F7 $2400 C B A X H X L Y H Y L PC H PC L %000000???????????? Adr Main3 MOP fo 7 59 Borrmaskinlabbet Lab 3 - En Robot I/O och avbrott och två processer Mikrodator Tangentbord för borrkommando Anpassningselektronik Klocka Operatör Borrmaskin Process 2 MOP fo 7 6 5

Lab 3 2 processer Borr o Display Adr 0000 2000 2500 3000 4000 FFFF HC2 Regs IO-Portar INIT SWITCH BORR Dataarea B DISPLAY Dataarea D Ledigt RWM ROM (DBG2 Monitor) Avbrotts -signal BORR BORR SWITCH SWITCH DISPLA Y DISPLAY MOP fo 7 62 Avbrott s-signal Lab 3 2 processer avbrottskälla BORR DISPLAY SWITCH Huvudprogram Avbrottsrutin Avbrottssignal Pulsgenerator 400 Hz CS vid skrivning D 2,5 ms 2,5ms 2,5ms RTI C R MOP fo 7 63 Q' Till processorns Adr Lab 3 0000 2 processer 2 Stackar 2000 2 Stackpekare INIT CC B A X H X L Y H Y L PC H PC L 2500 3000 4000 FFFF HC2 Regs IO-Portar SWITCH BORR Dataarea B DISPLAY Dataarea D Ledigt RWM ROM (DBG2 Monitor) Reg S CC B A X H X L Y H Y L PC H PC L Lab 3 RTI- första gången INIT BORR DISPLAY SWITCH t=0 2,5 ms CC som DISPLAY läser in måste ha sin I-flagga nollställd för att kunna bli avbrutet av ett interrupt Återhoppsadressen måste vara DISPLAY s startadress $???? BOS CC B A X H X L Y H Y L PC H PC L (Den ena stackpekaren) StackPek rmb 2 (Den andra stackpekaren) MOP fo 7 64 MOP fo 7 65 6

Seriekommunikation Synkronisering - Datanät Sändare Mottagare Dataregister Dataregister 8 bitar - Parallell överföring Göteborg Seriekomunikation -forts 3 t l 500 0, ms c 3 0 66 8 Stockholm s5 Göteborg Stockholm Dataregister Databuffert Dataregister bit - Seriell överföring Dataregister b0 0 0 0 0 0 0 bit - Seriell överföring b0 MOP 66 MOP 67 Seriekomunikation -forts s6 Seriekomunikation -forts s6 Start ldaa InPort Läs Indata ldab #8 Antal skift Next staa UtPort Sänd bit0 lsra Skifta fram nästa jsr Delay0ms Vänta 0, ms decb Sista biten? bne Next..hopp om Nej bra Start Klocka (0 khz) Göteborg Klocka (0 khz) Skiftregister 0 0 0 0 0 0 Stockholm Skiftregister D Delay0ms nop Dummyrutin för Delay rts MOP 68 MOP 69 7

Seriell IO Skiftregister - mottagning Kap 5 s20 Seriekomunikation -forts SKICKA DATA Q Q 2 Q 3 Q 4 ldx #Data Pekare D D C D C D C D C Loop ldaa,x+ Läs data staa SändReg Skicka en byte jsr Delay Vänta tills 8 bitar är utskiftade bra Loop CP Figur 5.34 4-bitars skiftregister uppbyggt med 4 stycken D-vippor. MOP 70 MOP 7 CS_Sänd Klocka Seriekomunikation -forts Data buss Räknat_8 Logik med räknare CS Skift Register STAA Sänd s6 Seriell data ut TxD MOP 72 Seriekomunikation -forts Cnt8 equ %0000000 Def Räknat 8 bitar ldx #Text Pekare NextCh ldaa,x+ Läs tecken cmpa #EOT Sista? beq Slut..hoppa om JA R8är ldab InPort Läs Status bitb #Cnt8 Invänta Redo för.. beq R8är.. nytt tecken staa ShiftReg Sänd ett tecken R8är0 ldab InPort Läs Status bitb #Cnt8 Invänta Upptagen med.. bne R8är0..att skifta ut Slut bra nop bra NextCh Slut MOP 73 8

Seriekomunikation -forts s7 Seriekomunikation - Buffrad sändning Räknt8 =? N Räknt8 =? N CS_OutData Data_Reg_Tomt Data buss STAA OutData J Skriv till Skift Reg J Skiv till Skift Reg Klocka Logik med räknare CS Data Register LD Skift Register Seriell data ut TxD Busy Wait Polling Signalen Räknat_8 MOP 74 MOP 75 Seriell IO Buffrad mottagning Seriekomunikation Synkron överföring s9 LDAA DataIn Klocka CS.DataIn Data buss Data_Reg_Full OE Logik med Data Register räknare E Klockkrets Göteborg Skiftregister 0 0 0 0 0 0 Stockholm Skiftregister D Seriell data in Skift Register D MOP 76 MOP 77 9

Seriekomunikation Synkron överföring s9 Seriekomunikation Asynkron överföring s0 Alltid hög Alltid låg Klockkrets Klockkrets Sändare Mottagare 0 Skiftregister 0 0 0 0 0 0 Skiftregister D Noll-bit Ett-bit BAUD, BAUDRATE MOP 78 MOP 79 Seriekomunikation Asynkron överföring Seriekomunikation Asynkron överföring Block (Frame) 7-bitars ASCII Startbit b0 b b2 b3 b4 b5 b6 P 0 b0 b b2 b3 Startbit Paritetsbit Stopbit t t2 t3 t4 t5 t6 Init: Ant bitar, Paritet, Stopbitar, BAUDRATE, etc MOP 80 Clk = k(baudrate) MOP 8 20

Enhet A Enhet B Enhet C Seriekomunikation Asynkron överföring Startbit b0 b b2 b3 BAUD A = Clk/(k) t t2 t3 t4 t5 t6 BAUD B = Clk/(k-i) t t2 t3 t4 t5 t6 BAUD C = Clk/(k+i) t t2 t3 t4 t5 t6 HCS2DG256, block diagram MOP 82 MOP 83 HCS2DG256, core Peripherals in HCS2DG256 AD Analog to Digital conversion SCI Serial Asynchronous communication PWM Pulse Width Modulation Etc MOP 84 MOP 85 2

HCS2DG256 Minne core CPU2, Clock, etc SCI Serial Communication Interface Two identical devices: SCI 0 = Offset 0xC8 SCI = Offset 0xD0 SCI Seria Asynchronous communication olika seriekretsar. MOP 86 BaudRate = BusClock/(6 x BR) BusClock = 8 0 6, BR 892 MOP 87 SCI Initialization example, 9600 Baud typedef struct ssci{ volatile unsigned short scibd; volatile unsigned char scicr; volatile unsigned char scicr2; volatile unsigned char scisr; volatile unsigned char scisr2; volatile unsigned char scidrh; volatile unsigned char scidrl; }SCI, PSCI*; #define SCI0_BASE 0x00C8 #define BAUD 8000000/(6*9600)... /* init SCI */ PSCI sci = (PSCI) SCI0_BASE; sci->scibd = BAUD; sci->scicr = 0; sci->scicr2 = 0xC;... MOP 88 SCI Input and output /* send a character through SCI0 */ void _outchar( char c ) { } /* wait for TDRE== */ while( ( sci->scisr & 0x80 )== 0) {}; /* send the character */ sci->scidrl = c; /* receive a character through SCI0 */ char _inchar( void ) { /* wait for character, RDRF== */ while(! ( sci->scisr & 0x20 ) ) {}; } /* return the character */ return (char) ( sci->scidrl ); MOP 89 22

Seriekomunikation Multiplex överföring s2 Seriell IO Datanät Användare A Hej Du Kalle Användare B Kurt, kan du hjälpa Användare C Jag beställer härmed Central i Göteborg Dataregister Skiftregister e e u b, D t g r j a u e J K H bit - Seriell överföring Central i Stockholm Dataregister Skiftregister Användare D Användare E Användare F Datanäten grupperas i lokala datanät (LAN, Local Area Network) kontinentala (WAN, Wide Area Network). Topologi Media - Accessmetoder MOP 90 MOP 9 Seriekomunikation- Datanät- Media s5 Datanät- Topologi - Acessmetoder Tvinnad partråd Koaxialkabel Fiberoptik Kapacitet Låg Medium Mycket hög Flexibilitet Mycket hög Medium Låg Kontaktering Billig Medium Mycket dyr Störokänslighet Låg Bra Mycket hög Buss Stjärna När ska någon få skicka data ut på nätet? Polling En master, Rundfrågning CSMA Lyssna först, Skicka om ledigt TDMA Fördefinierade Tidsluckor Token Stafett-pinne Ring Masknät MOP 92 MOP 93 23

Seriekomunikation- typiskt datablock s7 Styrfält Datafält Kontrolsumma Slutmarkering Startfält MOP 94 24