TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: churrinfunflais 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 (https://docs.google.com/folder/d/0B1p64iClB1upNUdYMHdZVlZqZDA/edit)
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...
-
Fíjate que pin es utilizado para sensar el ingreso de una tarjeta y los simulas con un switch :tongue:
Saludos!
-
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:
#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
-
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...
-
Aquí les dejo el circuito y el Hardware Profile.
Hardware Profile:
#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
-
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!
-
SI pero misteriosamente dejo de funcionar de un día a otro, tal ves error del simulador o algo asi.
-
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!
-
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 (https://docs.google.com/open?id=0B1p64iClB1upMU0zRlUyQklNT3c)
MCHPFSUSB Library Help (https://docs.google.com/open?id=0B1p64iClB1upQ1cxMHoxdWtNS3M)
-
Seguí tu consejo y le quite los diodos..
-
Alguna idea al respecto?
-
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..