Autor Tema: [SOLUCIONADO]Ayuda con tiempos en las librerías por software  (Leído 2364 veces)

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

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
[SOLUCIONADO]Ayuda con tiempos en las librerías por software
« en: 15 de Septiembre de 2014, 18:22:16 »
Hola a todos de nuevo, me vais a odiar por que no hago si no preguntar  :oops:

Pues estoy haciendo un proyecto donde estoy empleando la comunicación i2c por software para leer y escribir una memoria 24lc256 y hay veces que va y otras que no.

me explico:

el micro empleado es un pic18f2455 el cristal es de 20mhz sin prescaler ni nada, estoy intentando grabar y leer la memoria, primero con una función que graba un byte y lee un byte, con esa me va, pero a la hora de grabar una cadena y leer una cadena, al grabar no me va pero al leer si.
¡¡¡jojo!!! pero solo en un proyecto que solo hago eso, leer y escribir, si añado las librerías que he desarrollado en un proyecto mayor empleando el mismo micro y cristal entonces ya no va, y eso me da que pensar que al igual es un problema de ajustes de tiempos, ya que cuando implementas estos protocolos por hardware, la electrónica del pic se encarga pero por software es otra cosa.

a ver si alguien me puede orientar...
« Última modificación: 20 de Septiembre de 2014, 08:31:43 por Thulsa Doom »
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: Ayuda con tiempos en las librerías por software
« Respuesta #1 en: 16 de Septiembre de 2014, 18:45:31 »
Hola de nuevo, sigo teniendo problemas para leer y escribir esta memoria por software, por hardware va perfecta.

lo que he averiguado hasta ahora es que las señales son diferentes en el modo por hardware a software, se supone que el driver que trae el compilador es suministrado por el fabricante y se supone que funciona, pero al ver las señales tengo ciertas dudas.
he de decir que las pruebas de señales las he hecho con el proteus pero creo que para el caso es lo mismo, espero no equivocarme .

voy a  poner unas capturas de las señales para que alguien se sepa del tema me diga si valen o no y que habría que modificar

Imagen del sistema implementado por hardware


Imagen del sistema implementado por software


Ahí pueden ver las diferencias de velocidad, que es normal al ser un sistema en hardware será mucho más rápido al software y como tambien pueden ver las señales no coinciden ni en forma ni en tiempos
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Ayuda con tiempos en las librerías por software
« Respuesta #2 en: 16 de Septiembre de 2014, 19:03:29 »
Si utiliza interrupciones en su programa deberia desactivarlas cuando haga la comunicacion I2C, para que no le afecten sus tiempos, otra cosa, en la rutina por software no se envia bien el bit de inicio. El pin de reloj debe estar en cero antes de enviar los datos.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado man3s

  • PIC12
  • **
  • Mensajes: 69
Re: Ayuda con tiempos en las librerías por software
« Respuesta #3 en: 16 de Septiembre de 2014, 19:05:07 »
Que tal amigo, ¿Es posible que muestres el codigo fuente?, puede que el problema sea por otra cosa.

Saludos.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ayuda con tiempos en las librerías por software
« Respuesta #4 en: 16 de Septiembre de 2014, 20:04:00 »
  Aquí hay una rutinas que he probado en ISIS, y con una 24C04 en físico y obtuve buenos resultados.

http://www.todopic.com.ar/foros/index.php?topic=40649.60
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: Ayuda con tiempos en las librerías por software
« Respuesta #5 en: 17 de Septiembre de 2014, 09:13:02 »
 Aquí hay una rutinas que he probado en ISIS, y con una 24C04 en físico y obtuve buenos resultados.

http://www.todopic.com.ar/foros/index.php?topic=40649.60

Pues el driver que me has indicado va genial, lo he adaptado a c18 y puedo leer y escribir en una eeprom 24LC256 pero solo la he probado en proteus no la he probado en físico pero la forma de onda de las señales me da buena espina.  :-/ :-/

ahora me hace falta terminar este driver y para ello me gustaría guardar y leer páginas, la verdad que he intentado fabricarme la función para ello pero se me escapa de mis conocimientos, si me podéis ayudar a construirla lo agradecería, no sé por donde empezar la verdad.

No entiendo como el fabricante publica un driver que se supone que funciona con el protocolo y no va, que alguien me lo explique

EDITO:
Corrijo, si que funciona el protocolo que viene en las librerías del compilador, pido disculpas al fabricante  :oops:, pero solo en grabar y leer un byte, lo que no me funciona es el escribir un array porque leer un array entero desde la memoria si que funciona.
¿por que puede ser eso?

Comparto el proyecto para ver si me pueden echar una mano
https://www.dropbox.com/s/3kqzrnswpqeyyc0/24LC256_C18.7z?dl=0
« Última modificación: 17 de Septiembre de 2014, 13:30:28 por Thulsa Doom »
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: Ayuda con tiempos en las librerías por software
« Respuesta #6 en: 18 de Septiembre de 2014, 14:07:51 »
Hola a todos, he conseguido que me funcione el driver sw_i2c, el mismo que trae el compilador c18, al final era una chorrada por lo que no me funcionaba. :D :D

una cosa curiosa para el que quiera jugar con estos dispositivos y no se estalle como yo y pierda tiempo..... :5]

a la hora de programar la memoria en modo secuencial tiene que ser en páginas de 64bytes, no podemos empezar la programación donde queramos, bueno corrijo  donde queramos si, pero sin superar el tamaño de la página ya que si lo superamos, el contador de la memoria se va ha cero dando un salto para atrás, al principio de la página donde estamos trabajando y machacará otra información que tengamos almacenada y dispersará la que estamos añadiendo. voy a subir unas imágenes para que quede más claro:

memoria respetando la página de 64 bytes


Si cuentan desde la posición 0x0000 a la 0x0040 pueden comprobar que la 0x0040 es la posición 65, con lo cual ahí empieza una nueva página

y cuando no se respetan los 64 bytes sucede esto:


Por supuesto y que no quepa duda, que haré un tutorial cuando tenga todo bien documentado de esto para compartir los conocimientos.

saludos y gracias por la ayuda :-/ :-/ :-/
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: Ayuda con tiempos en las librerías por software
« Respuesta #7 en: 20 de Septiembre de 2014, 08:25:39 »
Hola a todos, lo prometido es deuda y cuelgo el tutorial donde explico el manejo de la memoria externa por medio de un microcontrolador con el protocolo i2c

no sé si esto es una chorrada y no interesa pero como a mi me ha costado comprenderlo y cómo he aprendido mucho de las ayudas desinteresadas de los demás, considero que es hora de compartir mis pocos conocimientos para ayudar al que le haga falta, por eso hago lo que hago.

Cómo conectar una memoria Eeprom 24LCV256 por el protocolo I2C a un microcontrolador
 

         
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ayuda con tiempos en las librerías por software
« Respuesta #8 en: 20 de Septiembre de 2014, 08:48:45 »
Hola a todos, lo prometido es deuda y cuelgo el tutorial donde explico el manejo de la memoria externa por medio de un microcontrolador con el protocolo i2c

no sé si esto es una chorrada y no interesa pero como a mi me ha costado comprenderlo y cómo he aprendido mucho de las ayudas desinteresadas de los demás, considero que es hora de compartir mis pocos conocimientos para ayudar al que le haga falta, por eso hago lo que hago.

Cómo conectar una memoria Eeprom 24LCV256 por el protocolo I2C a un microcontrolador

         

  ¿Cómo no va a interesar?  Siempre es bueno encontrar información en español y más aún para quienes hacemos cosas por hobby. Y ni hablar de aquellos que quieren ver sus proyectos funcionando rápidamente.

  Gracias!!!
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas


 

anything