Routine Timer et Tempo en C - Mcu/Cpu (hardware et périphériques) > 8 bits - Articles et téléchargements
Routine Timer et Tempo en C - Mcu/Cpu (hardware et périphériques) > 8 bits - Articles et téléchargements
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
proposer
 
   
             
 
Catégories
 
   
             
 
Recherche
 
   
 

Routine Timer et Tempo en C

Publié par david le 19/12/2005 (3520 lectures)

Je vais expliquer l'utilisation du C avec plusieurs routines que j'ai plus ou moins fait mais toutes adaptées à mon cas. Elles sont assez généralistes.


On peut avec cette routine faire les choses suivantes :

  • créer un timer de 100ms sur le Timer A
  • créer un timer de 1s sur le Timer A sans interruption
  • créer un timer de 1s sur le Timer B avec interruption
  • créer un tempo logicielle


Il n'y a pas besoin d'initialiser le timer car ceci est fait dans la routine elle même ; A vous bien sur de configurer le temps en fonction de fréquence du bus, les interruptions, ... toutes ces infos se trouvent dans le datasheet du composant utilisé
Création d'un timer de 100ms sur le Timer A :
Timer100ms();
Ce timer peut être assimilé à une tempo logicielle car on attend qu'elle soit fini avant de pouvoir en sortir
Création d'un timer de 1s sur le Timer A sans interruption :
Timer100ms();

On lance le timer dans le canal A et puis on ressort, c'est donc à vous d'intégrer un routine qui ira vérifier si la tempo est fini ou pas comme ceci :

while (TASC_TOF==0);

 On peut aussi bien utiliser un if si on ne veut pas attendre sur le while


Création d'un timer de 1s sur le Timer B avec interruption:

Timer1sB();

On lance le timer dans le canal B et puis on ressort, c'est l'interruption qui vous avertira de la fin du timer.
Le logiciel ira donc ici:

void interrupt _TimerOverflow_B(void)

Mais il faudra lui dire par le fichier P&E_PCS_Linker.prn, il faut rajouter cette ligne:

VECTOR 12 _TimerOverflow_B

Le chiffre 12 n'est pas une invention, c'est le 12eme vecteur de reset dans le HC908AB32, le vecteur de reset étant le vecteur 0. A vous de compter pour chaque nouveau CPU.


Création d'une tempo logicielle:

TempoXms(100);

Ceci permet de créer une tempo de 100ms, on peut aller jusqu'a 65535ms soit plus d'une minute. Cette routine intègre un reset du watchdog s'il est utilisé. Dans le cas contraire, il faut cette ligne sinon la routine n'a plus la même valeur.


Toutes ces valeurs sont calculées pour une fréquence de bus à 1,2288Mhz, il suffit de faire un produit en croix pour avoir votre valeur. Pour les timers, utiliser la résolution approprié et le bon chiffre pour TMOD

Toutes ces routines fonctionnent mais ne sont sûrement pas optimisés au niveau temps CPU, n'oublie pas de les faire partager dans le cas de modif.


Fichiers liés à cet article
Nom de fichier Publié le Hits
Télécharger ce fichier Code source
04/09/2006 561

Article précédent Article suivant
Article précédent Le TBM (TimeBase Module) Convertisseur Analogique Numerique (ADC) en C Article suivant
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Auteur Commentaire en débat
Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Routine Timer et Tempo en C - Mcu/Cpu (hardware et périphériques) > 8 bits - Articles et téléchargements