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

interruption



  1. #1
    frenchy

    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. Publicité
  3. #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

  4. #3
    frenchy

    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

  5. #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

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :

Discussions similaires

  1. interruption IO pic18f2520
    Par bikerfou dans le forum Électronique
    Réponses: 3
    Dernier message: 14/05/2010, 13h51
  2. interruption SPI
    Par mastermix dans le forum Électronique
    Réponses: 0
    Dernier message: 12/04/2009, 17h22
  3. Interruption
    Par ARM128 dans le forum Électronique
    Réponses: 4
    Dernier message: 06/01/2009, 21h07
  4. Interruption
    Par scls19fr dans le forum Électronique
    Réponses: 1
    Dernier message: 22/06/2008, 14h05
  5. Interruption RB0
    Par Martintin dans le forum Électronique
    Réponses: 5
    Dernier message: 12/04/2007, 10h45
Découvrez nos comparatifs produits sur l'informatique et les technologies.