Autor Tema: tarjetas MMC usando PIC y SPI  (Leído 2018 veces)

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

Desconectado articCircle

  • PIC10
  • *
  • Mensajes: 3
tarjetas MMC usando PIC y SPI
« en: 28 de Marzo de 2006, 07:59:00 »
Hola, estoy probando los drivers mmc_spi.c de ccs para conectar una MMC a un pic. Utilizo un divisor de tensión de 1.8k y 3.3k para adaptar los 5V del pic a los 3.3V de las MMCs tal y como se muestra en http://www.cc5x.de/MMC/

Una vez que la tarjeta está iniciada en modo spi(tras resetearla), todo va de maravilla, puedo escribir en ella y leer sin problemas. PERO el problema es iniciarla Ardiendo , me explico:

Cuando enciendo la fuente de alimentación del sistema y pic (5V) y la de 3.3V para la MMC, el programa en el pic empieza a ejecutarse, pero no me inicia la tarjeta, da la misma respuesta que da cuando enciendo el sistema sin tener conectada la tarjeta. La cosa es que tras encender el equipo, si saco la tarjeta del zócalo, la vuelvo a insertar y hago un reset al pic(iniciar el programa desde el principio) entonces si me reconoce la mmc.

También he probado a desconectar la fuente de 5V y dejar la tarjeta alimentada, cuando vuelvo a encender el pic, entonces si me reconoce la tarjeta.

Resumiendo, si quiero utilizar la tarjeta, tengo que encender el sistema, luego intorducirla y despues hacer un reset.(o llamar la funcion mmc_init despues de insertarla mediante un boton o algo). Y así siempre que encienda el sistema desquiciado . Alguna idea, alguien a utilizado estos drivers????

tambien me gustaría fijar este post como lugar donde aclarar la utilizacion de tarjetas mmc con pics, ya que la cosa no esta muy clara. Cualquier información sobre PICs y MMCs será de utilidad. dejo mi código como ejemplo
Codigo:

#include <18F4550.h>

#fuses HS
#fuses CPUDIV1
#fuses NOWDT
#fuses NOPROTECT
#fuses NOLVP
#fuses NODEBUG

#use delay(clock = 20000000)

#define Led_on          PIN_E1
#define Led_USB_ready   PIN_E2
#define Led_Red         PIN_C6
#define Led_Yellow      PIN_C7


#define MMC_CLK   PIN_A1//PIN_B1

#define MMC_DI    PIN_A0//PIN_B0

#define MMC_DO    PIN_A3//PIN_B3

#define MMC_CS    PIN_A2//PIN_B2

#include "files/mmc_spi.c"
#include "files/LCD420.c"

void main(void)
{

   int mmc_status=35;
   int mmc_hex[512];
   int16 i;

   SETUP_ADC_PORTS(NO_ANALOGS);
   mmc_status=mmc_init();

   for(i=0;i<512;i++)
   {
      if (i<301)
         mmc_hex=204;//0xCC
      else
         mmc_hex=175;//0xAF
   }


   lcd_init();
   output_high(Led_Yellow);
   lcd_gotoxy(1,1);
   printf(lcd_putc, "System Init"Giño;
   printf(lcd_putc, "
MMC status: %u", mmc_status);
   delay_ms(1000);
   output_low(Led_Yellow);



   lcd_putc("f"Giño;
   lcd_gotoxy(1,2);
   printf(lcd_putc, "MMC status: %u", mmc_status);
   output_high(Led_Yellow);
   delay_ms(2000);

   /*output_low(Led_Yellow);
   mmc_status=mmc_write_block(0, 512, mmc_hex);
   lcd_gotoxy(1,2);
   printf(lcd_putc, "MMC status: %u", mmc_status);
   delay_ms(2000);*/

   for(i=0;i<512;i++)
   {
      mmc_hex=0;
   }

   mmc_status=mmc_read_block(0, 512, mmc_hex);
   lcd_putc("f"Giño;
   lcd_gotoxy(1,1);
   printf(lcd_putc, "MMC status: %u", mmc_status);
   lcd_gotoxy(1,2);
   printf(lcd_putc, "MMC byte 0: %X", mmc_hex[0]);
   lcd_gotoxy(1,3);
   printf(lcd_putc, "MMC byte 256: %X", mmc_hex[255]);
   lcd_gotoxy(1,4);
   printf(lcd_putc, "MMC byte 512: %X", mmc_hex[511]);

   while (TRUE)
   {
   }
}



Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: tarjetas MMC usando PIC y SPI
« Respuesta #1 en: 28 de Marzo de 2006, 08:12:00 »
creo q solucionarias el problema metiendo un delay de unos 100ms antes de inicializar la tarjeta

saludos

Desconectado articCircle

  • PIC10
  • *
  • Mensajes: 3
RE: tarjetas MMC usando PIC y SPI
« Respuesta #2 en: 28 de Marzo de 2006, 10:29:00 »
hei Jim, gracias por la sugerencia pero lamentablemente ya lo había probado con un delay de 5 segundos y nada. De todas formas lo intenté con 100ms y tampoco nada. Lo mismo de siempre, si quiero utilizar la mmc, la he de conenctar tras encender el sistema. Has utilizado los drivers de ccs mmc_spi.c o una MMC en general??

A ver si consigo sacar algo del foro, mientras seguiré testeando

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
RE: tarjetas MMC usando PIC y SPI
« Respuesta #3 en: 28 de Marzo de 2006, 17:12:00 »
Es probable que diga una tonteria pero... ahí va:

Da la sensación que... cuando alimentas todo tu sistema, el pic empieza a funcionar antes de que se estabilicen las tensiones, corrientes y demas paranoias en la MMC.

Se podría hacer que la MMC se encienda un poco antes que el PIC. Mira a ver si poniendole un condensador al pic entre Vcc y GND de un valor considerable haces que el PIC empiece a funcionar un poco más tarde que la MMC.

Esto sería, más o menos, el mismo efecto que resetear el pic cuando todo el sistema está alimentado, ¿no?

Es una prueba muy rápida y... ya que estás no se pierde nada.



Un saludo desde Alicante.

Desconectado articCircle

  • PIC10
  • *
  • Mensajes: 3
RE: tarjetas MMC usando PIC y SPI
« Respuesta #4 en: 29 de Marzo de 2006, 05:42:00 »
Gracias por la idea, pero lo que sugieres vendría a ser lo mismo que poner un delay de 20 segundos (por ejemplo) al inicio del programa y luego iniciar la tarjeta. Esto ya lo he probado y nada....
A ver si alguien a estado en la misma situación y puede aclaralo


 

anything