IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

Utilisation du mode Wait For Interrupt sur STM8L151G6


Sujet :

Embarqué

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Utilisation du mode Wait For Interrupt sur STM8L151G6
    Bonjour,

    Après plusieurs recherches sur internet et lecture des documents constructeur je n'ai pas réussi à mettre en œuvre le mode WFI.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void main(void)
    {
      GPIO_Init(GPIOA, GPIO_Pin_2,GPIO_Mode_Out_PP_Low_Fast); //LED
      GPIO_Init(GPIOD, GPIO_Pin_0, GPIO_Mode_In_FL_IT); // active l'interruption sur PD_0 
      EXTI_SetPinSensitivity(EXTI_Pin_0, EXTI_Trigger_Rising); // detection sur fronty montant
      ITC->ISPR3 &= 0xFE; // règle le niveau de l'interruption
      enableInterrupts(); // Active les interruption de façon général
      CFG->GCR |= CFG_GCR_AL; // Active le mode WFI
      while (1)
      {
      }
    }
    Est ce que quelqu'un à déjà mis en œuvre ce mode ?

    Pouvez-vous m'aider ou me fournir un morceau de code permettant d'enter dans le mode WFI.

    >Merci

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    J'ai fini par trouver la solution qui venez du fait que dans la datasheet, il m'était demandé d’exécuter la commande wfi.

    Cette commande était pour moi inconnue et voulait très certainement dire qu'il fallait positionner le bit AL à 1.

    Après une recherche windows du mot clés wfi dans les bibliothèques ST j'ai fini par trouver une commande de ce type, déclaré d'une façon peu commune.

    Je vous présente donc une solution qui peut-être vous sera utile si vous êtes sur le même micro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    void main(void)
    {
      CLK_SYSCLKSourceSwitchCmd(ENABLE); //active le fait de pouvoir switcher d'horloge
      CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI); //choix de l'horloge
      
      GPIO_Init(GPIOA, GPIO_Pin_2,GPIO_Mode_Out_PP_Low_Fast); //LED rouge
    
      
      GPIO_Init(GPIOD, GPIO_Pin_0, GPIO_Mode_In_FL_IT); // active l'interruption sur PD_0 
      EXTI_SetPinSensitivity(EXTI_Pin_0, EXTI_Trigger_Rising); // detection sur front montant
      
      
      CFG->GCR |= CFG_GCR_AL; // Active le mode WFI*/
      
      enableInterrupts(); // Active les interruption de façon général
      
    
      wfi();
      
      while (1)
      {
        
        
      }
    
    }

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    J'arrive un peu tard.....

    Les bibliothèques ST possèdent en effet des fonctions pour passer en mode de sleep. Je crois que c'est une fonctionnalité du Cortex-M donc on doit retrouver des choses semblables chez les autres fondeurs ou dans les fonctions CMSIS.

    PS : http://infocenter.arm.com/help/index.../BABHHGEB.html --> il y a une instruction ASM pour cela, donc il est simple de refaire une fonction C qui wrappe l'appel assembleur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/04/2010, 11h29
  2. LDAP sur SSL : DAPException: Connection lost waiting for results from
    Par flatplane55 dans le forum Général Java
    Réponses: 0
    Dernier message: 25/03/2010, 16h08
  3. Réponses: 7
    Dernier message: 09/04/2009, 09h34
  4. [VBA] utilisation d'une macro excel 2003 sur excel 2004 for mac
    Par fofika dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/11/2007, 15h30
  5. Curseur en mode wait sur tout un dialogue
    Par poseidon2 dans le forum MFC
    Réponses: 5
    Dernier message: 24/07/2006, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo