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

Relevanta dokument
Datorprojekt, del 1. Digitala system 15 p

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

Projektlaboration 4, synkronisering av klockan

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

Datorteknik 2 (AVR 2)

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

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

AVR 5. Styrning av trafikljus. Digitala system 15 p

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Att använda pekare i. C-kod

Drivrutiner för att hantera teckenfönster.

CPU. Carry/Borrow IX. Programräknare

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

Enkla datatyper minne

Digital- och datorteknik

Digital- och datorteknik

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

TMT-918 Fjärrkontroll med timer. Säkerhet. Tekniska data

PROJEKT STAFFAN STALLEDRÄNG

Klassdeklaration. Metoddeklaration. Parameteröverföring

Lab5 för prgmedcl04 Grafik

Föreläsning 10. Pekare (Pointers)

Micro:bit. Börja skapa egna program

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Manual för Autostart Speed Control

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

LABORATION. Datorteknik Y

*Pekarvärden *Pekarvariabler & *

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

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

Jan Babor och Oscar Ågren Handledare: Bertil Lindvall 5/16/2011

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

3. Hämta och infoga bilder

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

En kort text om programmering i C.

Lathund. C för inbyggda system

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

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

Sekvensnät i VHDL del 2

Övning 6. Parallellport, timer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Robotprogrammering felsökning & analys.

Digitala Projekt (EITF11)

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

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

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

Laboration 3, uppgift En klass för en räknare

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

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

Funk%oner. Vad är det och hur definierar vi en Top- down- programmering lokala globala variabler void och flera inparametrar

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

Övningar Dag 2 En första klass

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Det finns många flaggor till g++,

Programmera i teknik - kreativa projekt med Arduino

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Funktioner och programstruktur. Föreläsning 5

Digitala Projekt(EITF40) - Larm

Övningar i 2D2050. Per-Anders Staav (kallas Pa) Epost: eller

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Tentamen i Introduktion till programmering

Programmering. Scratch - grundövningar

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Lathund. C för inbyggda system

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

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

1. Sprängskiss. 2. Montering av automatventilen

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

PROGRAMMERING AV MCU LABORATION6. Laborationens syfte

LABORATION. Datorteknik Y

TDIU01 - Programmering i C++, grundkurs

TDIU01 Programmering i C++

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

TDIU01 - Programmering i C++, grundkurs

PROV. 12 Egenskaper (provavsnitt)

Objektorientering i liten skala

Effektpedal för elgitarr

Redovisning av inlämningsuppgifter

2D1339 Programkonstruktion för F1, ht 2003

Java, klasser, objekt (Skansholm: Kapitel 2)

Bruksanvisning Cebex TC 543

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Digitala projekt rapport

HI1024 Programmering, grundkurs TEN

Innehåll. 1 Inledning 3

TUTORIAL: SAMLING & KONSOLL

AM / FM Stereo Digital Radio 381RH13-A. Bruksanvisning PR-D7

Spectra Optics KCP-10 Instruktions Manual

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

Programmering i C, 7,5 hp

Version: Is_05. Tillverkare:

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT data

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Transkript:

Namn: Laborationen godkänd: Digitala system 15 p L T H I n g e n j ö r s h ö g s k o l a n v i d C a m p u s H e l s i n g b o r g Datorprojekt, del 3 Projektlaboration 3, hantering av klocka. Laborationsuppgifter: Laborationens mål är att få displayen att visa timmar, minuter och sekunder samt att kunna ställa klockan. Uppgift 1. Det periodiska avbrottet som användes i laboration 5 är lämpligt att använda till klockan. Kopiera funktionerna initoc1 och ISR(SIG_OUTPUT_COMPARE1A) och placera dem i en ny fil, AVR-MT-128-clock.c. I laboration 5 användes en annan mikroprocessor och en annan klockfrekvens. Nu använder vi 16 MHz istället för 1 MHz. Du måste justera en av inställningarna i initoc1 så att avbrottet fortfarande kommer var 10:e ms. Observera också #include-raden som måste vara med när vi har en fil med avbrottsfunktion. Erik Larsson

Uppgift 2. I filen AVR-MT-128-clock.c ska du nu skriva en ny funktion, clock(), som gör följande: clock Öka en räknare med 1 = 100? Ja Nollställ räknaren CountSeconds Nej = 0? Ja CountMinutes Nej = 0? Ja CountHours Nej newtime = 1 klart Funktionen ska anropas i avbrottsfunktionen och räkna upp variablerna counter, seconds, minutes och hours enligt flödesplanen ovan. Dessutom ska en variabel newtime användas som flagga att klockan ändrat värde. Den får ungefär samma funktion som bitarna i variabeln new_buttons i den första projektlabben. Alla dessa variabler utom counter ska vara tillgängliga för omvärlden. Därför ska du ha en header-fil, AVR-MT-128-clock.h, där de deklareras. Variablerna ska fungera såhär: counter: En räknare som räknar 100 avbrott. När counter = 100 ska den nollställas och sekunderna ska räknas upp. seconds: Räknas upp med ett varje gång. Om sekunderna fått värdet 60 ska de nollställas och minuterna ska räknas upp. minutes: Räknas upp och nollställs på samma sätt som sekunderna. hours: Räknas upp och nollställs vid värdet 24. newtime: Ettställs varje gång klockan (sekunderna) ändrat värde. Tänk på att variablerna definieras som volatile! Testa programmet! 2

Uppgift 3. Använd dina funktioner från förra laborationen för att skriva ut klockan: 14:35:06 Skriv ut den i mitten på den översta raden. Lägg utskriften i en funktion, writeclock, som du anropar i huvudprogrammet varje gång det är dags att skriva ut tiden. Funktionen placeras i filen AVR-MT-128-clock.c. Om du inte vill att markören ska stå och blinka efter sekundsiffran, så kan du avsluta med att placera markören på en plats där den inte syns. I uppgift 4 gör du en sådan funktion. Skriv funktionen, komplettera AVR-MT-128-clock.h och testa! De återstående uppgifterna i denna laboration går ut på att kunna ställa klockan. I nästa laborationsavsnitt ska vi lägga till den programkod som gör att en tidsignal kan tas emot från en fristående enhet. Manuell ställning av klockan. Man kan tänka sig många olika sätt att ställa klockan. Här är ett par exempel: 1. Använd 3 knappar för att öka värdet på timmar, minuter och sekunder. Låt [left] räkna upp timmar, [middle] räkna upp minuter och [right] sekunder. 2. Låt markören vara placerad på en av siffrorna. Då ska du kunna ändra den siffran genom att trycka på [up] eller [down] och sen med knapparna [left] och [right] positionera markören på önskad siffra. Vi väljer alternativ 2 eftersom det fungerar mycket tydligare. Mittenknappen ska vi till att börja med använda för att få klockan att gå till och från tillståndet running. 3

Uppgift 4. En funktion för att placera markören på en bestämd plats. Uppenbarligen behöver vi en funktion som placerar markören på önskad plats. När vi ställer klockan ska ju markören märka ut det tal (timmar, minuter eller sekunder) som ska ökas eller minskas. void LCD_PlaceCursor(unsigned char position){ }?????????????????????????????????????????????????????????????????????? Om du tänker efter så har du redan skrivit denhär koden! Funktionen läggs lämpligen i filen AVR-MT-128-LCD.c Skriv funktionen, komplettera AVR-MT-128-LCD.h och testa funktionen! Uppgift 5. Huvudprogrammet. Som det mesta av den elektronik vi har omkring oss, så ska den här klockan kunna vara i några olika tillstånd, moder. Det gör det lätt att hantera den. Tillstånd running : 1. Om en sekund har gått: skriv ut klockan. 2. new_left : nästa tillstånd ska bli set_hours och markören placeras på timmarnas entalssiffra. Tillstånd set_hours : 1. new_up : timmarna räknas upp med ett, klockan skrivs ut och markören sätts på timmarnas entalssiffra. 2. new_down : timmarna räknas ned med ett, klockan skrivs ut och markören sätts på timmarnas entalssiffra. 3. new_right : nästa tillstånd ska bli set_minutes och markören placeras på minuternas entalssiffra. 4. new_middle : nästa tillstånd ska bli running 4

Tillstånd set_minutes : 1. new_up : minuterna räknas upp med ett, klockan skrivs ut och markören sätts t på minuternas entalssiffra. 2. new_down : minuterna räknas ned med ett, klockan skrivs ut och markören sätts på minuternas entalssiffra. 3. new_left : nästa tillstånd ska bli set_hours och markören placeras på timmarnas entalssiffra. 4. new_middle : nollställ sekunderna, nästa tillstånd ska bli running Här är en lämplig struktur för den oändliga slingan i huvudprogrammet: switch(state){ case running: break; case set_hours: break; case set_minutes: }// end switch Variabeldeklarationen för tillståndsvariabeln state är enklast att lägga i en headerfil. Du kan göra en headerfil för huvudprogramfilen, AVR-MT-128.h och lägga den där. I den filen kan du också lägga annat som tillhör huvudprogramfilen och som andra filer kan behöva känna till. enum {running, set_hours, set_minutes} state; Bonusuppgift : Gör ett stoppur eller en väckarklocka. 5

Programmerarens bevingade ord 1. Konstigt. 2. Det har ju fungerat förut! 3. Det här kan inte påverka det där. 4. Men jag trodde att jag hade fixat det. 5. Hur kunde det bli så? 6. Det måste vara något fel på kretsen. 7. Dom kanske har bytt version? 8. Nu ska det fungera! 9. Men jag har inte ändrat nånting. 10. Jodå, det blir klart till dess. 11. Det är bara ett skönhetsfel. 12. Jag är nästan klar. 13. Jag tänkte inte på det. 14. Det tar ingen tid. 15. Det är bara några småsaker som ska fixas. 16. Det hade jag ingen aning om. 17. Man kan inte testa allting! 18. Det är med, det är bara inte testat. 19. Egentligen fungerar det, fast det inte verkar så. 20. Frånsett att det inte fungerar, hur tycker du att det verkar? 21. Programmet är helt rätt, men det funkar inte. 22. Hur skulle jag kunna veta det? 23. Det känns som det ska fungera. 24. Skit!!! 25. Hjälp!!! 26. Bara för att det fungerar behöver det inte vara rätt! 6