Autor Tema: el i2c me va a matar  (Leído 2451 veces)

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

Desconectado alex22ra

  • PIC10
  • *
  • Mensajes: 41
el i2c me va a matar
« en: 13 de Octubre de 2005, 09:49:00 »
Hola a todos.

Quiero escribir y leer el contenido de una posicion de memoria de un 24LC515 desde el pic.

No se porque, pero esto no me funciona. A ver si vosotros dais con ello:

;**********Configuracion:

                bsf status, rp0      ; banco 1
   movlw b"00011000"    ; RC3, RC4 son entradas
   movwf trisc       
   bcf status, rp0      

   movlw b"00101000"    ; habilito mssp
            ; habilito sspen y el modo i2c Master sspm         
   movwf sspcon      
   bsf status, rp0
   movlw B"10000000"   ; smp configurado a 100 KHz
   movwf sspstat       
   bcf status, rp0      
            ; configuro el baud rate
   bsf status, rp0
   movlw (fosc / (4 * baud)) - 1
   movwf sspadd      
   bcf status, rp0      ; Fin de la configuracion del i2c

;********escritura (dato=55h, direccion=0x00)

                bsf status, rp0    
   bsf sspcon2, sen   
   bcf status, rp0
   call WaitMSSP       ;Espero a que la operacion i2c termine
            
   movlw control_in_eeprom ;Mando el byte de control de entrada y espero
   call Send_I2C_Byte    ;Mando el byte a traves del bus i2c
   call WaitMSSP       ;Espero a que la operacion i2c termine

   movlw 0x00   ;Mando la parte alta de la direccion
   call Send_I2C_Byte
   call WaitMSSP
   bsf status, rp0
   btfsc sspcon2, ackstat       ;Chequeo el ack
   goto I2CFail      
   bcf status, rp0      
   movlw 0x00      ;Mando la parte baja de la direccion
   call Send_I2C_Byte    
   call WaitMSSP       
   bsf status, rp0
   btfsc sspcon2, ackstat       ;Chequeo el ack
   goto I2CFail      
   
   bcf status, rp0      
   movlw 0x55      ;Mando los datos
   call Send_I2C_Byte                    ;Mando byte
   call WaitMSSP       ;Espero a que la operacion i2c termine
   bsf status, rp0
   btfsc sspcon2, ackstat   ;Chequeo el ack
   goto I2CFail       ;Si falla
      
   bsf status, rp0
   bsf sspcon2, pen                    ;Envio la condicion de Stop
   bcf status, rp0
   call WaitMSSP       ;Espero a que la operacion i2c termine

;********Lectura del valor y colocar en puerto b

                bsf status, rp0
   bsf sspcon2, sen      ;Start
   bcf status, rp0
   call WaitMSSP

                movlw control_in_eeprom    ;Mando el byte de control de escritura (para mandar la direccion) y espero fin
   call Send_I2C_Byte       ;Mando el byte
   call WaitMSSP          ;Espero a que la operacion i2c termine
   bsf status, rp0
   btfsc sspcon2, ackstat
   goto I2CFail
   bcf status, rp0

   movlw 0x00      ;Address high
   call Send_I2C_Byte
   bcf status, rp0
   call WaitMSSP
   bsf status, rp0
   btfsc sspcon2, ackstat   
   goto I2CFail
   bcf status, rp0

   movlw 0x00       ;Address low
   call Send_I2C_Byte
   call WaitMSSP
   bsf status, rp0
   btfsc sspcon2, ackstat   
   goto I2CFail
    

   bsf status, rp0   
   bsf sspcon2, rsen      ;Restart
I2C.Restart.Wait3:
   btfsc sspcon2, rsen      
   goto I2C.Restart.Wait3
   bcf status, rp0   ;Restore Bank0
   
   movlw control_out_eeprom   ;Mando el byte de control de lectura para recoger el dato
   call Send_I2C_Byte
   call WaitMSSP
   bsf status, rp0
   btfsc sspcon2, ackstat
   goto I2CFail
         
   bsf status, rp0
   bsf sspcon2, rcen

   bcf status, rp0
   call WaitMSSP
   bsf status, rp0
   bsf sspcon2, ackdt   
   bsf sspcon2, acken   
   bsf sspcon2, pen      ;Stop
   call WaitMSSP
   bcf status, rp0      
   

   movf sspbuf, w      
hhh:   movwf portb       
   goto hhh

Si alguien da con ello y funciona le invito a una caña Sonrisa Gigante

Desconectado poi5on

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 127
RE: el i2c me va a matar
« Respuesta #1 en: 14 de Octubre de 2005, 11:55:00 »
Hola ley tu codigo por encima porque me dio flojera leerlo bienSonrisa Gigante. yo consegui unos programas para el I2C que te podrian servir pero lo estoy tratando de subir y me dice que no hay espacioloco, si me das tu email te los envio.
Saludos

Desconectado alex22ra

  • PIC10
  • *
  • Mensajes: 41
RE: el i2c me va a matar
« Respuesta #2 en: 17 de Octubre de 2005, 03:38:00 »
Hola poi5on.

Te dejo el mail:

alex22ra@hotmail.com

Gracias.

Desconectado Ankarius

  • PIC12
  • **
  • Mensajes: 71
RE: el i2c me va a matar
« Respuesta #3 en: 17 de Octubre de 2005, 10:00:00 »
Yo tengo una libreria en C (de Hi-tech) para el manejo por i2c que cualquier dispositivo en general ... si estás interesado te la envio.

Saludos, Ank.

Desconectado alex22ra

  • PIC10
  • *
  • Mensajes: 41
RE: el i2c me va a matar
« Respuesta #4 en: 18 de Octubre de 2005, 04:21:00 »
No me hace falta ya, muchas gracias de todas formas.

El problema que tenia lo he solucionado, configurando el i2c cada vez que quiero leer un byte. No se porque, pero asi, funciona bien.

SalU2


 

anything