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 :

Probleme de timer [STM32]


Sujet :

Embarqué

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Par défaut Probleme de timer
    Bonjour,

    Pour la realisation de mon projet j'ai besoin d'envoyer des donnees par liaison radio a un certain intervalle de temps, et en meme temps de stocker ces donnees sur une carte SD.

    Pour gerer la communication radio j'ai un module connecte a mon uC via UART et pour le stockage de donnees j'ai un lecteur de carte connecte en SPI.

    J'envoie les donnees sur l'uart toutes les minutes. Et j'aimerais par exemple stocker les donnees sur ma carte SD toutes les 10 secondes.

    Cependant, le code que j'ai actuellement me "bloque" a chaque fois que j'attends une minute pour renvoyer sur l'uart, je ne peux rien faire d'autre en meme temps.

    Voici en gros comment j'ai code cela:
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    machine_SD_write(FALSE,mot_sd_2,nom_fichier);	//ecrit les donnees dans la carte SD
    sigfox_send_frame(lat_rmc,long_rmc,gps_datas.altitude,temp1);	//envoie les donnees sur l'uart

    Dans la fonction sigfox_send_frame(...), j'ai mis un delay a la fin:

    Le probleme c'est que ce delai s'applique egalement pour l'envoie des donnees sur ma carte SD, comment faire pour que je puisse ecrire toutes les 10 secondes des donnees sur la carte SD et que dans le meme temps, les donnees soient envoyees sur l'uart toutes les minutes?

    Merci

  2. #2
    Membre expérimenté Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Par défaut
    Bonjour,

    Tu travailles sur un processeur mono tache rien ne sera jamais simultané.

    Quel est l’intérêt d’écrire la même information toutes les 10 secondes ?
    Ensuite tu peux regarder du coté des threads qui pourra surement répondre à ta question. Un thread qui s'occupe de la SD card un second qui envoie les données sur l'UART.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Par défaut
    Salut,

    Quel est l’intérêt d’écrire la même information toutes les 10 secondes ?
    Les informations changent environ toutes les 1 seconde, donc les donnees changent d'ou l'interet de les recolter regulierement.

    Je me suis un peu renseigne sur les timer et les interruptions, est ce que ca a quelque chose a voir avec les thread?

  4. #4
    Membre expérimenté Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Par défaut
    En répondant simplement :

    Ça va se "ressembler",

    Mais tu as raison le timer plus interruption sera plus adaptée avec les infos que tu nous as données (se déclenche tous les xxx unité de temps)
    Thread ca sera un delay pour la gestion du temps (mais qui pourra durer des fois moins des fois plus de temps, dépend de beaucoup de paramétrés).

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Par défaut
    Ok tres bien je vais partir sur une interruption timer, le truc c'est que je sais pas du tout comment ca fonctionne ahah

    Je suppose que je dois l'initialiser au debut de mon projet avec STM32CubeMX, mais je ne sais pas quels parametres choisir:
    Nom : timer2.jpg
Affichages : 1943
Taille : 60,8 Ko

    Et du coup je dois utiliser 2 timers, un pour uart et un pour spi?

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 265
    Par défaut
    Salut,
    En effet le mieux c'est d'utiliser:
    - un timer,
    - de le régler (prescaler, compter/décompter,...)
    - de déclencher une interruption lors d'un événement du timer (débordements, atteinte d'une certaine valeur)

    Grosso modo c'est ça maintenant il y a des Timer qui sont très chiadés dans le sens où on peut faire des configurations très poussées. J'en ai vu où le débordements du timer peut lancer, avec le bon réglage, une interruption de l'ADC au quel tout se fait tout seul.

    Tu peux très bien faire tout avec un seul timer par exemple en comptant les débordements.

    Exemple 3 débordements = on cause avec le module SigFox et au 5eme débordements on cause avec la carte mémoire.

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

Discussions similaires

  1. Probleme de Timer
    Par Uren dans le forum MATLAB
    Réponses: 3
    Dernier message: 09/02/2011, 12h27
  2. probleme de Timer
    Par faniette dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2008, 08h07
  3. Probleme avec Timer, TimerTask
    Par Microturnip dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 12/05/2008, 23h16
  4. probleme de timer
    Par eseb777 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 26/01/2007, 09h48
  5. [VB.NET] Probleme de Timer
    Par Aspic dans le forum Windows Forms
    Réponses: 7
    Dernier message: 14/01/2006, 13h41

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