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

MPLAB Discussion :

[Débutant] Protocole OneWire


Sujet :

MPLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Points : 26
    Points
    26
    Par défaut [Débutant] Protocole OneWire
    Bonjour à tous,

    Je développe une carte à base de pic18f2455 qui sert à gérer des clés iButton

    Voila dix jours que je me prends la tête avec ce protocole OneWire , j'ai du me remettre au C et que je n'arrive toujours pas à vraiment communiquer avec.

    J'ai trouvé différents bouts de code sur internet et voici donc mes 2 fonctions qui devraient me permettre normalement de lire les 8 premiers bits de la clé ibutton, :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
    #define DQ_P PORTBbits.RB0
    #define DQ_T TRISBbits.TRISB0
    
    #include <delays.h>
    
    #include "onewire.h"
    
    
    unsigned char lire_bit(void)
    {
    	// Lecture d'un bit
    	DQ_T = 0; // On met DQ bas pour démarrer la séquence
    	DQ_P = 0;
    	DQ_T = 1; // retour niveau haut
    	Delay10TCYx(18); // delai de 15us depuis le début de la séquence
    	return(DQ_P); // On renvoie la valeur de DQ
    }
    
    
    unsigned char lire_octet(void)
    {
    	
    	unsigned char i;
    	unsigned char value;
    	
    		for (i=0;i<8;i++)
    		{
    			if(lire_bit())
    			{ 
    				value|=0x01<<i;// On lit un bit à la fois puis on shifte le tout à gauche
    			}
    			else 
    			{ 
    				value |=0x00<<i;
    			}
    								
    		Delay10TCYx(168); 		// on attend pour le reste de la séquence
    		}
    return(value);
    }
    J'aimerai aussi savoir quel type de variables je devait utiliser pour récupérer les 64 bits.

    Mes Delays sont corrects je les ai vérifié à l'oscilloscope.

    Je code sur MPLAB et compile avec C18.

    Merci.

    Bonne journée

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    unsigned char value;	
    for (i=0;i<8;i++)
    {
       if(lire_bit())
       { 
          value|=0x01<<i;// On lit un bit à la fois puis on shifte le tout à gauche
       }
       else 
       { 
          value |=0x00<<i;
       }....
    - value est non initialisé donc le résultat de value |= ... est imprévisible. Initialiser value à 0

    - value |=0x00<<i; ne fait rien du tout : le bit correspondant de value ne change pas de valeur.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Points : 26
    Points
    26
    Par défaut [Résolu]
    Merci à toi.

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

Discussions similaires

  1. Quelle est la fiabilité du protocole SSL ?
    Par Anonymous dans le forum Développement
    Réponses: 5
    Dernier message: 05/09/2002, 13h31
  2. [Kylix] Re Re: débutant sur Kylix et Linux.....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/06/2002, 22h53
  3. [Kylix] Le débutant en Kylix et Linux....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 10h37
  4. Réponses: 3
    Dernier message: 07/05/2002, 16h06
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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