Question assembleur PIC18 : DCFSNZ et 3 cycles
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Question assembleur PIC18 : DCFSNZ et 3 cycles



  1. #1
    cyberdalek

    Question assembleur PIC18 : DCFSNZ et 3 cycles


    ------

    Bonjour à tous,

    Je suis toujours sur mon projet de librairie pal pour pic, elle avance bien (elle fonctionne) mais je me heurte à mes limites en ASM PIC18. et je viens vous demander un petit conseil, voire une petite idée/

    J'ai un délais tres serré au niveau des timings, Et j'ai misé sur 2 cycles entre affichage de pixels (pas forcement le plus judicieux).

    J'ai une varaible que je decremente (qui me sert à faire une boucle), et à un moment je la teste, si le resultat est égal à Zéro, je sors de la boucle.

    Voici un exemple
    Code PHP:
    NOP
    NOP
    RLNCF PORTB
    ,f
    DCFSNZ pal_line
    @i,f,c
    GOTO SKIP_LOOP
    RLNCF PORTB
    ,
    LE DCFSNZ car il est suivi d'un GOTO, prends trois cycles, car le GOTO sera remplacé par deux NOP, comme cela est précisé dans le datasheet, c'est donc un fonctionnement normal. Cependant ça me chagrine dans la mesure, ou ce pixel à cet endroit sera plus large que les autres (1 cycle en plus).

    Comme vous le voyez j'ai deux nop (même plus en amont du code) de dispos. Je voudrais savoir avant de derouler la boucle (ce qui fonctionnerait mais augmenterait la taille du code), si quelqu'un n'aurait pas une astuce, un conseil pour qu entre mes des deux RLCNF, je n'ai que deux cycles et sortir de la boucle si ma variable i=0 (apres une decrementation qui peut se faire avant).

    Note : je précise que c'est de l'asm que j'integre sous xc8 via les directives asm.

    Merci à vous pour vos lumières et conseils

    -----

  2. #2
    gcortex

    Re : Question assembleur PIC18 : DCFSNZ et 3 cycles

    Bonjour,

    j'ai pas tout compris, mais l'instruction BRA est + rapide (saut court)

  3. #3
    cyberdalek

    Re : Question assembleur PIC18 : DCFSNZ et 3 cycles

    Salut gcortex,

    Je te remercie. Je me suis souvent posé la question sur les BRA et le goto sachant qu'elles font 2 cycles toutes les deux. Je n'étais pas sûr, tu viens de confirmer ce que j'avais lu autre part

    Mon problème semble intrasèque aux pics18. En fait je souhaiterais (plutôt souhaitait car je me rends à l'evidence ), faire un test de variable (en meme temps ou après une decrementation de celle ci) suivi d'un saut sur une une variable en deux cycles maximum si cette dernière est égale à zéro. Edit : En fait c 'est l'inverse si elle est differente de zéro, le test et le skip doivent faire 2 cycles et le saut peu importe.

    Après relecture du datasheet de mon pic18, et du net, cela me semble impossible car un GOTO (ou un bra tiens sur 2 words)... Ah non, heureusement que je viens de relire le datasheet avant de finir ma répônse, tu viens peut être de me donner la solution...

    Le BRA contrairement au goto ne fait qu'un mot (ça m'avait échappé), Donc il ne sera remplacé que par un seul NOP à l'inverse du GOTO qui lui sera remplacé par 2 NOP (car 2 mots) en cas de skip.

    Ai-je bien compris? Je teste de suite, et te remercie encore.

    Après quand je sors de la boucle, les deux cycles, ce n'est pas un soucis, je suis en fin de ligne
    Dernière modification par cyberdalek ; 25/08/2014 à 15h02.

  4. #4
    gcortex

    Re : Question assembleur PIC18 : DCFSNZ et 3 cycles

    Visiblement tu peux encore gagner un cycle :

    Code:
    DECF
    BZ

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

    Re : Question assembleur PIC18 : DCFSNZ et 3 cycles

    Encore Merci gcortex ,

    ça m'a réduit mon nombre de cycles effectivement (j'ai remplacé d ailleurs un autre GOTO par un BRA).
    Je dois recalculer maintenant mes délais pour prendre en compte, ce temps de gagné et rester synchro

    Code PHP:
    DECF
    BZ 
    Par contre me donne le meme nombre de cycles qu'avec un
    Code PHP:
    DCFSNZ
    BRA 
    Les deux donc me conviennent, et DECF suivi du BZ j'aime bien

Discussions similaires

  1. Pic18 -rs232
    Par asirem dans le forum Électronique
    Réponses: 9
    Dernier message: 07/05/2014, 08h16
  2. Question détection d'un maximum par PIC18
    Par Pilou81 dans le forum Électronique
    Réponses: 10
    Dernier message: 23/07/2010, 07h47
  3. Dérive PIC18
    Par invitee4b44406 dans le forum Électronique
    Réponses: 18
    Dernier message: 12/09/2008, 15h31
  4. pic18 et clef USB
    Par invite91a05f0b dans le forum Électronique
    Réponses: 11
    Dernier message: 05/09/2008, 09h46
  5. programmation PIC18
    Par invite69ee2a36 dans le forum Électronique
    Réponses: 1
    Dernier message: 22/03/2007, 16h39
Découvrez nos comparatifs produits sur l'informatique et les technologies.