TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fastyx en 04 de Octubre de 2006, 16:06:28

Título: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 04 de Octubre de 2006, 16:06:28
Amigos: estoy diseñando un cartucho de memoria para transferir datos de una pc ( puerto serie ) a una maquina textil.

No se si sabran pero encontre un tipo de eeprom mas rapidas que las comunes , se llaman fram , el codigo para una de 256 kb es fm25256 y tiene un tiempo de escritura igual a la velocidad del bus ( 15 mhz ). No hay que colocarle delay , y se alimentan con 5 volts.

espero les sirva de ayuda...
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 04 de Octubre de 2006, 16:58:07
Amigos: estoy diseñando un cartucho de memoria para transferir datos de una pc ( puerto serie ) a una maquina textil.

No se si sabran pero encontre un tipo de eeprom mas rapidas que las comunes , se llaman fram , el codigo para una de 256 kb es fm25256 y tiene un tiempo de escritura igual a la velocidad del bus ( 15 mhz ). No hay que colocarle delay , y se alimentan con 5 volts.

espero les sirva de ayuda...

Qué interesante!! Estuve leyendo un poco y la verdad dicen que son así, y si tu lo confirmas buenisimo entonces.

Estuve también viendo precio y salen algo asi como 2.5 veces más que un equivalente en I2C pero con 5mseg de demora por cada 128 bytes.

Realmente es una excelente opción.

También ví que el distribuidor para sudamérica es CIKA, alguien trajo algo de esto por Argentina? si es así, el precio puesto acá?

Saludos
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 04 de Octubre de 2006, 19:17:14
yo compre 7 unidades en cika la fm 25256 y son saladas , pero imaginate si tengo que escribir 200 kb en unas eeprom comunes el calculo me daba como 30 minutos , en cambio con estas memorias la velocidad es la del bus.

Las pagué algo  de 6 dolares cada una , pero no tenia otra opcion. Estuve mirando de usar un floppy fuera de la pc para leer diskettes , pero no encontre material para hacerlo con pics en "c".

saludos
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: BrunoF en 04 de Octubre de 2006, 21:20:01
Hola Maunix.
He comprado muchas veces en CIKA Rosario.
Les paso el link de la empresa:

CIKA (http://htpp://www.cika.com.ar)

En la pagina pueden consultar los precios de sus productos de manera online.
Segun lo que veo, esto es lo que dice:

Código:Descripción:Marca:Precio:
FM25256-G
FRAM SERIAL SPI 256KB 15MHZ 4-5.5V 7mARAMTRONU$ 8.1

Saludos.
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: Chaly29 en 04 de Octubre de 2006, 21:21:49
Hola fastyx, en realidad no estan caratuladas como eepron, si no como ram ferricas o ferromagneticas por eso la velocidad que poseen, pero tienen la ventaja de que no se les borra el dato al quitarles la alimentación.

Un saludo.

Atte. CARLOS.
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 04 de Octubre de 2006, 23:07:24
Bruno, gracias por el link.  La última vez que visité la página de CIKA de casualidad si tenian un texto con el teléfono  :)
Esto que me mencionas realmente es algo nuevo para mí en cuanto a este proveedor.  De todas formas el precio no difiere tanto del de EEUU que ronda los 6 dólares.  En otras cosas (PICs), la diferencia de precio es de un 200%!

Las pagué algo  de 6 dolares cada una , pero no tenia otra opcion. Estuve mirando de usar un floppy fuera de la pc para leer diskettes , pero no encontre material para hacerlo con pics en "c".

Si necesitas mucha capacidad lo mejor tal vez sería una memoria SD o similar.  Además son transportables!  Yo no consideraría usar diskettes como opción con las memorias FLASH que hay hoy en día.

yo compre 7 unidades en cika la fm 25256 y son saladas , pero imaginate si tengo que escribir 200 kb en unas eeprom comunes el calculo me daba como 30 minutos , en cambio con estas memorias la velocidad es la del bus.

Si? ¿30 minutos? ¿Cómo has hecho el cálculo? Hablas de 200Kbits  o 200 KBytes?
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 05 de Octubre de 2006, 16:21:48
el calculo lo hice con 200 kbytes

con respecto a la tarjeta sd no encontre , ya que soy novato en esto, un link donde poder entender como funcionan y lo que es mas importante como se maneja la famosa fat de windows

en cuanto al precio , es una atencion que me hicieron por cfomprador habitual.

salu2
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 05 de Octubre de 2006, 17:07:31
el calculo lo hice con 200 kbytes

Me refería a que comentes COMO hiciste el cálculo, como es que te da 30minutos, es que creo que está mal! Por eso quiero ver como haz hecho tus cálculos.

con respecto a la tarjeta sd no encontre , ya que soy novato en esto, un link donde poder entender como funcionan y lo que es mas importante como se maneja la famosa fat de windows

Es verdad, son algo más complicadas.
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 05 de Octubre de 2006, 17:08:08
tenes razon chaly , en realidad se comporatam como ram pero no volatiles
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 05 de Octubre de 2006, 17:23:33
 corregime si le erré :

usando el serial a 9600 baudios , esto seria 1200 bytes por segundo. Si necesito transferir 200.000 bytes , divido 200.000 por 1200 y me da la cantidad de

 segundos en transferir esa cantidad : 167 segundos. A eso hay que sumarle los 5 mseg de cada maniobra de escritura sobre una eeprom normal:

200.000 *5 mseg = 1 millon de milisegundos , o sea 1000 segundos mas , en total 1167 segundos , que divididos por 60 me da 19,47 minutos( no 30 )

pero igual es una enormidad de tiempo.
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 05 de Octubre de 2006, 18:07:24
corregime si le erré :

usando el serial a 9600 baudios , esto seria 1200 bytes por segundo. Si necesito transferir 200.000 bytes , divido 200.000 por 1200 y me da la cantidad de

 segundos en transferir esa cantidad : 167 segundos. A eso hay que sumarle los 5 mseg de cada maniobra de escritura sobre una eeprom normal:

200.000 *5 mseg = 1 millon de milisegundos , o sea 1000 segundos mas , en total 1167 segundos , que divididos por 60 me da 19,47 minutos( no 30 )

pero igual es una enormidad de tiempo.

A ver si nos entendemos.  Si comparamos una memoria SPI debemos compararla con otra SPI, no se porque hablas de 9600 baudios.

Una memoria de 256Kbits tiene 32KBytes x 8 bits.  Debes transmitir entonces 32KBytes.

Las memorias en cuestión SPI o I2C aceptan velocidades de 100Kbps, 400Kbps o 1Mbps. 

Si tienes una memoria de 32KBytes, una típica i2c, tiene un buffer de 128 bytes.   La demora está en el tiempo de escritura, no en la transferencia.

En este modo, para escribir 128 bytes, necesitaremos aproximadamente 132 bytes de comunicación.  El i2c necesita unos 10 flancos de reloj para completar su tarea.  Esto hace

132 * 10 bits por byte / 100^3 = 13,2 mseg. 

El tiempo en escribir esos 128 bytes será entonces

Tenvío + Tescritura = 13,2 + 5 = 18,2 mseg

Si quieres trasnferir 32Kbytes te dará 32Kbytes / 128 bytes / transmision = 256 transmisiones

256 transmisiones * 18,2 mseg = 4,65 seg   // 32768 bytes en 256 transmisiones de 128 bytes.



Si quieres realmente transmitir 200 KBytes, suponiendo que tienes varias memorias de 32KBytes, esto te dará

200KBytes / 32KBytes por memoria = 7 integrados de memoria

Tmemorias = Tmemoria x 7 = 4,65 seg x 7 memorias = 32,5 segs.

Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: BrunoF en 05 de Octubre de 2006, 18:13:32
Creo que fastyx se refiere a el tiempo total del grabado desde la PC hasta llegar a la memoria.De ahi salen los baudios que menciona. ¿O me equivoco?
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 05 de Octubre de 2006, 18:49:31
es cierto que puedo transmitir a mas de 9600 baudios , pero me referia a la escritura de la eeprom e hice un calculo con una velocidad media o "normal",
ya que el programa textil que tengo transfiere los datos al serial a no mas de 19200 baudios
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: Chaly29 en 05 de Octubre de 2006, 19:21:34
Hola fastyx, te aclaro un par de cosas:

19200 baud/seg = 1920 bytes/seg = 15360 bits/seg
9600   baud/seg = 960  bytes/seg = 7680   bits/seg

Por supuesto esto es en el mejor de los casos.

Un saludo.

Atte. CARLOS.
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 05 de Octubre de 2006, 20:11:28
tenes razon , me parece que al hacer el calculo no tuve en cuenta los bits de start y de stop, por eso dividi por ocho y vos por diez verdad?
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 05 de Octubre de 2006, 20:52:17
Creo que fastyx se refiere a el tiempo total del grabado desde la PC hasta llegar a la memoria.De ahi salen los baudios que menciona. ¿O me equivoco?

Pero si tiene esa demora, de la PC hasta un PIC , el cual puede estar conectado a una memoria i2c o a una de estas super rápidas, la demora sería la misma en uno y otro caso.

Solo se diferenciarían en el t. de grabado pero el "cuello de botella" estaría en la comunicación y no en el tiempo de demora del grabado de la memoria i2c, ya que entre 'tramas de datos' habría más que 5 mseg que demoraría en grabar tandas de 5 mseg.

Saludos



Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 05 de Octubre de 2006, 21:21:57
es verdad , pero la diferencia entre tener en el cartucho una memoria eeprom comun y una fm25256 marca la diferencia entre 200 segundos y 19 minutos

es correcto esto?
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 05 de Octubre de 2006, 21:40:34
es verdad , pero la diferencia entre tener en el cartucho una memoria eeprom comun y una fm25256 marca la diferencia entre 200 segundos y 19 minutos

es correcto esto?

No, no lo es. 

Supongamos que transferis 128 bytes a 9600 desde la PC al PIC, luego el PIC graba o bien en la memoria i2c común o en la fm25256 a 15Mbps.

Te muestro la secuencia.

1) La PC transmite 128 bytes a 9600 bps .  Es lo mismo que decir que trasnmitirá 1280 bits a 9600bps , lo cual le demorará 133,33 mseg.

2) El PIC almacena los 128 bytes y los transmite a la memoria EEPROM o en la fm25256.

3) El pic comienza a recibir los segundos 128 bytes, los cuales demoran otros 133,33 mseg.  Durante ese tiempo la memoria I2C tuvo tiempo para grabar todos los 128 bytes!! (5mseg o 10mseg de acuerdo al tipo de memoria).   Por supuesto sigo hablando de una memoria de 32KBytes que tiene un buffer de 128.

Es por eso, que no notarías diferencia.

Saludos
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 05 de Octubre de 2006, 23:04:30
entendi.  o sea que usando el serial le trabo de alguna manera las bondades tanto del spi como del i2c , ralentizando todo el proceso en ese lugar.

Aprovecho para preguntarte donde puedo leer material que me explique la secuencia de recepcion y buffereado del pic con el puerto serie , y de que manera se comunica el pic con el puerto serie para decirle: "espera que tengo el buffer lleno, en cuanto lo vacio te aviso y seguimos"

desde ya gracias!
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 05 de Octubre de 2006, 23:58:28
entendi.  o sea que usando el serial le trabo de alguna manera las bondades tanto del spi como del i2c , ralentizando todo el proceso en ese lugar.
Asi es, el sistema irá a la velocidad del elemento más lento.  En tu caso la comunicación serie.

Aprovecho para preguntarte donde puedo leer material que me explique la secuencia de recepcion y buffereado del pic con el puerto serie , y de que manera se comunica el pic con el puerto serie para decirle: "espera que tengo el buffer lleno, en cuanto lo vacio te aviso y seguimos"

desde ya gracias!

Lo del buffer del pic no tiene mayor misterio.  Si trabajas en C tenes que hacer un array y lo vas llenando a medida que vas recibiendo los bytes.

En cuanto a lo otro es lo que se llama "control de flujo", lo podes hacer por hardware o por software.

Por hardware sería usando la señalización CTS, RTS, DTR y DSR.  Por software sería por ejemplo, que el pic le responda a la PC recién cuando haya terminado de enviar los datos a la memoria.
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: Chaly29 en 06 de Octubre de 2006, 01:14:59
Exacto fastyx, as anotado un punto,  :mrgreen:

Un saludo.
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 06 de Octubre de 2006, 20:06:01
que comandos se usan para que el pic le diga a la pc espera que no vacie el buffer?
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 07 de Octubre de 2006, 12:55:02
que comandos se usan para que el pic le diga a la pc espera que no vacie el buffer?

fastyx, te lo dije 2 posts más arriba.  Hay muchas formas de hacer esto, y te puse que leas un poco por internet para que "comprendas" como es el tema más allá que luego decidas una u otra forma de hacerlo.

Control de flujo por software: Puedes usar el sistema XON/XOFF o bien hacer tú mismo un "protocolo" donde la PC espere cierto comando que le indique "manda de nuevo".

Control de flujo por hardware: usando la señalización CTS, RTS, DTR y DSR. 

Es un tema extenso y en internet está lleno de explicaciones del tema.
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 08 de Octubre de 2006, 22:06:45
Mauricio: desde ya te pido disculpas por la poca experiencia que tengo para buscar sites calificados en Internet,  te aseguro que lo que mas hago es leer y leer y leer .  El tema es cuando encuentro una pagina que habla sobre handshake , no da informacion ( o yo no la encontre) sobre que hace especificamente un dtr o cts , es decir si pone un pin del db9 en un estado determinado , por otra parte en el manual del pic18f452 no existe informacion ( o me la pase por alto) acerca de com maneja el pic la "conversacion " con dichas señales.

Si tenes algun sitio en particular que hable sobre esto , te voy a agradecer que me lo comentes.

muchas gracias y mil disculpas de nuevo por la ignorancia
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 09 de Octubre de 2006, 08:51:13
Mauricio: desde ya te pido disculpas por la poca experiencia que tengo para buscar sites calificados en Internet,  te aseguro que lo que mas hago es leer y leer y leer .  El tema es cuando encuentro una pagina que habla sobre handshake , no da informacion ( o yo no la encontre) sobre que hace especificamente un dtr o cts , es decir si pone un pin del db9 en un estado determinado , por otra parte en el manual del pic18f452 no existe informacion ( o me la pase por alto) acerca de com maneja el pic la "conversacion " con dichas señales.

Si tenes algun sitio en particular que hable sobre esto , te voy a agradecer que me lo comentes.

muchas gracias y mil disculpas de nuevo por la ignorancia

Te cuento brevemente porque ando bastante atareado últimamente.

El 18F452 es un microcontrolador que implementa una USART.  Un módulo de comunicación serie síncrono/asíncrono por 2 pines. 

El RS232 es estándar que define la capa física (niveles de tensión) de una comunicación serial (uart) entre un equipo de envía y otro que recibe.  Cuando usas un PIC con un MAX232 y solo usas TX/RX simplemente estas usando la capacidad UART del RS232 y el control de la comunicación "quien origina y quien recibe" se hace por software. 

Por ej, por software le envías algo al pic y este te responde diciendo un caracter o trama que signifique "ya lo recibí".  Si no te responde en un cierto tiempo (denominado "timeout"), la PC lo vuelve a enviar.

En cuanto al control por hardware esa indicación de "ya estoy listo para recibir" o "estoy listo para enviar" lo hacen las señales CTS, RTS, DTR, DSR.  Con esas señales se indican mutuamente si se debe enviar o no un dato o si se está listo o no.

Tal vez debas buscar información sobre RS232 más que sobre control de flujo.

Te dejo un link que te servirá como punto de partida

http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html (http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html)
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 10 de Octubre de 2006, 19:28:09
Gracias por el link , clarificó mucho sobre el manejo de handshake. Lo que finalmente queria saber era que poner un uno o un cero logico en esos comandos paraba la transmision o la restituia. Ahora si estoy en condiciones de fabricar el transito ente puerto serie---pic---memoria.
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: maunix en 10 de Octubre de 2006, 23:40:50
Gracias por el link , clarificó mucho sobre el manejo de handshake. Lo que finalmente queria saber era que poner un uno o un cero logico en esos comandos paraba la transmision o la restituia. Ahora si estoy en condiciones de fabricar el transito ente puerto serie---pic---memoria.

Me alegro que hayas entendido con mi breve descripción pero sobre todo con el link!

Cuando veas en el PC, verás que si pones un BAJO en el PIC por ahi la señal se pone en ALTO LOGICO y viceversa. 

Trata de conseguirte algún software que te muestre en la pantalla el estado de cada línea, así sabrás bien si estas generando correctamente las señales.

Un soft es el SIOW que viene con el CCS y es muy práctico y fácil de usar.

Saludos
Título: Re: a los que deseen mas velocidad de escritura en las eeprom!
Publicado por: fastyx en 11 de Octubre de 2006, 08:30:34
Gracias por contestar. Valoro qu a pesar de estar ocupado , te hagas tiempo para ayudar.

efectivamente , el siow me ayudó cuando descubri  :lol: las lucecitas de abajo que representaban los estados de las maniobras de handshake, si es que estas se elegian en las opciones.