Autor Tema: Memorias I2C en proteus (encontre la solucion)  (Leído 6736 veces)

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

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Memorias I2C en proteus (encontre la solucion)
« en: 08 de Junio de 2007, 12:47:09 »
Que tal amigos,

Hace tiempo coloque un post solicitando su ayuda para poder realizar la simulacion de las memorias con protcolo I2C, de las cuales recibi muchas respuestas, aunque ninguna satisfactoria (que indudablemente agradezco a todos los que me respondieron y de alguna manera colaboraron). Ahor al fin despues de pelear con Proteus y despues de una ardua lucha ayer me llego un momento de inspiracion y logre realizar la simulacion y todo el problema radicaba en el tipo de resistencia que coloque en las lineas de SDA y SCL. Originalmente yo estaba usando una resistencia de modelo analogico de 4.7K, pero me di cuenta que con esta no trabaja correctamente el bus I2C, asi que la sustitui por un modelo llamado PULLUP y "bingo" la simulacion comenzo a funcionar, asi que quiero compartir este tip para aquellos que tienen el mismo problema que yo.

Les recuerdo que este problema se presenta a parti de la version 6.9 de proteus, y en la version actual persiste, asi que yo realice pruebas en la version 7.X (porque no recuerdo) SP2. Suerte a todos y ojala que les sirva esto y no tengan que luchar con proteus por mas de 1 mes como lo hice yo.

Saludos.

Elreypic

Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #1 en: 08 de Junio de 2007, 13:02:29 »
Hola elreypic2

Seguramente mucha gente estará agradecida y obtendrá beneficios en la simulación con tu trabajo y esfuerzo por el cual te felicito y además celebro que lo hayas publicado.

Hace un tiempo estuve haciendo muchas pruebas en Proteus y tuve ese problema al querer usar una EEPROM (24LC16).
Sucedió que era más sencillo en mi caso, hacer las pruebas en protoboard donde corroboré el funcionamiento, ya que no pude hacerlo en Proteus.
Recuerdo haber leído tu post sobre el tema, pero como no iba a aportar nada de solución, decidí no participar, pero ahora sí quiero hacerlo para felicitarte por el logro y la enseñanza.

Saludos.
Mario

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #2 en: 08 de Junio de 2007, 16:12:39 »
hola, yo soy de los tantos que nos peleamos con proteus y te agradezco sinceramente que compartas tu descubrimiento. felicidades por haberlo logrado.

un saludo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #3 en: 09 de Junio de 2007, 02:54:16 »
hola reypic2, justo toy en un problema similar, estaba simulando en el proteus el modulo i2c para el pic16f648a en ASM, las rutinas funcionana ok en la realidad, pero no en el proteus 7.1, voy a probar tu tip y comentos los resultados  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #4 en: 09 de Junio de 2007, 11:59:20 »
Ese tipo de cosas son las que me han alejado de Proteus cada vez que he intentado acercarme a el. Gracias por el dato, elreypic.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #5 en: 10 de Junio de 2007, 01:32:15 »
 :-/ :-/ :-/ seee funciona chevere!!!
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado joscar66

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #6 en: 13 de Junio de 2007, 03:42:35 »
Ese fue hasta hoy uno de los problemas que mas me molestaban del proteus. Gracias amigo!
Esfuércense por ser mejor cada día...
¡Saludos desde COLOMBIA!

Desconectado standard

  • PIC10
  • *
  • Mensajes: 18
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #7 en: 13 de Junio de 2007, 19:07:02 »
Cómo se conectaría el reloj Ds1307 ? Conseguí que me funcionara pero perdí el esquema y al volver a hacerlo no recuerdo cómo lo hice y no me funciona. Se colocan las resistencias de pull-up en las líneas SDA y SCA y puestas a 5 V. y algo más?
Esto me funcionaba; escribía en la dirección de control del RTC pero ahora se me bloquea en un bucle :

conds1307                                   BANCO_1                                    ;configurar RTC
         movlw   b'00011000'   
         movwf   TRISC      ;configurar SDA y SCA
         movlw   .49      ;(20*10^6/4*10^5)-1 =49
         movwf   SSPADD
         movlw   b'10000000'
         movwf   SSPSTAT
         movlw   b'00101000'
         BANCO_0
         movwf   SSPCON
         movlw   0x01
         BANCO_1
         movwf   TRISB      ;INT como entrada
         BANCO_1
         movlw   b'00010000'
         movwf   datoi2c      ;dato para registro control RTC
         movlw   0x07
         movwf   diri2c      ;dirección del registo control RTC
         bcf   PCLATH,3
         bsf   PCLATH,4
         call   escri_ds   ;escribir en RTC
........

escri_ds                                     BANCO_1            ;enviar secuencia de START
         bsf   SSPCON2,SEN   ;bit SEN comienza secuencia
         btfsc   SSPCON2,SEN
           goto   $-1           ;permiso para escribir en DS1307      
           BANCO_0
           movlw   0xD0         ;Carga el dato a enviar
           movwf   SSPBUF       ;dirección esclavo + 0(bit escritura)
           BANCO_1
           btfsc   SSPSTAT,R_W   ;si es 0, se ha completado transmisión
           goto   $-1

SE me queda en el anterior bucle; El bit R_W no se pone a 0 nunca, pero antes sí me funcionaba
           btfsc          SSPCON2,ACKSTAT ;Solo continua si llaga el ACK
           goto   stopI2C2      ;1=no reconocido, reinicia comunicación
           movf   diri2c,w     ;dirección a W
                                                BANCO_0
                                                movwf   SSPBUF        ;dirección donde se va a escribir
                                                BANCO_1
                                                btfsc   SSPSTAT,R_W   ;si es 0, se ha completado transmisión
           goto   $-1
           btfsc         SSPCON2,ACKSTAT ;Solo continua si llaga el ACK
           goto   stopI2C2   ;1=no reconocido,reinicia comunicación
           movf   datoi2c,w
           BANCO_0
           movwf   SSPBUF      ;pasar dato a SSPBUF
           BANCO_1
           btfsc   SSPSTAT,R_W   ;si es 0, se ha completado transmisión
           goto   $-1
           btfsc          SSPCON2,ACKSTAT ;Solo continua si llaga el ACK
           goto   stopI2C2   ;1=no reconocido,reinicia comunicación
                                                stopI2C2   BANCO_1
           bcf   PIE1,SSPIE
           bsf   SSPCON2,PEN   ;condición STOP
           btfsc   SSPCON2,PEN
           goto   $-1         ;se asegura que haya acabado
           BANCO_0
           return 

Desconectado standard

  • PIC10
  • *
  • Mensajes: 18
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #8 en: 14 de Junio de 2007, 14:08:37 »
Lo siento marioquillote; lo puse aquí porque como era un problema de simulación de una conexión I2C, pensé que se parecían los problemas; borraló si quieres; de todas maneras por si a alguien le interesa ya lo he solucionado, y ha sido justo al contrario. Con las resistencias pull-up no funcinaba y con las de 4k7 sí.
Saludos.

Desconectado jorgevert

  • Moderadores
  • PIC10
  • *****
  • Mensajes: 30
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #9 en: 12 de Julio de 2007, 17:42:44 »
Hola standard, yo tambien tengo el mismo problema a mi parecer es problema del proteus, yo tengo conectado una memoria serial y el ds1307 al bus i2c con una resistencias analogicas con ellas funciona bien el ds1307 y solo puedo escribir una sola vez en la memoria pero cuando realizo el cambio por las memorias pull up de proteus ya no funciona nada y se queda en un bucle con el ds1307.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #10 en: 12 de Julio de 2007, 17:52:25 »
que raro, yo ahora uso todo con pullups y todo va bacán  :-/, el ds1307 las memorias etc etc.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #11 en: 13 de Julio de 2007, 21:15:32 »
simplemente lo qeu buscaba, tb ya perdia los cabellos con el proteus, muchas gracias por el dato!!! gracias!!
.

Desconectado cesmarvas

  • PIC10
  • *
  • Mensajes: 13
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #12 en: 24 de Julio de 2007, 14:43:01 »
 :-/ :-/ :-/ :-/ estoy contento por su descubrimiento yo hasta ahora en la mañana me estaba rompiendola cabeza pensando que pasa porque no lee los mismos datos que escribo en la memoria.

les agradesco a todos y lo tendre en cuenta en mi proyecto. gracias  :-/ :-/ :-/

Desconectado walok

  • PIC10
  • *
  • Mensajes: 2
Re: Memorias I2C en proteus (encontre la solucion)
« Respuesta #13 en: 13 de Septiembre de 2007, 22:02:00 »
Que gran aporte tenia serios problemas para realizar la simulacion de mi proyecto y ahora todo va super!!!!!

 :-/ :-/ :-)