Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Structure et Champs de bits
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#11 Message par paulfjujo » dim. 4 oct. 2015 16:00

bonsoir,




il faut contenir la valeur de ton indice
variable.monOCTET
entre 0 et 7
en rajoutant un masque AND 0b00000111 ...
variable.monOCTET = (variable.monOCTET + 1 ) & 0x07 ; // ne peut evoluer que de 0 à 7

ou avec un test
if(variable.monOCTET>7) variable.monOCTET=0;
Aide toi, le ciel ou FantasPic t'aidera

Structure et Champs de bits
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#12 Message par Jérémy » dim. 4 oct. 2015 16:22

Hello,

Non justement je voudrais allez plus loin que 7 en fait . de 0 à 255 comme l'autorise mon Char .

Je dois avoir un probléme de déclaration, car avec certaines valeurs ca focntionne bizarrement . Par exemple quand j'initialise mon OCTET à 179 avec variable.monOCTET = 179; // On initialise notre variable à 179 :


Voici le résultat que j'obtiens sur le LCD au départ :
-77
J’appuie sur le BP pour incrémenter de 1 et j'obtiens :
-76
-75
|
|
|
--69 et la ça se bloque ! encore une fois avec 8 en valeur bizarre !!!
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Structure et Champs de bits
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#13 Message par Jérémy » dim. 4 oct. 2015 17:59

Je pense qu'il s'agit d'un problème HARD, avec le LCD .

En fait, je viens de supprimer l'affichage LCD, pour seulement visualisé sur les leds branchées sur le PORTC, qui sont le reflet de mon chiffre . Ça fonctionne impeccable .

Je remarque également que sur ma carte easypic, j'ai des leds de branchées sur chaque broches ( très pratique au demeurant), que la valeur de ma donnée se répercute sur le PORTB .

C'est a dire , que si j'ai "1" , la led branchée sur RB0 est allumée , si j'ai "2" la led RB1 est allumé , si j'ai "3" , les leds RB0 et RB1 sont allumées .
Quand je passe à 8 ( le moment du bogue) j'ai les leds RD4 et RD5 du PORTD qui s'allument , alors que celui ci est en entrée ???!!??????

Lien sur le schéma de la carte : schéma
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Structure et Champs de bits
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#14 Message par Jérémy » mer. 7 oct. 2015 10:07

Bonjour ,

Voici un code de qui fonctionne bien . Il permet la création d'une variable qui se contrôle soit bit à bit indépendamment, soit en version global directement sur la variable .
J'ai un problème que je ne comprends pas avec mon branchement sur la carte. Je n'ai donc pas fais de vidéo, car c'est soit l'ecran qui affiche bien les valeurs , soit les leds qui sont le miroir de la variable . Mais les deux ensemble ça ne fonctionne pas :? . Si besoin je ferais quand même une vidéo

Code : Tout sélectionner

// Création de l'UNION
 
union  {                   // Nom de l'union qui réunis deux structures ( 1 Champs de bits et 1 variable)
                            // Les deux structures auront la même adresse mémoire

    
unsigned char monOCTET// Ici la premiere structure qui est une variable appellée monOCTET

    
struct {                // ici la deuxiéme structure qui est un champ de bits
        
unsigned inter0:1;
        
unsigned inter1:1;
        
unsigned inter2:1;
        
unsigned inter3:1;
        
unsigned inter4:1;
        
unsigned inter5:1;
        
unsigned inter6:1;
        
unsigned inter7:1;
     } 
monCHAMPS;           // Nom du champs de bits
  
variable;               // Nom de l'UNION
// Fin de l'UNION 
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Structure et Champs de bits
AchileT
Membre
Membre
Messages : 17
Enregistré en : septembre 2015

#15 Message par AchileT » ven. 9 oct. 2015 11:48

Jérémy a écrit :Source du message AchileT tu es mort ?


Bonjour la compagnie et non je ne suis pas mort :evil: mais ma freebox oui . plus d'internet !!!!!
Je n'ai pas résolu mon problème , je regarde vos codes/lignes et je vous tiens au courant sans fautes !

Structure et Champs de bits
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#16 Message par Jérémy » ven. 9 oct. 2015 13:10

Hello AchileT,

Je vois que tu as retrouvé ta connexion internet c'est cool!.

j'avoue être dégoute quand une personne , ne donne pas suite a des réponses qui lui sont proposées !. Je trouve ça plutôt mal poli, et irrespectueux envers les personnes qui se donnent parfois du mal et qui passe du temps pour aider les autres .

Bon si c'est une raison technique pas de problème !

J'ai moi aussi bossé de mon coté grâce aux commentaires de Paulfjujo .

J'ai donc une deuxième méthode a te proposer en utilisant la commande sbit .
Je finis le programme et je te montre tout ca !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Structure et Champs de bits
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#17 Message par Jérémy » ven. 9 oct. 2015 14:24

Voici la formule avec sbit

Tu as donc une variable globale qui s'apelle Mavariable, c'est elle que tu va envoyer .
Et cette variable contient en fait 8 informations TOR ( Tout Ou Rien) .

Pour quelle application utilise tu ceci ?

Code : Tout sélectionner

char Mavariable=0// Déclaration de notre variable à envoyer

// Ici on decortique notre variable en bit
sbit Monbit0 at Mavariable.B0;   // On déclare que Mavariable.B0 vaudra Monbit0 dans le programme
sbit Monbit1 at Mavariable.B1;   // On pourra bien sur renommé "MonbitX" par le nom de son choix .
sbit Monbit2 at Mavariable.B2;
sbit Monbit3 at Mavariable.B3;
sbit Monbit4 at Mavariable.B4;
sbit Monbit5 at Mavariable.B5;
sbit Monbit6 at Mavariable.B6;
sbit Monbit7 at Mavariable.B7;
// Fin de declaration 
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Structure et Champs de bits
AchileT
Membre
Membre
Messages : 17
Enregistré en : septembre 2015

#18 Message par AchileT » sam. 10 oct. 2015 09:04

Bonjour la compagnie

Ca marche très bien , dans les deux méthodes merci !

Ps : c'est pour des trains miniatures !


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 29 invités