Efteruddannelse Embedded C Modul 2 (Tirsdag den 20/4-2010) 19.04.2010.

Slides:



Advertisements
Lignende præsentationer
Sådan laver Du et POWER POINT program.
Advertisements

Videregående pc-vejledning
Hvordan får du et Print Screen
Forsiden 1.Denne knap bruges når du vil taste dagens resultater ind. 2.Denne knap skal kun bruges hvis du allerede har gemt data og du finder ud af at.
Det skrå kast - dokumentation
TEST 2 modul 1 20 spørgsmål. Du skal klikke med musen på det rigtige svar, så kommer du automatisk til næste spørgsmål Klik for start.
Grundlæggende IT Lektion 4 Sådan virker pc’en
Hvordan kommunikerer jeg med min PC
Sidetyper Web-udvikling med FrontPage 2003 RHS - Informationsteknologi.
REGISTRERINGSDATABASEN
Formularer (Access, del 3)
Computerens anatomi! Hvad skal du vide før du køber din egen?
Hvordan bruger jeg First Class konferencerne ?
TEST 3 modul 1 20 spørgsmål. Du skal klikke med musen på det rigtige svar, så kommer du automatisk til næste spørgsmål Klik for start.
Lineære funktioner AM/ Maj 2006
Pc-kørekort Sådan virker pc’en Keld Hinsch.
Introduktion til indholdsfortegnelser j Tryk derefter på F5, eller klik på Slideshow > Fra begyndelsen for at starte kurset. Klik på Aktivér redigering.
Efteruddannelse Embedded C
NetBeans Installation og brug.
Intro Variabler - datatyper. 2. forelæsning Hvad skete sidste gang Hvad er PHP? Kursussammensætning: læse – newsgroup – forelæsning – øvelsestime – aflevering.
Validering af data (Access, del 7)
Reduktion AM 2009.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Begreber og Redskaber 2 BRP.
Indledende Datalogi /kelk 1 Nice to know ”Terniary operator” – ”?:” Bitwise operatorer og hexadecimale tal.
Efteruddannelse Embedded C Modul 1 (Mandag den 11/1-2010)
Multi-vejs hobe med ekstra bytes Foredrag: Claus Jensen Projektmedlemmer: Jyrki Katajainen, Fabio Vitale, Claus Jensen.
Efteruddannelse Embedded C Modul 3 (Onsdag den 13/1-2010)
Videregående pc-vejledning Modul 10: Sådan gør du 60+Bornholm.
Intro til C# apps Kodegennemgang af simpel C# app
Buttom-up parsning: Hvor er vi Mellem- kode Kald til Runtimesys. Mellemk.- optimering Kode- generering Kode- optimering Leksikalsk- analyse Syntax- analyse.
Begreber og Redskaber 3 BRP.
Videregående pc-vejledning Modul 03: Harddisken 2 60+Bornholm.
Efteruddannelse Embedded C Modul 1 (Mandag den 19/4-2010)
Fundamentale datastrukturer
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Efteruddannelse Embedded C Modul 3 (Onsdag den 21/4-2010)
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Intro Siden sidst: evaluering på opgaver og virtuel kursus Kursussammensætning: forelæsning – læse – arbejde selvstændigt – newsgroup – øvelsestime – aflevering.
DWDK – øvelsestime 3 CSS – let the fun begin!!. Tilgængelige slides Disse slides ligger på mit public drev
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
Basics: Binære variable, logiske operationer
Statistik II 4. Lektion Logistisk regression.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
IT for let øvede Modul 5: ”Tekstbehandling ”. Formål KULTUR & FRITIDSHUSET – SKOLEGADE 54 – TLF: Kunne skrive en tekst med store og små bogstaver.
Formularer (Access, del 3). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller Vi.
Nu har du installeret uVision og set at både programmet og boardet virker. Man kan ikke lære at cykle ved at se på andre, så i det efterfølgende skal du.
1587 Server - Blandet miljø Embedded I
Abstraktioner.
I det efterfølgende vil vi prøve at opnå forbindelse til de knapper som er på boardet. Opgaven er at vi ved at trykke på knapperne kan få lyset til at.
Lav et nyt projekt og tilføj denne gang pakken Graphic LCD.
Quiz Uge 2 – mandag.
Tre lags arkitektur.
IOT – Elkedel på internettet
Dokumentation.
Programmering.
Quiz Uge 2 – mandag.
Quiz Uge 2 – mandag.
Præsentationens transcript:

Efteruddannelse Embedded C Modul 2 (Tirsdag den 20/4-2010)

Modul 1 Indhold: 1)Opsamling på opgave fra Modul 1 2)Debugning 3)Standart I/O i C 4)PIC18F’s porte 5)Display 6)Driver til OLED display 7)C assigenment, logiske operatorer løkker, betingelser 8)PIC18F A/D-Converter 9)Opsamling på dagens opgaver.

Demo af debugger  Debuggning af applikation  Break point  Singel step  Watch  Disassembler  Linkerscript

Relokering af projekter Som i sikkert har bemærket kan man ikke uden videre flytte et projekt fra en PC til en anden unde at det giver anledning til en masse problemer med stier etc. En måde at komme uden om dette problem er ved at lave et tomt projekt (en template) hvor stier passer med ens PC også hente.c og.h filer ind i en kopi at dette projekt.

Øvelse Med udgangspunkt i HelloWorldDebug applikation, skal i prøve, at downloade hex fil via debugger (flyt usb stik til debuggerens usb). Prøv dels at singel steppe gennem programmet Prøv også at indsætte nogle breakpoints Hvordan starter programmet, hvilke funktioner gennemløber programmet Opsæt i watch vinduet at cout’s indhold vises og se hvordan den ændre sig for hver gennemløb af while løkke.

Standart I/O Internt i en computer repræsenteres alle tal og karakterer som bit, en byte er i den forbindelse en serie af bit hvor den enkelte bit er vægtet binært. Fil begreber repræsentere en ”samling” af relaterede tal eller karakterer. I C behandles en fil som en serie af byte (dvs. den mindste enhed er en byte altså 8 bit) ofte anvendes der betegnelsen stream om en sådant serie af byte. I C er en fil ikke kun ”noget” der ligger på en harddisk, men er faktisk betegnelsen for data der modtages i form af en strøm byte. F. eks : input fra tastatur, output til printer, filer fra HD etc.

Pre definerede filer stream i C stdin - Standart input stdout - Standart output stderr - Standart til udskrift af fejl meddelelser På en PC’er er disse tre typisk forbundet til tastatur og skærm, men på andre typer af systemer kan de være forbundet til andre input/output enheder

getc funktionen getc() læser den næste karakter fra en fil stream og returnere den i form af en integer. Funktionen getc findes i stdio.h derfor skal denne inkluderes for at bruge funktionen. Syntaks for getc er : int getc(FILE *stream); #include void main() { int kar; printf("Tryk paa en tast !\n"); kar = getc(stdin); printf("Du trykkede på : %c\n",kar); }

getchar funktionen Funktionen getchar findes i stdio.h og denne skal derfor inkluderes (eller rettere der findes en prototype erklæring til funktionen her). getchar er identisk med getc(stdin), dvs. at man med getchar anvende en ”fast” file stream, nemmerlig stdin.

Funktionen putc Når der skal udskrives karakterer på en specifik file stream anvendes funktionen putc. putc findes i stdio.h Syntaks : int putc(int c, FILE *stream); #include void main() { int kar = 145; putc(kar, stdout); getchar(); }

Funktionen putchar Findes i stdio.h Har en funktion tilsvarende putc(c, stdout) Udskriver på stdout, man kan altså ikke vælge hvor karakterer skal sendes hen. getchar og putchar er egentligt bare special udgaver af getc og putc, normalt vil de også være lavet med getc og putc funktionerne hvor file stream er sat til standart i/o enheder.

Funktionen printf Vi har allerede brugt denne funktion, men printf er egentligt en omfattende funktion med mange egenskaber. Printf funktionen udskriver på stdio og for at bruge printf skal stdio.h inkluderes. printf kan bruges til at udskrive en konstant tekst streng: printf(”Hello World”); printf kan også udskrive indhold af variabel: int x = 10; printf(”x indeholder vaerdien %d”,x);

Tilretning af ”printf” til dedikeret hardware I MPLAB C18 er det muligt på en relativt simpel måde at til rette hvor Printf som standart skriver ud til, dette gøres ved, at sætte stdout som vist nedenfor: stdout = _H_USER; Herefter vil printf anvende funktionen int _user_putc (char c); For hver karakter der skal udskrives foretager printf nu et kald til funktionen og da vi selv skriver funktione kan vi sende karakterene til det device vi ønsker.

Format specifikatorer for printf

Hexa decimale tal Alle tal og karakterer er internt i en computer gemt som binærer værdier altså en serie af bits der kan antage værdien 0 eller 1. En binær værdi er normalt ikke særlig interessant for en normal bruger, derfor kan man i C vælge mellem nogle forskellige talformater når man udskriver værdier med printf. Et af disse talformater er hexa decimale tal (16 symboler i modsætning til det decimales 10)

Udskrift af talværdi som en hexadecimal værdi Med printf kan variables indhold udskrives hexadecimalt med %x eller %X #include void main() { int tal = 7913; printf("Den hexadecimalvaerdi er %x",tal) ; getchar(); }

Det octale talformat Indeholder 8 symboler Bruger de samme symboler som det decimale talformat

Justering af output Der er med printf muligt at justere udskrift af tal. Ved at angive et tal mellem % og d (eks. %4d) justeres tal således at der afsættes 4 pladser til udskrift af tal har tallet så kun 2 cifre bliver tallet højre stillet. Angives et negativt tal vil tallet blive venstre justeret, med det antal pladser der angives. Eks %-4d

Program eksempel #include void main() { int tal1 = 1, tal2 = 12, tal3 = 123, tal4 = 1234, tal5 = 12345; printf("%6d %-6d \n",tal1, tal1); printf("%6d %-6d \n",tal2, tal2); printf("%6d %-6d \n",tal3, tal3); printf("%6d %-6d \n",tal4, tal4); printf("%6d %-6d \n",tal5, tal5); getchar(); }

Generel opbygning af porte i PIC18F extern volatile near union { struct { unsigned TRISA0:1; unsigned TRISA1:1; unsigned TRISA2:1; unsigned TRISA3:1; unsigned :1; unsigned TRISA5:1; unsigned TRISA6:1; unsigned TRISA7:1; }; struct { unsigned TRISA:8; }; } TRISAbits; extern volatile near union { struct { unsigned LATA0:1; unsigned LATA1:1; unsigned LATA2:1; unsigned LATA3:1; unsigned :1; unsigned LATA5:1; unsigned LATA6:1; unsigned LATA7:1; }; struct { unsigned LATA:8; }; } LATAbits;

Display

LCD’s opbygning LCD's opbygning: 1. Lodret filterfilm, der polariserer indkommende lys. 2. Glas med elektroder af indiumtinoxid. Formen på elektroderne bestemmer de mørke former, der vil fremkomme, når displayet tændes. Lodrette riller sørger for, at de flydende krystaller er på linje med det polariserede lys 3. Flydende krystaller 4. Glas med elektrodefilm med vandrette linjer 5. Vandret filterfilm 6. Reflektor (for reflektive displays) eller lyskilde (for transflektive displays)polarisererGlaselektroder indiumtinoxidflydende krystallerFlydende krystaller

OLED’ Opbygning En typisk OLED består af en katode terminal(1) og en anode terminal (5), et emissions lag(2), et ledende underlag(4). Lagene er lavet af organiske molekyler, der leder elektricitet. OLED kan betragtes, som organisk halvledere.

Virkemåde af OLED Tilføres en spænding på tværs af OLED sådan, at anoden er positive i forhold til katode, medfører dette at der løber strøm gennem lag 2 og 4 fra katoden til anoden. katoden giver elektronerne til emissions lag og anoden trækker elektroner fra det ledende lag, med andre ord, giver anode elektron huller til ledende lag.

Fysisk interface mellem PIC og OLED

Definition af interface mellem pic og OLED #defineoledWRLATEbits.LATE1 #defineoledWR_TRISTRISEbits.TRISE1 #defineoledRDLATEbits.LATE0 #defineoledRD_TRISTRISEbits.TRISE0 #defineoledCSLATEbits.LATE2 #defineoledCS_TRISTRISEbits.TRISE2 #defineoledRESETLATDbits.LATD1 #defineoledRESET_TRISTRISDbits.TRISD1 #defineoledD_CLATBbits.LATB5 #defineoledD_C_TRISTRISBbits.TRISB5

Skrivning til OLED

Læsning fra OLED

Kontrolsignaler

Læsning fra OLED

GDDRAM layout

Pixel map

Commando registre

Eksempel fra driver til OLED void WriteCommand(BYTE cmd) { TRISD = 0x00; LATD = cmd; oledRD = 1; oledWR = 1; oledD_C= 0; oledCS = 0; oledWR = 0; oledWR = 1; oledCS = 1; TRISD = 0xFF; } Sender kommando til OLED

Øvelse Lav øvelsen i lab2.docx

Opbygning af en driver Når der skal opbygges en driver eller et lib. til et stykke hw er det et godt design kriterie, at opbygge det lagdelt, herved bliver det betydelig lettere, at overskue og det vil også være væsentligt lettere at debugge, samt teste koden. Når vi laver ”procedurale” programmer er en god måde at beskrive strukturen, at koden på via Hierakiske diagrammer, i filen ”hd The structure chart.pdf” er disse beskrevet.

Gennemgang af OLED Hvilke funktioner findes i filen ? Hvordan hænger de sammen ? Er der anvendt en lagdelt arkitektur ? Er der noget af koden der ikke anvendes, efter vi har rettet/ændret i koden ? Kunne opdelingen af kode være lavet mere hensigtsmæssigt ?

Assignment operatoren (=) Tilskrivning (assignment) = ”flytter” en værdi fra højreside til et adresse objekt på venstre side. Eks. x = 10+20; Venstre side skal referere til et objekt som der kan ”skrives” til og højreside skal kunnet beregnes til en værdi. Eks. x=y=z=5; Er lovlig og vil sætte x,y,z til værdien 5.

Kombinations operatorer OperatorBetydning vist ved eksempel +=x+=10x=x+10 -=x-=z+10x=x-(z+10) *=x*=20x=x*20 /=x/=2x=x/2 %=x%=7x=x%7 !! Udregning på højre side foregår først

Increment og decrement Symbolet for increment er ++ (!!ingen mellemrum!!) Symbolet for decrement er – (igen ingen mellemrum) Increment og decrement kan anvendes som pre- eller post operator. Ved post vil værdi først blive tilskrevet efter statement er færdig beregnet. Eks. z = x++; z=++x;

Fortegns operatorer - skifter fortegn af konstanter eller variable hvis de placeres før konstantudtryk eller variable. Eks. -x Hvis x har værdien 10 vil udtrykket ovenfor altså have værdien -10. r = x - - y Er lig med r = x – (-y) (Husk mellemrum mellem - -)

Relations operatorer Der findes i C nogel operatorer der anvendes til at sammenligne med, nogle af operatorene består af to tegn og disse skal stå ved siden af hinanden (altså uden mellemrum). OperatorBetydning ==Lig med !=Forskellig fra >Større end <Mindre end >=Større end eller ligmed <=Mindre end eller ligmed

Cast operator Anvendes når man selv vil styre data typen som skal anvendes. Syntaksen for cast operatoren er (datatype) x Anvend type casting når du ønsker en bestemt datatype som resultat af beregning.

Sizeof operatoren Anvendes til at ”måle” størrelsen af en datatype, da C standarten ikke fastsætter en konkret størrelse for de simple datatyper, må man anvende sizeof for at få oplyst størrelse af en datatype. Sizeof returnere et tal der angiver størrelse i antal byte. Syntaks: sizeof(expression)

Logiske operatorer C indeholder 3 logiske operatorer, som anvendes når vi ønsker at kombinere udtryk. Symb ol Betydning &&Logisk AND ||Logisk OR !Negation

Bitvise operatorer Bitvise operatorer virker på de enkelte bit i modsætning til de logiske. Symb ol Betydning &Bitvis AND |Bitvis OR ^Bitvis XOR ~Komplimenter >>Skift bit til højre <<Skift bit til venstre

x?y:z Underlige konstruktioner i C Denne operator kaldes betingelses operatoren og bør absolut anvendes med omtanke, hvis man anvender den bliver koden let svær at læse. Eksempel k = x > 10 ? ’L’ : ’S’; k bliver satlig med karakteren hvis x > 10 ellers bliver k sat til karakteren S.

Løkker Hvis vores kode ikke blot skal afvikles, som en fast række af instruktioner, man der er dele af vores kode vi ønsker at gentage anvendes løkker. I C findes i alt 3 løkke strukturer:  while  do-while  for Mange ting kan udføres med en hvilken som helst af de tre løkker, men ofte er der fordele ved, at vælge den ”rette”

while løkke Udfører en statement så længe udtryk er sand while(expression) statement; Struktur:

do – while løkke Virker som en while løkke der vender på hovedet, altså hvor men slutter med at undersøge om løkke skal kører igen. Syntaks do { … } while (expression);

for løkke Indeholder tre dele : Initialisering (Køres kun første gang løkke køres) Betingelse (Afgør om løkke skal kører igen) Post udtryk (Udføres efter hver kørsel af løkke) Syntaks : for(i=0; i<10; i++) { … }

Uendelige løkker Pas på hvis der utilsigtet optræder en uendeligløkke vil program afvikling ”hænge” her. Eksempler på uendelige løkker: while(1==1) { …. } do { ….. } while (x=1); for(;;) { …… }

Pic18F46J50’s A/D konverter..\..\Datasheet\39931c.pdf

Array Med et array kan man i C lave en samling af variable af samme type. I et array skal alle elementer have samme data typer. Eksempel: int dag[365]; float x[100];

Indeks De enkelte elementer i et array er i C nummereret fra 0 og op efter har vi erklæret et array : int y[10]; Vil det første element i array et have nummer 0 og det sidste 9 Man kan godt indeksere et array med en heltals variabel.

Initialisering af array Et array kan initialiseres på flere måder her et eksempler: int dag[7]; dag[0] = 1; dag[1]= 2; …. int prim[5]={2,3,5,7,9}

Arrays af flere dimmensioner Et array i C kan godt have flere dimmensioner int tabel[2] [3]; Størrelsen på dette array er 2*6 integer variable Ønsker man at få oplyst størrelse på et array kan sizeof anvendes. Når man skal referere til en celle i array af flere dimmensioner gøres det som vist nedenfor: int tabel[2][3]; tabel[0] [0] = 20; tabel[1][2] = 50;

Unsized array Angiver man ikke størrelse på array vil compilerer udregne hvor stor array skal være. Eksempel: int sum[] = { 1,2,3,5,8,13,21,33}; Arrayet vil få størrelsen 8

Øvelse Lav øvelsen i ”Lab3.docx”

Opsummering på dagen Opsummering Kommentarer Tak for i dag