cs_groben
Messages postés11Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention22 novembre 2005
-
9 nov. 2005 à 11:14
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 2014
-
9 nov. 2005 à 15:18
Pour une application qui fait de l'acquisition de données,
j'ai besoin d'attendre pendant une période de 12 ns exactement pendant une boucle de 2^20 itérations...
en utilisant la fonction sleep, le minimum est de 1000 ns (1 milisec) ce qui donne un temps fou pour le parcours de la boucle !
Attention, je ne peux programmer qu'avec Delphi 2.0 (& oui, ce n'est pas une boite d'informatique dans laquelle je fais mon stage ;-) , donc je vous remercie de ne pas trop me proposer de fonctions compatibles avec Delhi 5.1 et +...
PS :
Ce site est très bien fait : ne connaissant que le C, j'ai pu m'initier assez facilement à Pascal & Delphi en 2 mois grâce à vous tous !
Merci
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 9 nov. 2005 à 11:54
salut
pour un temps d'attente de 12ns je ne vois guere autre chose qu'une
boucle for do (et à condition d'avoir un PC assez rapide!! je doute que
tu puisse descendre ausi bas sans passer par l'assembleur.
à mon avis il faudra passer par un carte d'acquition rapide.
essaie quand même cela.
var i:integer
for i:=0 to temps do begin end;
tu calibres temps à l'ouverture de l'application:
T:=time;
for i:=0 to 100000000 do ;
DT:= MilliSecondOfTheSecond(time-T);
choisis une boucle assez importante pour avoir une bonne precision.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 9 nov. 2005 à 13:59
un mircocontroleur à 100mHz ne sufffira pas : a raison de 3 à 12 cycles
horloge par instruction il faudrait un micro controleur à environ 1GHz .
Les essais que j'ai fait donne ~20ns par boucle sur un PC à 2Ghz.
En assambleur il faut compter ~3 à 12 cycles horloge par
instruction comme pour le microcontroleur auquel il faudra ajouter le
temps d'appel à la fonction de traitement (empilage et depilage du
contexte: une dizaine d'instrution ) et l'exécution du traitement (je
suppose que ces iteration ne se font pas dans le vide).
la seule véritable solution c'est carte d'acquition rapide par
compteur programme. (les circuits logiques travaillant à plus de 1Ghz
ne sont pas légion!!)
cs_groben
Messages postés11Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention22 novembre 2005 9 nov. 2005 à 15:06
Merci pour vos supputations...
En fait, c'est une carte d'acquisition PCI 7296 (Adlink)
J'avais du mal à déchiffrer la doc sur les timers, mais à présent c'est bon, avec un timer bien configuré, j'arrive désormais à avoir ce que je veux...
pb : la fonction MilliSecondOfTheSecond(time-T); n'existe pas avec Delphi 2
Merci qd même pour vos solutions !
bonne prog!
Vous n’avez pas trouvé la réponse que vous recherchez ?
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 9 nov. 2005 à 15:18
c'est prèfèrable pour toi que tu aies une carte d'acquisition
pour la fonction la fonction MilliSecondOfTheSecond(time-T) elle
extrait les millisecondes d'un datetime (0 à 999)comme je ne connais
pas delphi 2 difficile de t'aider (je crois qu'il ne code pas le time
de la même façon)