Autor Tema: alguien ha usado las librerias de SD cards microchip  (Leído 3403 veces)

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

Desconectado oscarjf

  • PIC10
  • *
  • Mensajes: 10
alguien ha usado las librerias de SD cards microchip
« en: 03 de Febrero de 2009, 19:35:11 »
baje la version 1.2.0 de Microchip, y ya la hize que funcionara en un dspic y todo pero es extremadamente lenta, aun poniendo el system clock correcto en los headers

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: alguien ha usado las librerias de SD cards microchip
« Respuesta #1 en: 03 de Febrero de 2009, 20:11:26 »
Yo tengo un Explorer 16 y compre la expansion para SD ... baje las librerias y realicé todo como dice el manual ... y no funcionó  :( :( ... supuse que era la SD pues detras de la expansion hay una leyenda con las SDs recomendadas ...

No he vuelto hacer intentos!

Saludos!
Control Automático, DSP & Microcontroladores

Desconectado oscarjf

  • PIC10
  • *
  • Mensajes: 10
Re: alguien ha usado las librerias de SD cards microchip
« Respuesta #2 en: 03 de Febrero de 2009, 22:22:02 »
yo estoy usando lo mismo pero con el dspic33FJ256GP710, el que te viene con el explorer 16 y este es el codigo que estoy utilizando que funciono pero tuve que agregar las definiciones para el dspic en el Hardwareprofile.h que son estas ya que solo habia definiciones para el 18F el 32 y el 24

   #elif defined __dsPIC33F__

        // Description: SD-SPI Chip Select Output bit
        #define SD_CS               PORTBbits.RB1
        // Description: SD-SPI Chip Select TRIS bit
        #define SD_CS_TRIS          TRISBbits.TRISB1
       
        // Description: SD-SPI Card Detect Input bit
        #define SD_CD               PORTFbits.RF0
        // Description: SD-SPI Card Detect TRIS bit
        #define SD_CD_TRIS          TRISFbits.TRISF0
       
        // Description: SD-SPI Write Protect Check Input bit
        #define SD_WE               PORTFbits.RF1
        // Description: SD-SPI Write Protect Check TRIS bit
        #define SD_WE_TRIS          TRISFbits.TRISF1

        // Registers for the SPI module you want to use

        // Description: The main SPI control register
        #define SPICON1             SPI1CON1
        // Description: The SPI status register
        #define SPISTAT             SPI1STAT
        // Description: The SPI Buffer
        #define SPIBUF              SPI1BUF
        // Description: The receive buffer full bit in the SPI status register
        #define SPISTAT_RBF         SPI1STATbits.SPIRBF
        // Description: The bitwise define for the SPI control register (i.e. _____bits)
        #define SPICON1bits         SPI1CON1bits
        // Description: The bitwise define for the SPI status register (i.e. _____bits)
        #define SPISTATbits         SPI1STATbits
        // Description: The enable bit for the SPI module
        #define SPIENABLE           SPISTATbits.SPIEN

        // Tris pins for SCK/SDI/SDO lines

        // Description: The TRIS bit for the SCK pin
        #define SPICLOCK            TRISFbits.TRISF6
        // Description: The TRIS bit for the SDI pin
        #define SPIIN               TRISFbits.TRISF7
        // Description: The TRIS bit for the SDO pin
        #define SPIOUT              TRISFbits.TRISF8

        // Will generate an error if the clock speed is too low to interface to the card
        #if (GetSystemClock() < 100000)
            #error Clock speed must exceed 100 kHz
        #endif   



y luego tube que quitarle la opcion de que usara el reloj de tiempo real que se realiza agregando comillas al FSconfig.h y ponerle comillas a //#define USEREALTIMECLOCK y a //#define USERDEFINEDCLOCK y le qite las comillas a #define INCREMENTTIMESTAMP


y este es el codigo de prueba, tengo una sandisk de 2 gb microSD pero la use en un adaptador que me vino con la tarjeta y sobre los jumpers que vienen en el modulo todos los tengo en 2-3, espero que funcione


#include "FSIO.h"
#define FCY 36850000UL
#include <libpic30.h>
#define delay_250ms 9212500

_FOSCSEL(FNOSC_FRCPLL);
_FOSC(FCKSM_CSDCMD & OSCIOFNC_ON  & POSCMD_NONE); 
_FWDT(FWDTEN_OFF);




FSFILE * pointer;


void InitClock() {
   OSCTUN = 0;
   PLLFBD = 38;   // M = 40
   CLKDIVbits.PLLPOST = 0;   // N1 = 2
   CLKDIVbits.PLLPRE = 0;   // N2 = 2
   while(OSCCONbits.LOCK != 1) {};
}



int main(void){

char sd_text[] = "JACUINDE";

   InitClock();
   __delay32(delay_250ms);


   while (!MDD_MediaDetect());
   // Initialize the library
   while (!FSInit());


   // Create a file
   pointer = FSfopen ("PRUEBA.txt", "w");
   if (pointer == NULL){
    while(1);
   }

   FSfwrite (sd_text, 8, 1, pointer);

   FSfclose (pointer);

    while(1){

   }
   


}
« Última modificación: 04 de Febrero de 2009, 00:20:42 por oscarjf »

Desconectado oscarjf

  • PIC10
  • *
  • Mensajes: 10
Re: alguien ha usado las librerias de SD cards microchip
« Respuesta #3 en: 04 de Febrero de 2009, 00:20:03 »
otro detalle que se me paso es que no se porque el voltaje que otorga mi programador que es el pickit 2 no otorga la corriente suficiente, entonces tuve que usar una fuente externa de voltaje y solo asi funciono