interruption
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

interruption



  1. #1
    invite2da25054

    interruption


    ------

    Bonjour,

    Petite question relative aux interruptions.
    Je programme actuellement un dspF2807. J'utilise deux de ses ADC.
    Lorsque la conversion d'une des chaines est finie le flag correspondant passe à un et je rentre dans ma routine d'interruption.
    Ma question est assez générale: Comment dois je coder ma routine d'interruption?

    La routine doit elle légère ( peu de code )?
    Peut on faire des calculs dans cette routine ( Intégrale )?
    Dois je simplement enregistrer le résultat de la conversion et le traiter dans une une autre fonction?

    Merci

    -----

  2. #2
    thundertom

    Re : interruption

    Salut,

    En principe on évite de faire du code dans un routine d'intéruption. Pour éviter que d'autre intéruption interviennent lorsqu'on y est.

    J'applique systématiquement ce principe affin de m'éviter des problèmes. Dans ma routine d'intéruption je ne fais que lever des flags.
    Fabricando fit faber

  3. #3
    invite2da25054

    Re : interruption

    Ok.
    Nouvelle petite question:
    Imaginons que j'échantillonne un signal à 500khz, le flag se déclenchera toutes les 2 us.
    Donc si je veux faire des calculs sur le résultat il faut impérativement que ce calcul ait un temps de traitement inférieur à 2us?
    Dans le cas contraire un nouveau flag apparaitra avant d'avoir fini mon traitement.
    En gros comment puis je savoir, approximativement, le temps que prendra ma fonction de traitement du résultat? ( Question peut être un peu trop général )

    Merci

  4. #4
    Murayama

    Re : interruption

    Bonjour!

    Je n'ai jamais programmé avec un F2807, mais en tout cas mon
    approche est un peu différente et donne des résultats relativement
    stables. Pour préciser le contexte, je fais principalement des
    instruments de mesure enregistreurs, et je les fais sans OS ou du
    moins avec un semblant d'OS maison qui est un "round robin"
    amélioré.

    - Quand j'ai une interruption, j'entre dans la routine d'interruption
    et j'interdis les interruptions.
    - A la fin des opérations appelées dans la routine d'interruption,
    je réautorise les interruptions.

    Avantage: les interruptions ne se chevauchent jamais.
    Contrairement à ce que l'on pourrait croire, par exemple si je suis
    en train de traiter un morceau de signal et que pendant ce temps
    un bouton est pressé, l'état du bouton est gardé et génèrera une
    interruption dès qu'elles seront à nouveau autorisées. Donc on
    ne perd pas d'événement de boutons ou autres.

    Avec cette méthode, s'il y a trop de code dans la routine d'interruption,
    tout simplement, ça va sauter des interruptions, mais rien de plus.
    Quand on s'aperçoit que la fréquence des interruptions a diminué
    de moitié, c'est qu'on saute une interruption sur deux.


    Pour connaître le temps que prendra une fonction, il y a 2 approches:
    regarder l'assembleur généré et compter les coups d'horloge.
    C'est long.
    En ce qui me concerne, je fais un morceau de programme, et le
    debugger me dit exactement combien de cycles ont été utilisés
    en avançant pas à pas. Un point d'arrêt avant et après ce qui est
    à tester, et on a quelque chose de précis.


    Pascal

    Citation Envoyé par frenchy Voir le message
    Ok.
    Nouvelle petite question:
    Imaginons que j'échantillonne un signal à 500khz, le flag se déclenchera toutes les 2 us.
    Donc si je veux faire des calculs sur le résultat il faut impérativement que ce calcul ait un temps de traitement inférieur à 2us?
    Dans le cas contraire un nouveau flag apparaitra avant d'avoir fini mon traitement.
    En gros comment puis je savoir, approximativement, le temps que prendra ma fonction de traitement du résultat? ( Question peut être un peu trop général )

    Merci

  5. A voir en vidéo sur Futura

Discussions similaires

  1. interruption IO pic18f2520
    Par invite46936add dans le forum Électronique
    Réponses: 3
    Dernier message: 14/05/2010, 13h51
  2. interruption SPI
    Par inviteac09f73c dans le forum Électronique
    Réponses: 0
    Dernier message: 12/04/2009, 17h22
  3. Interruption
    Par invite28559ad9 dans le forum Électronique
    Réponses: 4
    Dernier message: 06/01/2009, 21h07
  4. Interruption
    Par invited59ff025 dans le forum Électronique
    Réponses: 1
    Dernier message: 22/06/2008, 14h05
  5. Interruption RB0
    Par invite91a05f0b dans le forum Électronique
    Réponses: 5
    Dernier message: 12/04/2007, 10h45
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...