Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



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

PIC10F200 Filtre RC numérique

  1. Cromos

    Date d'inscription
    juin 2016
    Messages
    1

    PIC10F200 Filtre RC numérique

    Bonjour,

    Cahier des charges:
    PIC10F200
    Mesurer le rapport cyclique d'un signal binaire en ASM

    La formule du rapport cyclique comprend une divsion, ce qui est très lent en asm.
    Solution faire la moyenne à l'aide d'un passe bas numérique.

    Or mon problème c'est que je ne sais comment faire cela.

    Merci d'avance pour vos réponses.

    Cromos

    -----

     


    • Publicité



  2. micka_ch

    Date d'inscription
    octobre 2010
    Localisation
    Vicques (CH)
    Messages
    214

    Re : PIC10F200 Filtre RC numérique

    Bonjour,

    Une version simple du passe-bas numérique : y[n]=ax[n]+(1-a)y[n-1] , avec a < 1.

    Dans ton cas il faut travailler en virgule fixe bien-sure.

    Salutations
     

  3. antek

    Date d'inscription
    février 2015
    Messages
    8 747

    Re : PIC10F200 Filtre RC numérique

    Citation Envoyé par Cromos Voir le message
    La formule du rapport cyclique comprend une divsion, ce qui est très lent en asm.
    A la louche, une dizaine d'instructions !
     

  4. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    75
    Messages
    63 722

    Re : PIC10F200 Filtre RC numérique

    Citation Envoyé par Cromos Voir le message
    La formule du rapport cyclique comprend une divsion, ce qui est très lent en asm.
    ????????
    L'ASM, c'est la programmation qui s’exécute le plus rapidement sur un µC car c'est du langage machine : Une ligne ASM = Une instruction µC
    Dernière modification par DAUDET78 ; 23/12/2017 à 19h11.
    Je suis en vacances jusqu'au 2 février
     

  5. Jack

    Date d'inscription
    avril 2003
    Localisation
    Metz
    Messages
    16 224

    Re : PIC10F200 Filtre RC numérique

    Le monsieur voulait dire qu'il voulait éviter la division car c'est l'instruction la plus lente.
     


    • Publicité



  6. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    75
    Messages
    63 722

    Re : PIC10F200 Filtre RC numérique

    Citation Envoyé par Jack Voir le message
    Le monsieur voulait dire qu'il voulait éviter la division car c'est l'instruction la plus lente.
    Pour calculer un ratio, cela me semble difficile ....
    Ou alors, on mesure la valeur moyenne analogique ... ce qui est encore plus lent .
    Dernière modification par DAUDET78 ; 23/12/2017 à 21h28.
    Je suis en vacances jusqu'au 2 février
     

  7. herrmattoon

    Date d'inscription
    janvier 2010
    Localisation
    VS/Suisse
    Âge
    35
    Messages
    80

    Re : PIC10F200 Filtre RC numérique

    Bonjour,

    Si tu peux acquérir 2^n valeurs pour en calculer la moyenne ça peut se faire en additionnant les 2^n valeurs, puis en décalant les bits du résultat de n vers la droite. C'est une manière simple et rapide de diviser par une puissance de deux / de calculer une moyenne sans utiliser "d'instruction de division".

    Cordialement,

    Herrmattoon
     

  8. herrmattoon

    Date d'inscription
    janvier 2010
    Localisation
    VS/Suisse
    Âge
    35
    Messages
    80

    Re : PIC10F200 Filtre RC numérique

    J'oubliais : une instruction de décalage à droite de une position prend une instruction, si tu divises par 16 disons, ça prendra 4 instructions, par 32 -> 5, etc.

    Bonne chance et BONNE ANNEE!
     

  9. PA5CAL

    Date d'inscription
    décembre 2005
    Localisation
    Paris
    Âge
    52
    Messages
    11 740

    Re : PIC10F200 Filtre RC numérique

    En principe, on effectue la division par 2n sur une variable occupant plus d'un octet, et le nombre d'octets nécessaire pour stocker le résultat est parfois inférieur à celui de la valeur de départ.

    Dans ce cas, il est parfois possible d'optimiser l'opération. Par exemple pour une valeur occupant 16 bits, il faut :
    - 2 décalages à droite pour réaliser une division par 2
    - 4 décalages à droite pour réaliser une division par 4
    - 6 décalages à droite pour réaliser une division par 8
    - 8 décalages à droite pour réaliser une division par 16
    - 9 décalages à gauche pour réaliser une division par 32 (1)
    - 6 décalages à gauche pour réaliser une division par 64 (1)
    - 3 décalages à gauche pour réaliser une division par 128 (1)
    - rien pour la division par 256, qui est implicite (2)

    S'il est prévu que le résultat précédent occupe systématiquement 8 bits (cas du calcul d'une moyenne de valeurs sur 8 bits, par exemple), alors il faut :
    - 2 décalages à droite pour réaliser une division par 2
    - 4 décalages à droite pour réaliser une division par 4
    - 6 décalages à droite pour réaliser une division par 8
    - 8 décalages à droite pour réaliser une division par 16
    - 6 décalages à gauche pour réaliser une division par 32 (3)
    - 4 décalages à gauche pour réaliser une division par 64 (3)
    - 2 décalages à gauche pour réaliser une division par 128 (3)
    - rien pour la division par 256, qui est implicite (2)


    (1) : en réalisant un décalage à gauche des bits des deux registres 8 bits de départ vers un troisième registre de 8 bits, on obtient plus rapidement le résultat, stocké dans le deuxième et le troisième registre.
    (2) : il suffit de considérer le second registre de 8 bits (poids fort) isolément pour obtenir le résultat recherché.
    (3) : le résultat se retrouvant entièrement dans le second registre de 8 bits (poids fort de la valeur de départ), il n'est pas nécessaire de passer par un troisième registre pour mener l'opération.
     

  10. herrmattoon

    Date d'inscription
    janvier 2010
    Localisation
    VS/Suisse
    Âge
    35
    Messages
    80

    Re : PIC10F200 Filtre RC numérique

    En principe, on effectue la division par 2n sur une variable occupant plus d'un octet, et le nombre d'octets nécessaire pour stocker le résultat est parfois inférieur à celui de la valeur de départ.

    Dans ce cas, il est parfois possible d'optimiser l'opération. Par exemple pour une valeur occupant 16 bits, il faut :
    - 2 décalages à droite pour réaliser une division par 2
    Bonjour PA5CAL,

    Serait-il possible d'expliquer plus en détail cette affirmation? Ce n'est pas vraiment l'objet de ce post, je suis pourtant curieux d'apprendre quel tour de passe-passe se cache derrière ça

    Meilleures salutations,

    Herrmattoon
     

  11. jiherve

    Date d'inscription
    juin 2006
    Localisation
    gironde
    Âge
    65
    Messages
    15 389

    Re : PIC10F200 Filtre RC numérique

    Bonsoir,
    pour diviser par 2 une valeur codée sur 16bits sur un micro 8bits qui ne sait décaler que d'une place il faut décaler l'octet MSB, récupérer la carry et décaler alors carry et byte LSB en charabia ATMEL avec la valeur 16bits contenue dans r0,r1 et r1 contenant le MSB
    LSR r1;
    ROR r0;
    il y a bien deux décalages.
    Bien sur avec un µC 16 bits ou plus un seul décalage suffit ce d'autant plus si le µc sait décaler de plus d'une position en une instruction.
    Ceci dit une division avec un bon algo cela va tout de même assez vite , moins de 60µs pour une 32*32 (16.16/16.16)sur un Atmega 328 @16Mhz environ 860 cycles.
    JR
    l'électronique c'est pas du vaudou!
     


    • Publicité







Sur le même thème :


    301 Moved Permanently

    301 Moved Permanently


    nginx/1.2.1



 

Discussions similaires

  1. Filtre numérique
    Par Che57 dans le forum Électronique
    Réponses: 3
    Dernier message: 01/11/2011, 19h12
  2. filtre numérique RIF
    Par fannym02 dans le forum Électronique
    Réponses: 2
    Dernier message: 18/05/2010, 09h15
  3. Filtre numérique
    Par Late dans le forum Physique
    Réponses: 16
    Dernier message: 15/09/2009, 09h49
  4. [Débutant] Problème programmation PIC10F200
    Par GroRelou dans le forum Électronique
    Réponses: 3
    Dernier message: 23/12/2008, 11h18
  5. Filtre numérique
    Par Rodrigue dans le forum Électronique
    Réponses: 1
    Dernier message: 11/03/2006, 11h53