[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
main(){ int MAX, cpt; #defineduree10000 #pragmaconfig WDT = OFF // Déclaration des variables globales char c; floatpht; // Prototypes des fonctions voidtempo(unsignedintcount); // Programme Principal voidmain() intMAX; main(){...} ex.voidfunction() staticintMAX;... 21
uneinterruptiondeprioritébasse,
; 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
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.
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_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
#pragmacodevecteur_low=0x18 voidvecteur_low(){ _asmgotoroutine_int_low_endasm #pragmacode #pragmainterruptlowroutine_int_low voidroutine_int_low(){
[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
LSISMél.:zouhair.haddi@lsis.org
2Les objectifs du cours...
Vousavezétudié...
3Organisation du cours
6hdecours[JulienMarot]
RappelsurlaprogrammationenAssembleur.
Systèmemicro-programméetlangageC.
Exercicesd'application
4hdetravauxpratiques[ZouhairHaddi]
CANSIduPIC18F4520deMicrochip.
!Soyezàl'heureencoursetenTP! 4Votre boite à outils...
Pourlessystèmesmicro-programmée:
Assembleur.
Programmationdehaut-niveau:
5Contrôle des connaissances
6Plan du cours
2Retoursurquelquespointsclés...
*lesinterruptions *lesdirectivespragma3ProgrammationenlangageCdesinterruptions
*LeC18etlaprogrammationdesinterruptions *UtilisationduTIMER0(exercice) 7En langage C
Pourquoi un langage tel que le C ?
8Construction d'un exécutable (1)
PRE-PROCESSEUR
Remplace les #define
et effectue les #include #includeMAX = 0x45;
for(cpt=0; cpt< MAX; cpt++)Bibliothèques CSource du main()
fichier texte *.cCOMPILATEUR (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écutableBibliothèque pré-compilée
fichier objet *.o 9Construction 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 lienSorties (exécutable, etc.)
Entrées (sources)
Construction de librairies
Éditeur de liens
10Vouspouvezdoncé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 #includePORTB = 0x00;
TRISB = 0x00;
while(1){PORTB++;
tempo(duree); tempo(unsignedintcount){ while((count--)>0){ // avoir count±égal à 1Déclarationdevariablesglobales
Déclarationd'unefonction
12Déclaration de types de données
C18ainsiqueleurformatdecodage.
Parexemple,unedéclarationdelaforme
#pragmaidatatest=0x0200 longl=0xAABBCCDD; conduitaustockagemémoiresuivant 13 14Structures & 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''); 15Structures:
intérêt pour l'accès aux ports1PORT:
Unestructureà8champs
Carilya8broches.
1champ±1broche
16Unions
externvolatilenearunsignedcharPORTB; externvolatilenearunion{ struct{ unsignedRB0:1; unsignedRB1:1; struct{ unsignedINT0:1; unsignedINT1:1; struct{ unsignedAN12:1; unsignedAN10:1; }PORTBbits; 17Extraitdufichierheaderp18f4520.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émoireIntérêt pour la paramétrage des PORTS
18La 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 19Les opérateurs du langage C
20Variables globales, locales...
dontlaprincipaleestmain(). ex.#includeDe l'assembleur dans du C ?
pasd'adressageindexé. _asm/*Userassemblycode*/MOVLW10//Movedecimal10tocount
MOVWFcount,0
start:/*Loopuntilcountis0*/DECFSZcount,1,0
GOTOdone
BRAstart
done: _endasmEtiquette=
label 22Quelques astuces/pièges en langage C
Utiliser le passage des arguments par adresse
Les fonctions récursives
23Plan du cours
2Retoursurquelquespointsclés...
*lesinterruptions *lesdirectivespragma3ProgrammationenlangageCdesinterruptions
*LeC18etlaprogrammationdesinterruptions *UtilisationduTIMER0(exercice) 24Les interruptions (ou traitement d'exception)
Lesinterruptionsmatérielles
sontutiliséeslorsqu'ilest nécessairedepouvoirréagir entempsréelàunévénement asynchrone...» (Source:Wikipédia) 25uneinterruptiondeprioritébasse,
Le contrôle des interruptions
desinterruptions... sourced'interruption... 26Déroulement d'une interruption
(4).ExécutiondelaroutineȂǰ 27Un 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
FinOnnoteraque...
puissentseproduire. 28Un exemple...
Flag source interruption <--0
ChangerétatRB2
Sauvegarde du contexte
Début
FauxFlag source
Interruption
actif VraiRestaurercontexte
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ébut
30orgh'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 3132
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
33interruption_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'interruptionChangel'étatdelabroche2
duPORTBRestauration du contexte
Retour au prog. principal
34Les directives " pragma » du C18
variablesoudesinstructions.Ainsiladirective
#pragmaconfig WDT = OFF voidmon_prog(void){ instructions; 35Plan du cours
2Retoursurquelquespointsclés...
*lesinterruptions *lesdirectivespragma3ProgrammationenlangageCdesinterruptions
*LeC18etlaprogrammationdesinterruptions *UtilisationduTIMER0(exercice) 36#pragmacodevecteur_low=0x18 voidvecteur_low(){ _asmgotoroutine_int_low_endasm #pragmacode #pragmainterruptlowroutine_int_low voidroutine_int_low(){