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

C Discussion :

Programmer un pic


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut Programmer un pic
    Alors je début je vais essayer d'être le plus claire possible sur le programme voulu.
    9 entrées qui sont pilotées par des inters qui formes de séquences.
    7 sorties qui piloterons des leds pour indiquer la situation du système.
    La led_1 = 1 si les entrées 1 , 2 , 3 , 4 ,5 ,6,7 sont a 1 et que 8 et 9 sont a 0
    La led_2 = 1 si les entrées 1 , 2 , 3 , 4 ,7 sont a 1 et que 5 , 6, 8 et 9 sont a 0
    La led_3 = 1 si les entrées 1 , 2 , 3 , 4 sont a 1 et que 5 , 6,7 , 8 et 9 sont a 0
    La led_4 = 1 si les entrées 3 , 4, 8, 9 sont a 1 et que 1 ,2 ,5 , 6,7 sont a 0
    La led_5 = 1 si toutes les entrée sont a 0
    La led_6 = 1 si l entrée 7 sont a 1 et que 1, 2, 3 ,4,5 , 6, 8 et 9 sont a 0
    La led_7 = 1 si les entrées 5 , 6,7 sont a 1 et que 1, 2, 3 ,4, 8 et 9 sont a 0

    Un paramètre dont je n'est pas parlé est que les séquences des inters peuvent être aléatoire... donc le" if " ne focntionne pas, apart si vous connaissez un astuce.

    merci pour votre aide!

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 486
    Par défaut
    Bonjour et bienvenue,

    • Merci de respecter la netiquette en utilisant notamment les formules de politesse d'usage : « bonjour », « merci » (ça, c'est fait) et « au revoir » ;
    • Cela va dépendre essentiellement du modèle du PIC que tu utilises ;
    • Étant donné que chaque LED ne doit s'allumer que sur une configuration d'entrée fixe et indépendante de tes ports d'entrée, il te suffit de les lire en une seule fois et de les considérer comme un entier binaire :


    — Allumage LED 1 si la valeur lue est 0x07F ;
    — Allumage LED 2 si la valeur lue est 0x04F ;
    — Allumage LED 3 si la valeur lue est 0x00F ;
    etc.

    Il te suffit de faire une boucle au début de laquelle tu lis l'entrée de tes ports dans un registre sur lequel tu vas ensuite faire des comparaisons successives avec ces valeurs. À l'issue de chaque comparaison, tu mets le bit correspond à la LED idoine à 0 ou à 1.

    À la fin de ta boucle, tu reprends au début.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut
    Tout d'abord bonjour.

    Je viens de me noyer dans 200 pages de formation et je vois pas comment faire des comparaisons successives.
    Merci
    Bonne soirée

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 486
    Par défaut
    Citation Envoyé par max.cort Voir le message
    Je viens de me noyer dans 200 pages de formation et je vois pas comment faire des comparaisons successives.
    Ce n'est pas un terme technique. J'essayais juste de te dire de comparer successivement l'état du port que tu as récupéré à chacune des valeurs précalculées ci-dessus.

    Donne-nous le modèle de ton PIC.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour ton aide, mon pic est un 18F4550.

  6. #6
    Membre chevronné
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 257
    Par défaut
    Salut,

    En reprenant ce qu'Obsidian te propose, voici ce à quoi ça ressemblerait pour une LED (je pars du principe que tes entrées sont sur RA0 à RA7 et que la 9eme sur le RB0) :

    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
     
    // n'oublie pas la librairie de ton pic
    #define LED1 LATCbits.RC0
    #define MASQUE_LED1 0x0FC // 1 , 2 , 3 , 4 ,5 ,6,7 sont a 1 et que 8 et 9 sont a 0
    int main () {
     
    // intialisationd des ports (a faire)
     
    int temp = 0;
     
    while(1)
    {
     
        temp = PORTA | ( (PORTB & 0x01) << 8); // lecture des ports et isolation des entrée interrupteurs
        LED1 = ((temp & MASQUE_LED1) == MASQUE_LED1);
    }
    Voilà l'idée, je n'ai pas testé si ça compilait mais tu devrais pouvoir t'en sortir.
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

Discussions similaires

  1. programmation de PIC en C
    Par shadyfright dans le forum C
    Réponses: 2
    Dernier message: 04/06/2010, 17h56
  2. [C] programmation sur PIC
    Par Fabien25C dans le forum Débuter
    Réponses: 2
    Dernier message: 12/10/2009, 21h20
  3. Outils semblables à MPLAB pour programmer les PIC ?
    Par Nanotechno dans le forum MPLAB
    Réponses: 0
    Dernier message: 16/02/2009, 13h05
  4. Réponses: 0
    Dernier message: 02/08/2007, 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