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



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

Laborationsmoment 2 - En Borrautomat

Programmering av inbyggda system

Laborationsmoment 2 - En Borrautomat

Laborationsmoment t 2 - En Borrautomat

Laborationsmoment t 2 - En Borrautomat

Programmering av inbyggda system

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

VELKOMMEN!!!! SYFTE o MÅL. till EDA485/DIT151. Maskinorienterad Programmering. Kurslitteratur. önskar Jan o Rolf

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

Maskinorienterad programmering del 1

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

Maskinorienterad programmering. Arbetshäfte för laboration nr 1-3. Laborant: Godkännande - laboration: Data- och informationsteknik, datorteknik

Maskinorienterad programmering, It/GU

Assemblerprogrammering

Förutsättningar för skrivaranslutningen

Assemblerprogrammets struktur; exempel

Maskinorienterad Programmering 2010/11

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

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

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

Programexempel för FLEX

Extrauppgifter för CPU12

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

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

EDA215 Digital- och datorteknik för Z

Laboration nr 4 behandlar Assemblerprogrammering

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

Exempel 3 på Tentamen

VELKOMMEN!!!! SYFTE o MÅL. till DAT015 / DIT151 Maskinorienterad Programmering. Kurslitteratur. önskar Jan o Rolf. Lektioner LP2 Vanlig vecka

Avbrottshantering. Övningsuppgifter

Maskinorienterad programmering Laborationer för D/Z/GU (EDA480,EDA485, DIT151)

Lösningsförslag tenta

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

Maskinorienterad programmering

MANUALBLAD MODULER TILL DIGITALMASKINEN

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

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

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

EDA Digital och Datorteknik

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:

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

TENTAMEN (med svar och vissa lösningar)

Maskinorienterad programmering

Assemblerprogrammering del 3

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

VELKOMMEN!!!! SYFTE o MÅL. till EDA485/DIT151. Maskinorienterad Programmering. Kursupplägg. Kurslitteratur. önskar Jan o Rolf

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

Tentamen 3. EDAxxx Grundläggande Datorteknik DIT791 Grundläggande Datorteknik, GU. Måndag xx Oktober 20xx, kl

Digital- och datorteknik

Assemblerprogrammets. struktur; exempel

LEU240 Mikrodatorsystem

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

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

Assemblerprogrammering för HCS12

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

Exempel på tentamen 1

Exempel 1 på Tentamen med lösningar

CHALMERS TEKNISKA HÖGSKOLA

Digital- och datorteknik

Tentamen. DIT150 Maskinorienterad programmering GU DAT015 Maskinorienterad programmering IT. Söndag 17 december 2006, kl

Digital- och datorteknik

Digital- och datorteknik

Tentamen med lösningar

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

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

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

Laboration nr 4 behandlar Assemblerprogrammering

Digital- och datorteknik

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

DBG identifierar därefter sig genom utskrift av namn och version. Se även "Disposition av adressrum" nedan. Följande kommandon accepteras av DBG

Programmering av inbyggda system Laborationer för D, Z och GU (EDA481, EDA486 och DIT152)

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

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

Tentamen med lösningsförslag

Maskinorienterad programmering

Assemblerprogrammeringsuppgifter för FLIS-processorn

Maskinorienterad programmering

A-del motsvarande KS1

Programmering i maskinspråk (Maskinassemblering)

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

F8: Undantagshantering

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

Laborationer med MC11 ML4 Grundläggande assemblerprogrammering

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

Övningsuppgifter i Mikrodatorteknik 4p/5p

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

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

Tentamen med lösningsförslag

Tentamen. Datorteknik Y, TSEA28

Tentamen med lösningsförslag

Tentamen. EDA485 Maskinorienterad programmering Z DAT015 Maskinorienterad programmering IT. Tisdag xx yyyy 2006, kl

F4: Assemblerprogrammering

Ext-14 (Ver ) Ext-14. FLEX-processorns styrenhet med fast logik

Maskinorienterad programmering

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Lösningsförslag till Tenta i Mikrodator

Tentamen. EDA485 Maskinorienterad programmering Z. Måndag 6 mars 2006, kl i V-salar

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

Transkript:

Maskinorienterad Programmering 212/213 Laborationsmoment 2 - En Borrautomat : Programutveckling i assembler Tangentbord för borrkommando Operatör Mikrodator Anpassningselektronik Borrmaskin Arbetsbok för MC12, kapitel 4 Klocka 1 2 Borrmaskin-Robot Borrmotor med ON/OFF knapp Simulatorn för borrmaskinen Sensor för borr i topp- eller bottenläge Tryckfjäder för höjning av borr Solenoid för sänkning av borr Arbetsstycke Sensor för detektering av referensmärke på arbetsstycke (Dolt) Kretskort med effektelektronik och anslutning mot styrkort för borrmaskin. Stegmotor för rotation av arbetsstycke. New disc: Här väljer du olika arbetsstycken Control -sektion: Styrord till borrmaskinen Status -sektion: Statussignaler från borrmaskinen Indikator för Motor On Indikator för Alarm Arbetsstycke Borrade hål märks ut 3 4

Specifikation Start Operation vald Ja Utför operation Nej starta borrmotorn stoppa borrmotorn sänk borret höj borret vrid arbetsstycket ett steg vrid arbetsstycket till referenspositionen borra ett hål borra hål längs cirkeln enligt ett bestämt mönster. 5 6 Styrord till borrmaskinen Utport: Drill Control stegpuls fram/back borrmotor solenoid larmsignal Statusord från borrmaskinen Inport: Drill Status referensposition borr uppe borr nere Anm: Statusporten ansluts till adress $6 i laborationssystemet Bit 4 = 1: Larm på Bit 3 = 1: Borret sänks Bit 2 = 1: Borrmotorn roterar Bit 1 = 1: Medurs vridning Bit : Pos flank Stegpuls Logiknivå: Aktiv hög Att göra RESET på borrmaskinen således: LDAA # ; Passiva signaler STAA $4 Bit 2 = 1: Borr i bottenläge Bit 1 = 1: Borr i toppläge Bit = 1: Referensposition Logiknivå: Aktiv hög 7 8

Testförfarande Uppgift 71 Villkorlig assemblering ger korrekta portadresser ; Definiera macro SIM för test i simulator #define SIM DipSwitch EQU $6 HexDisplay EQU $7 DrillControl EQU $4 DrillStatus EQU $41 Loop LDAA DipSwitch ; Läs strömbrytare STAA DrillControl ; Ge styrord LDAB DrillStatus ; Läs status BRA Loop DipSwitch EQU $6 ; Dip Switch Input DrillControl EQU $4 ; Drill Control Output #ifdef SIM DrillStatus EQU $41 ; Drill Status Input #else DrillStatus EQU $6 ; Drill Status Input #endif Anm: Dip Switch Input och borrmaskin kan inte användas samtidigt i laborationssystemet (MC12). 9 1 Använd USE-direktivet ; Labdefs.S12 DipSwitch EQU $6 ; Dip Switch Input DrillControl EQU $4 ; Drill Control Output # ifdef SIM DrillStatus EQU $41 ; Drill Status Input # else DrillStatus EQU $6 ; Drill Status Input # endif ; Drilltest1.s12 #define SIM USE DRILLDEFS.S12 Loop LDAA DipSwitch ; Läs strömbrytare STAA DrillControl ; Ge styrord LDAB DrillStatus ; Läs status BRA Loop Inledande uppgift med borrmaskinen 1) Arbetsstycket vrids till referensposition. 2) Hål borras 3) Arbetsstycket vrids medurs ett steg 4) Hål borras 5) Arbetsstycket vrids medurs ett steg 6) Hål borras 7) Arbetsstycket vrids medurs tre steg 8) Hål borras 9) En larmsignal ges som indikation på att uppgiften är klar. START Initiera Borrmaskin 1)Till RefPos 2)Borra 3)Vrid1steg 4)Borra 5)Vrid1steg 6)Borra 7)Vrid3steg 8)Borra 9)Ge larm STOP ; Dtest2 USE DRILLDEFS.S12 ORG $1 LDAA # ; Reset STAA DCtrl JSR TillRefPos JSR Borra JSR Borra JSR Borra JSR Borra JSR GeLarm Loop: BRA Loop Vrid1steg: TillRefPos: Borra: GeLarm: 11 12

Att vrida arbetsstycket Att borra ett hål Utport: Drill Control Etta: Aktiv styrsignal Nolla: Passiv styrsignal stegpuls fram/back Bit = 1 (Pos puls): Arbetsstycket vrids Bit 1 = : Medurs vridningsriktning Bit 1 = 1: Moturs vridningsriktning b 1 b b 1 Uppgift 77 Utport: Drill Control Inport: Drill Status Etta: Aktiv styrsignal Nolla: Passiv styrsignal borrmotor solenoid Nolla: Passiv statussignal Etta: Aktiv statussignal b 2 1 b 3 1 b 2 =1? b 3 borr nere b 2 13 14 Att vrida arbetsstycket till referenspositionen Inport: Drill Status Nolla: Passiv statussignal Etta: Aktiv statussignal referensposition Bit = : Arbetsstycket är inte i referensposition Bit = 1: Arbetsstycket är i referensposition b =1? Att bara ändra en bit i taget * Läs nuvarande styrord LDAA DrillControl * Nollställ lämplig bit ANDA #xx * Skriv nytt styrord STAA DrillControl ;sekvensen är funktionellt ;likvärdig med: BCLR #~DrillControl Fungerar inte här ty porten är icke läsbar utport 15 16

Kopia av styrordet Variabel DCShadow ska hela tiden ha samma värde som DrillControl hade haft om porten varit läsbar För att nollställa en bit används nu: LDAA ANDA STAA STAA för att ettställa en bit används: LDAA ORAA STAA STAA DCShadow #~xx DCShadow DrillControl DCShadow #xx DCShadow DrillControl Subrutiner för att manipulera styrregistret Outone och Outzero * Subrutin Outone. Läser kopian av * borrmaskinens styrord på adress * DCShadow. Ettställer en av bitarna och * skriver det nya styrordet till * utporten DrillControl samt tillbaka till * kopian DCShadow. * Biten som nollställs ges av innehållet * i B-registret (-7) vid anrop. * Om (B) > 7 utförs ingenting. * Anrop: LDAB #bitnummer * JSR Outone * Utdata: Inga * Registerpåverkan: Ingen * Anropade subrutiner: Inga DCShadow RMB 1 bitnummer =..7 17 18 Fördröjningar i mekaniska delar Starta borrmotorn (vänta tills den är uppe i varv, c:a 1 sekund) Vrid arbetsstycket ett steg (vänta tills det har vridits till rätt position, ca 2 ms) Lyft borret (vänta tills borret har kommit ovanför arbetsstycket, ca 3ms) etc Borrmaskinrobot 19 2

Rutinen Command Uppgift 88 Command: * giltigt värde? CMPB #7 BHI CommandExit * hopptabellens basadress LDX #JUMPTAB * offset är 2 bytes per adress ASLB * hämta subrutinens startadress LDX B,X * utför subrutin JSR,X * återvänd från kommandorutin CommandExit: ********************************** * Tabell med subrutinadresser JUMPTAB FDB SUB,SUB1,SUB2,SUB3 FDB SUB4,SUB5,SUB6,SUB7 ********************************** * subrutiner för test, byts senare * ut mot START, STOP, DOWN etc SUB MOVB #,ParOut SUB1 MOVB #1,ParOut SUB2 MOVB #2,ParOut SUB3 MOVB #3,ParOut SUB4 MOVB #4,ParOut SUB5 MOVB #5,ParOut SUB6 MOVB #6,ParOut SUB7 MOVB #7,ParOut Filen Main.s12 STRUKTUR 1. Inkludera definitionsfil 2. Initiera borrmaskin 3. Huvudprogram 4. Subrutinen COMMAND 5. Inkludera fil (filer) med ytterligare subrutiner. 6. Plats för variabler ; Definitioner USE Labdefs.s12 ORG $1 ;*********************************** ; Huvudprogram ; Invänta vald operation main_loop: JSR GetKbdML15 ; Utför vald operation JSR Command BRA main_loop ************************************ Command: USE ML15drvr.s12 ; Placera alla variabler här DCShadow RMB 1 21 22 Att testa filen Main.s12 SUB MOVB #,ParOut SUB1 MOVB #1,ParOut SUB2 MOVB #2,ParOut SUB3 MOVB #3,ParOut SUB4 MOVB #4,ParOut SUB5 MOVB #5,ParOut SUB6 MOVB #6,ParOut SUB7 MOVB #7,ParOut 23 Rutiner MotorStart och MotorStop * SUBRUTIN STOP. Subrutinen stannar * borrmotorn. * * Anrop: JSR MotorStop * Indata: Inga * Utdata: Inga * Registerpåverkan: Ingen * Anropade subrutiner: Outone ; SUBRUTIN MotorStart. ; Subrutinen startar ; borrmotorn väntar därefter i 1 sekund ; före återhopp så att borret uppnår ; rätt hastighet. * * Anrop: JSR MotorStart * * Indata: Inga * Utdata: Inga * Registerpåverkan: Ingen * Anropade subrutiner: Outone * DELAY Ändringar i huvudprogram... JUMPTAB FDB MotorStart,MotorStop FDB SUB2,SUB3 FDB SUB4,SUB5,SUB6,SUB7 ********************************** * subrutiner för test, byts senare * ut mot START, STOP, DOWN etc MotorStart... MotorStop... SUB2 MOVB #2,ParOut... 24

Laborationsmoment 2 Pseudoparallell exekvering Mikrodator Tangentbord för borrkommando Anpassningselektronik Klocka Operatör Borrmaskin Applikation för avbrott () ;Initieringssekvens ORG XXXX... ; nollställ I-flagga ANDCC #$FE JSR _main... ORG $FFF2 FDB irq_service_routine ; Avbrottshanterare irq_service_routine:... FFFF 4 3FFF 1 FFF 4 3FF ROM, Innehåller det inbyggda debuggerprogrammet DBG12. RWM, används för program och data. I detta adressintervall placeras gränssnitt mot externa enheter HCS12 interna register I laborationssystemet (MC12) kan vi INTE placera avbrottsvektorerna på deras rätta platser (konflikt med DBG12) I stället placeras dom i RWM 25 26 MC12 (DBG12) och avbrott Huvudprogram Allmänt Handler Betjäna avbrottet ORG $FFF2 FDB irq_service_routine ; Avbrottshanterare irq_service_routine: Vektor ROM FFFE FFFC FFFA FFF8 FFF6 FFF4 FFF2 FF8C FFF Funktion RESET, Startvektor Clock Monitor Fail, JMP [3FFC] COP Watchdog Timeout, JMP [3FFA] Illegal Op Code, JMP [3FF8] SWI, JMP [3FF6] X, JMP [3FF4], JMP [3FF2] Enhetsspecifika JMP [3Fxx] vektorer Men i MC12 och simulator... ORG $3FF2 FDB irq_service_routine ; Avbrottshanterare irq_service_routine: Processbyte En processor flera program körs samtidigt (pseudoparallellt) HDW krav: En avbrottskälla som ger regelbundna avbrott (Ex Timer) SW krav: En avbrottsrutin (SWITCH) som växlar process Puls generator 4Hz CS vid skrivning 1 1D C1 R Q' Till processorns Init variabler kod P1 data/stack P1 kod P2 data/stack P2 kod P3 data/stack P3 kod P4 data/stack P4 Ledigt... Process1 Process 2 Process 3 Process 4 27 28

Processtillstånd 4Hz CS 1 f 4Hz p,25s 2,5ms 4 PROC 4 PROC 3 PROC 2 PROC 1 INIT SWITCH 1 1D C1 R Q' RUNNING READY READY READY READY RUNNING $3 Init variabler kod P1 data/stack P1 kod P2 data/stack P2 kod P3 data/stack P3 kod P4 data/stack P4 Ledigt... Process1 Process 2 Process 3 Process 4 $2FF7 $3 CCR ACCB ACCA X H X L Y H Y L PC H PC L Viktigt: I-flaggan måste vara SP T= 2,5ms 2,5ms 2,5ms μs μs μs t 29 3 Initial stack för process och processbyte : Init variabler kod P1 data/stack P1 kod P2 data/stack P2 kod P3 data/stack P3 kod P4 data/stack P4 Ledigt... Process1 Process 2 Process 3 Process 4 SPProc1 SPProc2 SPProc3 SPProc4 ProcNR P1sp H P1sp L P2sp H P2sp L P3sp H P3sp L P4sp H P4sp L,1,2,3 Stackpekare Process 1 Stackpekare Process 2 Stackpekare Process 3 Stackpekare Process 4 Processnummer Running ORG TopOfStack-9 Istack: FCB $C ; Initialt CCR FCB ; Initialt B FCB ; Initialt A FDB ; Initialt X FDB ; Initialt Y FDB Start ; Initialt PC ORG LDD STD Code #Istack SPProc Handler: ; Spara Running stackpekare STS... ; Välj ny Running LDS... ; Återstarta CCR ACCB ACCA X H X L Y H Y L PC H PC L SP 31 32