LABORATION. Datorteknik Y

Relevanta dokument
LABORATION. Datorteknik Y

LABORATION DATORTEKNIK Y DATORTEKNIK D

Datorteknik 2 (AVR 2)

LABORATION. Datorteknik Y

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

Laboration 2 i Datorteknik- Assemblerprogrammering II

CE_O3. Nios II. Inför lab nios2time

Datorsystem Laboration 2: Minnesmappade bussar

Laboration Datorteknik TSIU02/TSEA28 3. Digitalur

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

PROJEKT LJUD. KOPIERINGSUNDERLAG Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN

Programmering. Scratch - grundövningar

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

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

Datorsystemteknik Föreläsning 7DAVA14

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

Polling (cyklisk avfrågning) Avbrott

Digital- och datorteknik

Mål. Datorteknik. Introduktion. Innehåll. Verklig situation - pappaledighet. Introduktion (forts)

Institutionen för elektro- och informationsteknologi, LTH

Systemkonstruktion SERIEKOMMUNIKATION

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

CPU. Carry/Borrow IX. Programräknare

Avbrottshantering. Övningsuppgifter

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

AVR 5. Styrning av trafikljus. Digitala system 15 p

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Laboration Datorteknik TSIU02 2. I/O-programmering

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

Datorprojekt, del 1. Digitala system 15 p

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

Vilken skillnad gör det var du placerar det? Prova båda.

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

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

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.

3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

Datorteknik. Föreläsning 4. Polling och avbrott. Institutionen för elektro- och informationsteknologi, LTH. Mål

Digital- och datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

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

Lösningar till tentamen i EIT070 Datorteknik

Hur kommer jag igång?

Kontrollskrivning Mikrodatorteknik CDT S2-704

Övning2 Datorteknik, HH vt12 - Programmering

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

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

På servern För att registrera och köra en Topocad 17 nätverkslicens krävs att man installerar den senaste Licensservern

F8: Undantagshantering

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

ANVÄNDAR MANUAL. SESAM 800 RX MC Manager

Laborationens mål är att få displayen att visa timmar, minuter och sekunder samt att kunna ställa klockan.

ViktoriaBoule Manual. Manual. ViktoriaBoule Programmets startsida

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

TSEA28 Datorteknik Y (och U)

Datorteknik 1 (AVR 1)

Maskinorienterad programmering

Videoapparat SB4714W/2 & SB4701W/A. Installation och handhavande SB4714W/2

Programexempel för FLEX

Hur ser Blue-Bot ut i aktion?

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

Programmering. Analogt och med smårobotar. Nina Bergin

DEPARTMENT OF INFORMATION TECHNOLOGY. Digitala Projekt. Redovisning av Projekt - Grupp 14

Tenta i Digitalteknik

Programmera i teknik - kreativa projekt med Arduino

Laboration nr 4 behandlar Assemblerprogrammering

Laboration i digitalteknik Introduktion till digitalteknik

BRIDGE MASTER 2000 SCANDINAVIA av Fred Gitelman

Sekvensnät i VHDL del 2

ATU. Användarmanual. Larmöverföringsenhet Firmware Version

Manual. ViktoriaBoule Programmets startsida

PROJEKT STAFFAN STALLEDRÄNG

Digitalt lärande och programmering i klassrummet

MANUAL NETALERT FÖR IPHONE VERSION 1.1

Tidtagning med Eresults Lite programmet

Ipad i teknikundervisningen

Datorteknik TSIU02 Kursinformation

Enchipsdatorer med tillämpningar LABORATION 6, ROBOT

TSEA28 Datorteknik Y (och U)

LEU240 Mikrodatorsystem

Föreläsningsanteckningar 3. Mikroprogrammering II

Digitala projekt rapport

Digital- och datorteknik

Instruktion för I/O-Kort, med USB-anslutning.

Digital- och datorteknik

Projektlaboration 4, synkronisering av klockan

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!

Lunds Universitet LTH Ingenjörshögskolan IDa1, IEa1 Helsingborg. Laboration nr 4 i digitala system ht-15. Ett sekvensnät. grupp. namn.

BaraTrav Prenumeration och Installation Version 1.3.4

Laboration 2 i Styrteknik

Micro:bit. Börja skapa egna program

Laboration nr2 med enchipsdatorn PIC-16F877

Laboration i digitalteknik

Robotfotboll med Arduino

Objektorientering i liten skala

E-POST3 Ett lättanvänt e-postprogram med stöd för talsyntes

Transkript:

LABORATION Datorteknik Y Avbrottsprogrammering på Darma Version 4.03 Februari 2019 (OA, KP) Namn och personnummer Godkänd 1

1 Inledning Syftet med laborationen är först att ge övning i avbrottsprogrammering (del A) samt därefter att tillämpa dessa kunskaper på ett större problem (del B). Syftet är också att skapa större förståelse för stackhantering i en processor. Efter genomförd laboration ska du, med hjälp av manual över Darma, kunna skriva ett assemblerprogram som kommunicerar med omvärlden via avbrottsstyrd GPIO-port. Till laborationen ska du ha med dig egna lösningsförslag på alla laborationsuppgifter. Till del B bör det även finnas ett flödesschema. Tänk på att utnyttja eventuella labförberedande lektioner som kan komma att ges i anslutning till laborationstillfället. Extrauppgifterna görs i mån av tid. 2 Färdiga subrutiner För att kunna fokusera på avbrottshanteringen finns det ett antal färdiga subrutiner. Dessa subrutiner är definierade i labskeletet som kan laddas ned från laborationshemsidan. Följande subrutiner ska användas. inituart: Initiera uart för utskrift till datorn initgpiob: Initiera port B som utgång initgpiod: Initiera port D som ingång initgpioe: Initiera port E som utgång initgpiof: Initiera port F pin 0-3 som utgångar, pin 4 ingång initint: Sätter avbrottnivå 5 på port F pin 4 och avbrottsnivå 2 på port D pin 7 SKBAK: Skriver ut texten Bakgrundsprogram SKAVV: Skriver ut texten AVBROTT vänster samt en kolumn av stjärnor SKAVH; Skriver ut texten AVBROTT höger samt en kolumn av stjärnor DELAY: Fördröjning, register r1 anger antal millisekunder Dessa subrutiner finns i labskelettet lab2.asm på kurshemsidan. Dessutom behöver filen ccstudio startup.c bytas ut till den nya ccstudio startup.c som finns att ladda ned på kurshemsidan. 3 Laborationsuppgift Del A Del A av laborationen består i att göra grundläggande undersökningar av ett mycket enkelt och schematiskt avbrottssystem för Darma. Ett program som skriver texten Bakgrundsprogram på terminalen skall kunna avbrytas av två knappar, en som ger ett avbrott på nivå 5 och en som ger ett avbrott på nivå 2. 2

3.1 Uppgift 1 Skriv ett bakgrundsprogram som initierar systemet och sedan går i en oändlig slinga där texten BAKGRUNDPROGRAM skrivs på skärmen med en sekunds paus mellan varje utskrift. Använd de befintliga subrutinerna för utskrift och fördröjning. För att senare i labben enklare kunna se vilket register som skrivit vilket värde på stacken, är det också rekommenderat att du sätter r0-r12 (om dom inte används till annnat) till värdena r0=0x00010203, r1=0x10111213, r2=0x20212223, r3=0x30313233, r4=0x40414243,... r12=0xc0c1c2c3 innan utskriftsslingan börjar. Initiering behövs framförallt för uppgift 2 och framåt, och är enligt följande: Initiera uart, GPIOD, GPIOF och avbrott med hjälp av de färdiga subrutinerna Möjliggör avbrott i processorn. Jorda avbrottsingångarna, dvs anslut Port D pin 7 och Port F pin 4 till GND på Darma. Provkör ditt program. Tag sedan bort jordanslutningarna till Port D och Port F och anslut istället de två tryckknapparna. Den vänstra knappen skall anslutas till Port F pin 4 och den högra till Port D pin 7, så att vänster knapp ger avbrott på nivå 2 och höger på nivå 5. 3.2 Uppgift 2 Skriv de två avbrottsrutinerna av vilka den ena ska ge utskriften AVBROTT vänster och den andra utskriften AVBROTT höger. Resepektive avbrottsflagga i GPIO-portarna ska nollställas innan utskriften påbörjas, så att ytterligare en avbrottsbegäran kan tas emot under tiden avbrottsrutinen körs. I en verklig tillämpning sparar man normalt undan en del interna register på stacken. Vi skall emellertid i laborationen gå in och titta på stackens innehåll, och för att göra det lätt att hitta och inte få för mycket ovidkommande data på stacken skall du inte spara några andra register än LR i dina avbrottsrutiner. Ett antal register sparas automatiskt på stacken vid avbrott, och det kan du naturligtvis utnyttja i dina rutiner. De färdiga subrutinerna, SKAVV och SKAVH, är skrivna så att de inte förstör varandras registerinnehåll. Kör huvudprogrammet och kontrollera funktionen hos ditt system enligt följande: Tryck på vänster knapp Vänta tills avbrottsrutinen är klar Tryck på höger knapp Om programmet uppgförde sig som väntat gör du följande test: Tryck på vänster knapp Vänta någon sekund Tryck i snabb följd (ca 0.5s mellan varje tryck) höger, vänster, höger. 3

Om dina avbrottsrutiner är korrekt skrivna skall samtliga avbrott (totalt fyra stycken) tas om hand. Rita ett enkelt diagram som visar i vilken ordning begäran om avbrott kommer in, och i vilken ordning avbrottsrutinerna anropas. Förklara orsaken till att avbrotten inte åtgärdas i den ordning de begärs. 3.3 Uppgift 3 Du kan nu genom tryckningar på knapparna på olämpliga ställen, få texten Bakgrundsprogram att bli osammanhängande. Vi anser det vara väldigt viktigt att utskriften inte avbryts mitt i ett ord, utan kan bara acceptera avbrott i pauserna mellan utskrifterna. Vad kan man göra för att få programmet att bete sig så? Gör det! (GPIO-portarna skall inte programmeras om.)... 3.4 Uppgift 4 Tryck på paus-knappen (suspend) i Code Composer Studio mellan två utskrifter av Bakgrundsprogram. Programmet befinner sig nu med största sannolikhet i väntesubrutinen DELAY och stackdjupet blir då ett ord (4 bytes). (Med detta menas att det ligger 4 bytes på stacken, och att stackpekarens värde alltså är 0x200001fc om stackpekaren var 0x20000200 från början.) Om du inte skulle få stackdjupet 4 bytes när du pausar, försök igen. Undersök i memory browser innehållet på stacken. Identifiera vad det är som ligger där och varifrån det kommer. Ledning: titta på vad som händer först i subrutinen DELAY. Du kan även byta presentationsläge från 32-bit Hex till 8-bit Hex för att se minnesinnehållet byte för byte. Adress Data som 32-bitars värde Data som byte 3.5 Uppgift 5 Sätt nu en brytpunkt på den första instruktionen i subrutinen SKAVH (adr r3, Righttext). Kör programmet och tryck i följd mellan två utskrifter av Bakgrundsprogram först på vänster knapp, och sedan i pausen mellan stjärnorna på höger knapp. Om du inte har en väldig otur kommer såväl bakgrundsprogrammet som vänster avbrottsrutin att bli avbrutna i subrutinen DELAY. Stackdjupen blir då 23 ord (92 bytes). Om du skulle få ett annat stackdjup, starta om och försök igen. Vad bör stackpekaren ha för värde? 4

... Läs återigen av vad som finns på stacken, hela vägen ner till botten, och identifiera exakt vad som ligger där och varifrån det kommer. Rita även en enkel figur som med pilar visar de hopp som sker mellan de olika rutinerna i programmet innan brytpunkten nås. Förklara anledningen till samtliga hopp och vad som lagras på stacken i varje steg. Notera först vilka adresser SKBAK, SKAVV, SKAVH, DELAY, och slowprint har. Funktion SKBAK SKAVV SKAVH DELAY slowprintstring Adress till funktion Adress Data (32-bit) Orsak/källa till värde 0x200001fc På vilken adress blev bakgrundsprogrammet avbrutet? På vilken adress blev den lägsta avbrottsrutinen avbruten?... 5

Terminal Felaktig kod! (1) Felaktig kod! (2) TiVA-C LaunchPad Serieport DARMA PORT B PIN 0 PORT B PIN 1 PORT B PIN 2 PORT B PIN 3 PORT B PIN 4 PORT B PIN 5 PORT B PIN 6 PORT B PIN 7 PORT D PIN 7 Lysdioder PORT F PIN 4 Spelare V Spelare H Figur 1: Inkoppling av lysdioder och tryckknapp för ping-pong spel 3.6 Uppgift 6 (Extrauppgift) Antag samma situation som i uppgift 5, men utan brytpunkt. Vad blir det maximala stackdjupet?... 4 Laborationsuppgifter Del B 4.1 Uppgift 7 Konstruera ett PING-PONG spel. Använd två studsfria tryckomkopplare som ansluts port D pin 7 respektive port F pin 4, samt åtta lysdioder som ansluts till port B, se figur 1. Bollen markeras med en tänd lysdiod, och ska förflyttas fram och tillbaka över lysdiodarrayen så länge de bägge spelarna trycker ned sin knapp exakt då bollen befinner sig i respektive ändläge. 4.1.1 Spelregler Den som vinner en boll får serva. Serve markeras med stillastående boll på den servandes sida. Bollen börjar att röra sig då knappen trycks ned. Spelare V börjar att serva vid spelets start. Om en spelare trycker antingen för tidigt eller för sent när bollen är i spel vinner den andre bollen och får poäng. Likaså om bollen går 6

ut och spelaren inte trycker, då vinner den andre bollen. Om den spelare som inte ska trycka ändå trycker förlorar denne poängen. Nytt serveläge ska komma automatiskt när en spelare har fått poäng. 4.1.2 Utförande Knappnedtryckningar ska detekteras mha avbrott. Avbrottsrutinen ska byta flyttningsriktning om bollen är i ändläget hos respektive spelare, annars vidta lämplig åtgärd. Avbrottsrutinerna får inte påverka huvudprogrammets registervärden. Följande information placeras lämpligen i dataminnet på adress 0x20001000 och högre: Lagring av hur lysdioderna är tända. Resultat spelare A Resultat spelare B Flyttningsriktning: 00=vänster, FF=höger Servstatus: 00=ej serve, FF=serve 4.2 Uppgift 8 (Extrauppgift) Komplettera spelet med poängvisningen på 7-segmentdisplayer. Utnyttja portarna E pin 0-3 och port F pin 0-3 för att styra respektive siffra. Poängvisningen ska ske med en decimal siffra (0-9) för varje spelare. Om poängsiffran är större än nio ska istället bokstaven E visas. 7

Revisioner 4.00 Byte till Cortex-M 4.01 Figur 1 inlagd, bytt initavbrott initint 4.02 Korrigerat avbrottsnivåer och portar som används 4.03 Förtydligat uppgifter 8