User Tools

Site Tools


avr:temporisation_avec_delay.h

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 </code
 
On déclare la variable i avant la boucle for, pas dedans.
 
<code c>for(i=1; i<=0x80; i<<=1)

On décale un 1 sur le port B jusqu’à atteindre le dernier bit (0×80)

_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.

Discussion

Enter your comment. Wiki syntax is allowed:
GHPIT
 
avr/temporisation_avec_delay.h.txt · Last modified: 2011/12/26 19:51 (external edit)