TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: alex22ra en 13 de Octubre de 2005, 09:49:00

Título: el i2c me va a matar
Publicado por: alex22ra 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
Título: RE: el i2c me va a matar
Publicado por: poi5on 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
Título: RE: el i2c me va a matar
Publicado por: alex22ra en 17 de Octubre de 2005, 03:38:00
Hola poi5on.

Te dejo el mail:

alex22ra@hotmail.com

Gracias.
Título: RE: el i2c me va a matar
Publicado por: Ankarius 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.
Título: RE: el i2c me va a matar
Publicado por: alex22ra 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