Nombre d'instruction dans une boucle d'interruption
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Nombre d'instruction dans une boucle d'interruption



  1. #1
    invite7b856968

    Nombre d'instruction dans une boucle d'interruption


    ------

    Bonjour,
    Je me présente, je suis étudiant en MASTER2 système embarqués et en ce moment je fais mon stage de 6 mois dans une entreprise.
    Etant donné que je suis dans un pole de recherche et innovation, j'ai hérité d'un projet fait par un stagiaire l'année dernière.
    En parcourant son rapport, j'ai trouvé je suis tombé sur un paragraphe que je ne comprend pas tres bien.
    Pour en venir à l'essentiel, son travail était de concevoir un calculateur automobile avec interface CAN, Liaison SPI...(je passe les détails,soucis de confidentialité).
    Mon cher prédecesseur a mené un raisonnement concernant le choix des microcontroleur qu'il utilisera (ici des PIC de chez Microchip) et plus précisement sur le nombre d'instruction qu'il peut exécuter dans une boucle d'interruption

    "La vitesse de fonctionnement du PIC doit permettre de gérer ses interruptions, tout en ayant le temps de faire tourner le programme principal.

    Nombre d’instructions / boucle d’interruption = 5 minimum
    Soit liberté de 11 instructions, dans le pire cas d’une transmission ininterrompue du SPI, avec un PIC cadencé à 16 MIPS :
     Peu de marge
    Soit liberté de 35 instructions dans le pire cas d’une transmission ininterrompue du SPI avec un PIC cadencé à 40 MIPS :
     Marge correcte
    Soit liberté de 27 instructions dans le pire cas d’une transmission ininterrompue du CAN HS avec un PIC cadencé à 16 MIPS :
     Marge moyenne
    Soit liberté de 75 instructions dans le pire cas d’une transmission ininterrompue du CAN HS avec un PIC cadencé à 40 MIPS :
     Sans problème
    Pas d’impératifs sur les autres (16 MIPS possible pour diminuer la consommation)"
    Mes questions sont les suivants:
    Pourquoi chercher à faire tourner le main en interruption sachant que ces registres sont sauvegardés dans la pile?
    Confusion entre débit d'un Bus ( CAn, SPI), cycle d'horloge et MIPS?
    Comment il a raisonné pour trouver le degré de liberté de ces intructions?

    Merci d'avant pour vos réponse!Ceci n'est pas un point bloquant pour mon projet,c'est juste que je trouvais curieux ces résultats.
    PS:Soyez indulgents les amis, c'est mon premier post!
    ++

    -----

  2. #2
    invite7b856968

    Re : Nombre d'instruction dans une boucle d'interruption

    Bonjour,
    Aurais-je posté mon topic à la mauvaise section?
    Il y a toujours zéro participants ou aurais-je mal formulé mes questions?
    Merci d'avance pour vos réponses!

  3. #3
    JPL
    Responsable des forums

    Re : Nombre d'instruction dans une boucle d'interruption

    J'ai déplacé le sujet vers Électronique.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  4. #4
    Aurélien

    Re : Nombre d'instruction dans une boucle d'interruption

    Le main ne doit pas tourner en interruption, l'interruption est la pour prendre en charge des évenements urgents, communiquer avec le main, lequel traitera les données ultérieurement.
    Si tu veux éviter d'avoir des soucis de ralentissement de liaison, tu peux :
    - gérer cette liaison par interruption de niveau plus élevé
    - utiliser un DMA si tu choisis un PIC qui en dispose

    Aurélien

  5. A voir en vidéo sur Futura
  6. #5
    RISC

    Re : Nombre d'instruction dans une boucle d'interruption

    Salut Seven,

    Avant de regarder le nombre d'instructions en assembleur il faut regarder le projet de plus haut...
    Que souhaites-tu faire ???
    Quelle est la contrainte la plus élevée dans le système (apparemment des communications à haut débit).

    Les PICs sont spécifiés en MIPS (en terme de vitesse d'exécution) qui signifie exactement Million d'Instructions Par Seconde car la plupart des instructions d'exécutent en 1 cycle (Fcycle). (Ne pas confondre avec les MIPS qui sont une abrévation de DMIPS = Drystone MIPS).

    Dans tous les cas je pense que ton prédécesseur a calculé le nombre de cycles nécessaires au traitement d'une interruption mais je pense que c'est faux...car il y a manifestement oublié les temps de latence...Il faut aussi prendre en compte le compilateur (version gratuite ou optimisée).

    Pour les dsPIC33 (40MIPS) il faut absolument utiliser le DMA au lieu des interruptions car les transferts DMA fonctionnent en parallèle du coeur grâce à la RAM double port. Le SPI, le module CAN, le convertisseur ADC peuvent lire / écrire en même temps que le programme s'execute (sans le ralentir du tout) car la RAM possède 2 bus.
    C'est une caractéristique majeure de cette architecture...ce serait dommage de passer à coté.
    L'avantage est qu'en utilisant le DMA on peut certainement réduire la vitesse et donc la consommation.
    D'ailleurs si la consommation est un paramètre important, il faut regarder du coté des nouveaux dsPIC33E qui fonctionnent jusqu'à 60MIPS et consomme 50% de moins par MHz que les dsPIC33F.

    Mon conseil...ne pas faire des estimations mais mesurer avec un outil un VRAI morceau de code en utilisant par exemple un débogueur Real-Ice...

    a+
    Dernière modification par RISC ; 23/03/2012 à 22h01.

  7. #6
    Aurélien

    Re : Nombre d'instruction dans une boucle d'interruption

    Citation Envoyé par RISC Voir le message
    D'ailleurs si la consommation est un paramètre important, il faut regarder du coté des nouveaux dsPIC33E qui fonctionnent jusqu'à 60MIPS et consomme 50% de moins par MHz que les dsPIC33F.
    La conso de cette famille est toutefois toujours tres élevée à mon gout et en comparaison avec ce que peut faire la concurrence...

    Aurélien

  8. #7
    jiherve

    Re : Nombre d'instruction dans une boucle d'interruption

    Bonsoir,
    Tout ceci ne veut pas dire grand chose car il faudrait d'abord savoir à quoi servent ces interruptions, si c'est pour vider un tampon de réception il faudrait plutôt choisir un µP ayant des FIFO ad hoc.
    J'ai l'impression que l'on met la charrue avant les bœufs.
    JR
    l'électronique c'est pas du vaudou!

  9. #8
    invite7b856968

    Re : Nombre d'instruction dans une boucle d'interruption

    Bonjour,
    Merci pour vos réponses et merci à toi RISC ( je partage ton point de vue),tes réponses m'ont bien éclairées .

  10. #9
    invite7b856968

    Re : Nombre d'instruction dans une boucle d'interruption

    Mon système devra avoir un temps de réponse élevé, ce sera un calculateur central qui servira des passerelle pour faire communiquer les autres calculateurs par bus CAN.Il devra également gérer les phases de vie du réseau,et d'autres fonctions automobiles.
    C'est en suivant ce raisonnement que mon prédecesseur en était arrivé la et je comprenais pas ces calculs mais la j'ai un point de vue plutot éclairé sur la question.

    J'ai une question concernant les PIC:Sachant que le PIC32 a une architecture différente de celle des DsPIC33F et la PIC24F et est en technologies CMS,je me demandais s'il était plusjudicieux d'utiliser deux PIC de 16bit qui pourront partager les fonctions de l'UCE plutot qu'un PIC de 32bit qui a
    architecture évolutive (64 pins soit possibilité d’interface de nombreuses E/S).
    Rapidité de traitement: jusqu’à 80 MIPS

    D'autant plus que j'ai pas de problème pour faire communiquer un DsPIC33F et la PIC24F (liaison SPI ).
    Par contre si j'utilise un PIC32 faudrait t'il revoir tout le code C pour le faire communiquer avec des DsPIC33F de 16bit?
    N'y aurais t-il pas de problème de synchronisations entre les PIC32 et DsPIC33F (différence fréquence, temps de calcul)?
    ET concernant le carte électronique serait t'il possible de faire brassage à vague (mixte CMS/traversante)?

    Désolé ca en fait beaucoup de questions mais c'est surtout la communication PIC32 et DsPIC33F qui est ma priorité.
    Merci

Discussions similaires

  1. Bloquer une colonne dans boucle for , Matlab
    Par magali. dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/07/2010, 02h34
  2. Nombre de µC dans une voiture
    Par alex934mas dans le forum Électronique
    Réponses: 10
    Dernier message: 12/02/2010, 10h21
  3. Langage C : problème dans une boucle
    Par invitedba13d1f dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 25/05/2009, 10h48
  4. calcul de flux magnétique dans une boucle.
    Par invite6041df52 dans le forum Physique
    Réponses: 0
    Dernier message: 21/12/2006, 16h52
  5. Nombre de G dans une centrifugeuse
    Par invite58238e9a dans le forum Astronautique
    Réponses: 4
    Dernier message: 07/09/2006, 15h09
Découvrez nos comparatifs produits sur l'informatique et les technologies.