63
Efteruddannelse Embedded C Modul 1 (Mandag den 19/4-2010) 07.01.2010

Efteruddannelse Embedded C

Embed Size (px)

DESCRIPTION

Efteruddannelse Embedded C. Modul 1 (Mandag den 19/4-2010). 07.01.2010. Modul 1. Indhold: Introduktion Den valgte platform (PIC18F Starter Kit 1) Udviklingsværktøj (MPLAB) Grundelementer i sproget C Afrunding på dagen. Præsentation af kurset ( Embedded C). Beskrivelse af kurset - PowerPoint PPT Presentation

Citation preview

EfteruddannelseEmbedded CModul 1 (Mandag den 19/4-2010)

07.01.2010

Modul 1

Indhold:

1) Introduktion

2) Den valgte platform (PIC18F Starter Kit 1)

3) Udviklingsværktøj (MPLAB)

4) Grundelementer i sproget C

5) Afrunding på dagen

Præsentation af kurset (Embedded C)

Beskrivelse af kurset

Plan og indhold for kurset

Praktiske oplysninger

Møde tider og skema:

Mandag til torsdag:

Vi starter med morgen kaffe 8.30

Ca. 11.45 er der frokost

15.30 slutter dagens modul

Fredag:

Her slutter dagens modul 12.30

Praktiske oplysninger

Kontakt informationer:Skolen kan kontaktes pr. telefon på 72505900

eller pr. email : [email protected]

Skolens adresse er :

Sofiendalsvej 60, Postboks 71, 9100 Aalborg

Underviser kan kontaktes på tlf. 25266921

Via mail: [email protected]

Eller via Messenger på [email protected]

Praktiske oplysninger

Login til skolens netværk:• Hver kursist får tildelt et login til skolens netværk, ved

første login skal password ændres, så man får et unik password.

• Med sit password er det også muligt, at koble op til skolens trådløse netværk (det er et krav at man har en virus scanner installeret på ens maskine (hvis man bruger egen bærbar).

• Undervisningsmateriale kan hentes fra skolens netværk fra serveren \\o2232 i kataloget \EmbeddedC_U16

• Fra internettet via http://public.noea.dk/EmbeddedC_U16/

Dropbox

• Som en ekstra mulighed for, at hente (og udveksle) undervisningsmateriale og kodeeksempler vil der blive oprette en dropbox, som i via mail bliver indbudt til at tage del i.

• Information om anvendelse af dropbox, samt nødvendig software kan hentes på: http://www.dropbox.com/

Udviklingsplatformen

PIC18 Starter Kit

Producent: Microchip Varenummer: DM180021Pris: 60 USD

Features for PIC18F starter kit

Onboard DebuggerVirker sammen med MPLAB

Mulighed for tilslutning af ekstern debugger f.eks PICkit

Features for PIC18F starter kit

Microcontroller: PIC18F46J50• 64kbyte Flash program memory• 3776 byte Ram• nanoWatt XLP Technology• USB interface• Clock frekvens 48MHz• Low cost

Features for PIC18F starter kit

Capacitive Touch Buttons og scroll bar.

Features for PIC18F starter kit

2GB micro SD-KortKan sammen med bootloader anvendes til at boote applications programmer fra fra.

Features for PIC18F starter kit

Menu knap, anvendes b.la til at aktivere SD flash bootloader

Potentiometer der anvendes til at generere input spænding til A/D-konverter

Monochrom OLED display128x64 pixelGrafisk og alfanumerisk

Features for PIC18F starter kit

3-aksers acceleration sensorBMA150

Features for PIC18F starter kit

Mini-B USB til host

PIC18F46J50’s Features

Parallel Master Port (PMP) Real-Time Clock and Calendar (RTCC) USB Device Capability Charge Time Measurement Unit (CTMU) Master Synchronous Serial Port (MSSP) Enhanced Capture/Compare/PWM (ECCP) 10-Bit, 13-Channel Analog-to-Digital Converter Two Enhanced USART Peripheral Pin Select

Forbindelse af board

Bootloader

Bootloader display kommunikation

Bootloader display kommunikation

Øvelse

• Lav øvelserne i filen :

Lab1.docx

Findes her : \\o2232\EmbeddedC_U16\Opgaver

C’s Historie

• C er udviklet i 1972 af Dennis Ritchie fra Bell Telephone Laboratories og det skulle anvendes i forbindelse med en ny version af UNIX.

• Det er siden hen blevet et meget anvendt programmerings sprog der er god til “lidt af hvert”.

• Mange mere moderne sprog anveder samme syntaks som C, hvilket gør det lettere, at lære sig nye sprog.

Fra hardware til software (løg modellen)

Compileren

Compilering af flere filer

Processen fra source kode til kørende app.

Eksempel på vejen fra Source code til eksekverbar kode

Compilering af multi fil app.

Source filer (.c) Header filer (.h)

.c filer indeholder selve source koden

.h filen indeholder indeholder C erklæringer og makro-definitioner, der skal deles mellem flere source filer

Eksempel på brug af header fil i C

extern void initLcd();extern void writeLcd(char *str);

Definitioner, macroer og prototype erklæringer

#include <stdio.h>void initLcd(){….}void writeLcd(char *str){…..}

#include <stdio.h>#include ”lcd.h”void main(){ initLcd(); writeLcd(”Hello World”); …… ……}

lcd.h

lcd.c main.c

evt. main.h

Hvad kende tegner embedded program

Nedenfor er opstillet nogle ”krav” eller mål vi gerne vil nånår vi laver embedded programmer (og nok også andre typer af programmer)

Eksempel på et simpelt C program

#include <stdio.h>

void main()

{

printf(”Dette er en lille test\n”);

printf(”Dette bliver skrevet på næste linie”);

getchar();

return 0;

}

Gundbestandel i et C program (basic elements)

Et C program består af nogle grundlæggende bestanddele disse er listet nedenfor, der er brugt engelsk navne, men i parentes er den danske oversættelse skrevet:

• Comments (Kommentarer) • Constants (Konstanter)• Variables (Variabler)• Expressions (Udtryk)• Operators (Operatorer)• Identifiers (Identifikatorer)• Statements (ordre, sætning)• Statement block (blok)

Comments

Start på comments i c /*

Slut på comments i C */

// betyder kommentar linien ud, er C++ syntaks

Eks.:

/* Dette er mit første program

Programmet skriver hello world */

Eks.:

// Her er en linie med en comments

Constants

En constant er en ”værdi” der, som navnet antyder ikke kan ændre sig. En konstant kan være tekst eller tal (gennem typisk i ”ROM”).

Eks.:

i = 100;

Her er 100 en tal konstant;

Eks.:

”Dette er en tekst”

Her er vist et eksempel på en konstant tekst

Variables

Er elementer der kan indeholde en værdi der kan ændre sig.

Eks.:

antal = 123;

Her er antal en variabel i eksemplet bliver variablen tildelt værdien 123.

Expressions

Et udtryk er en kombination af konstanter, variable og operatorer der tilsammen danner et udtryk der kan beregnes af computeren.

Eks.:

123 + 20*(antal +10)

Eks.:

10*cos(x)

Operators

Der findes i C flere typer af operatorer boolske, binære og aritmetiske. Den sidste type er den vi normalt anvender når vi skal lave matematiske udtryk.

Symbol Betydning

+ Addition

- Subttraktion og fortegns minus

* Multiplication

/ Division

% Rest af heltals division (modulus)

Identifiers

Udover tal og operatorer kan et udtryk indeholde navne eller referancer til f.eks funktioner etc. Disse navne kaldes identifiers og skal overholde nogle regler. (Der skeldnes mellem store og små bogstaver)

Første karakter i identifier:

1. Karakterene A til Z og a til z

2. _ (underscore)

Efterfølgende karakterer:

3. Karakterene A til Z og a til z

4. _ (underscore)

5. Tallene fra 0 til 9

Generelt må man ikke anvende speciale karakterer i identifiers

Statemets

I C betegner en statement en ”komplet” instruktion eller kommando og afsluttes med et semikolon. Statements afvikles i den rækkefølge de er skrevet i programmet.

Eks.:

i = 7913;

antal = 20*(i + 30);

Statement blocks

En gruppe af statements kan tilsammen danne en blok (ved at placere dem mellem { }). En blok behandles som en statement.

Eks.:

for (i = 0; i < 10; i++)

{

antal = i;

sum += antal;

}

Funktioner i C

I C kan programmer deles op i mindre bygge bloke kaldet funktioner, disse kan herefter kaldes når vi ønsker at gøre brug af dem i vores program.

Eks.:

int gennemsnit(int x, int y)

{

int resultat;

resultat = (x+y)/2;

return resultat;

}

Data typer

Heltals datatyper er datatyper der indeholder et heltal (!! det kan godt være et nummer på et symbol i ascii tegn tabellen).

Komma tals datatyper (floating-point) er datatyper der indeholder et tal der er delt op i en heltals del og en decimaldel.

I C skal variable erklæres før de kan anvendes, og ved erklæringen skal datatypen angives. (C er et såkaldet type stærkt sprog)

Heltals datatyper Floating-point datatyper

charint

floatdouble

Little-endian format

MPLAB-C anvender little-endian format når der gemmes data i memmory der er større end en byte

Float og double

Range for Floating-Point Typer (MPLAB-C18)

IEEE-754 foating point format

s = +1 (positive numbers and +0) when the sign bit is 0s = −1 (negative numbers and −0) when the sign bit is 1e = exponent − 127 (in other words the exponent is stored with 127 added to

it, also called "biased with 127")m = 1.fraction in binary (that is, the significand is the binary number 1

followed by the radix point followed by the binary bits of the fraction). Therefore, 1 ≤ m < 2.

v = s × 2e × m Generel form

Eksempel på float

I eksemplet vist ovenfor, er sign 0 s er positiv, exponent er 124 så e er −3, og endeligt er m 1.01 (binært, hvilket svarer til 1.25 i decimal). Talet er derfor +1.25 × 2−3, hvilket også kan skrives : +0.15625.

Datatyper i MPLAB C18 C-compiler

• I C standarten er størrelsen på variabler ikke defineret ! Derfor variere den fra Compiler til compiler (platform til platform).

Type Size Minimum Maximum char(1,2) 8 bits -128 127

signed char 8 bits -128 127

unsigned char 8 bits 0 255

int 16 bits -32,768 32,767

unsigned int 16 bits 0 65,535

short 16 bits -32,768 32,767

unsigned short 16 bits 0 65,535

short long 24 bits -8,388,608 8,388,607

unsigned short long 24 bits 0 16,777,215

long 32 bits -2,147,483,648 2,147,483,647

unsigned long 32 bits 0 4,294,967,295

Note 1: A plain char is signed by default. 2: A plain char may be unsigned by default via the -k command-line option.

Char

Datatype der normalt er på 8 bit

Kan indeholde et tal fra 0 til 255 eller et nummer på en karakter ifølge ASCII tabellen

Kan udskrives som et tal eller som en karakter.

Kan anvendes i udregninger (udtyrk)

Eks

char c; // c erklæres af datatypen char

c = ’A’; // c tilskrives værdien for karakterens A

// ASCII ”nummer”

Speciale karakterer

Nogle karakterer i ASCII tabellen er såkaldte speciale karakterer, disse kan være karakterer der ikke umiddelbart er ”synlige”, men har en anden betydning end som et synlig symbol (f.eks return tasten, tab tasten etc). For at angive en special karakter benyttes escape karakteren \ efterfulgt af et bogstav eller et tal.

Karakter Beskrivelse

\b\f\n\r\t

Backspace FormfeedNew lineReturnTab

Int

Datatype der kan indeholde 216 = 65535 forskellige værdier.

Datatypen angives med int.

UnsignedSigned

Reserverede ord i C

Følgende ord må ikke anvendes som identifier i et C program:

C Reserved Words:

auto break case chart

const continue default do

double else enum extern

float for goto if

int long register return

short signed sizeof static

struct switch typedef union

unsigned void volatile while

Udviklingsværktøjet MPLAB og C18

Workspace – Samler src og andre dokumenter

Source code

Header files

Linker script

Setup for project

Setup for projekt gemmes i workspacet.Setup indeholder stier til src, lib compiler osv. osv.

Demo af MPLAB

I kataloget C:\Microchip Solutions\PIC18F Starter Kit 1\Documentation

findes user manualen for PIC18F starter kit og her findes en god gennemgang af hvordan man opretter projekter i MPLAB.

Demo af MPLAB

Gennemgang af helloworld koden

• Hvorfor kalder vi funktionen BL_CheckLoaderEnabled(); ?

• Hvad sker der hvis vi fjerner kaldet til BL_CheckLoaderEnabled(); ?

• Tegn hvordan funktioner kaldes i programmet

Øvelse

I mappen /src/modul1 findes projektet helloworld udpak denne og åben den herefter med MPLAB. Læs programmet igennem (kun main.c filen), ændre printf linien så du udskriver dit eget navn.

Compiler koden og læg hex filen over på udviklingsboardet.

Afprøv dit program, virker det ?.

Prøv evt. at lave nogle ændringer i koden kan du udskrive mere end en linie ?

Check Spørgsmål

Besvar følgende spørgsmål fra kapitel 6.6:

Review questions

6.1, 6.2, 6.9, 6.13

Thought questions

6.12, 6.16, 6.21, 6.23, 6.31, 6.42

Opsamling

• Gennemgang af check spørgsmål• Kommentarer• Tak for i dag