====== Temporisation avec delay.h ======
La librairie **delay** permet de créer des tempos facilement grâce à une boucle programme. \\
**Avantage** : Très facile à utiliser\\
**Inconvénient** : Pendant la tempo, le micro est bloqué dans sa boucle est ne peut rien faire d'autre.
===== Exemple Chenillard =====
#define F_CPU 1000000UL //Fréquence de fonctionnement 1Mhz
#include
#include
int main (void)
{
int i; //Déclaration d'une variable i
DDRB = 0xFF; //Met le port B en sortie
while(1)
{
for(i=1; i<=0x80; i<<=1)
{
PORTB = i;
_delay_ms (250); //Tempo de 250ms
}
}
return 1;
}
#define F_CPU 1000000UL //Fréquence de fonctionnement 1Mhz
F_CPU, la fréquence de fonctionnement de votre microcontrôleur est défini en Hertz et est déclaré **avant** #include qui l'utilise.
#include
On inclue la librairie delay.
int i; //Déclaration d'une variable i
On déclare la variable i avant la boucle for, pas dedans.
for(i=1; i<=0x80; i<<=1)
On décale un 1 sur le port B jusqu'à atteindre le dernier bit (0x80)
_delay_ms (250); //Tempo de 250ms
Vous pouvez aussi utiliser la fonction _delay_us pour faire une tempo en µs\\
La durée max de la tempo est de 262.15ms/F_CPU en Mhz pour la fonction _delay_ms et 768us/F_CPU en Mhz pour la fonction _delay_us. \\
Rien ne vous empêche de faire une boucle for qui s'exécute x fois pour faire une tempo plus longue.\\
Vérifiez aussi que la boucle for n'utilise pas plus de mémoire programme que plusieurs delay à la suite les uns des autres.