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 <avr/io.h> #include <util/delay.h> 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 <util/delay.h> qui l'utilise.
#include <util/delay.h>
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.