Upload
edward-goodwin
View
44
Download
0
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
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
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/
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
2GB micro SD-KortKan sammen med bootloader anvendes til at boote applications programmer fra fra.
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
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.
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
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
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