MÄLRLENS HÖGSKOL Institutionen för elektroteknik Tentamen Mikrodatorteknik T3760 atum 2005-10-28 Tid 08.30 12.30 nsvarig lärare: Olof ndersson, Telefon 021-101314 (besöker skrivsalen) Om du klarat samtliga kontrollskrivningar så gör du delen. Har du rest på (eller aldrig skrivit) någon/några kontrollskrivningar gör du motsvarande / uppgift. vs. kontrollskrivning1 svarar mot uppgifterna 1 10, Uppgifterna 11 t.o.m. 20 motsvarar kontrollskrivning 2. Läs igenom denna sida noga. ***************************** OS ***************************** etygsgränser: etyg 3: Godkänt på - och - delen dvs. minst 60% rätt /uppgift etyg 4: etyg 5: Godkänd - och -del + 50 % av delen Godkänd -och -del + 80 % av delen. Tillåtna hjälpmedel: Räknare och bilagor. Övrigt: Uppgifterna med programmering skall behandlas på ett sådant sätt att lösningen går att följa. KOMMENTER!! Inga svar får lämnas i Tentamens häftet. lla antaganden skall dokumenteras noggrant. 2005-10-28 Tentamen T3760 1/7
-del motsvarande KS1 Uppgift 1. Vad blir resultatet då instruktionen NI, R18, 0x34 har utförts? R18 innehåller från början talet det binära talet 0010 0010. R18 innehåler decimalt 20 R18 innehåller decimalt 18 R18 innehåller hexadecimalt EE R18 innehåller hexadecimalt F Uppgift 2. PORT har insignalen 0x34. Vad blir då utsignalen till PORT efter det att följandprogram körts? IN R20, PIN ORI R20,0xF0 LSL R20 OUT PORT,R20 0xF4 0xE4 0xE8 0x7 Uppgift 3. nge vilken/vilka bit i statusregistret SREG som sätts då följande programsekvens utförs. ntag att SREG är nollställd från början LI R16,0x3F PI R16,0x3 ingen bit Z-bit N-bit N-bit och V-bit Uppgift 4. Vilken instruktion ettställer de två mest signifikanta bitarna i register R16 utan att de övriga bitarna påverkas? ORI R16, 0xF0 ORI R16, 0x0F NI R16, 0xE0 NI R16, 0xE0 E ORI R16, 0x0 F NI R16, 0x0 G ORI R16, 0x3F G NI R16, 0x3F 2005-10-28 Tentamen T3760 2/7
Uppgift 5. Följande tre instruktioner är skrivna i assembler. lir det någon skillnad på maskininstruktionerna då dessa översätts? LI R20, 250 LI R20, 0xF LI R20, -6 Ja Nej Uppgift 6. Istället för att skriva registernamn kan man använda ett symboliskt namn. R20 kan exempelvis få namnet: tentamen. På vilket sätt anger man ett symboliskt namn?.tentamen = R20.R20 = tentamen.def tentamen = R20.equ tentamen = R20 Uppgift 7. Vad är innehållet i registren R18, R19 och R20 efter det att följande program körts? LI R17,0x08 PUSH R17 dec R17 PUSH R17 dec R17 PUSH R17 POP R18 POP R19 POP R20 stop: rjmp stop Uppgift 8. ssemblerprogram brukar inledas med.include "m16def.inc". eskriv vad denna fil har för innehåll. Uppgift 9. Ett assemblerprogram brukar också innehålla följande kod: LI temp,low(rmen) OUT SPL,temp LI temp,high(rmen) OUT SPH, temp Vad gör dessa fyra rader? Vad innebär RMEN? 2005-10-28 Tentamen T3760 3/7
Uppgift 10. Vilka minnestyper innehåller en mickrocontroller tmega16? eskriv också användningen av de olika minnestyperna. -del motsvarande KS2 Uppgift 11. tmega16 innehåller en 10-bit /-omvandlare. Hur många logiska nivåer har en sådan omvandlare? 10 2 2 10 2 10 1 10 2 1 Uppgift 12. Referensspänningen för /-omvandlaren i tmega 16 är 5,0000V. etta innebär att den minsta spänningsförändring som kan upptäckas är 4,88 mv. Om man bara utnyttjar de 8 mest signifikanta bitarna i den 10-bit omvandlare som är inbyggd, så lir den minsta spänningsförändring som kan upptäckas. 4,88 mv 9,77 mv 19,53 mv 39,06 mv Uppgift 13. En /-omvandlare bör vara linjär. Vad är villkoret för att /-omvandlaren i tmega 16 skall vara linjär. Största avvikelsen från nominellt värde få vara i området ± 0,5 * 4,88 mv ± 1,0 * 4,88 mv ± 0,5 * 19,53 mv ± 1,0 * 19,53 mv Uppgift 14. En fyrkanssignal har följande utseende. nge duty-cycle för signalen. 1 0 8 ms 2 ms 0,2 0,25 0,75 0,80 2005-10-28 Tentamen T3760 4/7
Uppgift 15. Vad inträffar då man får en nolla till reset-ingången på processorn? lla register sparas på stacken. Programpekaren får det värde som anges i vektortabellen. Programpekaren ställs om till det värde som anges för resetvektorn. Inget händer Programpekarens värde sparas på stacken. Programpekaren får det värde som finns angiven för avbrottsrutinen. Uppgift 16. En tilldelningssats i har följande utseende: kalle = (kalle << 1) + 1; ( (kalle << 1) betyder skifta ett steg åt vänster. ) u skall skriva en assemblerkod som motsvarar satsen. Vilket av följande är korrekt assemblerkod? ntag att variabeln kalle finns deklarerad på följande sätt i assembler: kalle:.byte 1 LS R20,kalle LS R20,kalle LSL R20 R20,R20 STS kalle,r20 SUI R20, -1 STS kalle,r20 LS R20,kalle LS R20,kalle LSL R20 LSL R20 R20,1 SUI R20, 0xFF STS kalle,r20 STS kalle,r20 Uppgift 17. å Watchdog har löst ut så kommer: Programmet att starta om från början Programmet startar om från den adress som finns angiven för watchdog. Programmet hoppar över nuvarande instruktion. Programmet startar om från breakpoint. Uppgift 18. eskriv vad som händer vid ett interrupt. ntag att anropet inte är spärrat. Uppgift 19. eskriv skillnaden mellan interrupt och pollning. Uppgift 20. Vilka är fördelarna med /-omvandling enligt successiv approximation? 2005-10-28 Tentamen T3760 5/7
-delen Uppgift 1 Översätt följande -program till assembler. Vilken talföljd skrivs ut på PORT? #include <avr/io.h> void main(void ) unsigned char j; unsigned char x=15; unsigned char y=0; R = 0xFF; for (j=0; j<x;j++) y=y+2; PORT = y; } } Inledningen av assemblerprogrammet bör vara:.include "m16def.inc".cseg.org 0 RJMP RESET RESET: LI temp,low(rmen) OUT SPL,temp LI temp,high(rmen) OUT SPH, temp Uppgift 2 Skriv ett program i som kontrollerar om en kretskort är korrekt. Konstruktionen har 8 digitala ingångar och en digital utgång. Samtliga kombinationer för insignaler skall testas. Utsignalen skall jämföras med det värde som finns i en vektor. unsigned char resultat[ ] = 0,0,1,1,0, 0.osv }; å ett fel hittas skall motsvarande insignal presenteras i binär form på lysdioderna, och programmet skall stanna. Om inget fel finns på kortet skall samtliga lysdioder blinka. etta för att indikera att testet är klart. Rita först ett flödesschema. STK500 med tmega16 8 Kort som skall testas. ut Lysdioder 2005-10-28 Tentamen T3760 6/7
Uppgift 3 u skall skriva ett program i ntalet mål i en ishockey-match skall räknas. Eftersom mål kommer sporadiskt är det lämpligt att använda interrupt. Resultatet skall presenteras på PORT som är kopplad till lysdioderna. ntalet mål för lag ett skall presenteras på de fyra minst signifikanta bitarna i PORT. ntalet mål för lag två skall presenteras på de fyra mest signifikanta bitarna. Inget lag antas få mer än 15 mål. Till in hjälp får u början av programmet. atablad finns som bilaga. u skall också motivera hur du ställer in de register som behövs för interrupt. #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> SIGNL ( SIG_INTERRUPT0); void main () }// end main SIGNL (SIG_INTERRUPT0) } Uppgift 4 Två analoga insignaler är anslutna till PORT. e finns på 1 respektive 2. et omvandlade värdet skall presenteras på PORT i binär form. Vilken signal som skall omvandlas bestäms av en signal på POTR. Om PORT = = 0x01 skall den analoga signalen på 1 presenteras. Om PORT = = 0x02 skall den analoga signalen på 2 presenteras. För alla andra värden på PORT skall ingen omvandling ske. Skriv en rutin i som gör en omvandling av den analoga insignalen. u skall också ange hur MUX och SR skall initieras. Kommentera hur och varför u har valt de olika bitarna i registret. 2005-10-28 Tentamen T3760 7/7