Autor Tema: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]  (Leído 19740 veces)

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

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #30 en: 18 de Noviembre de 2008, 20:33:08 »
Hola, para el que habia preguntado sobre el rate de lectura/escritura en la tarjeta, les paso algunos valores, no son exactos ya que coloque un timer para medir y la resolucion minima fue de 8.6 us.

Lectura    --> 80 bytes 7.51 ms ( casi 10.6 Kbytes/Sec )
Escritura  --> 80 bytes 34.5 ms ( casi 2 Kbytes/Sec )


Los tiempos bajos tienen que ver con la arquitectura de 8 bits, como el file system involucra mucho calculo de 32 bits al pobre micrito le custa bastante lidiar con esto, ademas tambien depende de las opciones de compilación, seteando la máxima optimización estos tiempos bajaron un 20 % !!!.

Saludos !
« Última modificación: 18 de Noviembre de 2008, 20:38:32 por RICHI777 »

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #31 en: 19 de Noviembre de 2008, 13:07:08 »
Ese que preguntó era yo jeje

esa informaciòn me serà ùtil

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #32 en: 19 de Noviembre de 2008, 13:33:57 »
Hola PaliotroqueZ ( complicadisimo tu nick  :D) igual es una medición sin mucho rigor cientifico, el tema es que el debugger para estos micros no tiene un timer donde puedas hacer la medición directamente, solo en modo simulador pero a mi no me sirve, asi que tuve que poner un timer que me quedaba libre como free-running y ver el resultado. Con respecto a la medición probre de leer y grabar 80 caracteres y extrapole los resultados, pero lo hice en las mejores condiciones ya que arranque con la tarjeta recien formateadita con lo cual no tenia fragmentación y las pruebas no superaban el tamaño del cluster.

Saludos !

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 6 ]
« Respuesta #33 en: 22 de Noviembre de 2008, 14:30:43 »
Hola aca les dejo los archivos del Eagle para el circuito, otra vez gracias a Marcos por pasarmelo en forma totalmente desintereasa.

Saludos !
« Última modificación: 28 de Febrero de 2009, 17:41:48 por RICHI777 »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ]
« Respuesta #34 en: 18 de Marzo de 2009, 12:31:39 »
Hola, debido a consultas que recibí, queria explayarme un poco más en como migrar a otra aplicación, basicamente hay gente que esta usando solamente la parte del File System, asi que en esto me voy a centrar.
La dependencia de files es la sgte:

FS-->Card-->MCU

Los módulos FS ( File System ) y Card ( Accesso a la SD/MMC ) no usan directamente ningún recurso de hardware, sino que lo hacen atravez del módulo MCU. En el mismo deberan implementarse las sgtes funciones para obtener la mínima funcionalidad requerida.

Código: C
  1. void WatchDog_Clear( void )
  2. {
  3.    ...
  4. }
  5. void SetLed( tLedType LedType )
  6. {
  7.   ...
  8. }

Estas dos funciones, una resetea el watch dog interno, y la otra por cada acceso a un sector de la tarjeta prende el led, pueden no ser usadas, en este caso deberan tener el cuerpo vacio.

Las siguientes funciones son requeridas si el acceso a la tarjeta es hecho via SPI:

Código: C
  1. void SPI_Init( tSPIClock SPIClock )
  2. {
  3.   ...
  4. }
  5.  
  6. void SPI_ChangeClock( tSPIClock SPIClock )
  7. {
  8.   ...
  9. }
  10.  
  11. void SPI_SendByte( byte Data )
  12. {
  13.   ...
  14. }
  15.  
  16.  
  17. byte SPI_ReceiveByte( void )
  18. {
  19.   ...
  20. }
  21.  
  22.  
  23. void SPI_CSAssert( void )
  24. {
  25.   ...
  26. }
  27.  
  28.  
  29. void SPI_CSDeassert( void )
  30. {
  31.   ...
  32. }

Las dos primeras existen porque en el inicio es necesario comunicarse con la tarjeta a una velocidad máxima de SPI de 400 KHz, una vez finalizada la inicialización es posible aumentar la velocidad, la misma depende del tipo de tarjeta, las MMC son mas lentas que las SD y si mal no recuerdo permiten un máximo de 5Mhz de SPI.
Las funciones siguientes, Send y Receive no merecen explicación, y las dos últimas encienden/apagan la linea -SS del SPI.
Aunque en casi todos los controloadores de SPI integrados en los micros es posible manejar en forma automatica esta señal, decidi separarla, ya que en cierta parte de inicialización es necesario transmitir una chorreada de '1' pero con esta linea en alto.

Código: C
  1. void SetTimerEvent( tTimerTime *Event, dword MiliSeconds )
  2. {
  3.   ...
  4. }
  5.  
  6. bool TimerHasExpired( tTimerTime *Event )
  7. {
  8.   ...
  9. }

Estas dos funciones son utilizadas para controlar las operaciones de acceso a la tarjeta y cortar por timeout en caso de que algo falle, la primera setea un "evento" con un tiempo programable y la segunda retorna verdadero si ese mismo evento expiro. Si revisan el código de estas dos funciones estan escritas en ANSI C puro, lo único es que dependen de una función interna al módulo que devuelve el valor de un contador free-running que es el encargado de contar la cantidad de ticks por segundo, en este caso es de 10 ms.

Código: C
  1. dword GetTimerTicks( void )
  2. {
  3.     volatile dword ReadTicks;
  4.  
  5.     ReadTicks = TimerTicks;
  6.  
  7.     while ( ReadTicks != TimerTicks )
  8.     {
  9.         ReadTicks = TimerTicks;
  10.     }
  11.  
  12.     return( ReadTicks );
  13. }

Como la función devuelve un dword ( unsigned long o 4 bytes ) en micros cuya aquitectura no sea de 32 bits es necesario realizar la comparación dentro del while ya que la variable TimerTicks se incrementa automaticamente en el handler de un timer y esto sucede en tiempo de interrupción.

Estas son las únicas funciones que deberia implementar para mudar el file system a otra aplicación, recordar setear el endian correspondiente aocrde al micro que se este usando.

Alineación de las estructuras
El último punto importante es verificar la alineación de las estructuras. En micros de 8 bits normalmente el compilador aloca una estructura en base a la suma total de sus miembros:

Código: C
  1. typedef struct
  2. {
  3.   byte FName[11];
  4.   byte Attr;
  5.   word Reserved0;
  6.   word CreationTime;
  7.   word CreationDate;
  8.   word LastAccessDate;
  9.   word Reserved1;
  10.   word LastWriteTime;
  11.   word LastWriteDate;
  12.   word StartCluster;
  13.   dword FileSize;
  14. } tFileInfo;

En este caso el tamaño de la estructura es de 32 bytes ( la suma del sizeof de cada elemento ). Pero esto no siempre es asi, en algunos micros de 32 bits al micro le resulta mas optimo acceder a direcciones pares. Para estos casos el compilador puede "paddear" los miembros para que estos se aloquen siempre en direcciones pares. La estructura interna de File System trabaja con no paddeo o lo que es lo mismo padding = 1 , para asegurarse esto existe un pragma, casi todos los compiladores que vi lo implementan, que permite definir el tamaño del padding, quedando la definicon anterior de la sgte. manera:

Código: C
  1. #pragma pack(1)
  2. typedef struct
  3. {
  4.   byte FName[11];
  5.   byte Attr;
  6.   word Reserved0;
  7.   word CreationTime;
  8.   word CreationDate;
  9.   word LastAccessDate;
  10.   word Reserved1;
  11.   word LastWriteTime;
  12.   word LastWriteDate;
  13.   word StartCluster;
  14.   dword FileSize;
  15. } tFileInfo;

Saludos !
« Última modificación: 19 de Marzo de 2009, 11:27:58 por RICHI777 »

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #35 en: 05 de Abril de 2009, 00:59:59 »
Hola RICHI777 o diogenes, (me gusta más el segundo), te comento lo que voy a "tratar" de hacer, estoy diseñando la placa todavia, tiene que ver con un micro MCF51QE128 (32 bits)de super bajo consumo, de la linea flexis que es totalmente compatible con el MC9S08QE128 (8bits), quiero hacer algo parecido a lo que comentas, guardar en una tarjeta SD las coordenadas de un GPS, solo eso, bueno, tambien le estoy adaptando un modem GSM (multitech) que tengo desde hace varios meses trabajando (con el GPRS sin mucho exito, por decidia mia) y bueno, ahora si me estoy leyendo tu grandisimo aporte, mi pregunta seria, cambiara mucho el codigo si lo quiero hacer con el coldfire? y tambien tiene que ver con el modem, con un modem GPS puedo obtener coordenadas y prescindir del GPS? bueno, te comento que el GPS que compre no es muy bueno, solo lo compre para jugar con el, te pongo el link donde lo compre, por si te interesa modulo GPS este modulo es más didáctico, pero viendo los resultados, pienso adquirir un SIRF STAR 3, bueno, hasta aquí mis dudas, a lo mejor lo postee en el foro de freescale tambien, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #36 en: 06 de Abril de 2009, 12:18:31 »
Hola, la parte de file system y manejo de la tarjeta, no deberias cambiar nada, ya que esta escrita en ANSI C. Lo que tenes que adaptar es la parte de bajo nivel: timers, SCI y SPI porque eso depende exclusivamente del micro que vas a usar. En estos momentos estoy migrando a un V1 similar al que estas usando, pero como todavia no tengo la placa final no pude probarlo.
Para que el proyecto compile sin errores bajo ColdFire, es necesario setear en la seccion de opciones de compilación Enable GCC extension, sino haces esto te reporta ciertos errores.
Te adjunto la versión 1.1 que corrige algunos errores en el retorno de dos funciones pero nada serio. Con respecto a lo que queres hacer, si tenes Modem GPRS con GPS integrado no hay problemas, normalmente estos modulos tienen integrado un GPS SIRF compatible y tienen su propio puerto serie para obtener/configurar las tramas NMEA.

Saludos !
« Última modificación: 06 de Abril de 2009, 13:26:23 por RICHI777 »

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #37 en: 06 de Abril de 2009, 13:57:51 »
Muchas gracias diogenes, por tu respuesta, con respecto al modem, me confundi, es solo un modem GPRS/GSM, pero la pregunta es, si con solo el modulo gsm, se pueden saber las coordenadas, por la respuesta, ya supongo que no se puede, solo los que tienen integrado el modulo GPS, bueno, le adaptare el externo que compre, para que empiece a hacer pruebas, una curiosidad, con cual coldfire estas haciendolo? saludos
una de las razones por la cual utilice el QE. es debido a su bajo consumo, trabaja con 3.3v hasta 1.8v sin problemas (solo baja la frecuencia de trabajo) y que no tendria que poner nada para adpatarlo a la SD por que tambien trabaja este voltaje, y por el modem GSM, ese me parece puede trabajar con los dos voltajes, lo checare, y les comentare como me va, por cierto, solo como comentario sin sentido, ya me compre el usb multilink, excelente programador y depurador, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #38 en: 06 de Abril de 2009, 14:07:38 »
Hola, para saber las coordenadas es necesario un GPS, por eso te comente que hay modulos GSM/GPRS que traen incluidos un GPS. Estoy usando el mismo un CF51QE128, en mi caso porque FreeScale me lo mando como muestra, en si en lo que estoy haciendo solamente necesitaba un micro de que tenga al menos 6 K de RAM por eso descarte los de HCS08XX.

Saludos ! 

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #39 en: 06 de Abril de 2009, 16:29:08 »
es el mismo que estoy utlizando, si quieres te puedo mandar el footprint y el esquematico del micro que hice, yo utilizo el altium, solo avisame si lo quieres y te lo mando, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #40 en: 06 de Abril de 2009, 16:41:40 »
Hola, muchas gracias, pero por una cuestion o otra no diseño impresos, no tengo mucha idea y sinceramente tampoco me interesa demasiado, gracias a Dios tengo un amigo que le paso el esquematico y el me lo diseña y me lo arma. :-)

Saludos !


Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #41 en: 06 de Abril de 2009, 17:08:27 »
 :) :) :) :) :) :)
tienes mucha suerte, por aca no hay muchas personas, (por no decir ninguna) en campeche, que haga este tipo de trabajos, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #42 en: 11 de Agosto de 2009, 17:46:23 »
Hola a todos, decide subir todo el proyecto de MicroLogger al sourceforget.net para tener un repositorio global e ir actualizando los ultimos cambios, este es el link de descarga:

https://sourceforge.net/projects/microfs/

Saludos !

Desconectado elotrogonzalo

  • PIC10
  • *
  • Mensajes: 25
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #43 en: 29 de Mayo de 2015, 19:51:35 »
Estimados, baje el proyecto completo para CW y al compilar me sale éste error que adjunto. Por qué será? yo siempre uso CW pero no uso prossesor expert por las dudas tenga que ver con eso. Otra cosa, podrían explicarme como usar éstas librerías para crear archivos .txt y guardarlos en la  microsd?. Vi en el código que solamente le das el nombre como "test.txt" y lo toma como un archivo .txt que puedo ver en la pc normalmente?. Lo que no me queda muy claro es si con ésta implementación se puede leer cualquier tipo de archivo por ejemplo una imagen .jpg?. Quiero implementarla en un gt32a que son los que uso yo. Muchas gracias. Saludos!!!.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: MicroLogger [MC9S08SH32 y MMC/SD Card ] [Post 1 ]
« Respuesta #44 en: 29 de Mayo de 2015, 19:55:45 »
Entra en la parte de configuration del project "Project" y selecciona a mano la ubicación del archivo prm ...

Saludos !