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

'HOWHQWDPHQ 6\VWHPNRQVWUXNWLRQ

Föreläsningsanteckningar till Konstruktionsmetoder

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

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

Tentamen PC-teknik 5 p

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 Lösningar och kommentarer

Övningsuppgifter i Mikrodatorteknik för U2

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

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

Lösningar till tentamen i EIT070 Datorteknik

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

Lösningar till tentamen i EIT070 Datorteknik

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

Microprocessor / Microcontroller

Kontrollskrivning Mikrodatorteknik CDT S2-704

Digital- och datorteknik

A-del motsvarande KS1

Tentamen PC-teknik 5 p

Tentamen PC-teknik 5 p Lösningar och kommentarer

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

Laboration nr2 med enchipsdatorn PIC-16F877

Lathund. C för inbyggda system

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

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

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

Lathund. C för inbyggda system

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

Tentamen Systemkonstruktion

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

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

Att använda pekare i. C-kod

3. Mikroprogrammering II

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Lösningar till tentamen i EIT070 Datorteknik

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

Föreläsningsanteckningar 3. Mikroprogrammering II

Tentamen PC-teknik 5 p

Tentamen Datorteknik D del 2, TSEA49

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Tentamen PC-teknik 5 p

Extrauppgifter för CPU12

LEU240 Mikrodatorsystem

PROTOTYPUTVECKLING AV DIGITALT

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

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

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

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

Realtidsprogrammering

Avbrottshantering. Övningsuppgifter

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

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

Tentamen. Datorteknik Y, TSEA28

Systemkonstruktion SERIEKOMMUNIKATION

Programexempel 1 AND-funktionen

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

Enchipsdatorer med tillämpningar LABORATION 6, ROBOT

F8: Undantagshantering

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Tentamen PC-teknik 5 p Lösningar och kommentarer

Kursplanering för Mikrodatorteknik 4p/5p

Övning2 Datorteknik, HH vt12 - Programmering

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

Tentamen. Datorteknik Y, TSEA28

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

Tentamen. Datorteknik Y, TSEA28

Programexempel för FLEX

Tentamen. Datorteknik Y, TSEA28

Tentamen i EIT070 Datorteknik

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

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen Systemkonstruktion Lösningar och kommentarer

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

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

Stack och subrutiner Programmeringskonventionen

Exempel 3 på Tentamen

Övningsuppgifter i Mikrodatorteknik 4p/5p

Tentamen Systemkonstruktion. Lösningar och kommentarer

Arduinokurs. Del 1 - Vett och etikett. Talsystem. Binärt ettor och nollor

Assemblerprogrammering del 3

Maskinorienterad programmering

Digital- och datorteknik

Tentamen med lösningsförslag

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

Tentamen den 17 mars 2016 Datorteknik, EIT070

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

CE_O3. Nios II. Inför lab nios2time

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Assemblerprogrammets struktur; exempel

Transkript:

Tentamen Enchipsdatorer med tillämpningar Lösningar och kommentarer Program: Elektroteknik Datum: 04-01-09 Tid: 08:00-13:00 Lokal: E103 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 (efter ca halva tentamenstiden). 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 (8)

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. Beskriv, i binär form, vad som ligger i adress 20 samt Working register efter att följande instruktioner exekverats i PIC:en. (1 rätt => 1 p.) (3 p) Adress 20: 11101011 W: 11101100 MOVLW.20 MOVWF.20 COMF.20,1 ;,1 => Spara på adress 20 INCF.20,0 ;,0 => Spara i W 2. Mikrodatorer baserade på von Neumann arkitektur brukar exekvera med hjälp av mikrokod. Redogör kortfattat för hur exekvering med mikrokod går till. (2 p) I processorns exekveringsenhet finns ett mikroprogramminne som innehåller mikroinstruktioner, d v s mikrokod. En assemblerinstruktion hämtas av mikrokod, och utgör sedan, efter avkodning, i princip startadressen för mikroinstruktioner i mikroprogramminnet. En assemblerintruktion exekveras sålunda genom ett flertal mikroinstruktioner tills hela instruktionen är klar. Hur många mikroinstruktioner som åtgår beror av assemblerinstruktionens komplexitet. 2 (8)

3. Redogör kortfattat för principerna för hur Brown-out detect och Watchdog fungerar, samt vilka problem de löser. (1 rätt => 1 p) (3 p) Brown out detect Resettar processorn om matningsspänningen faller under en bestämd punkt. Utan denna funktion riskerar spänningsfall, som inte leder till att den normala resetkretsen triggar, att leda till felaktig exekvering, t ex genom att data i RAM-minnet förstörs. Watchdog Resettar processorn efter en viss tid, om processorn inte resettar watchdogen först. Om programmet hänger sig, t ex hamnar i en oavsiktlig evig loop, eller spårar ur, resettar processorn inte watchdogen och kommer att startas om. Förhoppningsvis inträffar inte hängningen alltför snart igen. 4. Några instruktioner i PIC-processorn kan ta olika lång tid att exekvera beroende på resultatet. Ge ett exempel på en sådan instruktion och redogör för när den tar längre tid att exekvera. Förklara också varför processorn behöver mer tid i dessa situationer. (2 p) Ett exempel på en sådan instruktion är DECFSZ. Den tar längre tid att utföra när file blir 0 och hopp utförs. Detta beror på att den instruktion som ligger i pipeline (den direkt efter DECFSZ) nu inte kommer att utföras och en annan instruktion måste hämtas. 3 (8)

5. Nedan visas två subrutiner skrivna för PIC:en respektive 705:an. Analysera rutinerna och fyll i tabellen nedan. Flaggornas status och arbetsregistrens innehåll ska anges efter att återhopp utförts. Arbetsregistrens innehåll anges decimalt. (Fyra korrekta svar ger 3 p / processor). (6 p) Rutin för PIC:en ORG.10 PICSub movlw.250 addlw.10 btfsc.3,0 addlw.1 addlw 0x0F xorlw 0x55 return Rutin för 705:an MCSub: LDA #253 ADD #2 INC A BCC MC2 SUB #20 MC2: CLI NOP RTS Efterfrågad uppgift PIC:en 705:an Programminne som åtgår 7 Word 12 Byte Exekveringstid 8 Cykler 22 Cykler Arbetsregistrets innehåll W = 65 ACC = 0 Flaggors status Z = 0 DC = 1 C = 0 H = 0 I = 0 N = 0 Z = 1 C = 0 4 (8)

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. 6. Nedan visas en deklaration av en variabel (array) i 705:an. (Var i minnet den ligger är okänt.) ARR DS 25 Skriv en subrutin som nollställer variabeln (dvs hela arrayen). Subrutinen får max ta 20 rader. Ange i subrutinens huvud vilka variabler som behöver deklareras (vid behov). (3 p) Clr_RAM: LDX #ARR ;X pekar p ARR Clr_L: CLR,X ;Nollställ RAM CPX #ARR+24 ;Jämför med sista RAM BEQ Clr_End ;Avsluta om sista adressen INC X ;Peka på nästa RAM BRA Clr_L ;Clr_Loop Clr_End: RTS 5 (8)

7. Skriv ett fullständigt (= exekverbart) program för 705:an som vid negativ flank på INTpinnen hoppar till en avbrottsrutin. Denna rutin ska öka port B (utgång) med 1. I övrigt består programmet endast av initiering och därefter evig loop. MOR ska konfigureras för kristall. Inga deklarationer får förutsättas vara gjorda. (3 p) Lösningsförslag: ;***Program som adderar 1 till port B när INT går låg ;***Deklarationer av register PORTB EQU 1 DDRB EQU 5 ;*** Program ;* Initiering ORG $80 ;Här börjar programminnet INIT: LDA #255 STA DDRB ;Port B utg ng CLI ;* Huvudprogram MAIN: BRA MAIN ;Evig loop ;Clear Interrupt Mask Bit ;=> till t avbrott ;* Interruptrutin ISR_INT: INC PORTB ;PORTB = PORTB + 1 RTI ;Return from Interrupt ;*** MOR ;*** INT ORG 1924 DB 0 ;Konfigurera MOR för kristall ORG 2042 DW ISR_INT ;Hoppa till adressen ISR_INT vid ;INT-avbrott ;*** Resetvektor ORG 2046 DW INIT ;Hoppa till adressen INIT vid reset END 6 (8)

8. Skriv ett fullständigt program för PIC16F84, klockad med 4 MHz, så den kan hålla någorlunda konstant varvtal på en motor med metoden beskriven nedan. Motorn effektregleras i 10 steg med en PWM-signal med frekvensen 1000 Hz. En etta läggs på Port A, pinne 0, under 1/10 10/10 av tiden. Motorn har inbyggd hastighetsgivare med elektronik som signalerar till PICens Port A, bit 2 och 3 (ingångar), enligt nedan. Hastigheten är lagom: RA2 = 0 RA3 = 0 Hastigheten är för låg: RA2 = 1 RA3 = 0 Hastigheten är för hög: RA2 = 0 RA3 = 1 Om hastigheten är för låg ska effekten justeras upp 1/10 och är den för hög ska hastigheten justeras ner 1/10, dock ska den hållas inom 1/10 10/10 oavsett fel. För att reglerloopen ska bli lagom snabb ska hastigheten justeras var 10:e millisekund. Toleransen för PWM-signalens frekvens är 10%. PWM-pulsens bredd får aldrig variera mer än 10 µs mellan två cykler med samma avsedda pulsbredd, men om t ex 3/10 blir något mer, t ex 3,3/10 (varje gång) spelar inte så stor roll eftersom reglering med återkoppling sker. Skriv gärna subrutiner på olika ark så blir det mindre att skriva om när du hittar en bugg. Det kan underlätta att börja med att rita en skiss där tider mm anges. P16F84.INC (se bilaga) kan inkluderas. (3 p) Då få var anmälda till tentan, och ännu färre brukar försöka lösa sista uppgiften på tredje tentan, lämnas ingen lösning. Istället kommenteras inlämnade uppgifter lite extra. Hur PWM kan genereras med interrupt framgår dock av HT-tentan för systemkonstruktion 2003/2004. Se www.hj.se/~kmetoder. Hur interrupt skrivs i assembler framgår av ordinarie tentamen i Enchipsdatorer 2002, uppgift 10. 7 (8)

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' 8 (8)