Systemkonstruktion LABORATION REALTIDSPROGRAMMERING



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

Systemkonstruktion SERIEKOMMUNIKATION

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

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

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

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

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

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Effektpedal för elgitarr

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

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

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

LABORATIONER I DIGITALTEKNIK. Laboration 3 Speciella sekvenskretsar

Laboration Datorteknik TSIU02/TSEA28 3. Digitalur

Microprocessor / Microcontroller

Datorteknik 2 (AVR 2)

Laboration i digitalteknik

Laboration Datorteknik D 3. Digitalur

Datorprojekt, del 1. Digitala system 15 p

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

AVR 5. Styrning av trafikljus. Digitala system 15 p

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

CE_O3. Nios II. Inför lab nios2time

Systemkonstruktion LABORATION LOGIK

Realtidsprogrammering

Laboration Datorteknik TSIU02/TSEA28 3. Digitalur

Laborationshandledning för mätteknik

Systemkonstruktion LABORATION SWITCHAGGREGAT. Utskriftsdatum:

Avbrottshantering. Övningsuppgifter

Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.

Projektlaboration 4, synkronisering av klockan

'HOWHQWDPHQ 6\VWHPNRQVWUXNWLRQ

HI1024 Programmering, grundkurs TEN

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

Institutionen för elektro- och informationsteknologi, LTH

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

HI1024 Programmering, grundkurs TEN

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

Enchipsdatorer med tillämpningar LABORATION 6, ROBOT

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

LABORATION. Datorteknik Y

LEU240 Mikrodatorsystem

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

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

PC-teknik, 5 p LABORATION FILHANTERING

Dokumentet är ett tillägg och bifogas tillsammans med databladen för Sweeper och Tuner. Beskrivning - Sweeper Se databladet för Sweeper

Laboration i digitalteknik Speciella sekvenskretsar

Exempeluppgift i Logikstyrning. 1 Inledning. 2 Insignaler och utsignaler

HI1024 Programmering, grundkurs TEN

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

LABORATION. Datorteknik Y

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

TSIU05 Digitalteknik. LAB1 Kombinatorik LAB2 Sekvensnät LAB3 System

Introduktion C-programmering

DIGITALTEKNIK I. Laboration DE1. Kombinatoriska nät och kretsar

Växtviskaren EITF11 Digitala projekt VT15, I12

4:4 Mätinstrument. Inledning

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

Uppgift 1a (Aktiekurser utan poster)

Planering Programmering grundkurs HI1024 HT TIDAA

Föreläsning 6: Introduktion av listor

Tentamen i EIT070 Datorteknik

Planering Programmering grundkurs HI1024 HT data

Laboration 1: Styrning av lysdioder med en spänning

Att använda pekare i. C-kod

Lösningar till tentamen i EIT070 Datorteknik

TENTAMENSUPPGIFTER I ELEKTROTEKNIK

Sekvensnät i VHDL del 2

Laboration 2 i Datorteknik- Assemblerprogrammering II

Ellära. Laboration 3 Oscilloskopet och funktionsgeneratorn

Arduinokurs. Kurstillfälle 4

Beskrivning av sorteringsverket. Automationsteknik Sortering av cylindrar 1(5)

(Lösningsförslag finns sist i denna fil.)

12 VDC LED (RGB) Färgpalett (FP) 8 färger. Färgsekvensmotor (FSM) 11 färgscheman 2 justerbara tider

Elektronik grundkurs Laboration 1 Mätteknik

Digital Termometer J10 B4 A4 GND GND GND B1 GND GND GND GND B3 A3 +5V +5V A3 +5V A2 +5V +5V A2. +5v B16 A16 UREG UREG B1 6 AC AC A1 6 A6 6

Datakommunikation med IR-ljus.

Inlämningsuppgift 1, Digsim

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

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Manual för motionscykel Extreme XT 3,3

Laborationsrapport Elektroteknik grundkurs ET1002 Mätteknik

A-del motsvarande KS1

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Enkla datatyper minne

Laboration D181. ELEKTRONIK Digitalteknik. Kombinatoriska kretsar, HCMOS v 2.1

Tentamen i Introduktion till programmering

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

Planering Programmering grundkurs HI1024 HT 2014

KALKYLATOR LABORATION4. Laborationens syfte

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

HI1024 Programmering, grundkurs TEN

Övning2 Datorteknik, HH vt12 - Programmering

Mekanisk solros, Digitala projekt(edi021) Kristoer Nordvall, Stefan Windfeldt, Inlämmnad: 4 december 2006

DEL-LINJÄRA DIAGRAM I

Enchipsdatorns gränssnitt mot den analoga omvärlden

Transkript:

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING Laborationsansvariga: Anders Arvidsson, Björn Lundblad Utskriftsdatum: 2002-10-31 Laboranter:

1 Syfte Denna laboration syftar till att öva användningen av ANSI-C som ett verktyg för att programmera mikroprocessorer. Viss realtidsprogrammering kommer också att studeras. 2 Genomförande Huvuddelen av laborationen utförs i grupper om 2-3 studenter. Vissa delar av laborationen underlättas om föreläsningsanteckningarna finns tillgängliga. Redovisning sker genom att laboranten vid markerade ställen visar upp resultatet för laborationsansvarig. 2

3 Laborationsuppgifter De första uppgifterna nedan kommer att byggas på till en fil. Skapa ett projekt med tom C-fil, t ex pwm.c. Det kan vara smidigt att utgå från ett tidigare program vid kodningen. 3.1 Header-fil Funktioner som ofta används i oförändrat skick kan vara smidigt att lägga i en separat header-fil, som kan användas till många program. Normalt läggs funktionerna i c-filer som deklareras i en header-fil, men vi hoppar över ett steg. Hämta filen piclab.h och lägg denna i samma katalog som projektet. Filen innehåller en funktion som omvandlar ett binärt tal, 0-99, till decimala tal. Funktionen tar typen char som argument och returnerar en char innehållande två decimala tal. Bit 0:3 representerar entalssiffran och bit 4:7 tiotalssiffran. Funktionen anropas enligt exemplet nedan. dec_tal = BinBCD(bintal); Inkludera header-filen i ditt program. Då filen ligger i samma katalog som projektet, ska inkluderingen göras med citattecken enligt nedan. #include "piclab.h" Verifiera omvandlingen genom att skriva ett litet program och simulera med olika indata. Undersök hur lång tid omvandlingen tar. Omvandlingstid: 3.2 PWM-regulator med non-preemtive schemaläggning Nedan övas schemaläggning där avbrott inte tillåts, samt en teknik för att verifiera att tidskraven uppnås. Uppgiften visar också ett sätt att specificera ett program genom att skriva och beskriva huvudprogrammet och på så vis arbeta på en högre abstraktionsnivå. Ljusstyrkan på en 12 V miniatyrlampa, driven av en PIC via en transistor, ska regleras enligt följande: Vid tryckning på knapp up ska ljusstyrkan öka i steg om 1%. Vid tryckning på knapp down ska ljusstyrkan minska i steg om 1%. När en knapp hålls intryckt justeras värdet 10 ggr/s. En display (på S-24 däcket) ska visa ljusstyrkan i %. Lampan ska pulsas med frekvensen 33,3 Hz vid 4 MHz klockfrekvens. Restriktioner för och krav på programmet: Inga interrupt får användas. Inga globala variabler får användas. main() ska se ut exakt enligt nedan. 3

main() { char PWM; init(); while(1) { } } LABORATION Realtidsprogrammering // Initiera portar mm timer_start(prgtid); // Starta timern PWM = knapptest(); // Kontrollera knapparna PORTB = BinBCD(PWM); // Lägg ut % på display RA2 = PWM_styr(PWM); // Lägg ut eller släck puls idle(); // Vänta på att timern räknat ut Beskrivning av funktionerna: init(); Innehåller alla initieringar som endast utförs en gång. timer_start() Starta timern med ett värde (deklarerat med #define) så att cykeltiden för programmet ger en pulsfrekvens på 33,3 Hz. (Programmet utför 100 cykler under 1 puls.) knapptest() Testa knapparna och öka eller minska pulsbreddsvariabeln efter specifikation. Funktionen returnerar en char innehållande pulsbredd 0-99%. Initialt ska pulsbredden vara 50%. BinBCD() Argumentet till funktionen består av ett heltal mellan 0 och 99. Funktionen returnerar talet på BCDkod enligt beskrivning i piclab.h. PWM_styr() Argumentet till funktionen består av ett heltal mellan 0 och 99. Funktionen returnerar en bit där 1 = PWM-puls hög och 0 = PWM-puls låg. Utsignalen är en funktion av insignalen och antalet gånger funktionen anropats. Efter 100 anrop upprepar sig förloppet. Antalet 1 or under den tiden motsvarar argumentet (= pulsbredden). idle() Funktionen väntar på att Timer0 Interrupt Flag blir satt. Under den tiden är Port A, bit 2, hög. Detta för att visa hur mycket tidsmarginal som finns i hela cykeln. Komplettera specifikationen ovan med nödvändiga uppgifter, t ex vilka pinnar de två knapparna ansluts till. 4

Skriv färdigt programmet och simulera funktionerna för att verifiera att de fungerar. Eventuellt kan ett tillfälligt huvudprogram skrivas för att enklare testa funktionerna med olika indata. Bygg upp konstruktionen på ett S-24 däck och besvara nedanstående frågor. Vilken är den minsta tid som bit RA2 kan vara hög? (Kommentera bort raden som nollställer T0IF, så att idle() exekverar under kortast möjliga tid. PWM-frekvensen varierar nu beroende på programmets exekveringstid. Mät tiden med oscilloskop. Återställ sedan programmet.) Vilken är största och minsta tidsmarginal i programcykeln vid olika händelser? (Återställ programmet så T0IF inväntas. Kontrollera att frekvensen är stabil. Testa med olika pulsbredder. Ställ in oscilloskopet för efterlystid genom att under [Display], justera [Persist] till 5 sekunder, så syns gränserna tydligt. Räkna bort tiden som uppmättes ovan, som inte var väntetid, utan minsta tid för att hantera RA2.) Ok, så långt: 3.3 PWM-regulator med preemtive schemaläggning I föregående uppgift kunde lampan tyckas flimra vid vissa pulsbredder. Detta problem ska minskas genom att pulsfrekvensen ökas till 50 Hz. Modifiera programmet så att denna frekvens klaras. Börja med att schemalägga rutinerna (på papper) så att pulsfrekvensen garanteras. Detta sker med hjälp av avbrott. Vissa rutiner utgår. För kommunikation med avbrottsrutin tillåts upp till två globala variabler. Kom ihåg att nedtryckt knapp ska innebära förändring av pulsbredd 10 ggr/s. Tips: En rutin har mycket mjuka realtidskrav. Testa programmet på däcket och verifiera att pulsfrekvens mm stämmer. Lab ok: 5