adresses pin µC et programmation
Répondre à la discussion
Affichage des résultats 1 à 29 sur 29

adresses pin µC et programmation



  1. #1
    invite15ed96f0

    adresses pin µC et programmation


    ------

    bonjour,

    en pièce jointe j'ai mis ce que me dit ma datasheet (stm32F107) au sujet des adresses pour les pins.

    on y voit que les port A,B,C,D et E ont des plages d'adresses réservé
    par exemple pour A: 0x4001 0800 à 0x4001 0BFFF.

    ma question est:
    puisqu'il y a comme pin de PA0 à PA15 comment connaitre l'adresse de chaque pin?

    Sachant que je programme sur IAR embedded workbench comment je déclar cela? (#define ?)
    si quelqu'un peut me montrer comment faire pour un port, je ferais les autres de la même manière.

    Merci à tous

    -----
    Images attachées Images attachées  

  2. #2
    thundertom

    Re : adresses pin µC et programmation

    Salut,

    si tu connais l'adresse du port, chaque pin est un bit de ladite adresse.

    Ensuite il y a 2 écoles:

    1) ton compilo dispose d'instruction au niveau du bit et tu les utilisent.
    1 bis) ton compilo dispose d'instruction au niveau du bit mais tu ne les utilisent pas pour que ton code soit portable =)
    2) ton compilo ne dispose pas d'instruction au niveau du bit et alors tu passe par des "mask".
    Fabricando fit faber

  3. #3
    invite15ed96f0

    Re : adresses pin µC et programmation

    j'ai trouvé des exemples de programmation et voici ce qu'il est écrit:

    #define GAIN_SETTING_10 *((volatile int32u *)0x4000109Cu)
    #define GAIN_SETTING_10_REG *((volatile int32u *)0x4000109Cu)
    #define GAIN_SETTING_10_ADDR (0x4000109Cu)
    #define GAIN_SETTING_10_RESET (0x00000077u)
    /* RX_MIXER_GAIN_10 field */
    #define GAIN_SETTING_10_RX_MIXER_GAIN_ 10 (0x00000040u)
    #define GAIN_SETTING_10_RX_MIXER_GAIN_ 10_MASK (0x00000040u)
    #define GAIN_SETTING_10_RX_MIXER_GAIN_ 10_BIT (6)
    #define GAIN_SETTING_10_RX_MIXER_GAIN_ 10_BITS (1)
    /* RX_FILTER_GAIN_10 field */
    #define GAIN_SETTING_10_RX_FILTER_GAIN _10 (0x00000030u)
    #define GAIN_SETTING_10_RX_FILTER_GAIN _10_MASK (0x00000030u)
    #define GAIN_SETTING_10_RX_FILTER_GAIN _10_BIT (4)
    #define GAIN_SETTING_10_RX_FILTER_GAIN _10_BITS (2)
    /* RX_IF_GAIN_10 field */
    #define GAIN_SETTING_10_RX_IF_GAIN_10 (0x0000000Fu)
    #define GAIN_SETTING_10_RX_IF_GAIN_10_ MASK (0x0000000Fu)
    #define GAIN_SETTING_10_RX_IF_GAIN_10_ BIT (0)
    #define GAIN_SETTING_10_RX_IF_GAIN_10_ BITS (4)


    je ne sais pas si ce que je viens de mettre est bien dans le sujet, mais je pense que oui.
    Cependant je ne comprend pas comment trouver les adresses.


    prenont un exemple:
    le port A 4 (PA4) est sur la pin 29.
    on peut en déduire quelque chose?

  4. #4
    simon.

    Re : adresses pin µC et programmation

    Il n'y a a priori aucun rapport entre un numéro de pin (29) et la façon de la programmer. L'important c'est : 4 ème sortie du port A.

    Bon, cela dit, les plages reservées pour chacun de tes ports font 1024 octets, ce qui est quand même beaucoup pour un simple port en I/O. Donc ce serait bien que tu lises le chapitre de la doc qui en cause plus précisément. Il doit exister dans ta doc...

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

    Re : adresses pin µC et programmation

    voilà la datacheet de mon µC:
    http://www.mcu-related.com/pdf/Datas...107.prelim.pdf

    je dois surement passer à côté parce que je l'ai déjà lue en entier (enfin presque...)
    peux-tu me dire où se trouve le renseignement stp?

  7. #6
    simon.

    Re : adresses pin µC et programmation

    STM32F10xxx reference manual (RM0008), page 138. Bonne (et longue) lecture...

  8. #7
    invite15ed96f0

    Re : adresses pin µC et programmation

    ok merci, je sent bien que la réponse est pas loin mais quand même un peu...

    peux tu me faire un exemple pour un port, par exemple le port A 4, de façon à ce que je comprenne la méthode à appliquer.

    merci d'avance

  9. #8
    ftorama

    Re : adresses pin µC et programmation

    Citation Envoyé par thundertom Voir le message
    Salut,

    si tu connais l'adresse du port, chaque pin est un bit de ladite adresse.

    Ensuite il y a 2 écoles:

    1) ton compilo dispose d'instruction au niveau du bit et tu les utilisent.
    1 bis) ton compilo dispose d'instruction au niveau du bit mais tu ne les utilisent pas pour que ton code soit portable =)
    2) ton compilo ne dispose pas d'instruction au niveau du bit et alors tu passe par des "mask".
    Mon bon monsieur, nous sommes sur Corte-M3 ici...plus sur des 8 bits

    Deu solutions:
    - tu utilises l'interface CMSIS (Corte Mobile Software Interface Standard) et tu utilises les fonctions de la librairie GPIO. Il faut télécharger la standard peripheral library.
    - tu accèdes directement aux registres hardware et dans ce cas, il faut effectivement se référer au Reference Manual. Tu as plusieurs registres pour ccéder ou configurer les ports, en mode normal ou rapide. Le Reference manual est suffisamment clair et correctement agencé (même si je préfère les User Manual de NXP) pour s'y retrouver

  10. #9
    thundertom

    Re : adresses pin µC et programmation

    Citation Envoyé par ftorama Voir le message
    Mon bon monsieur, nous sommes sur Corte-M3 ici...plus sur des 8 bits
    Autant pour moi j'ai répondu un peu vite =)
    Fabricando fit faber

  11. #10
    ftorama

    R

    Citation Envoyé par thundertom Voir le message
    Autant pour moi j'ai répondu un peu vite =)
    Surtout que les ARM ont une logique de pilotage des GPIO un peu spéciale.

    Sur ARM7, tu as un registre pour mettre les bits à 1 et un autre pour mettre les bits à 0

    Sur Corte-M3, les bits de poids faible du registre permettent de mettre les bits à 1 et les poids forts de les mettre à 1 (ou l'inverse, je ne sais plus )

    ça peut paraitre bizarre et déconcertant, mais c'est très pratique, et ça évite de faire un masquage en plus de permettre de grapiller une instruction

  12. #11
    invite15ed96f0

    Re : adresses pin µC et programmation

    Citation Envoyé par ftorama Voir le message
    Mon bon monsieur, nous sommes sur Corte-M3 ici...plus sur des 8 bits

    Deu solutions:
    - tu utilises l'interface CMSIS (Corte Mobile Software Interface Standard) et tu utilises les fonctions de la librairie GPIO. Il faut télécharger la standard peripheral library.
    - tu accèdes directement aux registres hardware et dans ce cas, il faut effectivement se référer au Reference Manual. Tu as plusieurs registres pour ccéder ou configurer les ports, en mode normal ou rapide. Le Reference manual est suffisamment clair et correctement agencé (même si je préfère les User Manual de NXP) pour s'y retrouver

    est-ce qu'il existe des configuration register déjà fait qui peuvent correspondre à mon µC (stm32f107)
    J'aimerais juste configurer quelques port afin de recevoir des données et pouvoir les écrires dans un fichier. J'ai une acquisition à faire mais bon c'est juste un booléen. Bref pas énorme mais je nage complètement dans la configuration.

  13. #12
    ftorama

    Re : adresses pin µC et programmation

    Citation Envoyé par marcus112 Voir le message
    est-ce qu'il existe des configuration register déjà fait qui peuvent correspondre à mon µC (stm32f107)
    J'aimerais juste configurer quelques port afin de recevoir des données et pouvoir les écrires dans un fichier. J'ai une acquisition à faire mais bon c'est juste un booléen. Bref pas énorme mais je nage complètement dans la configuration.
    Télécharge la Standard Peripheral Library:
    http://www.st.com/internet/com/SOFTW...periph_lib.zip

    La définition des ports est dans:
    STM32F10x_StdPeriph_Lib_V3.3.0 \Libraries\CMSIS\CM3\DeviceSup port\ST\STM32F10x\stm32f10x.h

  14. #13
    invite15ed96f0

    Re : adresses pin µC et programmation

    tout d'abord merci beaucoup de ton aide, je sens qu'il manque peu de chose pour que ça marche nickel.

    voilà ce que j'ai fait:
    - j'ai ouvert stm32f10x.h et ils m'ont afficher une erreur en me disant qu'il fallait que je choisisse mon device. J'ai donc ouvert le fichier et j'ai choisi le dernier Connectivity line devices en espérant que ce soit ça:
    /* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */
    /* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */
    /* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */
    /* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */
    /* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */
    /* #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */
    /* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */
    #define STM32F10X_CL /*!< STM32F10X_CL: STM32 Connectivity line devices */

    -ensuite ils m'ont demandé d'ajouter core_cm3.h, ce que j'ai trouvé ici:
    STM32F10x_StdPeriph_Lib_V3.5.0 \Libraries\CMSIS\CM3\CoreSuppo rt

    maintenant que j'essaye de compilé ils me disent pas mal d'erreur (6, mais ça doit être la même répétée), j'ai mis un imprime écran de mon compileur avec les erreurs. ça évitera d'être trop lourd...

    Une idée de comment résoudre cela???
    merci encore

  15. #14
    invite15ed96f0

    Re : adresses pin µC et programmation

    bon j'arrive pas à mettre mon image donc je vais être lourd...

    Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __REV16(unsigned long)" (declared at line 173 of C:\Program Files\IAR Systems\Embedded Workbench 6.0 Evaluation\arm\inc\c\core_cm3. h 1124


    et quand je vais à l'erreur voilà ce qu'il y a:
    extern uint32_t __REV16(uint16_t value);

    /**
    * @brief Reverse bit order of value
    *
    * @param value value to reverse
    * @return reversed value
    *
    * Reverse bit order of value
    */

    même question comment faire? et qu'est-ce que ça veut dire?

  16. #15
    invite15ed96f0

    Re : adresses pin µC et programmation

    il y a aussi une erreur qui n'as rien à voir avec les 4 autres (j'en ai résolue une, il manquait un .h)

    ils me disent:
    Error[Ta041]: Cannot call intrinsic function "__DSB" from Thumb mode in this architecture. C:\Program Files\IAR Systems\Embedded Workbench 6.0 Evaluation\arm\inc\c\core_cm3. h 1724


    et l'endroit c'est:
    static __INLINE void NVIC_SystemReset(void)
    {
    SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) |
    (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
    SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */
    __DSB(); /* Ensure completion of memory access */
    while(1); /* wait until reset */
    }


    si quelqu'un peut résoudre cela, il est le bienvenue...

  17. #16
    ftorama

    Re : adresses pin µC et programmation

    Avec IAR, tu dois avoir des exemples...Reprends-en un et adapte-le.

    Sinon, je te mets en pièce jointe un programme de clignotement de led.

    Je l'ai utilisé sur un STM32F103ZET6 et de mémoire (j'ai fait ça il y a plus de 6 mois), le "stm32f10x.h" a été modifié pour s'adapter à mon micro. Le passage au tien ne devrait pas poser de problèmes, quitte à refaire une vérification des périphériques.

    Il a été compilé sous Codesourcery G++ Lite
    Fichiers attachés Fichiers attachés

  18. #17
    invite15ed96f0

    Red face Re : adresses pin µC et programmation

    merci de ta réponse mais je pense qu'en faisant ce que tu me propose on s'éloigne de ma solution...

    les µC sont très différents dans l'adressage des pins entre le stm32F103, le stm32F105, le stm32F107 etc...

    ce qui par conséquent fait que si je prend un autre exemple ça ne pourra pas m'aider puisque rien n'est pareil.

    C'est pourquoi je pense que résoudre ces 2 types d'erreurs serait plus facil...


    pour la première erreur:
    extern uint32_t __REV16(uint16_t value);

    je sais pas si de mettre les parties qui posent problème en commentaire règlerais vraiment le problème. D'un côté oui puisque ça me dirait 0 erreur mais est-ce que ça pourrais fonctionner ???

    pour la 2ème:
    __DSB, je sais pas qui c'est et ce qu'il fait.
    Thumb mode c'est quoi? qui ? pourquoi? a quel heure?
    intrinsec pour une fonction ça veut dire quoi? Pourquoi il peut pas l'appeler?

  19. #18
    ftorama

    Re : adresses pin µC et programmation

    Citation Envoyé par marcus112 Voir le message
    merci de ta réponse mais je pense qu'en faisant ce que tu me propose on s'éloigne de ma solution...

    les µC sont très différents dans l'adressage des pins entre le stm32F103, le stm32F105, le stm32F107 etc...

    ce qui par conséquent fait que si je prend un autre exemple ça ne pourra pas m'aider puisque rien n'est pareil.

    C'est pourquoi je pense que résoudre ces 2 types d'erreurs serait plus facil...
    Alors là, je veux bien que tu m'expliques les différences....les STM32F101, 102, 103, 105 et 107 partagent le même Reference Manual, comprenant la map mémoire, ainsi que le contrôle des GPIO....

    A mon avis, tu fais fausse route, et dans les grandes largeurs

    Arrête de faire et de dire n'importe quoi...compile mon exemple, et on en reparle

  20. #19
    invite15ed96f0

    Re : adresses pin µC et programmation

    ne le prend pas mal, j'expose un avis qui me semble cohérent c'est pourquoi on en parle. J'ai le droit de me tromper comme tout le monde, ou d'être à côté de la plaque.

  21. #20
    ftorama

    Re : adresses pin µC et programmation

    Citation Envoyé par marcus112 Voir le message
    ne le prend pas mal, j'expose un avis qui me semble cohérent c'est pourquoi on en parle. J'ai le droit de me tromper comme tout le monde, ou d'être à côté de la plaque.
    Ce n'est pas un avis que tu as exprimé, je te cite:
    les µC sont très différents dans l'adressage des pins entre le stm32F103, le stm32F105, le stm32F107 etc...
    Tu affirmes une chose fausse, et tu t'enfonces dans ton erreur, quitte à raconter des aneries, te planter et induire d'autres lecteurs en erreur.

    Bref, respire un grand coup, fais le vide, et teste-moi cet exemple...et on en reparle

  22. #21
    invite15ed96f0

    Re : adresses pin µC et programmation

    j'attend la validation de ton fichier zip et je le fait en suivant...

  23. #22
    invite15ed96f0

    Re : adresses pin µC et programmation

    je viens de voir ton code. Je ne peux pas le compilé il me dit qu'il y a une erreur mais dans tous les cas je ne pourrais pas le tester car je n'ai pas les led (qui devait être sur une eval board).

    Cependant si tous les ports sont bien configurer je devrais pouvoir faire un test simple car je possède un bouton qui est sur le port PA4.
    Donc afin de pouvoir faire un test, peux tu me dire comment écrire une boucle simple avec ce que tu m'as donné, l'idée c'est ça:

    int main(void)
    {

    if(PA4 = TRUE);
    {
    transfert();
    }

    return 0;
    }

    la fonction transfert existe (elle marche, je l'ai crée) et le TRUE signifie qu'on appuie sur le bouton.
    J'ai fouillé dans le stm32f10x.h et je ne sait pas comment faire pour donner cette consigne...

    merci encore de ton aide.

  24. #23
    invite15ed96f0

    Re : adresses pin µC et programmation

    j'ai aussi remarqué que le stm32f10x.h qu'il y a dans le fichier Zip est une version 2.0 alors que celui que tu m'as passé dans la standard peripheral librairy est une version 3.5.0.
    Est-ce que c'est la même chose en mieux?
    ça change quelque chose pour l'utilisation des ports?

  25. #24
    ftorama

    Re : adresses pin µC et programmation

    Quelle est l'erreur générée par mon code?

  26. #25
    invite15ed96f0

    Re : adresses pin µC et programmation

    Error[Pe065]: expected a ";" 1_GPIO\blinky.c 27

    unsigned int * myvectors[4]
    __attribute__ ((section("vectors")))= {
    (unsigned int *) STACK_TOP,
    (unsigned int *) main,
    (unsigned int *) nmi_handler,
    (unsigned int *) hardfault_handler
    };

    sur la deuxième ligne...

  27. #26
    ftorama

    Re : adresses pin µC et programmation

    Ton compilateur n'est pas basé sur Gcc, il ne connait pas "__attribute__".

    Tu n'as pas des exemples avec?

    ça me parait insensé quand même...surtout au prix ou il doit être

  28. #27
    invite15ed96f0

    Re : adresses pin µC et programmation

    j'ai pas mal d'exemple, qui font plein de truc que je ne saisi pas.
    Dans cette masse je en trouve pas les réponses aux questions que j'ai posé à 14h40 et 14h22...

  29. #28
    invite15ed96f0

    Re : adresses pin µC et programmation

    dans l'ensemble de mes exemples fourni avec IAR embedded workbench j'ai zippé (un ancien .rar renommé en .zip) ceux qui me semble le plus cohérent.
    Dedans on peut y trouver un dossier avec marqué GPIO.

    je pense que ce que tu me demande de chercher est la dedans...
    si t'arrive à trouver comment utiliser un port en tant que consigne merci de me le dire.
    Fichiers attachés Fichiers attachés

  30. #29
    invite15ed96f0

    Re : adresses pin µC et programmation

    j'ai trouvé, dans les exemples il fallait tout prendre et tout recopié rien que pour pouvoir initialisé un port.

    c'était dans stm32f10x_gpio.c

Discussions similaires

  1. pin programmation du PIC
    Par invite093a0297 dans le forum Électronique
    Réponses: 14
    Dernier message: 03/05/2011, 07h36
  2. Photos ? Pin d'alep ou Pin parasol ?
    Par sanglap dans le forum Identification des espèces animales ou végétales
    Réponses: 8
    Dernier message: 19/04/2010, 10h42
  3. [Adresses IP] - Classe D
    Par Tom-Tom dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 30/03/2008, 15h25
  4. Photo d'un pin ? Mais quel type de pin ?
    Par sanglap dans le forum Biologie
    Réponses: 2
    Dernier message: 25/03/2007, 12h05
Découvrez nos comparatifs produits sur l'informatique et les technologies.