Conversion Timer ==>temps

Bonjour,
J'ai réalisé un programme en C qui est censé calculer la durée entre 2 impulsions sur une patte de mon PIC(signal carré fournit grâce à un GBF, fréquence quelconque).Pour cela, je me suis servit du Timer1 de mon PIC.Exemple, lorsque je suis à 1Hz, le programme m'affiche 39080 ; ma question est : quelle est l'équation qui permet de trouver la durée entre mes deux impulsions?(logiquement 1Hz donc 1 seconde)!
Je peux vous poster le programme si vous voulez.
Merci
Configuration: Windows XP
Firefox 3.5.7

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,
    Si j'ai compris...je ne connaîs plus le C mais comme tu demande l'algo, le voila en VB
    Sub HMS()
    Dim NbS As Long
    Dim Heure As Double, Minute As Double, Seconde As Integer
        NbS = 39080
        Heure = Fix(NbS / 3600)
        Minute = Fix((NbS - (Heure * 3600)) / 60)
        Seconde = NbS - (Heure * 3600) - (Minute * 60)
    End Sub

    Résultat >> 10:51:20

    A+
    1. pardon à 1Hz il affiche 59300 cycles. J'ai procédé à quelques calculs mais je ne retombe pas sur mes pattes :
      Fréquence interne =40MHz /4/8(pré-diviseur réglé à 8 dans mon programme)
      =1,25MHz ==> donc la durée d'un cycle est 0,8µs.
      Or 59300 cycles * 0,8µs n'est pas égal à 500ms( moitié de ma période).Si vous voyez d'où mon erreur provient, faites signe.

      Merci =)
      1. Contributeur
        Ca change tout a fait de ce que tu dis dans ton premier poste !!
        Tu dois mettre la période de saisie à 0,001 seconde au lieu de 1seconde et adapter les calculs en fonctions.
        Mais avec les arguments que tu donne tu devrais avoir des résultats en 1000ièm de seconde .. Non ?
        NB : il y une API windows qui peu te calculer ça façilement. J'ai pas le nom sous la main mais si ça t'intéresse je la rechercherais.
        Edit : l'API c'est...
        Public Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

        Calcul en millionième de seconde