WikiElectronique

Wiki sur l'électronique et l'informatique

Outils pour utilisateurs

Outils du site


winavr: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

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.

winavr/temporisation_avec_delay.h.txt · Dernière modification: 2017/12/06 16:54 (modification externe)