Please enable JavaScript.
Coggle requires JavaScript to display documents.
Microprocesseurs (3) (Langage C (Les fonctions (Arguments (Passage par…
Microprocesseurs (3)
Langage C
Avantages
Abstraction plus élevée
Rapide
Code compact
Portable
Proche du HW
Base pour d'autres langage
Chaîne de compilation
Compilateur
Assembleur
Linker
Préprocesseur
Programmeur
Structure d'un programme
Commentaires
Variables globales
Directives préprocesseurs
Fonction main()
Fichiers .c
Fichiers .h
Variables
Types de bases
char
int
float
...
Déclaration
TYPE var_name [= init_value];
Une seule par ligne
Au début d'un bloc { }
Portée des variables (visibilité)
Limitée au bloc { } actuel et aux sous-bloc
Variables détruites une fois le bloc terminé
static
permet de garder la valeur en mémoire (variables rémanentes)
Variables globales : définies en dehors de tout bloc
Variables locales : définies à l'intérieur d'un bloc
Assignation
Du même type seulement (ou cast)
raccourci : +=, *=, ...
Incrémentation/Décrémentation : ++, --
Tableaux
Plusieurs variables de même type
Déclaration : int myTab[10] = {...};
Indexé de 0 à size-1
Plusieurs dimensions possibles
Pointeurs
Manipule et stocke des adresses
Déclaration : TYPE * myPtr;
Initialisé à NULL si non utilisé
Adresse d'une variable : &myVar;
Accès à l'adresse stockée : myPtr
Accès au contenu de l'adresse stockée : *myPtr
Opérateurs
+, -, /, *, %, <<, >>, ~, &, |, ^
Priorités des opérateurs (précédence)
Structures de contrôle
Instructions conditionnelles
switch - case
if-else
Boucles
for(...;...;...)
while(...)
do{ }while(...);
Conditions
Faux : 0 / Vrai : différent de 0
Opérateurs logiques : &&, ||, !
Comparateurs logiques : ==, <, >, <=, >=, !=
Les fonctions
Equivalent d'un sous-programme
Rendent le code modulaire
Déclaration : TYPE fonctionName( [argument-list]);
Si aucune valeur retournée : void
Prototype (stockés souvent dans les fichiers .h)
Nombre de paramètres illimités
Définition : TYPE fonctionName( [argument-list]) {...}
Arguments
Passage par valeur
Le contenu de la variable passé est copié
Ne permet pas de modifier la variable source
Passage par référence
L'adresse de la variable est passée en paramètre (pointeurs)
Permet de modifier directement la variable passée en paramètre
Assembleur : les 4 premiers arguments passés par les registres, le reste sur la pile
Les structures
Groupe de plusieurs variables
Déclaration : struct myStruct { int var1: int var2;};
Utilisée souvent avec typedef
(typedef [nom] [alias])
Fonctionnent de la même manière qu'une variable simple
ADC
Architecture générale
Multiplexeur
Sample and Hold
ADC
Plusieurs types
Simple rampe
Double rampe
Sigma-Delta
Approximations successives
Pipeline
Flash
MSP430
Sources
Plusieurs entrées analogiques sélectionnables
Capteur de température interne
ADC
8, 10 ou 12 bits
Plage sélectionnable (Vref- et Vref+)
Références internes (1.2V, 2.0V, 2.5V)
Référence externe
Alimentation
Période d'acquisition = n+2 cycles (n= résolution)
Interruptions sélectionnables
4 modes de conversion et mémoire de stockage
Low-power modes
Source de consommation
Dynamique : P = A
C
f*V^2
Court-circuit à la commutation : tau*A*V* Ishort
Courant de fuite : V*Ileak
Optimisation de la consommation
Utilisation d'interruptions
Gestion des horloges (réduire fréquence)
Utilisation des low-power modes
Pas de code inutile
Désactiver modules
MSP430
7 low power mode (plus ou moins profond)
Sélectionnables dans le SR
Différentes conditions de reveil selon les modes (interruptions, I/O, modules, ...)
EnergyTrace
SPI
MSP430
Module eUSCI_Ax
UART
SPI
I2C
...
Données de 7 ou 8 bits
Master ou Slave
Interruptions à la recéption / envoi
Fréquence programmable
Caractéristiques
2 ligne de donnée synchrone (MISO-MOSI)
Transmission série
1 ligne horloge
Principe Maître-esclave(s) (master-slave)
1 CS (Chip Select) par esclave
Polarité et phase de l'horloge paramètrables