1

Bonjour à tous!
J'ai fait un programme qui est malheureusement trop rapide pour le moment (en fait la boucle principale permet de déplacer un curseur réalisé avec un sprite qui va à la vitesse de la lumière tongue). Je me suis donc dis qu'utiliser les timers pourrait être pratique pour le ralentir. De plus, je pense que j'aurais besoin de timers dans la suite de mon programme, donc autant m'y mettre dès maintenant.

J'ai cherché sur google, dans la documentation de TIGCC ainsi que sur le tutorial de squale92... ils conseillent tous d'utiliser le code suivant:
//début du programme.
OSFreeTimer(USER_TIMER);
OSRegisterTimer(USER_TIMER, 20);
while(!OSTimerExpired(USER_TIMER)); //fin du programme.


Or celui-ci ne marche pas chez moi... j'ai cherché et testé mais rien n'y fait! Quand le programme arrive à cette instruction, il me bloque tout (mais conserve les niveaux de gris).

En cherchant sur votre forum (en parcourant les pages, la fonction "Rechercher" - beta - n'ayant pas fonctionné), j'ai trouvé le post de Bouflib souhaitant faire un compte à rebours... Cependant je n'ai pas vraiment compris les solutions que vous lui proposiez :/

J'ai hésité à faire une boucle "for" vide ou similaire mais je trouvais ça assez sale embarrassed

Pour information, je programme sur une TI89 (ma vraie calculatrice est une Titanium mais mon émulateur est toujours sur la TI89 classique).

En espérant que vous pourrez m'aider,

Worfang.

P.S.: Si vous jugez que c'est nécessaire, je vous posterais mon code source.
avatar
Ancien pseudo : worfang.

2

voici le code disponible dans la DOC de TIGCC

OSFreeTimer (USER_TIMER);
OSRegisterTimer (USER_TIMER, 5*20);
while ( ! OSTimerExpired (USER_TIMER));


Tu remarqueras le point d'exclamation au debut de la condtion dans le Test du While

3

J'ai en effet mis ce point d'exclamation, aussi bien dans ma citation que dans mon code source. Cependant, même en le dégageant avec des espaces (qui sait, peut être un malentendu syntaxique avec le compilateur?), mon programme se bloque dès qu'il arrive à ce niveau.
avatar
Ancien pseudo : worfang.

4

emulateur, emulateur...

si ton emulateur n'est pas tiemu, oubli ton emulateur !
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5

6

ba utiliser sa vraiTI pour tester son code ya que ça de vrai oui
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

7

Ohh! J'avais pas envisagé le bug de l'émulateur °_°. Moi qui pensait que VTI était sur (puisque très utilisé ^^).
Bon ben je vais télécharger TIemu et vous dire si il y a du changement!
Merci de vos réponses!

Sinon, pour ralentir une boucle, vous me conseillez le timer ou il y a une autre technique?
avatar
Ancien pseudo : worfang.

8

ba le timer est théoriquemnt le plus précis, mais attention si ton code est pas a durée fixe, pense a faire ton timer de durée variable sinon ça va faire bizzare...

Et pour les autres technique il reste la bonne vielle attente active ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

9

Bon, impossible de faire marcher TIemu :/ . J'ai installé GTK etc. mais il me dit qu'il manque une librairie :x . Bon ben en attendant de me débrouiller avec cet émulateur je vais continuer sur VTI et je ferais mon test de timer directement sur TI.

Encore merci pour vos réponses!
avatar
Ancien pseudo : worfang.

10

pourquoi tu ne teste pas sur ta vrai ti ?
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

11

Je viens de suivre tes conseils et de tester... Ma TI a planté. Elle m'a fait exactement la même chose que sur VTI, donc ce n'est pas à cause de l'émulateur. Je vois vraiment pas ce qui peut poser problème =_= .
avatar
Ancien pseudo : worfang.

12

ben dans tout les cas, je ne peut que te conseiller d'utiliser TiEmu qui permet de débuggoer du code C...
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

13

J'essayerai de prendre TiEmu dès que possible (dès que je réussirais à le faire marcher quoi ^_^). En attendant je vais me passer des timers.
avatar
Ancien pseudo : worfang.

14

Martial Demolins (./5) :
es timers de AMS sont basés utilisent l'int 5 que VTI émule avec les pieds, donc ne cherche pas... Utilise TiEmu ou fais confiance à ton code si tu es sûr de toi.

les timers AMS sont basés sur l'AUTO_INT_5 d'AMS ; ce qui signifie qu'il ne faut pas que celui-ci soit désactivé / redirigé vers autre chose.

A tout hasard, est-ce que tu ne redirigerais pas l'AU5 vers DUMMY_HANDLER ?
ok
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

15

Question pertinante de squale ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

16

Si, tu as tout à fait raison ! Je redirige en effet l'AutoInt5 vers DUMMY_HANDLER (ainsi que l'AutoInt1 d'ailleurs). Mais dans ce cas, qu'est-ce que je peux faire pour faire fonctionner les timers sans devoir désactiver le DUMMY_HANDLER?
avatar
Ancien pseudo : worfang.

17

Bien vu, squale smile
> Mais dans ce cas, qu'est-ce que je peux faire pour faire fonctionner les timers sans devoir désactiver le DUMMY_HANDLER?
Tu ne peux pas utiliser les timers d'AMS en désactivant l'AI5 d'AMS. Il te faut réaliser ta propre gestion d'un timer, éventuellement en changeant le taux d'activation de l'AI5 (cherche "programmable rate generator" dans la doc de TIGCC wink ).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

18

Ouhla j'ai jeté un oeil au Programmable Rate Generator, et ça m'attire pas trop embarrassed . J'ai testé autre chose sinon : je redirige toujours l'AI1 vers DUMMY_HANDLER mais je ne touche pas à l'AI5. Résultat : ça fait ce que je veux (le timer marche, logique ^^), mais j'ai peur de créer un problème dans mon programme en ne le désactivant pas (rediriger l'AI5 est pas nécessaire pour désactiver les touches "2nd", "Alpha", etc..?).
Si le fait de ne pas rediriger l'AI5 n'est pas important, alors je peux m'en passer smile .
Comment faites-vous, programmeurs haut-niveau, pour à la fois désactiver les touches "2nd"&Co, activer le _rowread, et garder les timers?

(A tous les coups l'AI5 ne sert à rien dans mon cas et je m'embête pour pas grand chose ^_^).
avatar
Ancien pseudo : worfang.

19

20

Le Programmable Rate Generator n'est pas très difficile à utiliser wink

Si tu désactives l'AI1 mais pas l'AI5, ce n'est pas si grave que ça: _rowread/_keytest ne fonctionne pas super (parfois des duplications de lectures, lectures de touches non pressées), mais c'est surtout l'AI1 qui les cause.

./19: je ne me souviens plus... tu fais peut-être référence au port 600015, que PolySnd est obligée d'utiliser pour atteindre une fréquence suffisante ?
> qui est à la base à ~1/18 secondes
Environ, en effet. Ca dépend des modèles (sachant qu'il ne reste plus beaucoup de HW1: les HW1 ne sont plus fabriquées depuis ~1999...). Sur HW2 et plus, les réglages par défaut (ports 600015 et 600017) donnent ((2^19)/(2^9))/(257-0xCC), soit ~19.32 Hz.

(oui, j'ai relu j89hw.txt pour pouvoir répondre le numéro du port donnant la fréquence d'incrémentation de 600017 grin)
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

21

...
(oui, j'ai relu j89hw.txt pour pouvoir répondre le numéro du port donnant la fréquence d'incrémentation de 600017 grin )

J'me disais bien qu'il y avait un truc... tricol
"De l'Art de faire des Posts qui ne servent a Rien." (c) Ximoon

15:13 @Ximoon - 29-11-2005
"C'est débile ce sondage, une fois de plus Dude, tu ne sers à rien #hehe#" #love# Il est collector celui là ^^

18:56 @Ximoon - 09-10-2010
"Mince Dude sert à quelque chose %) (pas taper :D )" Owii xD #trilove#

22

Bon ben je vais continuer comme ça, avec juste mon AI1 redirigé. Encore merci pour toutes vos réponses! smile
Je risque encore de vous poser des questions à propos d'autres soucis de mon projet dans pas longtemps tongue
avatar
Ancien pseudo : worfang.

23

24

./23: ah, OK. C'est ST_flags. Je ne sais plus si c'est portable (AMS 1.xx, PedroM ?).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

25