Autor Tema: Como enviar y recibir por I2C (16F877) ?  (Leído 1630 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado PicKetero

  • PIC12
  • **
  • Mensajes: 80
Como enviar y recibir por I2C (16F877) ?
« en: 10 de Enero de 2005, 20:19:00 »
        Hola a todos !!!
      Tengo un problema sobre como se da de alta el protocolo I2C en el PIC 16F877 y tambien cuales son los registros para en envio y llegada de datos dependiendo de que se trate de una memoria serial o algún sensor ?
       Este pic puede trabajar mediante este protocolo con datos de mas de 8 bit"s ?
       Cual es el limite de posiciones que puede direccionar este pic por medio de este protocolo serial ?


       Se que son varias las preguntas pero la verdad es que ya me he leido bastante sobre este protocolo y son varias las dudas que me dejan los articulos de acuerdo al dispositivo con el que se comunicará, espero que puedan entender mi problema.

       Desde ya muchisimas gracias por su ayuda !!!!   loco

Desconectado EARC

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 35
RE: Como enviar y recibir por I2C (16F877) ?
« Respuesta #1 en: 24 de Noviembre de 2005, 18:48:00 »
El protocolo de comunicaciones I²C es de tipo sincrono y bidireccional, por lo que existirá un dispositivo MAESTRO y otro ESCLAVO. El maestro es quien inicia la comunicación enviando una secuencia especial de inicialización, además genera una señal de reloj para sincronizar los datos entre este y el esclavo.
Las líneas de comunicación son:
SDA   Serial Data
SCL   Serial Clock
Debido a que la línea SDA es bidireccional debe ser open-collector, por lo que se debe conectar una resistencia pull-up, cuyo valor depende de la velocidad a la cual se transmitirán los datos.
<100Kbps   R= 4.7KO   
100Kbps   R= 2.2KO
400Kbps   R= 1K

Durante una comunicación I²C se deben generar ciertas secuencias que controlan el flujo de los datos

Secuencia para escribir en un dispositivo usando I²C

(MAESTRO)                             !          (ESCLAVO)
---------------------------------------------------------------
START   
PERMISO DE ESCRITURA
.......................................................        ACK      
DIRECCION A ESCRIBIR
.......................................................        ACK         
DATO
.......................................................        ACK      
STOP
               
Secuencia para leer un dispositivo usando I²C

(MAESTRO)                             !          (ESCLAVO)
---------------------------------------------------------------

START   
PERMISO DE ESCRITURA
.......................................................        ACK         
DIRECCION A LEER      
.......................................................        ACK   
RESTART   
.......................................................        ACK   
PERMISO DE LECTURA   
.......................................................        DATO
NACK
STOP

Espero que esta informacion le sirva de algo. espero que si.