Programmation LPC4088 Cheat Sheet 1

Ports d’entrées/sorties

Utilisation des broches de ports

Déclaration d’une broche en sortie

DigitalOut ma_broche(num_pin); // simple declaration

DigitalOut ma_broche(num_pin, [0|1]); // declaration et initialisation a un etat logique

Assignation d’une valeure (ecriture) sur une broche de sortie

ma_broche = 0; // broche a l'etat bas
ma_broche = 1; // broche a l'etat haut

On peut aussi utilisé
ma_broche.write([0|1]);

Déclaration d’une broche en entrée

DigitalIn ma_broche(num_pin, [PullUp|PullDown|PullNone]); // PullDown par defaut

Lecture d’une broche d’entrée

int variable = ma_broche;

On peut aussi utilisé
int variable = ma_broche.read();

Ensemble de broche : BUS

Declaration de BUS en sortie

//             LSB............MSB
BusOut mon_bus(p12, p30, p19, p42, ...);
Broche Index Utilisation
p12 0 mon_bus[0]
p30 1 mon_bus[1]
p19 2 mon_bus[2]
p42 3 mon_bus[3]

Assignation d’une valeure (ecriture) sur un BUS de sortie complet

mon_bus = 0b00110101; // Attention : MSB.........LSB

On peut aussi utilisé
mon_bus.write(0b00110101);

Assignation d’une valeure (ecriture) sur une seul broche d’un BUS de sortie

mon_bus[index_pin] = [0|1];

Declaration de BUS en entrée

//            LSB............MSB
BusIn mon_bus(p12, p30, p19, p42, ...);
Broche Index Utilisation
p12 0 mon_bus[0]
p30 1 mon_bus[1]
p19 2 mon_bus[2]
p42 3 mon_bus[3]

Lecture sur un BUS d’entrée complet

int variable = mon_bus;

On peut aussi utilisé
int variable = mon_bus.read();

Lecture sur une seul broche d’un BUS d’entrée

int variable = mon_bus[index_pin];

Modulation de Largeur d’Impulsion (MLI / PWM)

MLI
Modulation de Largeur d’Impulsion
PWM
Pulse Width Modulation

Declaration d’une sortie PWM

PwmOut sortie_pwm(p42);

Programation de la periode T

En secondes :

// Prototype :
// void period(float s);

sortie_pwm.period(0.005); // periode de 5 millisecondes

En millisecondes :

// Prototype :
// void period_ms(int ms);

sortie_pwm.period_ms(5); // periode de 5 millisecondes

En microsecondes :

// Prototype :
// void period_us(int us);

sortie_pwm.period_us(5000); // periode de 5 millisecondes

Programation du rapport cyclique

En précisant directement la valeur du rapport cyclique

// Prototype :
// void write(float value);

sortie_pwm.write(0.42); // Rapport cyclique entre 0.00 et 1.00 (pourcentage)

Autre syntaxe :
sortie_pwm = 0.42; // Rapport cyclique entre 0.00 et 1.00 (pourcentage)

En précisant la durée de l’impulsion au niveau haut (TH)

TH
Temps à l’etat Haut

En secondes :

// Prototype :
// void pulsewidth(float s);

sortie_pwm.pulsewidth(0.004);

En millisecondes :

// Prototype :
// void pulsewidth_ms(int ms);

sortie_pwm.pulsewidth_ms(4);

En microsecondes :

// Prototype :
// void pulsewidth_us(int us);

sortie_pwm.pulsewidth_us(4000);

Lecture du rapport cyclique

float variable sortie_pwm.read(); // la valeur retournée est un float entre 0.00 et 1.00

Convertisseur Analogique-Numerique

CAN
Convertisseur Analogique-Numerique
ADC
Analog to Digital Converter

Déclaration d’une entrée de CAN (entrée analogique)

AnalogIn entree_analog(p17);

Lecture du résultat de conversion analogique numérique

Résultat réel codé entre 0.00 et 1.00

float variable = entree_analog.read();

On peut aussi utilisé
float variable = entree_analog;

Pour avoir le resultat réel codé entre 0.0V et 3.3V, il suffit de multiplier par 3.3

float variable = 3.3 * entree_analog.read();

Résultat entier codé sur 16 bits

unsigned short variable = entree_analog.read_u16(); 

Convertisseur Numerique-Analogique

CNA
Convertisseur Numerique-Analogique
DAC
Digital to Analog Converter

Déclaration d’une sortie de CNA (sortie analogique)

AnalogOut sortie_analog(p18);

Convertion numerique-analogique (écriture)

A partir d’un réel compris entre 0.00 et 1.00

// Prototype :
// void write(float value);

sortie_analog.write(0.42);

On peut aussi utilisé
sortie_analog = 0.42;

Pour avoir le resultat réel codé entre 0.0V et 3.3V, il suffit de multiplier par 3.3

float variable = 3.3 * sortie_analog.read();

A partir d’un entier compris entre 0 et 1023

// Prototype :
// void write_u16(unsigned short value);

sortie_analog.write_u16(420);

Lecture de la tension de sortie Vs (en pourcentage de Vsmax)

float variable = sortie_analog.read();