Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)

Relevanta dokument
The Phenomenal Doorbell Bilaga 2. Källkod

Digitala Projekt(EITF40) - Larm

Växtviskaren EITF11 Digitala projekt VT15, I12

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

Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

The Intelligent Timer

Digitala Projekt (EITF11)

Digitala Projekt(EITF40) - Larm

The Secure Light. Digitala Projekt EITF11. Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12. Handledare: Bertil Lindvall

1 Bakgrund 4. 2 Kravspecifikation Definitioner Grundläggande krav Användarfall 5

EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson

TEMPERATURMÄTARE MED GRAFRITARE

Projektrapport Målgång

Digitala Projekt: Digitala Projekt, EITF11 - VT17 Oscar Ahlgren, Patrik Lorentsson och Sten Hellberg Handledare: Bertil Lindvall

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Digitala Projekt (EITF11) Hemlarm

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Pulsmätare med varningsindikatorer

EITF40 - RFID-terminal. Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6)

Projektrapport - Roterande digital LED-klocka

Digitala Projekt EITF11 Grupp 9 Projektarbete Hanna Bondesson Marcus Skog. Reaktionsspel EITF11

DIGITALA PROJEKT (EITF40) Fartmätare

#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;

Bilen som inte kan krocka

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

THE VISUAL EGGTIMER. Skola: Lunds Tekniska Högskola Institution: Elektro- och informationsteknik Kurs: Digitala projekt (EITF11)

Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare

EITF11 Digitala Projekt TIC TAC TOE. Lukas Ljungblom & Johan Lyckenvik I-13 Handledare: Bertil Lindvall

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

Pulsmätare. EITF11 Digitala Projekt VT15. Grupp 9: Emma Albertz, Mathilde Hagander & Alexandra Mansner Handledare: Andreas Johansson & Bertil Lindvall

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

Källkod. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define green_diode PD5. #define RS PD4

Väderstation. Digitala Projekt EITF11 Institutionen för Elektro- och Informationsteknik Lunds Tekniska Högskola

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

EITF11. WormFight. Axel Eriksson, Felix Geuken Handledare: Bertil Lindvall EITF11

Liftmaestro. Lunds Tekniska Högskola Elektro- och informationsteknik. Olle Gemfors, I13 Dayanand Sagar, I13 Mattias Wendler, I13

Digitala Projekt (EITF11) Larmanläggning

Rafiki Wa Kupanda. EITF11, Digitala projekt VT18. Linnea Håkansson, Anton Gunneberg, Ruben Schultz

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

Effektpedal för elgitarr

Digitala Projekt VT13. PING-Pong

Helena Harrysson och Linnéa Wickberg

Rapportsammanfattning. Optima Sous Vide

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

EIT. Digitala projekt EITF11. Larmanläggning. Handledare Bertil Lindvall Anna Lindberg I-11 Caroline Vitasp I-11 Eric Eliason I-10

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Projektrapport - Feststation

Thunder s Truck projektrapport

High Core Remote Car X8000 Cool

Pulsmätare Digitala Projekt EITF11

PROJEKTTYP: Rapportsammanfattning STUDENTER: Larsson, J. ( ) och Oredsson, J. ( ) DATUM: 26 april, 2015

DIGITALA PROJEKT Väderstation

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

Gustaf Backman, Anton Nystedt, Nicholas Peebo Battleships. Lunds tekniska högskola. EITF11 Digitala projekt

SIMON SAYS Projekt i EITF11 Digitala Projekt

EITF11 - Digitala Projekt

Projektrapport i Digitala System

DIGITALA PROJEKT - EITF11

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

Digitala projekt Linjeföljande bil

EDI021 Digitala projekt. Rapport LARMSYSTEM. Utförd av: Niklas Eklund E03 David Olsson E04. Inlämnad:

Guitar Tuner EITF11 Digitala Projekt, Projektrapport Elektro- och informationsteknik

Datorprojekt, del 1. Digitala system 15 p

DANCING ROBOT. EITF11, Grupp 10. Kajsa Salomonsson, Hugo Hedin och Petter Mårtensson

Digitala projekt rapport

LOOKY LUKE. Caroline Hellström och Ville Orlander Arvola Industriell ekonomi I10. - Att välja en lyckosam väg EITF11 Digitala projekt

Rapport Digitala Projekt EITF Grupp 12 Elin Blomstergren, Victor Sundgren Handledare: Bertil Lindvall. Fyra i rad

/* * dancing3.c * * Created: :53:20 * Author: digpi10 */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.

EITF11: Bandkanon Grp 05

Aml Abbas, Ali Darwish, Ehsanolah Hafezi, Fatima Zahra Doussi Grupp 15

Digitalt Projekt: Radiostyrd Bil

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

Innehåll. 1 Inledning 3

Kla ggvisarskylt. -med en underton av rassel. av Jonathan So nnerup & Gabriel Jo nsson

ETSA01 Digitala Projekt (I) VT- 13. Projektarbete AC Handledare Bertil Lindvall

JOFEN-Prototypes. Målsökande pansarvagn. Projektarbete i Kursen EITA15. Jonatan Claesson, Olle Jonasson, Felix Rödén, Edvin Rossi & Nils Olén

Avståndsmätare. Digitala System EITA Grupp 7. Abdelsalem Yabrag, Abdulhadi kikar, Fredrik Peterson, Jesper Annefors

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

Linjeföljare Digitala projekt Johan Engström e02je Henrik Persson e02hp

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

Department of Information Technology Digitala projekt. SuperKull. Daniel Öhman Alexander Persson

Digitala projekt - Radiostyrd bil

Väderstation. EITF11, Digitala projekt RAPPORT. Isabella Bergvik, Emma Sandén & Hanna Åberg

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

AVR 5. Styrning av trafikljus. Digitala system 15 p

Lunds Tekniska Högskola. I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall

SNOOZE SNOOZE REVOLUTION

LUNDS TEKNISKA HÖGSKOLA. Väderstation. Digitala Projekt, EITF11. Martin Olofsson, I08 & Fredrik Oher, I08 Vt 2012

Datorteknik 1 (AVR 1)

Digitala projekt, EITF11 - Rapport Handledare: Bertil Lindvall. Fredrik Nylund (ine12fny) Johan Ekman (ine11jek) Olof Wikman (ine11owi)

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

LTH. EITF11- Digitalaprojekt. Projektrapport WEB

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Kontrollskrivning Mikrodatorteknik CDT S2-704

Projekt Digitala system. Rörelsekänsligt Larmsystem

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Manual ThanGram Manuell programmering, sida 1-2. Håll in PROG-knappen i centralen under 3 sekunder. Den gula lampan tänds.

Transkript:

Skola: Institution : Kurs : Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11) Projekttyp : Rapportsammanfattning Handledare : Bertil Lindvall Studenter : Datum : 2015-05-11 Abstract : The following report compiles the process of constructing a prototype called The Phenomenal Doorbell. The doorbell is suited for interaction with clients at the door of an office, for example the door of a very busy nurses room. When a patient arrives, he or she rings the doorbell and then waits for the nurse to respond. In order to construct the prototype a specification of requirements was formulated and a strategy and implementation for the integration between soft- and hardware were made. 1

Innehållsförteckning 1. Inledning 2. Kravspecifikation 3. Teori 3.1 Hårdvara 3.1.1 Kopplingsschema 3.1.2 Processor 3.1.3 LCD-display 3.1.4 LED 3.1.5 Knappar 3.1.6 Summer 3.1.7 Grind 3.1.8 Kristall 3.1.9 Resistorer 3.2 Mjukvara 4. Arbetsprocessen 4.1 Planering 4.2 Hårdvarukonstruktion 4.3 Mjukvarukonstruktion 5. Resultat 6. Diskussion och slutsats 7. Referenser/Källförteckning 8. Appendix/Bilagor Bilaga 1. Kopplingsschema Bilaga 2. Källkod 2

1. Inledning Detta är en rapport som redovisar utförandet av en uppgift i kursen Digitala Projekt (EITF11). Uppgiftens syfte var att utforma en enklare digital prototyp vilket innebar planering, skapande av hårdvara samt implementering av mjukvara genom C-programmering. Den prototyp som har skapats är en digital ringklocka hos en sjuksjöterska. Sjuksjöterskan ska ha möjligheten av ge respons i form av om hen är upptagen eller inte vilket ska visas för personen som ringer på i form av en ljussignal (LED) och ett meddelande på en display. 2. Kravspecifikation En mottagningsringklocka som fungerar som en assistent vid dörren till en mycket upptagen sjuksköterskas rum ska skapas. Ringklockan ska bestå av en display, en knapp för att ringa på, tre lampor (grön, gul och röd) och en klocka som håller tiden samt ska kunna ringa när man trycker på knappen. Det ska även finnas en knappsats kopplad till ringklockan som sitter på andra sidan sjuksköterskans vägg, med två knappar: en för ledigt och en för upptaget. En patient kommer till mottagningen och ser displayen på vilken det står Welcome. Ingen lampa lyser. När patienten sedan ringer på startas en klocka och olika scenarion kan inträffa. De scenarion som kan inträffa när patienten ringer på klockan är följande: A. Sjuksköterskan är inte närvarande. Den röda lampan börjar lysa efter 10 sekunder om sjuksköterskan ej trycker på en knapp. B. Sjuksköterskan är upptagen med en patient och det finns en väntetid. Om väntetiden är fem minuter trycker sköterskan en gång på knappen och väntetiden visas efter 10 sekunder från dess att klockan ringde. Om väntetiden är 10 minuter trycker sköterskan två gånger osv. C. Sjuksköterskan är ledig. Sjuksköterskan trycker på den knapp som motsvarar den gröna lampan. Lampan tänds efter de 10 sekunderna. Övrigt: Alla lampor som tänds lyser i 10 sekunder och sedan slocknar dem. Det händer inget om en besökare trycker på ringklockan när en lampa redan lyser. 3

3. Teori 3.1 Hårdvara Detta avsnitt avser att beskriva vilka hårdvarukomponenter som har använts i projektet. 3.1.1 Kopplingsschema Ett schema som visar hur hårdvarukomponenterna är sammankopplade finns i Bilaga 1. Kopplingsschema. Kopplingsschemat ritades innan prototypen sattes ihop för att underlätta vid konstruktionen. 3.1.2 Processor En processor av modellen Atmega16 används till denna prototyp. Processorn har totalt 40 pinnar, varav 32 st är I/O-pinnar och övriga pinnar är kopplade till ett JTAG interface. I/O-pinnarna är uppdelade i A, B, C respektive D-portar. Tre stycken LED och en summer har kopplats till A-porten. De tre knapparna är kopplade dels separat via varsin resistor till varsin pinne i D-porten och dels sammankopplade via en grind till en pinne i D-porten. En LCD-display är kopplad till både B- och D-porten och en kristall är kopplad till processorns crystal-port. För att testa programkoden användes en JTAG kopplad till processorns C-port. 3.1.3 LCD-display För att interagera med personen som ringer på hos sjuksköterskan används en LCD-display kopplad till B-porten samt D-porten. Denna visar det meddelande som programkoden är programmerad att skriva ut. Eftersom displayen ska visa både text och siffror (väntetid) är varianten som valts en LCD Units Alfanumerisk teckendisplay. 3.1.4 LED För att representera de ljussignaler som beskrivs i kravspecifikationen används tre LED; en grön, en gul och en röd. 3.1.5 Knappar Tre tryck-knappar används för att representera de knappar som kravspecifikationen hänvisar till. Dessa fungerar likt en strömbrytare vilket innebär att förutom att kopplas till processorn så är de kopplade till strömkällan så att en spänning i form av en etta skickas till processorns portar vid knapptryckning. Knapp och port, samband: PD3 (17) - översta knappen (vänta) PD4 (18) - undre knappen (kom in) PD1 (15) - ensam knapp (ringklocka) 3.1.6 Summer En summer har kopplats in för att en signal ska ljuda inne hos sköterskan då någon trycker på knappen som motsvarar ringklockan. 4

3.1.7 Grind Hårdvaran består av tre olika knappar som alla genererar ett avbrott då de trycks ned. Dessa är sammankopplade med en grind som förenar de tre olika knapparnas signaler till en signal som går in i processorn. Detta medför att ett och samma avbrott genereras oavsett vilken knapp som trycks ned. Därefter söker processorn upp vilken av knapparna som genererat avbrottet via knapparnas direktkoppling till processorn. 3.1.8 Kristall En kristall är kopplad till processorn för att få tiden att räknas mer exakt. Detta då den inbyggda ocillatorn inte gör detta tillräckligt. Kristallen som används har en frekvens på 4 MHz. 3.1.9 Resistorer Ett antal resistorer är inkopplade för att begränsa strömmen in till knapparna och LED:en. Detta för att kontrollera vilken spänning som kommer in till motsvarande knapp/led. 3.2 Mjukvara Mjukvaran till sjuksköterskans digitala ringklocka är programmerad i AVR Studio 6 vars gränssnitt är programmeringsspråket C. Huvudprogrammet inleds med en metod som utför alla grundinställningar till processorns portar, möjliggör avbrott samt skriver ut ett välkomstmeddelande på skärmen. Därefter körs en while-loop som var tiondels sekund kontrollerar om det skett ett avbrott i systemet, det vill säga undersöker om någon knapp tryckts in. Om en knapp har tryckts in granskar programmet vilken av knapparna som genererat avbrottet och skickar sedan denna information vidare. Informationen tas om hand av en metod som, beroende av knapptryck, tänder de olika LED:en samt i de fall som kravspecifikationen anger skriver ut ett meddelande på displayen. 4. Arbetsprocessen 4.1 Planering Arbetet inleddes med att ta fram en idé över vad för slags produkt som skulle skapas. Genom att lista vilka funktioner som skulle finnas så skapades en kravspecifikation för produkten. Efter detta så ritades ett kopplingsschema i programmet PowerLogic. Här krävdes en del handledarhjälp för att förstå hur programmet fungerade. När kopplingsschemat ansågs vara klart påbörjades arbetet med hårdvarukonstruktionen. 4.2 Hårdvarukonstruktion För att skapa hårdvaran tilldelades projektgruppen de komponenter som krävdes. Dessa fick kompletteras efter hand på grund av att fler delar blev nödvändiga. Hårdvarukompontenterna kopplades samman enligt kopplingsschemat. För att testa så att hårdvarukopplingen fungerade enligt plan kopplades ström in i 5

Digitala projekt (EITF11) kretsen och en multimeter samt debuggern i AVR-Studio användes för att felsöka. Hårdvaran fungerade efter en del omarbetning som önskat. 4.3 Mjukvarukonstruktion När hårdvaran var klar inleddes arbetet med att programmera mjukvaran. All programmering gjordes i C i AVR-Studio 6. Koden testades successivt genom att överföra den till hårdvaran med hjälp av en J-TAG. Detta var det mest omfattande arbetet som krävde mest tid. 5. Resultat Projektet resulterade i en väl fungerande prototyp som kan hantera alla funktioner som angetts i kravspecifikationen. Bild 1. När en patient kommer till mottagningen står det Welcome på skärmen. Ingen LED lyser. Bild 2. Någon har ringt på och sjuksköterskan är inne och har tryckt på kom-in-knappen. Grön LED lyser. 6

Digitala projekt (EITF11) Bild 3. Någon har ringt på men sjuksjöterskan är upptagen. Väntaknappen har tryckts in två gånger och på skärmen visas att väntetiden är 10 minuter och den gula LED:en lyser. Bild. 4 Någon har ringt på men sjuksköterskan är inte på kontoret och den röda LED:en lyser därför efter 10 sekunder. 6. Diskussion och slutsats Arbetet med att ta fram denna ringklocka har varit både roligt och mycket lärorikt. Genom att ta fram denna produkt har gruppen lärt sig mycket inom ämnet digital teknik som anses vara värdefullt för eventuella framtida kurser men framför allt förhoppningsvis framtida jobb. Genom utförandet av hårdvarukonstuktion och felsökning i denna, C-programmering, databladstolkningar har gruppen lärt sig mer om hur en arbetsprocess inom ämnet kan gå till. Gruppen har stött på en del svårigheter längs vägen då kunskapen inom ämnet varit bristande. Detta har dock avhjälpts med god handledning, datablad och kreativt tänkande. Gruppen känner sig nu säkrare på att hantera nya utmaningar, speciellt inom detta område, då problemlösning har varit en stor del av arbetet. Sammanfattningsvis så har projektet lärt oss mycket om arbete inom digital teknik och om hur konstruktionsarbeten likt detta är uppbyggda och går till. Vi är mycket nöjda med vårt projekt och med kursen i helhet. Projektets omfattning var rimlig för den tidsram som fanns men hade mer tid funnits hade det varit lärorikt och spännande att utveckla ringklockan ännu mer. Vi är ändå nöjda med den produkt vi tagit fram och väldigt nöjda med projektets resultat som helhet. 7

7. Referenser/Källförteckning Databladet AVR-ATmega16 High-performance AVR 8-bit Microcontroller http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/processors/atmega16.pdf Datum: 2015-04-14 Databladet Sharp Dot-Matrix - LCD Units Alfanumerisk teckendisplay http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/display/lcd.pdf Datum: 2015-04-14 Manualen AVR Libc Users Manual-1.6.4(HTML) http://www.eit.lth.se/fileadmin/eit/courses/edi021/avr-libc-user-manual/index.html 8

Digitala projekt (EITF11) 8. Appendix/Bilagor Bilaga 1. Kopplingsschema 9

Bilaga 2. Källkod #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> //Variabler int flag = 0; int count = 0; int timevect[8]; int bellbutton = 0; int waitbutton = 0; int comeinbutton = 0; int time = 0; void setup() DDRA = 0b00001111; DDRB = 0b11111111; DDRC = 0b00000000; DDRD = 0b11100000; disp_initial(); disp_welcomemessage(); enablebuttoninterrupt(); enabletimeinterrupt(); sei(); void set_pin( char port, char pin, char state) char set = _BV(pin); if ('A' == port) set &= PORTA; if (set!= 0 && state == 0) //Ändrarfrån1till0 PORTA ^= set; else if (set == 0 && state == 1) //Ändrarfrån0till1 PORTA ^= _BV(pin); else if ('B' == port) set &= PORTB; if (set!= 0 && state == 0) //Ändrarfrån1till0 PORTB ^= set; 10

else if (set == 0 && state == 1) //Ändrarfrån0till1 PORTB ^= _BV(pin); else if ('C' == port) set &= PORTC; if (set!= 0 && state == 0) //Ändrarfrån1till0 PORTC ^= set; else if (set == 0 && state == 1) //Ändrarfrån0till1 PORTC ^= _BV(pin); else if ('D' == port) set &= PORTD; if (set!= 0 && state == 0) //Ändrarfrån1till0 PORTD ^= set; else if (set == 0 && state == 1) //Ändrarfrån0till1 PORTD ^= _BV(pin); //-------------------------------------------------------------------------------// //-----------------------------SKÄRMINSTÄLLNINGAR------------------------------// //-------------------------------------------------------------------------------// void write_cmd( char value) //RSärennollaförattendastbehövaläsaincommands PORTB = value; _delay_ms(5); set_pin('d', PD5, 0); // RS set_pin('d', PD6, 0); // RW _delay_ms(5); set_pin('d', PD7, 1); // E _delay_ms(5); set_pin('d', PD7, 0); // E _delay_ms(5); void disp_writech( char val) // RSärenettaförattkunnaläsaintecken PORTB = val; _delay_ms(1); set_pin('d', PD6, 0); //RW set_pin('d', PD5, 1); //RS 11

set_pin('d',pd7, 1); //Enable set_pin('d',pd7, 0); //Enable void disp_nbr( int number) int nbr1 = number/10; itoa(nbr1,timevect,10); disp_writech(timevect[0]); int nbr2 = number%10; nbr1 = itoa(nbr2, timevect,10); disp_writech(timevect[0]); void disp_clear() write_cmd(0b00000001); //Cleardisplay void disp_initial() //Initialadisplayinställningar disp_clear(); _delay_ms(5); write_cmd(0b00111000); //Functionset _delay_ms(5); write_cmd(0b00001111); //ON/OFFset _delay_ms(5); write_cmd(0b00000010); //Entrymodeset //-------------------------------------------------------------------------------// //------------------------------SKRIVAPASKÄRMEN------------------------------// //-------------------------------------------------------------------------------// void disp_waitmessage( int number) disp_clear(); disp_writech('w'); disp_writech('a'); disp_writech('i'); disp_writech('t'); disp_writech('i'); disp_writech('n'); disp_writech('g'); disp_writech('t'); disp_writech('i'); disp_writech('m'); disp_writech('e'); disp_writech(':'); disp_writech(''); disp_nbr(number); //Visatidenberoendepåknapptryck 12

void disp_welcomemessage() disp_writech('w'); //Visa"Welcome" påskärmen disp_writech('e'); disp_writech('l'); disp_writech('c'); disp_writech('o'); disp_writech('m'); disp_writech('e'); void disp_stepinsidemessage() disp_writech('s'); //Visa"Stepinside" påskärmen disp_writech('t'); disp_writech('e'); disp_writech('p'); disp_writech(''); disp_writech('i'); disp_writech('n'); disp_writech('s'); disp_writech('i'); disp_writech('d'); disp_writech('e'); void disp_ooomessage() disp_writech('o'); //Visa"Outofoffice" påskärmen disp_writech('u'); disp_writech('t'); disp_writech(''); disp_writech('o'); disp_writech('f'); disp_writech(''); disp_writech('o'); disp_writech('f'); disp_writech('f'); disp_writech('i'); disp_writech('c'); disp_writech('e'); //-------------------------------------------------------------------------------// //-------------------------------------LED-------------------------------------// //-------------------------------------------------------------------------------// void redled_on() set_pin('a', PA0, 1); 13

void yellowled_on() set_pin('a', PA1, 1); void greenled_on() set_pin('a', PA2, 1); void redled_off() set_pin('a', PA0, 0); void yellowled_off() set_pin('a', PA1, 0); void greenled_off() set_pin('a', PA2, 0); int check_button() char val = PIND; val = val & 0b00011010; if (val == 8) //Sjuksköterskantryckerpåvänta-knappen return 1; if (val == 16) //Sjuksköterskantryckerpåkomin-knappen return 2; if (val == 2) //Någonringerpå return 3; //Interrupts void enablebuttoninterrupt() MCUCR = 0b00000011; // sida67 SREG = 0x82; //? GICR = (1 << INT0); 14

void enabletimeinterrupt() //timerforcount TCCR1A = 0b00000000; TCCR1B = 0b00000101; TCNT1 = 65145; //timerforbuzzer TCCR0 = 0b00001001; TCNT0 = 0b11111111; TIMSK = 0b00000101; ISR(INT0_vect) //Globaltbutton-interrupt _delay_ms(1); //felsökningmedberra int a = check_button(); //KOLLAALLAKNAPPAR if (a == 1) waitbutton = 1; else if (a == 2) comeinbutton = 1; else if (a == 3) bellbutton = 1; ISR(TIMER0_OVF_vect) //Buzzer if (bellbutton == 1 && count < 20) set_pin('a', PA3, 0); _delay_ms(1); set_pin('a', PA3, 1); TCNT0 = 0b11111111; ISR(TIMER1_OVF_vect) //Tidräknaresomkörsvarjetiondelssekund 15

if (bellbutton == 1 && count < 100 && count >= 0) count++; if (waitbutton == 1 && count > 0 && count < 100) time++; waitbutton = 0; if (waitbutton == 1 && count == 0) waitbutton = 0; time = 0; if (comeinbutton == 1 && count == 0) comeinbutton = 0; time = 0; if (comeinbutton == 1 && count > 0 && count < 100) count = 0; time = 0; bellbutton = 0; comeinbutton = 0; flag = 3; //green if (count == 100 && time > 0) count = 0; bellbutton = 0; waitbutton = 0; flag = 1; //yellow if (count == 100 && time == 0) count = 0; bellbutton = 0; flag = 2; //red TCNT1 = 65145; void actionperformed() 16

if (flag == 3) // tändagrönled greenled_on(); disp_clear(); disp_stepinsidemessage(); _delay_ms(500); disp_clear(); greenled_off(); disp_welcomemessage(); else if (flag == 1)// tändagulleds, skrivameddelande yellowled_on(); time = time*5; disp_waitmessage(time); _delay_ms(500); disp_clear(); yellowled_off(); disp_welcomemessage(); time = 0; else if (flag == 2) //tändarödled redled_on(); disp_clear(); disp_ooomessage(); _delay_ms(500); disp_clear(); redled_off(); disp_welcomemessage(); flag = 0; //Huvudprogram void main( void ) setup(); while (1) actionperformed(); 17