[PDF] Cours dinformatique industrielle



Previous PDF Next PDF
























[PDF] exercice informatique école primaire

[PDF] telecharger top math 2 bac science math

[PDF] exercices corrigés de modélisation et simulation

[PDF] perspective conique cours pdf

[PDF] cours de physique 8éme année

[PDF] équilibre d'un solide soumis ? 2 forces exercice c

[PDF] cours de radiologie 3eme année medecine pdf

[PDF] dissertation relations internationales

[PDF] l'homme du jardin analyse

[PDF] cfpb resultat bachelor

[PDF] exemple de projet de construction d'un centre de s

[PDF] tutoriel wordpress site du zéro

[PDF] cours de pao gratuit en pdf

[PDF] les causes de la crise économique de 1929

[PDF] fiche reflexe chef d'agrès

Automatisme et...

Informatique Industrielle

Micro-contrôleuret langage de haut niveau

Licence SPI ±parcours EEA

Semestre 5

JulienMarot

InstitutFresnel

Mél.:julien.marot@fresnel.fr

ZouhairHaddi

LSIS

Mél.:zouhair.haddi@lsis.org

2

Les objectifs du cours...

Vousavezétudié...

3

Organisation du cours

6hdecours[JulienMarot]

RappelsurlaprogrammationenAssembleur.

Systèmemicro-programméetlangageC.

Exercicesd'application

4hdetravauxpratiques[ZouhairHaddi]

CANSIduPIC18F4520deMicrochip.

!Soyezàl'heureencoursetenTP! 4

Votre boite à outils...

Pourlessystèmesmicro-programmée:

Assembleur.

Programmationdehaut-niveau:

5

Contrôle des connaissances

6

Plan du cours

2Retoursurquelquespointsclés...

*lesinterruptions *lesdirectivespragma

3ProgrammationenlangageCdesinterruptions

*LeC18etlaprogrammationdesinterruptions *UtilisationduTIMER0(exercice) 7

En langage C

Pourquoi un langage tel que le C ?

8

Construction d'un exécutable (1)

PRE-PROCESSEUR

Remplace les #define

et effectue les #include #include main(){ int MAX, cpt;

MAX = 0x45;

for(cpt=0; cpt< MAX; cpt++)

Bibliothèques CSource du main()

fichier texte *.c

COMPILATEUR (C18)

Transforme le source C

en un fichier objet (code machine)

Fichiers header

fichier texte *.h

ÉDITEUR DE LIENS

Lie tous les fichiers

objets et crée un exécutable

Bibliothèque pré-compilée

fichier objet *.o 9

Construction d'un exécutable (2)

exécutable,cf.ci-dessous.

Compilateur C (ici C18)

Assembleur

Fichiers pré compilés

Scriptes de configuration

de l'éditeur de lien

Sorties (exécutable, etc.)

Entrées (sources)

Construction de librairies

Éditeur de liens

10

Vouspouvezdoncécrirequelquechosecomme

vitesse = 0x27 pour faire l'affectation d'une variable codée sur 8 bits, ou encore if(vitesse == limite) codéessurunnombredebitsappropriés. 11 // Filename: PremierProgramme.C // Author: marc ALLAIN // Company: UniversitePaul Cezanne // Revision: 1.00 // Date: 2006/07 #include #defineduree10000 #pragmaconfig WDT = OFF // Déclaration des variables globales char c; floatpht; // Prototypes des fonctions voidtempo(unsignedintcount); // Programme Principal voidmain()

PORTB = 0x00;

TRISB = 0x00;

while(1){

PORTB++;

tempo(duree); tempo(unsignedintcount){ while((count--)>0){ // avoir count±égal à 1

Déclarationdevariablesglobales

Déclarationd'unefonction

12

Déclaration de types de données

C18ainsiqueleurformatdecodage.

Parexemple,unedéclarationdelaforme

#pragmaidatatest=0x0200 longl=0xAABBCCDD; conduitaustockagemémoiresuivant 13 14

Structures & champs de bits

structprof{ charnom[30]; charprenom[30]; charlabo[30]; inttel; intHETD; parlenombredebitsassocié. struct{ unsignedRB0:1; unsignedRB1:1; unsignedRB2:1; unsignedRB3:1; }PORTBbits; intmain(){ structprofDEP_SDM[10];

DEP_SDM[0].tel=2878;

strcpy(DEP_SDM[0].nom,''marot''); strcpy(DEP_SDM[0].prenom,''julien''); 15

Structures:

intérêt pour l'accès aux ports

1PORT:

Unestructureà8champs

Carilya8broches.

1champ±1broche

16

Unions

externvolatilenearunsignedcharPORTB; externvolatilenearunion{ struct{ unsignedRB0:1; unsignedRB1:1; struct{ unsignedINT0:1; unsignedINT1:1; struct{ unsignedAN12:1; unsignedAN10:1; }PORTBbits; 17

Extraitdufichierheaderp18f4520.h

externvolatilenearunsignedcharPORTB; externvolatilenearunion{ struct{ unsignedRB0:1; unsignedRB1:1; unsignedRB2:1; unsignedRB3:1; unsignedRB4:1; unsignedRB5:1; unsignedRB6:1; unsignedRB7:1; struct{ unsignedINT0:1; unsignedINT1:1; unsignedINT2:1; unsignedCCP2:1; unsignedKBI0:1; unsignedKBI1:1; unsignedKBI2:1; unsignedKBI3:1; struct{ unsignedAN12:1; unsignedAN10:1; unsignedAN8:1; unsignedAN9:1; unsignedAN11:1; unsignedPGM:1; unsignedPGC:1; unsignedPGD:1;

1broche:

plusieursappellations plusieursdénominations pourlamêmeadresse dansl'espacemémoire

Intérêt pour la paramétrage des PORTS

18

La conversion de type (cast)

L'opérande la plus petite est convertie dans le type de l'opérande la plus grande. char < int< long < float< double floatecart,distance=11; inttronque,nbp=5; ecart=distance/(float)(nbp1); tronque=(int)ecart; ecart=2.75 ecart=2 19

Les opérateurs du langage C

20

Variables globales, locales...

dontlaprincipaleestmain(). ex.#include intMAX; main(){...} ex.voidfunction() staticintMAX;... 21

De l'assembleur dans du C ?

pasd'adressageindexé. _asm/*Userassemblycode*/

MOVLW10//Movedecimal10tocount

MOVWFcount,0

start:/*Loopuntilcountis0*/

DECFSZcount,1,0

GOTOdone

BRAstart

done: _endasm

Etiquette=

label 22

Quelques astuces/pièges en langage C

Utiliser le passage des arguments par adresse

Les fonctions récursives

23

Plan du cours

2Retoursurquelquespointsclés...

*lesinterruptions *lesdirectivespragma

3ProgrammationenlangageCdesinterruptions

*LeC18etlaprogrammationdesinterruptions *UtilisationduTIMER0(exercice) 24

Les interruptions (ou traitement d'exception)

Lesinterruptionsmatérielles

sontutiliséeslorsqu'ilest nécessairedepouvoirréagir entempsréelàunévénement asynchrone...» (Source:Wikipédia) 25
uneinterruptiondeprioritébasse,

Le contrôle des interruptions

desinterruptions... sourced'interruption... 26

Déroulement d'une interruption

(4).ExécutiondelaroutineȂǰ 27

Un exemple...

Broche 2 à 7 du PORTB en sortie

Broche 1 du PORTB en entrée

RAZ du PORTB

Broche 1 à 4 du PORTB en E/S numérique

Interruption à chaque front montant sur la

broche 1 du PORTB NOP endeuxpartiesdistinctes...

Lapremièrespécifielefonctionnement

"horsinterruption»del'algorithme.

Voiciunexemple(très)simple...

Début

Fin

Onnoteraque...

puissentseproduire. 28

Un exemple...

Flag source interruption <--0

ChangerétatRB2

Sauvegarde du contexte

Début

FauxFlag source

Interruption

actif Vrai

Restaurercontexte

Fin deuxpartiesdistinctes... sil'interruptionalieu.

1.leprogrammeprincipalnefaisantrien(!),

Siplusieurssourcessontpossibles,

plusieurstestsdoiventêtremenés... 29
; Filename: premier_programme_interruption.asm ; Change l'état de la broche 2 du PORTB à chaque front ; montant sur la broche 1 du PORTB (gestion par interruption ; Author: EricMagraner ; Company: Université Paul Cézanne ; Revision: 1.00 ; Date: 2006/07 listp=18f4520 ; Définition du micro-contrôleurutilisé #include ; Définitions des emplacements mémoires des registres ; et configurations matérielles par défaut #include ; Modification des configurations matérielles par défaut W_TEMPRES1; Réservation d'un octet en mémoire STATUS_TEMPRES1; Réservation d'un octet en mémoire BSR_TEMPRES1; Réservation d'un octet en mémoire

Début

30
orgh'0000'; Init. du vecteur RESET gotoinit orgh'0008'; Init. du vecteur INTERRUPTION gotoroutine_interruption initclrfPORTB movlwb'00000001' movwfTRISB; Config. de la dir. du PORTB clrfLATB movlw0Fh movwfADCON1 ; Broche 1à4 du PORTB en E/S num. movlwb'10010000'; 0x90 -> w movwfINTCON; w -> INTCON (Init. du registre d'interrup.) boucle nop gotoboucle END duvecteurRESETetduPORTB.

Broche 2 à 7 du PORTB en sortie

Broche 1 du PORTB en entrée

RAZ du PORTB

Broche 1 à 4 du PORTB en E/S numérique

Interruption à chaque front montant sur la

broche 1 du PORTB Fin NOP 31
32
routine_interruption ; Sauvegarde du contexte movwfW_TEMP; Sauvegarde de W movffSTATUS, STATUS_TEMP; Sauvegarde de STATUS movffBSR, BSR_TEMP; Sauvegarde de BSR ; identification de l'origine de l'interruption btfscINTCON,1 gotointerruption_INT0 brarestauration_contexte

Interruption

Sauvegarde du contexte

Identification de l'interruption

33
interruption_INT0 bcfINTCON,1; Suppression du flag d'interruption movlw0x02; 0x02 -> w xorwfPORTB; w xorPORTB -> PORTB gotorestauration_contexte ;Restauration du contexte restauration_contexte movffBSR_TEMP, BSR; Restauration de BSR movffW_TEMP, W; Restauration de W movffSTATUS_TEMP, STATUS ; Restauration de STATUS retfie

Ilfautensuitesystématiquement

(5)fairelarestaurationducontexte (6)etretournerauprogrammeprincipal.

Suppression du flag

d'interruption

Changel'étatdelabroche2

duPORTB

Restauration du contexte

Retour au prog. principal

34

Les directives " pragma » du C18

variablesoudesinstructions.

Ainsiladirective

#pragmaconfig WDT = OFF voidmon_prog(void){ instructions; 35

Plan du cours

2Retoursurquelquespointsclés...

*lesinterruptions *lesdirectivespragma

3ProgrammationenlangageCdesinterruptions

*LeC18etlaprogrammationdesinterruptions *UtilisationduTIMER0(exercice) 36
#pragmacodevecteur_low=0x18 voidvecteur_low(){ _asmgotoroutine_int_low_endasm #pragmacode #pragmainterruptlowroutine_int_low voidroutine_int_low(){

Quelquesremarques:

Gérer les interruptions avec C18!

Case mémoire (18)h

37

Un exemple simple (le même)

Broche 2 à 7 du PORTB en sortie

Broche 1 du PORTB en entrée

RAZ du PORTB

Broche 1 à 4 du PORTB en E/S numérique

Interruption à chaque front montant sur la

broche 1 du PORTB NOP

Début

quotesdbs_dbs13.pdfusesText_19