2. Delgennemløb af Realisationsfasen Indholdsfortegnelse



Relaterede dokumenter
LCD Character display Intro

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

Arduino Programmering

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Boolsk algebra For IT studerende

Boolsk algebra For IT studerende

Microcontroller, Arduino

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.

SPIDER Quick guide. DATO: August 2017 FORHANDLER: WASYS A/S. Langebjergvænget Roskilde

Lonbox PCM2001 betjeningsenhed

LCD Modul. Ved Power-on skal LCD-displayet initieres, og evt. indstilles til 4-bit kommunikation.

Modbus data modellen er opbygget af fire primære data typer. I nedenstående skema er en kort oversigt over disse.

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

Programmeringskursus Kursusaften 3. Programmering for begyndere Brug af Arduino. Display. Kursusaften 3 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

WEA-Base Brugervejledning til vejetransmitter

0.1 Modultest af hardware

GSM SMS Modem MODEL: SA RTU-1 V1.01

Start af nyt schematic projekt i Quartus II

BRUGERVEJLEDNING FLTA

Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED VERA SMART HOME CONTROLLER. ZHC5010 Firmware Version: 0.14

DiSEqC-Positioner. Best. nr. HN4892 (Brugsanvisnings nr. 361)

Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED FIBARO HOME CENTER. ZHC5010 Firmware Version: 1.0

LCD intro. LCD Character display-intro. Redigeret 4/6-2019

Efter installation af GEM Drive Studio software fra Delta s CD-rom, skal hoved skærmbilledet se således ud: (koden til administrator adgang er: admin)

Indholdsfortegnelse:

Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED VERA SMART HOME CONTROLLER.

tube tube Brugermanual Internet Radio Digital Radio OXX Digital Follow OXX DIGITAL on twitter Follow OXX DIGITAL Scandinavian

VLT AutomationDrive FC300. Basis tilslutning og programmerings eksempler. VLT AutomationDrive FC300

// Definition af porte og funktioner

Total systembeskrivelse af AD1847

R100APM Premier Rower COMPUTER

ELCANIC A/S. ENERGY METER Type ENG110. Version Inkl. PC program: ENG110. Version Betjeningsvejledning

ORCAD Digital U1A er en tæller. Den får clocksignaler ind på ben 1. På ben 2 er der en reset-funktion.

VLT AutomationDrive FC300. Tilslutning og programmerings eksempler. VLT AutomationDrive FC300

AVR MP Ingeniørhøjskolen i Århus Michael Kaalund

Logik Rapport - Alarm. Klaus Jørgensen Itet. 1a. Klaus Jørgensen & Ole Rud 9/ Vejledere: PSS & SKH

Microcontroller, Arduino

Projekt. Analog Effektforstærker.

FireBUS PARKERINGSVENTILATION

Intro til AVR. Mads Pedersen, OZ6HR

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system

VLT AQUA Drive FC200 Basis tilslutning og programmerings eksempler

LH-CD6(P) tykkelsessmåling

RF Termostat. Brugs- og monteringsanvisning

Lektion 6 / Analog Arduino

Tilslutning- og programmeringseksempler

VLT HVAC Drive FC100 Basis tilslutning og programmerings eksempler

HSYCO/ALARMS MANAGER, INSTALLATION - IONO ENHEDER

opyright Youcontrol ApS Vejledning INSTALLATION AF LHC5020 Dinskinne modul MED VERA SMART HOME CONTROLLER.

Arduino Programmering

Ved indkøring påtrykkes en kendt amplitude (HUSK 50 ohms afslutning) og displayet aflæses.

Simulering af en Mux2

HSYCO/ALARMS MANAGER, INSTALLATION - HWG ENHEDER

Begrænsningen ligger normalt i tre forhold: Lagerstørrelse Antal indgangsenheder Antal udgangsenheder

1.1 Indledning. Features: Højintensitet LED-display. Fleksibel forsyning (12-45V). Kan placeres op til 100m fra controlleren.

3V 0 7V. (der mangler dokumentation for at det virker, men jeg mangler databladene for relæerne)

CP1x Pulse Servo Quick Guide v1.00. CP1x med Servo - Servoløsning med Pulse Kontrol. Quick Guide

Projekt - RoboNet Del Journal.

Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9

Oversigts billedet: Statistik siden:

LISA 2 System til faringsovervågning

MP3 player med DMX interface.

Beskrivelse af vejrstation OM1 NETLON NETLON. Dette dokument indeholder en beskrivelse af en vejrstation OM1 fra Netlon.

Analog Øvelser. Version. A.1 Afladning af kondensator. Opbyg følgende kredsløb: U TL = 70 % L TL = 50 %

Nedenstående opgaver er lavet til en Allen-Bradley PLC, men uden videre tilpasses andre PLC typer.

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Installationsmanual. 2 Installering Installering SMS sender Installering PSTN/GSM sender Installering PSTN GSM konverter...

User Guide AK-SM 720 Boolean logic

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Montørvejledning for DTC2100 Temperaturtyring - Version 1. Generel beskrivelse

VLT AutomationDrive FC300 Basis tilslutning og programmerings eksempler. VLT AutomationDrive FC300

MCE9637 DeviceNet Modul

smart-house Web-Server Manual smart-house Web-Server Manual 1 of 15

X88S. SMS fjernstyring til sommerhuse

PID2000 Archive Service

Betjeningsvejledning IQ Control panel

IAI Quick Start Guide

Bruger manual for SW 3.06

FSystem beskrivelse PAR 200 CLOCK

Micro:Bit Indbygget sensorer og Monk Makes sensorbord

QUICKVEJLEDNING til Piccolo Light

Figur 0.1: To kredsløb hvor en operationsforstærker bliver brugt som komparator. [1]

Analoge indgange og A/D konvertering. Analoge udgange

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

Gem dine dokumenter i BON s Content Management System (CMS)

LOGO!Soft Comfort version 4.0 Hurtig i gang med LOGO! Soft Comfort

Brugervejledning. ComX brugervejledning version 4.1

Montørvejledning for DTC2102 Temperaturtyring - Version 1. Generel beskrivelse

Betjeningsvejledning. til. Vandkiosk. system

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

QUICKVEJLEDNING til multiguard DIN6. Montering

VLT AQUA Drive FC202 PID tilslutning og programmerings eksempler

(Positions) Talsystemer

Updater KINO. Opsætning og installation

2/3 Akset digital tæller

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

Indhold Generelt om indkodning... 3 Indkodning i 433MHz alarmer (f.eks. DK080, DK180 DK190)... 3 Indkodning i 868MHz alarmer (ST-3)...

Kravspecifikation For. Gruppen

Automatisk Vandingssystem

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

Transkript:

2. Delgennemløb af Realisationsfasen Indholdsfortegnelse Development plan...2 Indledning...3 Gruppestruktur på use case 2:...3 Revideret gruppestruktur uge 8...3 Evaluering af Use case 1: VisTemperatur...5 Display...6 Analyse af IC SM DIGI termometer DS1631Z+...8 Konfiguration...10 Spartan HW forbindelser til temperatursensoren...10 Analyse af Use case 2: VisForbrug...13 HW to SW Display...13 Hukommelse...13 DD RAM...13 CG ROM...13 CG RAM...15 Design af Use case 2: VisForbrug...16 HW To SW Display...16 Opsætning:...16 Funktionopsætning:...17 Intialisering af Display:...19 Udskriftsfunktioner:...21 Main...22 Bekræftelse på delaflevering...24 1

Development plan Tabel over den overordnet plan version 1.1 2008: Use case nr Betegnelse Uge 7 Uge 9,11 Uge 13 Uge 15 Uge 17 Uge 21 1 VisTemperatur I huset På nettet 2 VisForbrug I huset På nettet 2a viselbrug 2b visvarmebrug 2c visvandbrug 2d Reset 3. JusterVarme På nettet 4. TændEl På nettet 5. SlukEl På nettet 6 Reset I huset På nettet 7. JusterTid På nettet Ny Opsampling Accepttest Ad 2) VisForbrug I huset: Strategy and Planninguge 7 onsdag til fredag Analyse Design: Hardware Software uge 8 mandag til fredag uge 9 mandag til onsdag uge 9 torsdag til fredag uge 10 mandag til onsdag uge 9 torsdag til fredag uge 10 mandag til onsdag Dellevering: uge 10 onsdag Use Case 1:visTemperatur i huset + dokumentation på use case 2 Implementation Verification Deployment På nettet: Strategy and Planning Analyse uge 10 onsdag til fredag uge 11 mandag uge 11 tirsdag til onsdag uge 7 onsdag til fredag uge 8 mandag til fredag uge 9 mandag til onsdag 2

Indledning Denne gang har vi trukket den pågældende use case visforbrug over to perioder, fordi den virker til at kræve meget arbejde og tid. Denne gennemløb: Vores mål er at få vist et interaktivt menu på Spartan kortets LCD display.så vil vi også lave skitser til webinteface til funktionen visforbrug. Desuden skal vi lave resten af vistemperatur, så vi har noget konkret at vise kunden denne gang. Gruppestruktur på use case 2: Klaus Kolle Vejleder/Kunde Projekt: Intelligent Bygning Gruppe: HAJJ Henning Nørskov Vejleder/Kunde Jens Jørgen Møller Nielsen (JJMN) Dokumentation (analyse) Hardware: Spartan3e board/display Software: Display/menu vistemperatur Henrik Lysgård (HL): Dokumentation (analyse) Software: Web interface Display/Menu vistemperatur Gruppestruktur Anna V Hampen Kristensen (AVHK): Dokumentation (analyse, design) Hardware: Evaluering af temperatursensor Elmålersignal HIH - Revision 1.1 uge 05-2007 Revideret gruppestruktur uge 8 Der har været sygdom i gruppen, og der er lang leveringstid på vores temperatursensor. Desuden virker vores elmåler ikke. Der har vi valgt omlægge gruppestrukturen. Vi regner at kunne indhente alle de arbejdsområder, som vi ikke har nået i denne to ugers periode i næste periode, da vi har meget tid til at lave projektarbejde i uge 10. Denne use case er jo allerede først sat til at være færdig i uge 11, så tidsplanen må ikke rykke sig betydeligt. Den nye gruppestruktur ses på næste side. I gruppen er det bestemt, at det, som man gør bedst under sygdom, er, at tilskaffe sig viden. Sådan at man er frigivet for praktisk arbejde i den periode, man er syg. Men at man har viden til at lave mere praktisk ar- 3

bejde den efterfølgende periode. Med dette i baghovedet har vi ændret gruppestrukturen til: Klaus Kolle Vejleder/Kunde Projekt: Intelligent Bygning Gruppe : HAJJ Henning Nørskov Vejleder/Kunde Jens Jørgen Møller Nielsen (JJMN) Dokumentation (analyse) Hardware: Spartan3e board/display Software: Display/menu Anna V Hampen Kristensen (AVHK): Dokumentation ( analyse, design) Hardware: Evaluering af temperatursensor Software: Display Henrik Lysgård (HL): Dokumentation (analyse) Software: Web interface Gruppestruktur HIH - Revision 1.2 uge 08-2007 Revideret forløb i Use Case 2: VisForbrug Grundet sygdom og materialemangler som nævnt har vi valgt at Analyse af ind og ud på spartan3e Design af kommunikation eksternt Design af kommunikation med PC uge 9 onsdag til fredag uge 10 mandag uge 11 tirsdag til onsdag 4

Evaluering af Use case 1: VisTemperatur Kredsløbet for temperatursensoren er nøje beskrevet i 1. Gennemløb af Realisationsfasen. Vi har fulgt vores design til punkt og prikke med undtagelse af én ting: Den største potmeter, vi havde, var en 100KΩ, så den satte vi ind. Ramp2 blev så: Ramp2=750K 0.5 100K=700K 680K i E24 rækken Temperaturområdet blev valgt til 0-50 o C. Det giver 50 mv per o C jævnført. Forholdet mellem spændingen og temperaturen skulle give skemaet på næste side: 5

Vores test viste, at vores temperaturtransduceren ikke var præcist nok vi kunne ikke komme det nærmere end ±2 o C, og vores mål er ±1 o C. Dette problem kunne man nok klare softwaremæssigt. Et andet problem er, analoge temperatursensorer giver meget støjproblemer, hvis der er lang afstand fra sendere til modtagere, hvilket det vil være, hvis der skal være temperatursensorer i alle rum i et hus. Derfor har vi kigget andre veje Derfor vil digitale temperaturmålere være bedre. De fungerer med en såkaldt bus, det vil sige, at man kun skal trække to ledningerne rundt i huset. Ved at undgå at bruge analoge temperaturtransducere er man også fri for meget kalibrering. Det kan nemt tage et par timer hver gang. Display Vi har fundet ud af noget mere om displayet. Spændingskompatibilitet LCD diplayet bliver forsynet med +5v. FPGA ens I/O signaler forgår med 3,3v, men dette er også genkendeligt for displayet, dog er der sat modstande imellem for at undgå at overstresse FPGA ens og strataflash ens I/O pinde, hvis der læses fra displayet. Ved opstart skal der gå 15 ms eller mere, før der skrives til displayet, for at sørge for at displayet er klar med fuld uld forsyningsspænding på 5v. Character LCD interface timing med en clock på 50 MHz ses på næste side: 6

Ovenstående timing diagram viser tiderne for de første 4-bit (SF_D[11:8]) af de 8-bit til LCD displayet. Hvor de 4-bit bliver sendt når LCD_E er sat høj og er stabil i en periode på mindst 230 ns. Før at LCD_E sættes til at være høj, skal data værdien (SF_D[11:8]), register select (LCD_RS) og read/write (LCD_RW) kontrol signalerne være sat op og være stabile i en periode af 40 ns, det hele skal være stabilt sammen i perioden på mindst 230 ns. De sidste 4-bit kan efter - en periode på 1 μs, hvor de første 4-bit er blevet sendt - blive sendt til displayet. Her fungerer det på samme måde som ved de første 4-bit. Efter de 8-bit er blevet modtaget af displayet, skal der gå 40 μs, før displayet kan modtage nye 8-bit, dog skal der gå 1.64 ms efter en clear display kommando. Initialisering Efter power-on skal displayet initialiseres for at etablere den nødvendige kommunikationsprotokol. Power-on initialisering Nedenstående kommandoer viser hvordan power-on initialiseringen skal forgå. Vente i 15 ms eller længere. Skrive SF_D<11:8> = 0x3, lad LCD_E være høj i 230 ns. Vente i 4,1 ms eller længere. Skrive SF_D<11:8> = 0x3, lad LCD_E være høj i 230 ns. Vente i 100 μs eller længere. Skrive SF_D<11:8> = 0x3, lad LCD_E være høj i 230 ns. Vente i 40 μs eller længere. Skrive SF_D<11:8> = 0x2, lad LCD_E være høj i 230 ns. Vente i 40 μs eller længere. 7

Analyse af IC SM DIGI termometer DS1631Z+ Benforbindelser: Den har tre adresseben. Det vil sige, at man kan vælge otte adresser, altså at der kan være otte kredse på én bus. Hvis man har to busser, er der plads til 16 kredse. Det må være nok til alle rum til et almindeligt hus. 8

Der står i databladet, at den har en præcision på ±1 o C i temperaturområdet -10 til +85 o C, hvilket var vores målsætning i et temperaturintervallet fra 0 til 50 o C. Forsyningen skal være mellem +2.7 V til +5,5 V. Det tager maksimalt 750 milisekunder at konverterer temperaturen til et digitalt signal. Man kan selv vælge, om udgangssignalets opløsning skal være 9, 10, 11 eller 12 bits. Funktionsdiagrammet ser sådan ud: Som man ser, har DS1631Z+ kredsen en delta sigma A/D konverter. Sådan en standard kredsløb ser ud som nedenstående figur: Først er der en sumforstærker. Den næste operationsforstærker er en buffer. Efter den kommer en D-type flip flop, som tager signalet hver clock puls og sender det videre enten som høj eller lav. Den sidste opamp konverterer den positive spændingsniveau 0-5 V på flip flop udgangen til en ± spænding. Denne signal bliver atter indgang på den første forstærker. Navnet Delta Sigma kommer fra, at den anden opamp behandler forskellet (Δ) mellem sumforstærkerens udgang og 0 volt. Dernæst bliver signalet D adderet (Σ) med det analoge indgangssignal. Virkemåde for Delta Sigma ADC : 9

Hvis sumforstærkerens udgang er positiv, vil flip flop indgangen D være høj. Ved næste clock puls sendes det høje signal videre til den sidste opamp, der sender en fuld puls spænding tilbage til sumforstærkeren, hvis udgang vil gå i en negativ retning. Der er feedback, det vil sige, hvis udgangsspændingen er negativ, så vil løkken sende det tilbage på topindgangen af sumforstærkeren for at lede den i en positiv retning. Registre Det er fire registre i alt. Den ene register bruges til konfiguration. Temperaturregisteret, som er vigtigst i denne sammenhæng består af to bytes, altså 16 bits. Det ses i tabellen om register resuméet på side 7 i databladet. Man kan som nævnt selv vælge, hvor mange bits den skal bruge. Det afhænger af, hvilken præcision temperaturaflæsning skal være, og hvor lang tid den må bruge. Konfiguration Konfigurationsregister beskrivelsen starter på side 9. Af kommandoopsætningen på side 13 skal vi kun bruge tre [kommandoen i hex]: Start Convert T [51] Read Temperature [AA] Acess Config [AC] Spartan HW forbindelser til temperatursensoren 10

I IP kataloget i Xilinx Platform studio under communication low-speed kan man finde databladet for OPC(On-chip Peripheral Bus ) IIC Interface: I dette datablad findes der en funktionsdiagram: 11

OPB IIC Design parametrene står side 4. Som man kan ser, skal udgangsfrekvensen af SCL (Serial Clock) signalet være mindre eller lig med 400KHz, hvilket det er også tilfældet i DS1631Z+: (taget fra databladet side 5.) 12

Analyse af Use case 2: VisForbrug På de nye elmålere kører signalet via infrarødt. Der kunne man sætte en sensor på og tælle en op hver gang, at det blinker. HW to SW Display Da vi måske skal lave vores egne tegn, symboler eller specielle bogstaver, bliver vi nødt til at analyse displayets hukommelse især den senere beskrevet CG RAM. Hukommelse Den såkaldte LCD controller har tre interne hukommelsesområder: DD RAM, som står for Display Data Random Access Memory altså hukommelse, som man selv har adgang tilbage CG RAM, som betyder Character Generator RAM her kan man selv lave sine egne tegn/symboler/bogstaver CG ROM, som oversættes med Character Generator Read-only Memory her har man ingen skriverettigheder. Man skal først initialisere displayet, før man kan få afgang til disse områder. DD RAM Her lagres karakternes kode for at vises på displayet. De fleste applikationer sender fra og til DD RAM. Denne kode henviser til en bitmap tabel med karaktre. Denne tabel er enten gemt i den fordefineret CG ROM opsætning eller den bruger-defineret CG RAM opsætning. Læsning af og skrivning til DD RAM foregår på samme måde som CG RAM så se mere under dette emne. Standardopsætningen for de 32 karakter lokaliteter (16 på linie 1 og 16 på linie 2). Den øverste linie har adresser fra 0x00 til 0x0F, og linie 2 har adresser fra 0x40 til0x4f. Prefixet 0x angiver, at tallet er i hexadecimalt. Det vises på side 43 i brugerguiden for Spartan3E Starter Kit Board: CG ROM Dette hukommelsesområde indeholder som nævnt en bitmap tabel med fordefinerede tegn. Tabellen vises på s. 45: 13

Denne tabel er bygget op over standardskoden ACSII. Men det vigtigste for os er CG RAM, så lad os gå videre til det. 14

CG RAM I dette hukommelsesområde er der plads til at definere otte tegn. Hver tegn bliver bygget op på et felt af fem gange otte punkter. Eksempel på dette felt: skabelse af et skakbrætfigur vises på side 46: Det bruger-definerede tegn er gemt i den fjerde CG RAM lokalitet, som er vist, når en DD RAM lokalitet er 0x03. For at skrive den bruger-definerede karakter skal CG RAM adressen være initialiseret ved Set CG RAM kommandoen. De tre øverste adresse bits peger på det bruger-definerede tegns lokalitet. De tre nederste adresse bits peger på række-adressen i med karakter bitmap tabellen. Kommandoen Write Data to CG RAM or DD RAM bliver brugt til at skrive hver række i bitmap tabellen. Et ettal lyser et enkelt felt op i displayet. Et nul lader det pågældende felt være slukket. Kun de fem mindst betydende data bits er brugt. De tre mest betydende bits er såkaldte don't care positioner. Det vil sige, at det er ligemeget, om de er høje eller lave. Den nederste række af bitmap billedet er sædvanligt alle nuller for reservere plads til markøren. Kommandoen Set CG RAM address initialiserer adressetælleren, der skrives til eller læses fra CG RAM. Hvis der skal skrives til dette hukommelsesområde, skal kommandoen Write Data to CG RAM or DD RAM. På samme måde skrives der Read Data from CG RAM or DD RAM. Adressetælleren i CG RAM kan selvfølgeligt forblive konstant efter læsnings- eller skrivnings-operationer, men den kan også automatisk stige (increment) eller falde (decrement) med én plads. Det kan defineres ved I/D opsætningen under kommandoen Entry Mode Set. Der er mere om dette emne under Design af use case 2: SW: Display. 15

Design af Use case 2: VisForbrug HW To SW Display Rent hardwaremæssigt opsætning af spartan3e boardet er lavet ud fra Henning Nørskov's dokumentation: Exercise 3. Dette dokument bliver afleveret som bilag, når det færdige projektarbejde bliver afleveret. I C-koden gøres der brug af flere begreber, nogle af dem er forklaret nedenfor: Kode : #define LCD_BASEADDR XPAR_LCD_IP_0_BASEADDR Ovenstående gør det muligt at komme i kontakt med LCD hardwaren som heder LCD_IP_0 og navnet i c-koden er LCD_BASEADDR. For at bruge koden skal man inkludere hætterfilen : "xparameters.h" Kode : XGpio_mSetDataReg(LCD_BASEADDR, RegOffset, Data) Ovenstående laver en skrive kommando til den pågældende ip, hvor det i parentesen er forklaret nedenfor: LCD_BASEADDR = Base address of the LCD_IP device. RegOffset = The register offset from the base to write to. Data = The data written to the register. For at bruge koden skal man inkludere headerfilen : "xgpio.h" Kode : XGpio_SetDataDirection(XGpio *InstancePtr, unsigned Channel, Xuint32 DirectionMask) Ovenstående sætter input/output retningen for alle signaler for den givende GPIO kanal, hvor det i parentesen er forklaret nedenfor: InstancePtr = A pointer to an XGpio instance to be worked on. Channel = contains the channel of the GPIO (1 or 2) to operate on. DirectionMask = A bitmask specifying which discretes are input and which are output. Bits set to 0 are output and bits set to 1 are input. For at bruge koden skal man inkludere headerfilen : "xgpio.h" 16

Opsætning: Funktionopsætning: Funktionerne er opdelt i interne og eksterne funktioner. De interne funktioner ses her i to dele. Først usleep og XromInitInst. Void betyder, at funktionerne ikke returnerer noget. Funktionen XromInitinst() er det første i power-on initialisering og XromInitinst2() er det sidste i power-on initialisering. I begge tilfælde kan man se at man i første omgang sætter SF_D[11:8] og venter til det er stabilt, hvorefter man sætter LCD_E høj for at sende det data til LCD displayet. Tallet 40 er i hexadecimalt og giver en binær værdi på 0100 0000, hvilket sætter LCD_E til 1. Grunden til der står 42 det ene sted og 43 det andet, er at de 40 er blevet sendt igennem en OR gate sammen med de 2 eller 3, der var der i forvejen som var de data, der stod i SF_D[11:8]. Ved at bruge OR funktionen, som er ( ) i c koden, kan man via hex sætte et enkelt ekstra ben høj. 17

Efterfølgende vises den interne funktion XromWriteData, som har to parametre, data1 og data2. Nedenstående kode viser skrivningskommandoen til LCD displayet, hvor de første 4- bit bliver sendt, hvor efter en vente periode på 1 μs vil de sidste 4-bit blive sendt, herefter er der en længere vente periode på 40 μs, hvilket er tiden, der skal gå, før der må skrives til displayet igen. Der er dog en for lang tidsperiode mellem det stabile data, der skal sendes til LCD_E, bliver sat høj, men dette gør ikke noget, da tiden blot mindst skal være 40 ns. Den ekstra tid kan ikke ses med det menneskelige øje. XromMoveCursorHome er den første eksterne funktion. Den gør det samme som funktionen Return Cursor Home fra tabellen med funktioner til displayet på side 45: 0x angiver, at det er hexadecimale tal, vi arbejder med, eller i dagligt tale hex. Tallene i parentesen angiver de fire mest betydende bits (kaldet Upper Nibble) før kommaet og de fire mindst betydende bits efter kommaet (kaldet Lower Nibble). De fire mest betydende bits er alle 0, mens bit DB1 er 1 i Lower Nibble. Det vil sige, det er et 2tal i hex. XromMoveCursor left er taget fra Cursor and Display shift funktionen. Den sidste bit i Upper Nibble skal være 1, men så har denne funktion nogle underfunktioner, der kan kaldes i bit DB3 og bit DB2. De ses på side 48 i brugerguiden, men vises også her: 18

De fire mindst betydende bits er alle 0. Det betyder, som det fremgår fra den ovenstående tabel, at adressetælleren formindskes med én, altså flytter markøren én plads til venstre. Hvis Lower Nibble er 4, forøges adressetælleren med én, og markøren flytter sig til højre. Det bruges i funktionen XromMoveCursorRight. Som det ses i tabel 5-3, skal de mest betydende bits i funktionen til at rense displayet (i dette tilfælde XromLCDClear) være 0000 binært. De mindst betydende bits er 0001 binært, som giver 0x000000001 i vores kode. Intialisering af Display: Inden i den eksterne funktion XromLCDInit findes der funktioner til at sætte LCD karakter display kommandoerne: 19

Mulighederne for funktionsopsætningen, Function set, ses på side 47: 0x00000002 betyder, at bit DB5 i Upper Nibble er 1 jævnført med, at 0010 binært er 2 med hexadecimale tal. Som det ses på ovenstående figuren skal bit DB3 være 1. De fire mindst betydende bit sættes til at være 1000 binært, som er 0x00000008 i hex. Det er næsten det samme med funktionen til at sende markøren tilbage til udgangspunktet. Lower Nibble er dog 0010 binært, da DB1 er høj. Den sættes så til at være 2 hex. Funktionen til at slukke displayet skal vi ikke bruge, så den har vi ikke med. Hvad der sker, når displayet er tændt, står forklaret lidt i koden. Yderligere forklaring står Spartan3E Starter Kit Board User Guide på side 47. Lower Nibble: D'et i DB2 sættes til 1, da det betyder, at displayet tændes. C'et i DB2 angiver, om markøren skal vises eller ej. B'et i DB0 angiver, om mar køren skal blinke eller ej. Upper Nibble skal - uanset hvad - være 0000. Initialiseringen til Function Set, Entry Mode Set og Display On lader ikke til at være nødvendigt, da standardopsætningen må være, at disse tre display funktioner er konfigureret rigtigt på et spartan3e board i forvejen. En generel konfiguration af displayet findes på side 51 nederst i brugerguiden for Spartan3E Starter Kit Board: 20

Udskriftsfunktioner: Som det ses, står der meget forklaringer ved siden af koden, så vi ønsker ikke at forklare det yderligere. 21

Main Først defineres knapperne og gøres mulige at kunne indlæses. Ved test har vi kommet frem til: BTN_East: 0x00000004 BTN_West: 0x00000008 BTN_North: 0x00000002 BTN_South: 0x00000000 (bruges til return) Center:0x00000001 Vi har valgt BTN_East at bladre frem i vores menu. Desuden har vi valgt, at man kun kan bladre frem i vores menu eller returnere til udgangspunktet, som BTN_South er sat op til at være. Flowchart over dette vises på nedenstående figur: Derfor består vores kode af mange nested løkker 1. Disse løkker er altid sande, og man kommer kun ud af dem ved tryk af de to knapper. 1 En løkke i en anden løkke 22

23

Bekræftelse på delaflevering Udviklingsteamet har hermed afleveret 2. del af projektet ved kundemødet onsdag d. 27. februar 2008. Henning Nørskov 24