Fermer2
worfangLe 31/10/2007 à 11:59
Bonjour à tous!

J'ai programmé une fonction d'attente, et, ne pouvant utiliser les timers (je désactive ou redirige les Auto ints 1 et 5) j'utilise les Programmable Rate Generator.

C'est la première fois que j'utilise les PRG mais je pense avoir réussi à avoir un résultat correct :
void attendre(unsigned char temps)
{
char Rate, Start;

if (!IsPRGEnabled()) EnablePRG();
Rate=PRG_getRate();
Start=PRG_getStart();

PRG_setStart(temps);
PRG_setRate(0);
while (PRG_getValue()!=0xFF);

PRG_setRate(Rate);
PRG_setStart(Start); }


Tout d'abord, y a t'il une quelconque erreur dans ma fonction?

Deuxième question : Il se trouve que dans mon programme l'utilisateur déplace un curseur. Or si je ne met pas de fonction "attendre" le curseur se déplace beaucoup trop vite (et en plus niveau compatibilité entre les différentes machines c'est pas génial puisque le curseur n'ira pas aussi vite sur une machine que sur l'autre, non?). Mais si je met ma fonction "attendre", le curseur devient alors trop lent, surtout étant donné que je n'ai pas encore mis d'autres fonctionnalités à mon programme qui vont fatalement diminuer la vitesse de déplacement.

Donc en gros je cherche le juste milieu, que je n'ai pas réussi à atteindre (j'ai eu beau mettre le PRG_setRate à 0 -vitesse la plus élevée- et rentrer en argument de ma fonction temps=1, c'est toujours trop lent!).
Auriez-vous une technique à me donner pour résoudre ce problème s'il-vous-plait ? smile

Enfin j'ai une dernière question, subsidiaire cette fois-ci :
A l'origine je souhaitais utiliser les timers, or à cause de mes redirections d'ints, l'USER_TIMER (timer n°6) n'est plus utilisable. Ok.
Mais il existe aussi l'USER1_TIMER (timer n°1) qui est disponible pour une utilisation personnelle, non?

Quand j'ai essayé de m'en servir, ça ne marchait pas (calculatrice bloquée et reset de l'émulateur -je suis sous TiEmu-).

Merci d'avances de vos réponses!

Daniel.