programmation en C du 30F4013
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

programmation en C du 30F4013



  1. #1
    invitec35bc9ea

    Arrow programmation en C du 30F4013


    ------

    bonsoir,
    j'aurais besoin de votre aide.
    j'aimerais transcrire un un programme en C dans un dspic, le 30F4013. la programmation des 30F etant afferentes de celle des 16F (d'apres ce que j'ai pu voir). celà s'annonce ardu. voici "l'algorithme" (ce n'en est pas vraiment au) que je voudrais que le uC execute:
    Code:
    si (B=1)
    {
      tant que (C<00100)
      {
         accelerer brushless;
      }
      dès que (c=00100)
      {
        maintenir vitesse brushless;
      }
    }
    
    
    
    tant que (D < A)
    {
      F=0;
      maintien position servos;
    }
    
    
    
    dès que (D=A)
    {
      tant que (G<1011010)
      {
        incliner servos à 135;
      }
      dès que(G=1011010)
      {
        maintenir servos à 90°;
        F=E;
      }
    }
    
    
    
    si (F=0) alors {} sinon {};//mode auto ou semi-auto
    
    
    
    si (J=1)
    {
      F=0;
      tant que(G>0000000)
      {
        servos à 45°;
      }
      dès que(G=0000000)
      {
        servos à 90°;
        si(D>A)
        {
          decelerer brushless;
        }
        sinon
        {
          accelerer brushless;
        }
      }
    }
    sinon
    {
      tant que (C=00000)
      {
        accelerer brushless;
      }
      dès que (c=00100)
      {
        maintenir vitesse brushless;
      }
      tant que (G<1011010)
      {
        incliner servos à 135;
      }
      dès que(G=1011010)
      {
        maintenir servos à 90°;
        F=E;
      }
    }
    si (B=0)
    {
      F=0;
      tant que(G>0000000)
      {
        servos à 45°;
      }
      dès que(G=0000000)
      {
        servos à 90°;
        si(D>A)
        {
          decelerer brushless;
        }
        sinon
        {
          si(D>0)
          {
            maintenir vitesse brushless;
          }
          sinon
          {
            decelerer brushless jusqu'à arret;
          }
        }
      }
    }
    à terme la position des servo devrait etre commandée elle aussi par une coucle if, mais mais avant, il faudrait que ce que je viens de citer fonctionne.
    les variables que j'ai cité sont des valeurs de capteurs, expoitée ou bien telles quelle, ou bien apres traitement de la trame.
    [QUOTE]A: 8 bits
    B: 1 bit
    C: 5 bits
    D: 8 bits
    E: 1 bit
    F: 1 bit
    G,H,I: 7bits
    J: 1 bit[QUOTE]
    l'un de vous pourrait-il m'indiquer les premier pas à faire? et l'architecture generique d'un tel programme en C pour dspic?
    merci

    -----

  2. #2
    invitec35bc9ea

    Re : programmation en C du 30F4013

    bonjour,
    pour commencer, je voudrais faire ceci:
    Code:
    si (B=1)
    {
      tant que (C<00100)
      {
         accelerer brushless;
      }
      dès que (c=00100)
      {
        maintenir vitesse brushless;
      }
    }
    
    
    
    tant que (D < A)
    {
      F=0;
      maintien position servos;
    }
    
    
    
    dès que (D=A)
    {
      si(D>A)
      {
        decelerer brushless;
      }
      sinon
      {
        accelerer brushless;
      }
    }
    
    
        
    
    sinon
    {
        si(D>A)
        {
          decelerer brushless;
        }
        sinon
        {
          si(D>0)
          {
            maintenir vitesse brushless;
          }
          sinon
          {
            decelerer brushless jusqu'à arret;
          }
        }
    }
    PS:"maintien position servos", est une fonction à part entiere, je la detaillerais plus tard.
    merci

  3. #3
    RISC

    Re : programmation en C du 30F4013

    Einstein,

    J'imagine que tu vas utiliser le compilateur C30 ?
    Je pense que tu devrais examiner les notes d'applications pour mieux comprendre comment initialiser ton dsPIC30F4013 :
    http://www.microchip.com/stellent/id...octype=AppNote

    Des examples de code :
    http://www.microchip.com/stellent/id...GE&nodeId=2509

    a+

  4. #4
    invitec35bc9ea

    Re : programmation en C du 30F4013

    merci CISC, euh RISC!
    J'imagine que tu vas utiliser le compilateur C30 ?
    je pensais plutot utiliser MicroC, vu qu'il est fourni avec l'easy dspic.
    quelquechose vient de me chiffonner, 30Fxxxx, ça veut dire que j'ai 30 bits non?
    si tel est le cas alors j'ai alloué plus de bits que le uC n'en a, à savoir 46. vous confirmez?

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

    Re : programmation en C du 30F4013

    Citation Envoyé par einstein Voir le message
    merci CISC, euh RISC!

    je pensais plutot utiliser MicroC, vu qu'il est fourni avec l'easy dspic.
    quelquechose vient de me chiffonner, 30Fxxxx, ça veut dire que j'ai 30 bits non?
    si tel est le cas alors j'ai alloué plus de bits que le uC n'en a, à savoir 46. vous confirmez?
    Salut,

    la famille dsPIC 30Fxxx comme la famille 24Fxxx constitue l'offre 16 bits de chez Microchip, le coeur est le même pour les 2 et, est organisé comme suit:

    1/ 16 registres de travail sur 16 bits (W0~W15)
    2/ 2 accumulateurs sur 40 bits (ACCA et ACCB).
    3/ 1 compteur de programme sur 23 bits.
    4/ 1 registre de status sur 16 bits.
    5/ La mémoire de données (RAM) organisée sur 16bits.
    6/ La mémoire de programme organisée sur 24 bits.

    7/ 84 instructions (mot de 24bits) dont 4 instructions sont sur 2 mots.

    Certaines particularités d'emplois sont réservés aux dsPIC notamment pour l'usage des 2 Accumulateurs et des fonctions directements liées aux traitements des calculs.

    Comme pour la famille 16Fxxx, le 16 ne signifie pas 16 bits, pas plus que 24Fxxx 24 bits ou 30Fxxx 30 bits.
    Ce sont des désignations commerciales qui permettent de pouvoir intercaler des familles si besoin, comme ce fut le cas avec les 17Fxxx, 18Fxxx.
    @+

  7. #6
    invite5637435c

    Re : programmation en C du 30F4013

    Ton application ne requiert que du 8 bits visiblement, tu pourrais donc conserver un PIC16F6xx ou 16F8xx.
    Pourquoi veux-tu utiliser des µC 16 bits?

    @+

  8. #7
    invitec35bc9ea

    Re : programmation en C du 30F4013

    bonsoir HULK,
    il y a d'autres bouts de programmes qui vont venir se greffer au fur et à mesure. par ailleur, le choix du uC n'est pas le mien. il est imposé.
    ce que je n'arrive pas à comprendre:
    chaque patte correspond à un registre non?
    d'apres la doc, il y en a 30 (RA11, RB0-12, RC13-15, RD0-3 8-9, RF0-6) repartis sur 5 ports. ce que tu me dis c'est que dans chqque registre on peut avoir un mot de 16 bits?

  9. #8
    invitec35bc9ea

    Re : programmation en C du 30F4013

    EDIT:l'application que je dois developper ne necessite pas de dspic, mais apparemment d'autres personnes en ont besoin . et aulieu de mettre plusieurs pics, le choix fut de n'en mettre qu'un, surlequel tout le monde travaillerait

  10. #9
    invitec35bc9ea

    Re : programmation en C du 30F4013

    ce que je n'arrive pas à comprendre:
    chaque patte correspond à un registre non?
    d'apres la doc, il y en a 30 (RA11, RB0-12, RC13-15, RD0-3 8-9, RF0-6) repartis sur 5 ports. ce que tu me dis c'est que dans chqque registre on peut avoir un mot de 16 bits?
    j'ai dit une grosse co***rie
    d'apres le datasheet,PORTA, PORTB, PORTC, PORTD et PORTF sont bien à 16 bits, mais n'ont pas tous les bits actif comme A qui n'a d'actif que A11, ce qui fait pour tout 30bits, est ce que je me trompe?

  11. #10
    RISC

    Re : programmation en C du 30F4013

    Einstein,

    J'ai vu plus haut tes doutes sur le nombre de bits de l'architecture auquel Jack t'a donné une explication claire.
    La dénomination des PIC n'a rien à voir avec la taille du bus de donnée interne.
    Les PIC10Fxxx, PIC12Fxxx, PIC16Fxxx, PIC18Fxxx sont des microcontrôleurs 8 bits.
    Les PIC24Fxxxx, PIC24Hxxx, dsPIC30Fxxxx, dsPIC33Fxxx sont des microcontrôleurs 16 bits.

    Pour t'aider à mieux cerner l'architecture des 16 bits et notamment les dsPIC30, je te conseille les "WEB seminars" qui sont des cours en ligne que tu peux télécharger ici : http://techtrain.microchip.com/webse...QuickList.aspx

    J'y ai eu recours plusieurs fois. Avec le commentaire audio ca permet de comprendre mieux qu'en lisant la doc...

    a+

  12. #11
    Jack
    Modérateur

    Re : programmation en C du 30F4013

    J'ai vu plus haut tes doutes sur le nombre de bits de l'architecture auquel Jack t'a donné une explication claire.
    Rendons à Hulk ce qui appartient à Hulk, c'était hulk28 qui est à l'origine de ces précisions.

    A+

  13. #12
    RISC

    Re : programmation en C du 30F4013

    Mea culpa Hulk

  14. #13
    invite5637435c

    Re : programmation en C du 30F4013

    Je voulais t'envoyer de la lecture ce matin mais le serveur visiblement est HS à partir de 5h.

    Bon les voilà, ça te permettra d'y voir un peu plus clair sur cette famille.


    @+
    Images attachées Images attachées

  15. #14
    invite5637435c

    Re : programmation en C du 30F4013

    Ici des documents sur le C orienté dsPIC.
    Fichiers attachés Fichiers attachés

  16. #15
    invite5637435c

    Re : programmation en C du 30F4013

    Citation Envoyé par RISC Voir le message
    Mea culpa Hulk
    C'est un honneur d'être confondu avec Jack.

  17. #16
    invite5637435c

    Re : programmation en C du 30F4013

    Un petit dernier que j'avais oublié.
    @+
    Images attachées Images attachées

  18. #17
    invitec35bc9ea

    Re : programmation en C du 30F4013

    merci à tous. j'epluche tout ça et je vous tiens au courant.

  19. #18
    invitec35bc9ea

    Re : programmation en C du 30F4013

    bonjour,
    ce typon, convient-il à une utilisation du 30F4013, il comporte un quartz et une alim.?
    merci
    Images attachées Images attachées

  20. #19
    invitec35bc9ea

    Re : programmation en C du 30F4013

    bonsoir,
    d'apres la doc:
    Registres de travail :
    Ils sont au nombre de 16 et ont une taille de 16 bits. Ils sont nommés W0 à W15 et correspondent aux 16
    premières cases de la mémoire RAM (adresses 0x0000 à 0x001E). Chacun de ces registres peut être
    utilisé pour mémoriser une donnée 16 bits ou pointer une variable en RAM.
    d'apres cette meme doc, quand il donne des exemples de programme, il utilise A,B,C,D,E,etF, pour designer des registres (TRISB...). or d'apres le datasheet, ces ports sont au nombre de 6(A,B,C,D,E,etF) et non 16. ceci implique une seule chose, j'ai mal compris la notion. pourriez vous m'eclairer? merci.

  21. #20
    invitec35bc9ea

    Re : programmation en C du 30F4013

    ce que j'ai remarqué c'est que comparé aux PICs, il y a tjrs TRIS mais plus de PORT mais TAB

  22. #21
    invitec35bc9ea

    Re : programmation en C du 30F4013

    un petit up

Discussions similaires

  1. programmation
    Par invite70772835 dans le forum Électronique
    Réponses: 0
    Dernier message: 01/05/2007, 20h03
  2. programmation
    Par invite70772835 dans le forum Électronique
    Réponses: 5
    Dernier message: 06/04/2007, 18h22
  3. programmation c
    Par invitefbbbadb6 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 02/10/2006, 17h29
  4. Programmation en C
    Par invite3c59dc04 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 21/02/2006, 14h23
  5. programmation
    Par invite3d7be5ae dans le forum Logiciel - Software - Open Source
    Réponses: 15
    Dernier message: 30/06/2005, 21h45
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...