Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 38

Problême de Programmation de Masque



  1. #1
    Paulochon

    Problême de Programmation de Masque


    ------

    Bonsoir à tous,

    je fais encore une fois de plus apelle à votre aide pour la résolution d'un problême qui m'échappe.
    Voila je veux faire un masque est il se trouve que celui si ne fonctionne pas,
    je voudrai faire une action quand le bit2 de mon Port passe à 01 sans s'occuper des autres bit du port mais cependant je pensai qu'il n'y aurrai pas eu de problême mais sa ne fonctionne pas voila je vous présente ce que j'ai fais qui est extrai de mon Programme,

    if ( PINB & 0x02 == 0x00 )

    {
    aff_ligne0 (" Porte Avant ");
    aff_ligne1 (" Gauche OUVERTE ");
    }
    Voila les Amies si vous pourriez m'aider à résoudre ce problême voila plusieurs heures que je tourne en rond dessus, En vous remerciant d'avance
    Cordialement
    Paulochon

    -----
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  2. Publicité
  3. #2
    Paulochon

    Re : Problême de Programmation de Masque

    ReBonjour j'ai dit le bit2 qui correspond à PB1
    En vous remerciant d'avance et en espérant avoir été claire dans mon énoncé
    Cordialment Paulochon
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  4. #3
    F4DXU

    Re : Problême de Programmation de Masque

    Citation Envoyé par Paulochon Voir le message
    ReBonjour j'ai dit le bit2 qui correspond à PB1
    En vous remerciant d'avance et en espérant avoir été claire dans mon énoncé
    Cordialment Paulochon
    Bonjour Paulochon,
    De mémoire, il faut faire un ou avec des 1 en face des bits à masquer.
    Dernière modification par F4DXU ; 15/06/2007 à 17h47.
    Cordialement, Jean-Marc de F4DXU (station radioamateur & pages web)

  5. #4
    Paulochon

    Re : Problême de Programmation de Masque

    Bonjour
    Merci je teste ta solution tout de suite et je revien dire si sa fonctionne
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

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

    Re : Problême de Programmation de Masque

    Citation Envoyé par Paulochon Voir le message
    Bonjour
    Merci je teste ta solution tout de suite et je revien dire si sa fonctionne
    Les bits masqués restent à 1.
    Cordialement, Jean-Marc de F4DXU (station radioamateur & pages web)

  8. #6
    tikrat

    Re : Problême de Programmation de Masque

    Jepense plutôt à la solution suivante :

    if ( (PINB | 0xFD) == 0xFF )
    {
    aff_ligne0 (" Porte Avant ");
    aff_ligne1 (" Gauche OUVERTE ");
    }

  9. Publicité
  10. #7
    Paulochon

    Re : Problême de Programmation de Masque

    Bonsoir,

    Voila j'ai un bus de 8 bit, chaque bit représente une entrées,
    Tout les bit on un niveau haut imposé au repos (pull-up),
    Moi je veux selectionné le PB1 mais jusqu'a la j'avais pas de problême mais la je ne comprend pas

    if (PINB & 0x02 == 0x00 )

    la on sélectionne bien que le bit PB1 et on attend qui prenne la valeur 0 pour valider la condition
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  11. #8
    Paulochon

    Re : Problême de Programmation de Masque

    J'ai essaié plusieurs combinaisons avec des "ou" des "not ou" de "et" mais je ne trouve pas d'ou sa peut venir pourtant le pproblême est simple je veux afficher sur le LCD quand PB1=0 est ne pas m'occuper des autres
    je suis dans une impasse j'ai limpression
    Merci de l'aide que vous allez m'apporter
    Cordialement Paulochon
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  12. #9
    tikrat

    Re : Problême de Programmation de Masque

    et avec les parenthèses ?
    if ((PINB & 0x02) == 0x00 )

  13. #10
    tikrat

    Re : Problême de Programmation de Masque

    c'est encore moi !!

    en fait l'opérateur == est priritaire sur &

    donc dans ton code c'est 0x02==0x00 qui est d'abord évalué !!!

  14. #11
    Paulochon

    Re : Problême de Programmation de Masque

    Nn sa ne fonctionne pas c'est pour cela que jene comprend pas,

    au début de programme je déclare mes 2 port qui serve au LCD mais la déclaration des autres ports je la fais aprés

    void ioInit (void)
    {
    DDRB=0x00
    }
    et après je l'initialise dans mon programme principal
    ioInit();
    donc je suis sur que mon port est actif a moin que j'ai uen boulette de se coté la
    mais sinon sa ne fonctionne toujours pas et je comprend pas
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  15. #12
    Paulochon

    Re : Problême de Programmation de Masque

    Alors comment faire un masque, puis enssuite attendre que le bit prenne la valeur vouly pour faire l'action
    si le == est prioritère alors faut que je trouve autres chose
    Mais la j'avoue que je ne sais pas trop comment procédé
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  16. Publicité
  17. #13
    Paulochon

    Re : Problême de Programmation de Masque

    Bonjour,
    je relance la discution,
    Mon problême n'est pas dans la facon de faire le max mais plutot pourquoi
    if ((PINB & 0x02) == 0x00 ) sa fonctionne pas, est que c"est parceque il y a des priorité,

    je vousrai savoir si sa serai pas mieux de faire

    unsigned char PORTES;
    PORTES= (PINB & 0x02);
    if ( PORTES==0x00)
    {
    ......
    }
    Oui y a t'il un autre moyen
    Merci d'avance
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  18. #14
    Jack
    Modérateur

    Re : Problême de Programmation de Masque

    je voudrai faire une action quand le bit2 de mon Port passe à 01 sans s'occuper des autres bit du port
    Peut-être le problème vient-il du fait que tu ne testes pas le bon bit. En général, la numérotation des bits commence à 0. Donc le bit 2 est le 3ème bit du port en fait. Le masque serait plutôt égal à 0x04 donc.

    J'écrirais donc:
    Code:
    if ( PINB & 0x04 != 0x00 )
    
    {
        aff_ligne0 (" Porte Avant ");
        aff_ligne1 (" Gauche OUVERTE ");
    }
    A+

  19. #15
    Jack
    Modérateur

    Re : Problême de Programmation de Masque

    Comme dit au-dessus, il vaut mieux parenthéser:

    Code:
    if ((PINB & 0x04) != 0x00 )
    
    {
       aff_ligne0 (" Porte Avant ");
       aff_ligne1 (" Gauche OUVERTE ");
    }

  20. #16
    Paulochon

    Re : Problême de Programmation de Masque

    Bonjour Jack,
    Merci pour ces conseils je vais voir sa et je tiens au courant
    Merci Cordialement Paulochon
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  21. #17
    Paulochon

    Re : Problême de Programmation de Masque

    Bonjour tout le monde,

    Voila je reviens a vous parceque après des dizaines d'essaies ma fonction masque ne tourne toujours pas,(snifff)
    Je sais que mon masque est bon mais je ne comprend pas pourquoi sa ne veux oas fonctionné,

    j'ai même essaié

    unsigned char PORTE;
    PORTE= ( PINB & 0x02);
    if ( PORTE == 0x00 )
    {
    ....
    }

    Mais sa na rien donné est que quelqu'un aurrai une autre idée,
    Merci d'avance Paulochon
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  22. #18
    Jack
    Modérateur

    Re : Problême de Programmation de Masque

    Mais tu as essayé avec 0x04 comme masque?

    Tu n'arrives pas à debuger en pas à pas, et à visualiser l'état des registres?

    C'est quoi comme µcontrôleur?

    A+

  23. Publicité
  24. #19
    Paulochon

    Re : Problême de Programmation de Masque

    C'est un Atmega8535,
    Mais je ne comprend pas le masque avait deja marché au parravant mais pas avec une fonction If,

    Voila si on fait un
    do
    {
    ....
    }
    while ( PINB & 0x01 == 0x01 ) //detection du contact qui passe à 0 donc il fait la boucle tant que le Contact à l'état logique 1

    Mais avec la fonction IF sa ne fonctionne pas quand je ve detecter le passage au niveau bas

    Alors j'en est deicuté on ma dit pourquoi je ne faisait pas sa avec des interruptions mais avec cette fonction que je connais peut et que je n'utilise que rarement je me sens pas d'attaque mais si on devait passé par la evidement je mis metterai avec joie mais la vraiment je ne comprend pas pourquoi le masque ne fonctionne pas,

    Et oui j'ai essaié ta solution et sa ne fonctionné toujours pas

    Cordialement Paulochon
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  25. #20
    Jack
    Modérateur

    Re : Problême de Programmation de Masque

    Alors j'en est deicuté on ma dit pourquoi je ne faisait pas sa avec des interruptions mais avec cette fonction que je connais peut et que je n'utilise que rarement je me sens pas d'attaque mais si on devait passé par la evidement je mis metterai avec joie mais la vraiment je ne comprend pas pourquoi le masque ne fonctionne pas
    Pitié, mets des points et des virgules

    Tu ne peux pas faire de pas à pas en regardant l'état des registres? Comme çà tu connaitrais l'état de ton port et quel bit a changé.

    A+

  26. #21
    Paulochon

    Re : Problême de Programmation de Masque

    Je programme en C avec WinAvr, et franchement je t'avoue que je ne sais pas trop comment pour aller voir l'état de mes registres.
    Alors oui j'aimerai bien mais comment faire???
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  27. #22
    Paulochon

    Re : Problême de Programmation de Masque

    Aussi j'avai eu l'idée de mettre tout mon PORT en interruption hors pour le programmé en C je n'ai rien trouvé. J'ai quelque cours papier mais il ne font pas mention de petit exemple.
    Alors je me demandé si sa ne serai pas mieu d'utiliser les interruption mais je ne sais pas faire exatement, je m'en suis servi une fois et il y a longtemps pour moi.
    Alors si vous pouviez m'expliquer
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  28. #23
    Jack
    Modérateur

    Re : Problême de Programmation de Masque

    Je ne connais pas winavr, mais tous les debugers présentent des fenêtres qui permettent de visualiser variables, registres et mémoires.

    En tous cas, chaque registre possédant une adresse mémoire, il est toujours possible d'observer les bits de ton port changer d'état en visualisant la mémoire correspondante.

    Ensuite, tu regardes si ta variable PORTE est bien affectée par la valeur du port, puis si l'opération logique s'effectue bien.

  29. #24
    Paulochon

    Re : Problême de Programmation de Masque

    Merci pour ces conseils,
    Mais cependant c'est un scrutage que je veux faire,
    Et la je me demande si les masques reste une des meilleurs solutions. Je vais le finir comme sa car je voudrai posté la solution tout de même je ne veux pas laisser un problême en suspant,
    Cependant j'aimerai bien savoir si c'est possible de le faire avec des interruptions, je dois géré 6signaux différents en même temps et pas mal de gens en discutant mon dit d'utiliser les interruption. Hors mes connaisances sont restreinte en ce qui concerne les interruptions.

    Ma question est est-ce que d'utiliser ces interruptions serai la meilleurs des solution ??
    Comment utiliser mes interruptions??
    Bien sur je ne veux pas qu'on me le fasse à ma place mais j'aimerai un petit cours, Savoir le fonctionnement général de cette fonction pour pouvoir essaié de mettre en oeuvre cette solution
    Vous en pensez quoi??,
    Merci de votre aide
    Cordialement Paulochon
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  30. Publicité
  31. #25
    Paulochon

    Re : Problême de Programmation de Masque

    Je relance un peu la discution,
    Personne n'aurait d'idée pour ce problême

    Merci d'avance
    Paulochon
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  32. #26
    Jack
    Modérateur

    Re : Problême de Programmation de Masque

    je dois géré 6signaux différents en même temps
    Il faut dire que tu n'es pas très précis à propos de tes signaux et de ce que tu dois en faire.

    Concernant les interruptions, je trouve que ça simplifie la programmation. Il faut investir un peu de temps au début quand on ne connait pas, mais la programmation est ensuite facilitée: à chaque tâche correspond un événement (déclenché par l'interruption).

    On est ainsi débarassé de certaines contraintes temporelle dues aux temps d'exécutions de certains sous-programmes.

    Et surtout on se retrouve avec des processus non bloquants. Par exemple, pour gérer une liaison série sans interruption, il faut tester si le registre de réception est plein. Et on risque de rester coincé en attendant un caractère qui n'arrive pas.

    Pense également à windows. Si le système d'exploitation devait scruter tous ses périphériques les uns après les autres pour voir si quelque chose a changé, ça ne serait guère efficace.

    A+

  33. #27
    Paulochon

    Re : Problême de Programmation de Masque

    Bonsoir Jack,

    Voila mon système sera embarqué dans ma voiture. Hors je dois géré l'état des feux et des 4 portière plus le coffre.
    A coté de sa je voulé traité la commande de mon Ampli de voiture.
    Voila je voudrai que mon programme scrute les état des portière, du coffre et des phares, mais je voudrai faire queleque chose à coté c'est pour cela qu'on ma dit d'utiliser les interruption alors à savoir que l'état actif c'est 0.
    je voudrai savoir comment utiliser les interruptions, ci c'est possible dans mon cas

    Merci
    Paulochon
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

  34. #28
    Jack
    Modérateur

    Re : Problême de Programmation de Masque

    Je crois qu'il va falloir que tu regardes la doc de ton Atmel de plus près. Ses ports doivent bien pouvoir déclencher une interruption sur cahngement de front ou d'état de ses entrées.

    Au pire, réunis toutes tes entrées sur l'entrée IRQ du µContrôleur.

    Une interruption consiste à dérouter le µC de son programme pour le rediriger vers un sous programme associé à la source.

    C'est en principe fait grâce à la table des vecteurs d'interruption qui associe une adresse de sous-programme à une source d'interrption sur les µC un peu évolués.

    C'est un peu court comme explication. Il faudra bien que tu te renseignes un peu plus sur la chose. Ca ne doit pas manquer sur la toile.

    A+

  35. #29
    Alex82

    Re : Problême de Programmation de Masque

    Bonjour,

    A mes débuts je gerais ça par variable (je le fait encore à l'occasion), c'est à dire méthode lourde ! :

    une routine 1:
    Srcutage de port qui pour chaque bit attribue la valeur du bit reçu à bit[index]
    une routine 2
    Interprétation de bit[index]:

    fot bit[i] de 0 à n {
    swtich case (i)
    1 : if (bit[i] == 0) do : { patati1 } else {patata1}
    2 : if (bit[i] == 0) do : { patati2 } else {patata2}
    etc... etc ....
    fin case
    fin for

    et te manque plus que ce qui gère ça dans le temps, c'est la routine qui toutes les secondes (ou autre) lance le scan ... la routine surveille ...
    routine 3 :
    Surveille {
    Toute les secondes faire :
    scrutage port; //routine1
    interpréte resultat; //routine2
    fin faire
    }

    Pardonnez mes mélanges d'écritures algo, langage mais j'ai tapé vite le principe seulement.

    Méthode "lourde" mais qui fonctionne toujours sans planter le microC, pas estétique, pas très "informaticiens les plus malins", lente et encombrante en mémoire mais des fois quand y'a la place et le temps pourquoi pas ....

    Mais c'est pas du temps réel c'est vrai, si le microC et pas trop sollicité par autre chose ça s'en rapproche (de loin)... Cela dépends de l'application ....

    Sinon c'est gestion des sous-programmes d'intéruption à coder pareil un à un (attention pas de boucle hazardeuse et légers les sous programmes d'IT,=> appel routine de gestion ailleurs si besoin sinon aie ... ça plante sévère.

    Je m'explique : une IT gère un signal d'intéruption pas les choses qu'elle indique de faire,... temps réel une IT, faut déclencher ce qu'elle suposse, et liberer au plus tôt le microC...sinon tu gèrera pas l'IT suivante arrivant vite, principe des files d'attentes...)

    Je dirai que y'a plus qu'à indiquer les vecteurs pour attribuer à chaque intérruption son signal de déclenchement.

    C'est pas sorcier à coder et gerer, faut juste comprendre le principe, après ça va. Faut pas que ça t'impressionne, cela reviens juste à traiter des déclenchement (les évènements, comme pour Windaube par exemple).

    Cordialement.
    Dernière modification par Alex82 ; 16/06/2007 à 21h55.
    Ce qui se conçoit clairement s’ennonce clairement

  36. #30
    Paulochon

    Re : Problême de Programmation de Masque

    Merci pour cette petite routine,
    je vais allé sur la toile réunir des imformation sur le traitement des interruptions je mis met et je poste tout sa après
    Merci de vos conseils
    Cordialement
    Paulochon
    Rien n'est plus proche du vrai que le faux ( Albert Einstein )

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Le fer tombe le masque
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 2
    Dernier message: 11/06/2016, 19h11
  2. Comment faire un masque en C++
    Par Paulochon dans le forum Électronique
    Réponses: 11
    Dernier message: 09/06/2007, 21h47
  3. emule et son masque
    Par yousrati dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 28/10/2006, 21h47
  4. Ip et masque réseau en direct
    Par scientist dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 24/07/2006, 23h29
Découvrez nos comparatifs produits sur l'informatique et les technologies.