Pièce jointe « mod_I2C.tex »

Téléchargement

   1 \section{Module I2C}
   2 
   3 Auteur : Pierre Launay
   4 
   5 per.launay chez free.fr
   6 
   7 Le bus I2C est un bus série synchrone développé par Philips
   8 
   9 Description du bus I2C : http://fr.wikipédia.org/wiki/I2C
  10 
  11 Comprendre le bus I2C en espagnol \url{http://robots-argentina.com.ar/Comunicacion_busI2c.htm}
  12 
  13 Voici les fonctions pour travailler avec le Module I2c en mode Maître Interne dans les PIC
  14 
  15 Avant d'utiliser ce module, on doit définir la fréquence utilisée avec la commande :
  16 
  17 \verb! #define FOSC_HZ 4000000 !
  18 
  19 \verb! #include <i2c.h> !
  20 
  21 Quelques définitions prédéfinies:
  22 \begin{verbatim}
  23 #define I2C_400K i2c_find_frec(400000) //frecuencia de 400Khz
  24 #define I2C_100K i2c_find_frec(100000) //frecuencia de 100Khz
  25 #define I2C_40K i2c_find_frec(40000) //frecuencia de 40Khz
  26 #define I2C_10K i2c_find_frec(10000) //frecuencia de 10Khz
  27 #define I2C_4K i2c_find_frec(4000) //frecuencia de 4Khz
  28 #define I2C_1K i2c_find_frec(1000) //frecuencia de 1Khz
  29 \end{verbatim} 
  30 
  31 Ces définitions peuvent être utilisées dans la fonction i2c\_init
  32 
  33 \subsection{i2c\_init}
  34 Configure le port série synchrone
  35 
  36 \textit{void i2c\_init(unsigned char SPEED\_I2C);}
  37 
  38 SPEED\_I2C es el registro SSPADD, reloj\_I2C=FOSC\_HZ/(4*(SSPADD+1))
  39 \subsection{i2c\_wait\_for\_idle}
  40 Attend que le bus soit libre.
  41 
  42 \textbf{void i2c\_wait\_for\_idle(void);}
  43 \subsection{ i2c\_start} 
  44 Début de trame, séquence de départ
  45 
  46 \textbf{void i2c\_start(void);}
  47 \subsection{i2c\_restart}
  48 Recommencer une trame, fin de trame et début de trame permet de mettre 2 trames pour lire. Voir i2c\_read()
  49  
  50 Exemple pour lire les secondes dans une trame :
  51 Début de trame  (start), écrire l'adresse du circuit I2c, écrire l'adresse du registre des secondes.
  52 Relancer une trame (restart), écrire l'adresse ducircuit I2C, lire le registre des secondes, fin de trame(stop).
  53 
  54 \textbf{void i2c\_restart(void);}
  55 \subsection{i2c\_stop}
  56 fin de trame, séquence d'arrêt
  57 
  58 \textbf{void i2c\_stop(void);}
  59 \subsection{i2c\_delay}
  60 Temps d'attente entre fin de trame et début de trame $>=4,7\mu s$ (fréquence d'horloge de 100KHz)
  61 
  62 \textbf{void i2c\_delay(void);}
  63 \subsection{i2c\_ack\_read}
  64 réception de l'acquittement
  65 
  66 unsigned char i2c\_ack\_read (v oid);
  67 
  68 "0" bonne réception
  69 
  70 "1" mauvaise réception
  71 \subsection{i2c\_ack\_write}
  72 émission de l'acquittement
  73 
  74 void i2c\_ack\_write(unsigned char ack);
  75 
  76 "0" la trame peut continuer
  77 "1" la trame s'arrête
  78 
  79 \subsection{i2c\_write}
  80 Le maître écrit dans l'esclave le caractère c, le caractère c peut être une adresse, un registre interne,
  81 une donnée
  82 
  83 \textbf{void i2c\_write(unsigned char c);}
  84 \subsection{i2c\_write\_with\_ack}
  85 Le maître écrit dans l'esclave le caractère c, et reçoit l'acquittement (ack).
  86 
  87 Cette routine rassemble i2c\_write(c) et reception\_ack()
  88 
  89 unsigned char i2c\_write\_with\_ack(unsigned char c) ;
  90 
  91 \subsection{i2c\_read}
  92 Le maître lit le caractère envoyé par l'esclave.
  93 
  94 unsigned char i2c\_read(void);
  95 
  96 \subsection{i2c\_read\_with\_ack}
  97 Le maître lit le caractère envoyé par l'esclave et envoie l'acquittement (ack).
  98 
  99 unsigned char i2c\_read\_with\_ack(unsigned char ack);
 100 
 101 \subsection{Exemple du Module I2C}
 102 Pour compilar tu as besoin des commandes suivantes
 103 
 104 Exemple de compilation : ./compila.sh ej\_i2c 16f877a
 105 
 106 ej\_i2c.c
 107 \verbatiminput{source/ej_i2c.c}

Fichiers joints

Pour vous référer aux pièces jointes d'une page, utilisez attachment:filename, comme indiqué ci-dessous dans la liste de fichiers. N'utilisez pas l'URL du lien [get], car elle peut changer et donc être facilement cassée.
 Tous les fichiers | Fichiers sélectionnés supprimer déplacer vers la page copier vers la page

Vous n'êtes pas autorisé à joindre un fichier à cette page.

Site hébergé sur un Cloud Public IKOULA Ikoula