Tentamen Enchipsdatorer med tillämpningar Lösningar och kommentarer



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

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

Tentamen Enchipsdatorer med tillämpningar Lösningar och kommentarer

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

Övningsuppgifter i Mikrodatorteknik för U2

'HOWHQWDPHQ 6\VWHPNRQVWUXNWLRQ

Föreläsningsanteckningar till Konstruktionsmetoder

Högskolan i Halmstad Digital- och Mikrodatorteknik 7.5p. Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Tentamen PC-teknik 5 p

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Tentamen PC-teknik 5 p Lösningar och kommentarer

Digital- och datorteknik

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Lathund. C för inbyggda system

Tentamen PC-teknik 5 p

Programexempel 1 AND-funktionen

Lathund. C för inbyggda system

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Lösningar till tentamen i EIT070 Datorteknik

A-del motsvarande KS1

Kontrollskrivning Mikrodatorteknik CDT S2-704

#include <pic.h> #include <sys.h> char LEFT,RIGHT,MOTORHASTIGHET;

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Laboration 2 i Datorteknik- Assemblerprogrammering II

Realtidsprogrammering

Varför använda en liten 8-bitars processor när det finns billiga kraftfulla 32-bitars? William Sandqvist

Föreläsningsanteckningar 3. Mikroprogrammering II

Lösningar till tentamen i EIT070 Datorteknik

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

Laboration 3 i Digital- och Mikrodatorteknik. Utvecklingssystemet MPLAB IDE Grundläggande assemblerprogrammering för PIC

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Tentamen PC-teknik 5 p

PROTOTYPUTVECKLING AV DIGITALT

Microprocessor / Microcontroller

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Tentamen PC-teknik 5 p Lösningar och kommentarer

Laboration nr2 med enchipsdatorn PIC-16F877

CE_O3. Nios II. Inför lab nios2time

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

FÖRORD...3 MEMEC SCANDINAVIA AB...3

Att använda pekare i. C-kod

Laboration D164. ELEKTRONIK Digitalteknik. Digitalteknik med enchipsdatorer

Lösningsföslag till Exempel på tentamensuppgifter i Digitalteknik I

LEU240 Mikrodatorsystem

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

Digital- och datorteknik

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

F8: Undantagshantering

F5: Högnivåprogrammering

Hantering av textsträngar och talsträngar. William Sandqvist

F5: Högnivåprogrammering

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

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

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

Föreläsningsanteckningar 2. Mikroprogrammering I

Digital- och datorteknik

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

Digital- och datorteknik

Övning2 Datorteknik, HH vt12 - Programmering

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen. Datorteknik Y, TSEA28

3. Mikroprogrammering II

Exempel 3 på Tentamen

Assemblerprogrammering del 3

HI1024 Programmering, grundkurs TEN

Tentamen Systemkonstruktion

Tentamen PC-teknik 5 p Lösningar och kommentarer

Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.

Tentamen. Datorteknik Y, TSEA28

Extrauppgifter för CPU12

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Laboration Datorteknik TSIU02 2. I/O-programmering

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

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

Tentamen PC-teknik 5 p

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

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

LABORATION. Datorteknik Y

Tentamen. Datorteknik Y, TSEA28

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

Construction of a laboration card with the PIC-processor

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Systemkonstruktion SERIEKOMMUNIKATION

Datakommunikation med IR-ljus.

HI1024 Programmering, grundkurs TEN

LABORATION. Datorteknik Y

Avbrottshantering. Övningsuppgifter

Övningsuppgifter i Mikrodatorteknik 4p/5p

Tentamen Datorteknik D del 2, TSEA49

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte" ARM-instruktioner", A4-format, 17 sidor. Maxpoäng: 60p

Digital- och datorteknik

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Transkript:

Tentamen Enchipsdatorer med tillämpningar Lösningar och kommentarer Program: Elektroteknik Datum: 04-05-19 Tid: 13:30-18:30 Lokal: E104 Hjälpmedel: Linjal, miniräknare, Datablad: MC60705 och PIC16F84 (Utdelas och återlämnas.) Bilaga: Include-fil för PIC16F84 Examinator: Anders Arvidsson Telefon: 036-15 61 12, 0707-76 28 86 Examinatorn besöker tentamen. Uppgifterna i del A redovisas direkt i frågebladet eller på separat ark, vilka då ska numreras och hänvisas till från uppgiftsbladet. Uppgifterna i del B redovisas enbart på separat ark. Max poäng: 25 Betyg Poäng 3 10 4 15 5 20 1 (9)

Tentamensfrågor, del A Redovisa svaren direkt i frågebladet. Med PIC:en avses nedan PIC16F84 och med 705:an avses MC68705P3. Inga include-filer eller deklarationer förutsätts gjorda om inget annat anges. 1. Nedanstående två instruktioner utförs i 705:an. Beskriv ackumulatorns innehåll, i binär form, efter att instruktionerna utförts. (1 p) LDA #4 NEG A COM A ADD #1 A: 00000100 2. Vissa processorer avkodar och exekverar instruktioner med hjälp av mikroprogram medan andra (t ex PIC) avkodar dem direkt i hårdvara. Nämn två fördelar med mikroprogram. (2 p) T ex: Det är möjligt att köra samma kompilerade program på olika processorkärnor. Det är enkelt att utveckla nya och komplexa instruktioner. 3. Nedanstående 705-kompatibla instruktioner utförs på en von Neumann-dator med tvåstegs pipeline; hämta/avkoda samt läs data/exekvera/skriv tillbaka. INC 20 NEG 20 Markera nedan vilken/vilka konflikt(er) som kan antas uppstå i pipelinen, alternativt sista rutan om denna är tillämplig. (1 p) Strukturell konflikt Datakonflikt Styrkonflikt Ingen konflikt Instruktionen NEG läses när INC läser och skriver tillbaka adress 20. Båda behöver systembussen. Dock finns ingen datakonflikt då INC exekverat klart då NEG når steg 2, d v s läs data osv. 2 (9)

4. Vilka av följande minnestyper är raderbara (elektriskt eller med UV-ljus)? Ringa in de raderbara minnena. (1 p) OTP EPROM Flash EPROM EPROM EEPROM PROM ROM 5. Vilken hex-kod kommer att genereras av nedanstående assemblerinstruktion för 705:an? STA 130,X Svara (givetvis) hexadecimalt! (1 p) E7 82 (Indexed 8-bit offset) 6. Timern i 705:an ska konfigureras för klockning från extern pinne. När TDR når 0 ska avbrott genereras. Ange hur nedanstående bitar i TCR ska konfigureras (0 eller 1). TIM = 0 TIN = 1 TIE = 1 (1 p) 7. Vilken hexkod kommer att genereras av följande instruktioner i PIC:en? P16F84.INC anses inkluderad. Skriv svaret direkt efter respektive instruktion. (4 rätt => 1 p) (2 p) BCF STATUS,RP0 1283 MOVLW PORTA 3005 (första 0 kan bytas mot 1, 2 eller 3 pga x) MOVWF FSR 0084 CLRF INDF 0180 INCF FSR,F 0A84 8. Instruktionen CLRWDT i PIC:en bör ej ligga i avbrottsrutinen. Varför bör den inte det? (1 p ) Resettas watchdogen i avbrottsrutinen kommer den missa många fel. Om programmet hänger sig körs ju avbrottsrutinen ändå. 3 (9)

9. Nedan visas två subrutiner skrivna för PIC:en (P16F84.INC inkluderad) respektive 705:an. Analysera rutinerna och fyll i tabellen nedan. Flaggornas status och arbetsregistrens innehåll ska anges efter att återhopp utförts. Arbetsregistrenas innehåll anges decimalt. (Observera att DC-flaggans värde efter PIC-rutinen ej behöver anges. Fyra korrekta svar ger 3 p / processor). (6 p) Rutin för PIC:en PICSub CLRF 0x0C MOVLW.8 IORWF.12,F DECF.12,W XORWF.12,W SUBWF.12,W RETURN Rutin för 705:an (som bör tänkas igenom två ggr ) MCSub ORG 300 NOP LDA MCSub ADD #130 SEI RTS Efterfrågad uppgift PIC:en 705:an Programminne som åtgår 7 Word 8 Byte Exekveringstid 8 Cykler 17 Cykler Arbetsregistrets innehåll W = 249 ACC = 31 Flaggors status Z = 0 C = 0 H = 0 I = 1 N = 0 Z = 0 C = 1 Kommentar: LDA MCSub läses som LDA 300, d v s ladda ACC med vad som finns på adress 300. (d v s OP-koden för NOP). LDA använder extended adressering då 300 kräver två byte. 4 (9)

Del B Redovisa svaren på separat papper. Programmen ska delas in i block och förses med beskrivande kommentarer. Rörig (svårläst) struktur ger poängavdrag. Påbörja ny uppgift på nytt ark. För att slippa skriva om så mycket vid strukturella förändringar i koden kan det vara lämpligt att också skriva subrutiner på separata ark. 10. Skriv två program, ett program för 705:an och ett för PIC:en, som hämtar en sträng ur programminnet och sparar denna i RAM. Både vid läsning av strängen i programminnet och skrivning till RAM-minnet ska indexerad adressering användas (d v s programmet skrivs som en loop som flyttar tecken för tecken, vilket gör att programmet inte blir mycket större även om strängarna görs betydligt längre). Strängen består av en text på svenska eller engelska. Om Port A, bit 0, är 1 ska engelska texten kopieras till RAM, i annat fall den svenska. Texterna lyder Instruction in English respektive svensk instruktion. Eftersom texterna hanteras som strängar läggs talet 0 efter sista tecknet i strängen. Loopen som kopierar strängen ska även kopiera 0:an, men avsluta kopieringen därefter. När strängen är flyttad ska programmet lägga sig i en evig loop (där ett huvudprogram, som bl a läser texten på rätt språk direkt ur RAM, skulle kunna tänkas ligga). Programmen ska vara exekverbara varvid du kanske måste göra vissa deklarationer. 705:an ska konfigureras för kristalloscillator. P16F84.INC (se bilaga) får inkluderas i PICprogrammet. Deklarera strängarna med lämpliga metoder i programminnet och reservera nödvändigt utrymme i RAM. (Strängen placeras på valfri plats i båda fallen.) Loopen som kopierar strängen får anropa subrutiner. Tips: Är du ovan vid indexering i PIC kan det vara lämpligt att lösa uppgiften för 705:an och sedan göra nästa uppgift innan uppgiften löses med PIC. (6 p) Lösningsförslag, 705:an ;*** SFR PORTA EQU 0 ;*** RAM ORG 16 RAMtext DS 23 ;*** Program ORG 128 ENG: DB 'Instruction in English',0 SV: DB 'svensk instruktion',0 INIT: LDX #255 ;Peka på första tkn efter inc ;* Kopierar text till RAM. Pinne A0 förutsätts konstant under tiden. COPY: INC X ;Peka på nästa tecken LDA ENG,X ;Hämta engelskt BRSET 0,PORTA,STORE ;Behåll engelskt om A0 = 1 LDA SV,X ;Svensk text då A0 = 0 STORE STA RAMtext,X ;Sparar tecken, sätter Z om 0 BNE COPY ;Nästa om ej 0 ;* Huvudprogram MAIN: JMP MAIN 5 (9)

;*** MOR ORG 1924 DB 0 ;X-tal ;*** Resetvektor ORG 2046 DW INIT END Lösningsförslag, PIC:en list p=16f84 include "P16F84.INC" ; *** RAM ORG.12 ;Avser egentligen i RAM RAMtext RES.23 ;Plats för text TextPtr RES.1 ;Textpekare ; *** Program ORG.0 GOTO INIT ; * Konstantsträngar. Tecken som pekas ut av W returneras ; Engelsk text ENG ADDWF PCL,F RETLW 'I' RETLW 'n' RETLW 's' ;etc... RETLW 's' RETLW 'h' RETLW.0 ; Svensk text SV ADDWF PCL,F RETLW 's' RETLW 'v' RETLW 'e' ;osv... RETLW 'o' RETLW 'n' RETLW.0 ;*** Initiering ******************************************** INIT MOVLW RAMtext ;Adressen där texten ska börja MOVWF FSR ;Peka i RAM CLRF TextPtr ;Nollställ pekare i konstant Copy MOVF TextPtr,W BTFSS PORTA,0 ;Engelsk om satt GOTO SVtext CALL ENG ;Hämta engelskt tecken GOTO Store SVtext CALL SV ;Hämta svenskt tecken Store MOVWF INDF ;Spara i RAM där FSR pekar MOVF INDF,F ;Sätter Z om 0 (=strängslut) BTFSC STATUS,Z ;Hoppa vidare om ej strängslut GOTO MAIN ;Avbryt om klar INCF TextPtr,F ;Peka på nästa i konstant INCF FSR,F ;Peka på nästa i RAM GOTO Copy ;*** Huvudprogram ****************************************** MAIN GOTO MAIN END 6 (9)

11. Vid fotografering av snabba förlopp är det ofta omöjligt att ställa kameran för tillräckligt korta slutartider, och än mer besvärligt att utlösa slutaren vid rätt tidpunkt. Ett bättre sätt kan då vara att ställa kameran med lång slutartid i ett mörkt rum och trigga en kort blixt när bilden ska tas. Det är t ex möjligt att ta blixten ur en engångskamera och modifiera denna för att avge en intensiv blixt under några få mikrosekunder. Blixten kan t ex fås att utlösas när en luftpistolskula passerar en läsgaffel. Nedan visas en bild av en kula som med hastigheten 83 m/s går genom ett kex. För att bilden ska tas lagom lång tid efter att kulan passerat läsgaffeln (som t ex placeras på pistolens mynning) krävs en fördröjningskrets. Skriv ett exekverbart program för 705:an som triggar blixten (genom att under kort tid ettställa Port B, bit 0) 3 ms efter att läsgaffeln gett signal. Läsgaffeln, som ger en 0:a vid detektion, ansluts till processorns interruptpinne. Tiden från läsgaffelns signal (fallande flank) till triggerpuls ska vara 3 ms ±10%. Tidsfördröjningen skapas på valfritt sätt i interruptrutinen. Triggerpulsen ska vara minst 5 och max 20 µs. Huvudprogrammet kan bestå av en evig loop. Redovisa mycket tydligt hur du beräknar fördröjningstiden i programmet! (3 p) Lösningsförslag på nästa sida. 7 (9)

;*** SFR PORTB EQU 1 DDRB EQU 5 ;*** RAM ORG 16 A_COPY DS 1 ;*** Program ORG 128 INIT: LDA #255 STA DDRB ;Port B ut CLI MAIN: BRA MAIN ;Clear Interrupt Mask Bit ;=> tillåt avbrott ;*** Avbrottsrutin ISR_INT: LDA #3 ;Tidsfördröjning max 3,3 ms BSR Delay_A_ms ;Ger (lite drygt) 3 ms BSET NOP NOP NOP 0,PORTB BCLR 0,PORTB ;Trigger min 5 us RTI ;Return from Interrupt ;* Då fördröjningen ligger i interruptet och tiden därmed ej kan ;* användas till annat används en beprövad fördröjningsloop ;* Timern går minst lika bra! ;*** Delay ACC antal millisekunder *** ;* Anropar Delay_ms ACC antal gånger ;* Tiden blir därmed något mer än A antal ms ;* Inparameter: ACC ;* Utparameter: - ;* Registeranvändning: ACC, A_COPY (RAM) Delay_A_ms STA A_COPY Delay_A_l BSR Delay_ms ;8 c DEC A_COPY BNE Delay_A_l RTS ;*** Delay 1 millisekund *** ;* Ger exakt 1 ms fördröjning inkl anrop och återhopp ;* Inparameter: ACC ;* Utparameter: - ;* Registeranvändning: ACC Delay_ms LDA #123 ;2 c + BSR 8 c Delay_loop DEC A ;4 c * 123 BNE Delay_loop ;4 c * 123 RTS ;6 c ;*** MOR ORG 1924 DB 0 ;X-tal ;*** INT ORG 2042 DW ISR_INT ;Hoppa till adressen ISR_INT vid avbrott ;*** Resetvektor ORG 2046 DW INIT END 8 (9)

Bilaga, include-fil till PIC P16F84.INC W EQU H'0000' F EQU H'0001' ;----- Register Files ----- INDF EQU H'0000' TMR0 EQU H'0001' PCL EQU H'0002' STATUS EQU H'0003' FSR EQU H'0004' PORTA EQU H'0005' PORTB EQU H'0006' EEDATA EQU H'0008' EEADR EQU H'0009' PCLATH EQU H'000A' INTCON EQU H'000B' OPTION_REG EQU H'0081' TRISA EQU H'0085' TRISB EQU H'0086' EECON1 EQU H'0088' EECON2 EQU H'0089' ;----- STATUS Bits ----- IRP EQU H'0007' RP1 EQU H'0006' RP0 EQU H'0005' NOT_TO EQU H'0004' NOT_PD EQU H'0003' Z EQU H'0002' DC EQU H'0001' C EQU H'0000' ;----- INTCON Bits ----- GIE EQU H'0007' EEIE EQU H'0006' T0IE EQU H'0005' INTE EQU H'0004' RBIE EQU H'0003' T0IF EQU H'0002' INTF EQU H'0001' RBIF EQU H'0000' ;----- OPTION Bits ----- NOT_RBPU EQU H'0007' INTEDG EQU H'0006' T0CS EQU H'0005' T0SE EQU H'0004' PSA EQU H'0003' PS2 EQU H'0002' PS1 EQU H'0001' PS0 EQU H'0000' 9 (9)