Laborationsmoment t 2 - En Borrautomat

Relevanta dokument
Laborationsmoment t 2 - En Borrautomat

Laborationsmoment 2 - En Borrautomat

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

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

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

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

Programexempel för FLEX

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

Assemblerprogrammering

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

Extrauppgifter för CPU12

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

Maskinorienterad programmering, It/GU

Digital- och datorteknik

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

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

EDA215 Digital- och datorteknik för Z

Maskinorienterad programmering del 1

MANUALBLAD MODULER TILL DIGITALMASKINEN

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

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

Digital- och datorteknik

Assemblerprogrammets struktur; exempel

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

Maskinorienterad Programmering 2010/11

EDA Digital och Datorteknik

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

Exempel 3 på Tentamen

Avbrottshantering. Övningsuppgifter

LEU240 Mikrodatorsystem

Programmering av inbyggda system

TENTAMEN (med svar och vissa lösningar)

Digital- och datorteknik

Lösningsförslag tenta

Digital- och datorteknik

Digital- och datorteknik

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

Digital- och datorteknik

Digital- och datorteknik

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

Maskinorienterad programmering

Digital- och datorteknik

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

Maskinorienterad programmering

Digital och Datorteknik EDA /2010. 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:

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

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

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

Exempel på tentamen 1

Laboration 2 i Datorteknik- Assemblerprogrammering II

Laboration nr 4 behandlar Assemblerprogrammering

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

CPU. Carry/Borrow IX. Programräknare

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

Maskinorienterad programmering

Assemblerprogrammering del 3

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

F8: Undantagshantering

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

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

CHALMERS TEKNISKA HÖGSKOLA

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

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

TSEA28 Datorteknik Y (och U)

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

Programmering i maskinspråk (Maskinassemblering)

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

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

Förutsättningar för skrivaranslutningen

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

Tentamen Enchipsdatorer med tillämpningar. Lösningar och kommentarer

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

Assemblerprogrammeringsuppgifter för FLIS-processorn

FLEX Instruktionslista

TSEA28 Datorteknik Y (och U)

Digital- och datorteknik

Exempel 1 på Tentamen med lösningar

Digital- och datorteknik

Maskinorienterad programmering

Digital- och datorteknik

TSEA28 Datorteknik Y (och U)

Övningsuppgifter i Mikrodatorteknik 4p/5p

Tentamen med lösningsförslag

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

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

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

GPIO - General Purpose Input Output

3. Mikroprogrammering II

GPIO - General Purpose Input Output

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

Tentamen med lösningar

Tentamen (Svar och lösningsförslag)

Lösningar till tentamen i EIT070 Datorteknik

Övning2 Datorteknik, HH vt12 - Programmering

CE_O3. Nios II. Inför lab nios2time

Transkript:

Maskinorienterad Programmering 2/2 Laborationsmoment t 2 - En Borrautomat t Genomgång g av laborationer: Programutveckling i assembler Tangentbord för borrkommando Operatör Mikrodator Anpassnings- elektronik Borrmaskin Arbetsbok för MC2, kapitel 4 Klocka 2 Borrmaskin-Robot Borrmotor med ON/OFF knapp Simulatorn för borrmaskinen Sensor för borr it 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-fönster: Styrord till borrmaskinen Status-fönster: 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 (stega) arbetsstycket ett steg vrid (stega) arbetsstycket till referenspositionen borra ett hål borra hål längs cirkeln enligt ett bestämt mönster. KEYB A= SUB () A= SUB (STOP) A=2 SUB2 (DOWN) Spara registerinnehåll på stacken A=3 SUB3 (UP) Avkoda (A) SUB4 (STEP) Återställ registerinnehåll från stacken SUB5 (DRILL) Inparameter: Kommandonummer i register A A=4 A=5 A=6 A=7 SUB6 (REFPO) SUB7 (AUTO) A>7 5 6 Styrord till borrmaskinen Utport: Drill Control 7 6 5 4 3 2 stegpuls fram/back borrmotor solenoid larmsignal Statusord från borrmaskinen Inport: Drill Status 7 6 5 4 3 2 referensposition borr uppe borr nere Anm: Statusporten t t ansluts till adress $6 i laborations- systemet t Bit 4 = : Larm på Bit 3 = : Borret sänks Bit 2 = : Borrmotorn roterar Bit = : 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 = : Borr i bottenläge Bit = : Borr i toppläge Bit = : Referensposition Logiknivå: Aktiv hög 7 8

Testförfarande Uppgift 74 Villkorlig assemblering ger korrekta portadresser ; Definiera macro SIM för test i simulator #define SIM DSInput EQU $6 ; Dip Switch Input DCtrl EQU $4 ; Drill Control Output DStatus EQU $4 ; Drill Status Input Loop LDAA DSInput ; Läs strömbrytare STAA DCtrl ; Ge styrord LDAB DStatus ; Läs status BRA Loop DSInput EQU $6 ; Dip Switch Input DCtrl EQU $4 ; Drill Control Output #ifdef SIM DStatus EQU $4 ; Drill Status Input #else DStatus EQU $6 ; Drill Status Input #endif Anm: Dip Switch Input och borrmaskin kan inte användas samtidigt i laborationssystemet (MC2). 9 Använd USE-direktivet ; DRILLDEFS.S2 DSInput EQU $6 ; Dip Switch Input DCtrl EQU $4 ; Drill Control Output # ifdef SIM DStatus EQU $4 ; Drill Status Input # else DStatus EQU $6 ; Drill Status Input # endif ; DTEST.s2 #define SIM USE DRILLDEFS.S2 Loop LDAA DSInput ; Läs strömbrytare STAA DCtrl ; Ge styrord LDAB DStatus ; Läs status BRA Loop Anm: Både DRILLDEFS och IODEFS förekommer som namn här i arbetsboken, använd endast DRILLDEFS.S2 Inledande d uppgift med borrmaskinen ) 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. iera Borrmaskin )Till RefPos 2)Borra 3)Vridsteg 4)Borra 5)Vridsteg 6)Borra 7)Vrid3steg 8)Borra 9)Ge larm STOP ; Dtest2 USE DRILLDEFS.S2 ORG $ LDAA # ; Reset STAA DCtrl JSR TillRefPos JSR Borra JSR Vridsteg JSR Borra JSR Vridsteg JSR Borra JSR Vridsteg JSR Vridsteg JSR Vridsteg JSR Borra JSR GeLarm Loop: BRA Loop Vridsteg: TillRefPos: Borra: GeLarm: 2

Att vrida arbetsstycket t t Att borra ett hål Borra Utport: Drill Control 7 6 5 4 3 2 Etta: Aktiv styrsignal Nolla: Passiv styrsignal stegpuls fram/back Bit = (Pos puls): Arbetsstycket vrids Bit = : Medurs vridningsriktning Bit = : Moturs vridningsriktning b b b Uppgift 8 VridS Ange riktning Ge puls Utport: Drill Control 7 6 5 4 3 2 Inport: Drill Status 7 6 5 4 3 2 Etta: Aktiv styrsignal Nolla: Passiv styrsignal borrmotor solenoid Nolla: Passiv statussignal Etta: Aktiv statussignal b 2 b 3 b 2 =? b 3 N Starta motor Sänk borr Läs Status Borr Nere? J Höj borr borr nere b 2 Stanna motor 3 4 Att vrida arbetsstycket till referenspositionen Att bara ändra en bit i taget Inport: Drill Status 7 6 5 4 3 2 Nolla: Passiv statussignal Etta: Aktiv statussignal referensposition Bit = : Arbetsstycket är inte i referensposition Bit = : Arbetsstycket är i referensposition b =? TillR efp os Läs Status Ref Pos? N Vridsteg J * Läs nuvarande styrord LDAA DCtrl * Nollställ lämplig bit ANDA #xx * Skriv nytt styrord STAA DCtrl ;sekvensen är funktionellt ;likvärdig med: BCLR #~xx,dctrl Fungerar inte här ty porten är icke läsbar utport 5 6

Kopia av styrordet Variabel DCCopy ska hela tiden ha samma värde som DCtrl hade haft om porten varit läsbar För att nollställa en bit används nu: LDAA DCCopy ANDA #Bitmönster STAA DCtrl STAA DCCopy för att ettställa en bit används: LDAA DCCopy ORAA #Bitmönster STAA DCtrl STAA DCCopy Subrutiner för att manipulera styrregistret t t OUTONE och OUTZERO * Subrutin OUTONE. Läser kopian av * borrmaskinens styrord på adress * DCCopy. Ettställer en av bitarna och * skriver det nya styrordet till * utporten DCTRL samt tillbaka till * kopian DCCopy. * 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 DCCopy RMB bitnummer =..7 7 6 5 4 3 2 7 8 Realtid - Födöj Fördröjningar Instruktioner/ sekund Simulator Simulator Simulator STEP RUN RUN FAST Hårdvara? Fördröjningar i mekaniska delar Starta borrmotorn (vänta tills den är uppe i varv, c:a sekund) Vrid arbetsstycket ett steg (vänta tills det har vridits till rätt position, ca 2 ms) Lftb Lyft borret (vänta tills borret har kommit ovanför arbetsstycket, ca 3ms) etc 9 2

************************************** * SUBRUTIN DELAY * Beskrivning: Skapar en fördröjning om * ANTAL x 5 ms. * Anrop: LDAA #6 Fördröj 6*5ms= 3s * JSR DELAY * Indata:Antal intervall,om 5 ms i A * * Utdata: Inga * Register-påverkan:Ingen * Anropad subrutin: Ingen. ************************************** DELAY PSHA PSHX TSTA BEQ DExit ; Fördröjningsvärde noll ; Konstanten 'Konst' måste ; bestämmas... ALOOP LDX #Konst XLOOP LEAX -,X NOP CPX # BNE XLOOP DECA BNE ALOOP ; Ytterligare fördröjning DExit PULX PULA Programmerad tidsfördröjning 2 22 Använd villkorlig li assemblering #ifdef SIM #ifdef RUNFAST * Konstant vid Run Fast Konst EQU XXXX #else Bestäms experimentellt med Uppgift 9 * Konstant vid Run simulator Konst EQU YYYY #endif #else Konst EQU ZZZZ #endif Bestäms experimentellt vid laboration Tangentbord ML5 Bit 7, 7 DAV 6 5 4 3 B3 DAV: Data Valid; Statusbit som anger nedtryckt tangent b 7=: Ingen tangent är för tillfället aktiverad på tangentbordet. b 7 =: En tangent är aktiverad Bit 6-4, : Används ej. Bit 3-, B3-B: Tangentnummer; Anger aktuell tangentnedtryckning. 2 B2 B B 23 24

Uppgift 9 KEYB Läs tangentbord Borrmaskinrobot N Tangent nere J Läs tangentbord N Tangent uppe J Tangent nr Operation subrutin starta borrmotorn stoppa borrmotorn STOP KEYB 3 höj borret UP 4 rotera arbetsstycket medurs ett steg STEP 5 borra ett hål DRILL 6 stega arbetsstycket till referensposition REFPO 7 borra hål längs cirkeln enligt mönster AUTO 25 26 Rutinen Uppgift 94 A= SUB () A= SUB (STOP) A=2 SUB2 (DOWN) Spara registerinnehåll på stacken Avkoda (A) KEYB Inparameter: Kommandonummer i register A A=3 A=4 A=5 A=6 A=7 SUB3 SUB4 SUB5 SUB6 SUB7 (UP) (STEP) (DRILL) (REFPO) (AUTO) Återställ registerinnehåll från stacken A>7 ********************************** * SUBRUTIN * Beskrivning: Rutinen avgör vilken * kommandosubrutin som skall * utföras och anropar denna. * Anrop: JSR * Indata: Kommandonummer i reg A * Utdata: Inga * Reg-påverkan: A,X * Anrop subr: SUB - SUB7 ********************************** MAX EQU 7 : * giltigt värde? CMPA #MAX BHI COMEX * hopptabellens basadress LDX #JUMPTAB * offset är 2 bytes per adress ASLA * hämta subrutinens startadress LDX A,X * utför subrutin JSR,X * återvänd från kommandorutin COMEX: ********************************** * Tabell med subrutinadresser JUMPTAB FDB SUB,SUB,SUB2,SUB3 FDB SUB4,SUB5,SUB6,SUB7 ********************************** * subrutiner för test, byts senare * ut mot, STOP, DOWN etc SUB MOVB #,ParOut SUB MOVB #,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 27 28

Filen MAIN.S2 STRUKTUR. Inkludera definitionsfil 2. iera systemet 3. Huvudprogram 4. Subrutinen 5. Inkludera fil (filer) med ytterligare subrutiner. 6. Plats för variabler * Definitioner USE IODEFS.S2 ORG Start ************************************ * Huvudprogram * Invänta vald operation Loop: JSR KEYB NOP * Utför vald operation JSR BRA Loop ************************************ USE KeyML5.S2 * Placera alla variabler här DCCopy RMB Att testa filen MAIN.S2 KEYB SUB MOVB #,ParOut SUB MOVB #,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 29 3 Övriga, funktioner (MAINxx) testas med tangentbord och borrmaskin Rutiner och STOP * SUBRUTIN. Subrutinen startar * borrmotorn väntar därefter i 5 ms * före återhopp så att borret uppnår * rätt hastighet. * * Anrop: JSR * * Indata: Inga * Utdata: Inga * Registerpåverkan: Ingen * Anropade subrutiner: OUTONE * DELAY KEYB * SUBRUTIN STOP. Subrutinen stannar * borrmotorn. * * Anrop: JSR STOP * Indata: Inga * Utdata: Inga * Registerpåverkan: Ingen * Anropade subrutiner: OUTZERO Ändringar i huvudprogram... JUMPTAB FDB,STOP,SUB2,SUB3 FDB SUB4,SUB5,SUB6,SUB7 ********************************** * subrutiner för test, byts senare * ut mot, STOP, DOWN etc... STOP... SUB2 MOVB #2,ParOut... 3 32

Laborationsmoment 2 Pseudoparallell exekvering Mikrodator Tangentbord för borrkommando Operatör Anpassnings- elektronik Klocka Borrmaskin 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 C variabler kod P data/stack P kod P2 data/stack P2 kod P3 data/stack P3 kod P4 D data/stack P4 R Q' Till processorns IRQ Ledigt... Process Process 2 Process 3 Process 4 33 34 Processtillstånd D 4Hz C Q' R IRQ CS f 4Hz p,25s25 2,5ms 4 PROC 4 IRQ PROC 3 IRQ PROC 2 PROC INIT SWITCH IRQ IRQ RUNNING READY READY READY READY RUNNING $3 variabler kod P data/stack P kod P2 data/stack P2 kod P3 data/stack P3 kod P4 data/stack P4 Ledigt... Process 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 RTI RTI RTI t 35 36

ial stack för process och processbyte : variabler ab kod P data/stack P kod P2 data/stack P2 kod P3 data/stack P3 kod P4 data/stack P4 Ledigt... Process Process 2 Process 3 Process 4 SPProc SPProc2 SPProc3 SPProc4 ProcNR Psp H Psp L P2sp H P2sp L P3sp H P3sp L P4sp H P4sp L,,2,3 Stackpekare k Process Stackpekare Process 2 Stackpekare Process 3 Stackpekare Process 4 Processnummer Running ORG TopOfStack-9 Istack: FCB $C ; ialt CCR FCB ; ialt B FCB ; ialt A FDB ; ialt t X FDB ; ialt Y FDB Start ; ialt PC ORG LDD STD Code #Istack SPProc IRQHandler: ; Spara Running stackpekare STS... ; Välj ny Running LDS... ; Återstarta RTI CCR ACCB ACCA X X H X L Y H Y L PC H PC L SP 37 38