Autor Tema: SD Card data logger  (Leído 4188 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado churrinfunflais

  • PIC12
  • **
  • Mensajes: 68
SD Card data logger
« en: 24 de Julio de 2012, 19:46:08 »
Hola amigos!!!

Estoy tratando de realizar un proyecto en el que guardo datos de un sensor en un archivo en una memoria SD, estoy tratando de utilizar el MDD File System de Microchip y me estoy basando en sus ejemplos, el problema es que cuando lo simulo en el proteus este no me detecta la inserción de la tarjeta y el programa no puede avanzar... (esto mismo pasa con los ejemplos originales de microchip)...

Me pregunto si tengo que agregar algo en el circuito??...

Estoy utilizando C18, MPLABX 1.03, Proteus ISIS 7.10, PIC18F46j50 y PIC18f8722, SD Card.

Cualquier ayuda es bienvenida.. saludos...

Aquí el link del proyecto...
MDD File System-SD Card - Proyecto

EL proyecto tiene las configuraciones del 18f8722 y el 18f4650, cuando utilizo el 8722 este funciona excepto por el canal analógico que no logro configurar bien y con el 4650 la inserción de la tarjeta no funciona...

« Última modificación: 24 de Julio de 2012, 20:09:56 por churrinfunflais »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: SD Card data logger
« Respuesta #1 en: 24 de Julio de 2012, 23:33:33 »
Fíjate que pin es utilizado para sensar el ingreso de una tarjeta y los simulas con un switch  :tongue:

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado churrinfunflais

  • PIC12
  • **
  • Mensajes: 68
Re: SD Card data logger
« Respuesta #2 en: 25 de Julio de 2012, 11:44:45 »
Fíjate que pin es utilizado para sensar el ingreso de una tarjeta y los simulas con un switch  :tongue:

Saludos!

Si claro el pin utilizado para censar es el puerto B4 el cual ya eh intentado mandarlo a Vdd, Vcc con switch y sin switch, no se si se requiere alguna trama digital o algo similar, porque el pin de inserción de la tarjeta no es simulado en el modulo de MMC del Proteus...

Este es el Hardware Profile del proyecto para el PIC18f46J50:
Código: [Seleccionar]
#elif defined PIC18F46J50_PIM
        #define USE_PIC18
        #define USE_SD_INTERFACE_WITH_SPI
   
        #define INPUT_PIN           1
        #define OUTPUT_PIN          0

        #define USE_SD_INTERFACE_WITH_SPI
   
        #define TRIS_CARD_DETECT    TRISBbits.TRISB4    // Input
        #define CARD_DETECT         PORTBbits.RB4
       
        #define TRIS_WRITE_DETECT   TRISDbits.TRISD7    // Input
        #define WRITE_DETECT        PORTDbits.RD7
     
        // Chip Select Signal
        #define SD_CS               PORTBbits.RB3
        #define SD_CS_TRIS          TRISBbits.TRISB3
           
        // Card detect signal
        #define SD_CD               PORTBbits.RB4
        #define SD_CD_TRIS          TRISBbits.TRISB4
           
        // Write protect signal
        #define SD_WE               PORTDbits.RD7
        #define SD_WE_TRIS          TRISDbits.TRISD7
   
        // TRIS pins for the SCK/SDI/SDO lines
        #define SPICLOCK            TRISBbits.TRISB1
        #define SPIIN               TRISAbits.TRISA1
        #define SPIOUT              TRISAbits.TRISA5
   
        // Latch pins for SCK/SDI/SDO lines
        #define SPICLOCKLAT         LATBbits.LATB1
        #define SPIINLAT            LATAbits.LATA1
        #define SPIOUTLAT           LATAbits.LATA5
   
        // Port pins for SCK/SDI/SDO lines
        #define SPICLOCKPORT        PORTBbits.RB1
        #define SPIINPORT           PORTAbits.RA1
        #define SPIOUTPORT          PORTAbits.RA5
   
        // Registers for the SPI module you want to use
        #define SPICON1             SSP2CON1
        #define SPISTAT             SSP2STAT
        #define SPIBUF              SSP2BUF
        #define SPISTAT_RBF         SSP2STATbits.BF
        #define SPICON1bits         SSP2CON1bits
        #define SPISTATbits         SSP2STATbits
   
        #define SPI_INTERRUPT_FLAG  PIR3bits.SSP2IF
        #define SPIENABLE           SSP2CON1bits.SSPEN
   
#define SPI_INTERRUPT_FLAG_ASM  PIR1, 3

    /** LED ************************************************************/
        #define mInitAllLEDs()      LATE &= 0xFC; TRISE &= 0xFC;

        #define mLED_1              LATEbits.LATE0
        #define mLED_2              LATEbits.LATE1
        #define mLED_3
        #define mLED_4

        #define mGetLED_1()         mLED_1
        #define mGetLED_2()         mLED_2
        #define mGetLED_3()         1
        #define mGetLED_4()         1

        #define mLED_1_On()         mLED_1 = 1;
        #define mLED_2_On()         mLED_2 = 1;
        #define mLED_3_On()
        #define mLED_4_On()

        #define mLED_1_Off()        mLED_1 = 0;
        #define mLED_2_Off()        mLED_2 = 0;
        #define mLED_3_Off()
        #define mLED_4_Off()

        #define mLED_1_Toggle()     mLED_1 = !mLED_1;
        #define mLED_2_Toggle()     mLED_2 = !mLED_2;
        #define mLED_3_Toggle()
        #define mLED_4_Toggle()

        /** SWITCH *********************************************************/
        #define mInitSwitch2()      TRISBbits.TRISB2=1;
        #define mInitSwitch3()      mInitSwitch2();
        #define mInitAllSwitches()  mInitSwitch2();
        #define sw2                 PORTBbits.RB2
        #define sw3                 PORTBbits.RB2

        /** POT ************************************************************/
        #define mInitPOT()          {TRISAbits.TRISA0=1; \
                                                             ANCON0bits.PCFG0 = 0; \
                                                             ADCON0=0x01; \
                                                             ADCON1=0x9E;} // POT on HPC Explorer

            // Will generate an error if the clock speed is too low to interface to the card
            #if (GetSystemClock() < 400000)
            #error System clock speed must exceed 400 kHz
        #endif
« Última modificación: 25 de Julio de 2012, 11:48:57 por churrinfunflais »

Desconectado churrinfunflais

  • PIC12
  • **
  • Mensajes: 68
Re: SD Card data logger
« Respuesta #3 en: 25 de Julio de 2012, 12:11:24 »
ya no se que hacer para hacer jalar este proyecto,, ando blokeado, supongo que debe ser algo del circuito o de la configuración del proyecto... algo de ayuda please..

SAludos...
« Última modificación: 31 de Julio de 2012, 13:19:09 por churrinfunflais »

Desconectado churrinfunflais

  • PIC12
  • **
  • Mensajes: 68
Re: SD Card data logger
« Respuesta #4 en: 31 de Julio de 2012, 13:47:40 »
Aquí les dejo el circuito y el Hardware Profile.

Hardware Profile:
Código: [Seleccionar]
#define DEMO_BOARD PIC18F46J50_PIM
        #define PIC18F46J50_PIM
        #define GetSystemClock()        48000000                        // System clock frequency (Hz)

        #define USE_PIC18
        #define USE_SD_INTERFACE_WITH_SPI
    
        #define INPUT_PIN           1
        #define OUTPUT_PIN          0

        #define USE_SD_INTERFACE_WITH_SPI
    
        #define TRIS_CARD_DETECT    TRISBbits.TRISB4    // Input
        #define CARD_DETECT         PORTBbits.RB4
        
        #define TRIS_WRITE_DETECT   TRISDbits.TRISD7    // Input
        #define WRITE_DETECT        PORTDbits.RD7
    
        // Chip Select Signal
        #define SD_CS               PORTBbits.RB3
        #define SD_CS_TRIS          TRISBbits.TRISB3
            
        // Card detect signal
        #define SD_CD               PORTBbits.RB4
        #define SD_CD_TRIS          TRISBbits.TRISB4
            
        // Write protect signal
        #define SD_WE               PORTDbits.RD7
        #define SD_WE_TRIS          TRISDbits.TRISD7
    
        // TRIS pins for the SCK/SDI/SDO lines
        #define SPICLOCK            TRISBbits.TRISB1
        #define SPIIN               TRISAbits.TRISA1
        #define SPIOUT              TRISAbits.TRISA5
    
        // Latch pins for SCK/SDI/SDO lines
        #define SPICLOCKLAT         LATBbits.LATB1
        #define SPIINLAT            LATAbits.LATA1
        #define SPIOUTLAT           LATAbits.LATA5
    
        // Port pins for SCK/SDI/SDO lines
        #define SPICLOCKPORT        PORTBbits.RB1
        #define SPIINPORT           PORTAbits.RA1
        #define SPIOUTPORT          PORTAbits.RA5
    
        // Registers for the SPI module you want to use
        #define SPICON1             SSP2CON1
        #define SPISTAT             SSP2STAT
        #define SPIBUF              SSP2BUF
        #define SPISTAT_RBF         SSP2STATbits.BF
        #define SPICON1bits         SSP2CON1bits
        #define SPISTATbits         SSP2STATbits
    
        #define SPI_INTERRUPT_FLAG  PIR3bits.SSP2IF
        #define SPIENABLE           SSP2CON1bits.SSPEN
    
#define SPI_INTERRUPT_FLAG_ASM  PIR1, 3

    /** LED ************************************************************/
        #define mInitAllLEDs()      LATE &= 0xFC; TRISE &= 0xFC;

        #define mLED_1              LATEbits.LATE0
        #define mLED_2              LATEbits.LATE1
        #define mLED_3
        #define mLED_4

        #define mGetLED_1()         mLED_1
        #define mGetLED_2()         mLED_2
        #define mGetLED_3()         1
        #define mGetLED_4()         1

        #define mLED_1_On()         mLED_1 = 1;
        #define mLED_2_On()         mLED_2 = 1;
        #define mLED_3_On()
        #define mLED_4_On()

        #define mLED_1_Off()        mLED_1 = 0;
        #define mLED_2_Off()        mLED_2 = 0;
        #define mLED_3_Off()
        #define mLED_4_Off()

        #define mLED_1_Toggle()     mLED_1 = !mLED_1;
        #define mLED_2_Toggle()     mLED_2 = !mLED_2;
        #define mLED_3_Toggle()
        #define mLED_4_Toggle()

        /** SWITCH *********************************************************/
        #define mInitSwitch2()      TRISBbits.TRISB2=1;
        #define mInitSwitch3()      mInitSwitch2();
        #define mInitAllSwitches()  mInitSwitch2();
        #define sw2                 PORTBbits.RB2
        #define sw3                 PORTBbits.RB2

        /** POT ************************************************************/
        #define mInitPOT()          {TRISAbits.TRISA0=1; \
                                                             ANCON0bits.PCFG0 = 0; \
                                                             ADCON0=0x01; \
                                                             ADCON1=0x9E;} // POT on HPC Explorer

            // Will generate an error if the clock speed is too low to interface to the card
            #if (GetSystemClock() < 400000)
            #error System clock speed must exceed 400 kHz
« Última modificación: 31 de Julio de 2012, 13:50:15 por churrinfunflais »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: SD Card data logger
« Respuesta #5 en: 31 de Julio de 2012, 14:37:16 »
No había funcionado? Colocar un diodo a GND no es buena idea, tendrías ~0.7V al presionar el botón y estas al limite de detectar o no el 0 lógico.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado churrinfunflais

  • PIC12
  • **
  • Mensajes: 68
Re: SD Card data logger
« Respuesta #6 en: 31 de Julio de 2012, 14:41:49 »
SI pero misteriosamente dejo de funcionar de un día a otro, tal ves error del simulador o algo asi.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: SD Card data logger
« Respuesta #7 en: 31 de Julio de 2012, 14:53:00 »
En C18 yo les realice algunas modificaciones, porque así como venia no me funcionó. Podes ver en Aplicaciones avanzadas en C18 II. Igualmente nunca lo simule, solo en hardware.

http://www.micros-designs.com.ar/aplicaciones-avanzadas-en-c18/


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado churrinfunflais

  • PIC12
  • **
  • Mensajes: 68
Re: SD Card data logger
« Respuesta #8 en: 31 de Julio de 2012, 15:25:15 »
Si.. el proyecto que utiliza el 18F8722 funciona perfectamente en el ISIS sin necesidad de la detección de la tarjeta, pero es un micro muy grande (80 pins) para la aplicación que le quiero dar por eso es que estoy utilizando el 18F46j50 que es de 40pins pero en este caso no funciona del todo el proyecto o me falta algo que no se que sea..... me parece que el ejemplo de las librerías de microchip están basados en la "PIC18F46J50 FS USB PIM Demo Board + PICtail Board for SD& MMC "

MDDFS Library Help
MCHPFSUSB Library Help

Desconectado churrinfunflais

  • PIC12
  • **
  • Mensajes: 68
Re: SD Card data logger
« Respuesta #9 en: 31 de Julio de 2012, 15:31:19 »
Seguí tu consejo y le quite los diodos..

Desconectado churrinfunflais

  • PIC12
  • **
  • Mensajes: 68
Re: SD Card data logger
« Respuesta #10 en: 16 de Agosto de 2012, 14:06:27 »
Alguna idea al respecto?

Desconectado churrinfunflais

  • PIC12
  • **
  • Mensajes: 68
Re: SD Card data logger
« Respuesta #11 en: 03 de Septiembre de 2012, 18:36:37 »
Bueno amigos creo que resuelto mi dilema ,,, utilizare un VS1003, o un VS1053 para codificar el audio,, así solo me enfocare en transmitir los archivos a la PC por el USART... saludos..


 

anything