LABORATION. Datorteknik Y

Relevanta dokument
LABORATION. Datorteknik Y

LABORATION DATORTEKNIK Y DATORTEKNIK D

LABORATION. Datorteknik Y

Datorteknik 2 (AVR 2)

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

CE_O3. Nios II. Inför lab nios2time

Laboration Datorteknik TSIU02/TSEA28 3. Digitalur

Laboration 2 i Datorteknik- Assemblerprogrammering II

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

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

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

Datorsystemteknik Föreläsning 7DAVA14

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

Datorsystem Laboration 2: Minnesmappade bussar

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

Polling (cyklisk avfrågning) Avbrott

Institutionen för elektro- och informationsteknologi, LTH

Programmering. Scratch - grundövningar

Digital- och datorteknik

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Avbrottshantering. Övningsuppgifter

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

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

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

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

Kontrollskrivning Mikrodatorteknik CDT S2-704

Övning2 Datorteknik, HH vt12 - Programmering

AVR 5. Styrning av trafikljus. Digitala system 15 p

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

Laboration Datorteknik TSIU02 2. I/O-programmering

Datorprojekt, del 1. Digitala system 15 p

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

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

CPU. Carry/Borrow IX. Programräknare

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

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

Institutionen för elektro- och informationsteknologi, LTH

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

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.

Digital- och datorteknik

F8: Undantagshantering

Maskinorienterad programmering

Systemkonstruktion SERIEKOMMUNIKATION

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

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

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

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR

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

Hur ser Blue-Bot ut i aktion?

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

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

MANUAL NETALERT FÖR IPHONE VERSION 1.1

Lösningar till tentamen i EIT070 Datorteknik

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

Datorteknik 1 (AVR 1)

Tenta i Digitalteknik

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

Laboration nr 4 behandlar Assemblerprogrammering

Hur kommer jag igång?

Programexempel för FLEX

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

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

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

Lösningar till tentamen i EIT070 Datorteknik

TSEA28 Datorteknik Y (och U)

Programmering. Analogt och med smårobotar. Nina Bergin

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

Datorteknik TSIU02 Kursinformation

Ipad i teknikundervisningen

Laboration i digitalteknik Introduktion till digitalteknik

1. Introduktion Instruktionen utgörs av Radian Innovas handledning för ML-1.

ViktoriaBoule Manual. Manual. ViktoriaBoule Programmets startsida

Digitala projekt rapport

Föreläsningsanteckningar 3. Mikroprogrammering II

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

ANVÄNDAR MANUAL. SESAM 800 RX MC Manager

Sekvensnät i VHDL del 2

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

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

Laboration i digitalteknik

Programmera och ladda ny mjukvara till DT-serien. Information och nerladdning av SatEdit V3 från: Ladda hem.

Digitalt lärande och programmering i klassrummet

Laboration nr2 med enchipsdatorn PIC-16F877

"Crash Course in Programming"

Laboration i digitalteknik Speciella sekvenskretsar

Tenta i Digitalteknik

Välkomna! Praktikaliteter Erfarenhetsutbyte Vad vill du få ut av dagen?

Maskinorienterad programmering

Lönerevision. Klicka på Rev alla Mån eller Rev alla Tim. Har du inte nollställt sedan föregående revision måste du börja med att Nollställa alla.

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

Enchipsdatorer med tillämpningar LABORATION 6, ROBOT

Laboration Datorteknik D 3. Digitalur

Lönerevision i Hogia Personal

Tentamen i EIT070 Datorteknik

LABORATION. Datorteknik Y

Digital- och datorteknik

Digital- och datorteknik

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

Transkript:

LABORATION Datorteknik Y Avbrottsprogrammering på Darma Version 4.02 Februari 2018 (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 intervall. 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 E 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. En hel register sparas automatiskt vid avbrott, och det kan du naturligtvis utnyttja in 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 höger, vänster, höger. 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.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å 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å 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?... 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 SKAVV, SKAVH, DELAY, och slowprint har 4

Funktion 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

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 ut och spelaren inte trycker, då vinner den andre bollen. 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. 6

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. Referenser [1] ARM Cortex-M4 Instruction Set, infocenter.arm.com [2] ARM R Cortex R -M4F Based MCU TM4C123G LaunchPad TM Evaluation Kit, www.ti.com/tool/ek-tm4c123gxl [3] TM4C123GH6PM data sheet, www.ti.com/product/tm4c123gh6pm [4] Code Composer Studio (CCS) Integrated Development Environment (IDE), www.ti.com/tool/ccstudio 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 8