#include <18F4550.h>
#device adc=8
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8, force_sw)

#include <SDCard_hard.c>

/* *************************************************************************** */
char BufferSD[512]="Libreria control Memoria SD by Suky.";
/* *************************************************************************** */

int1 ProbandoFuncionamiento(void);
/* *************************************************************************** */
void main()
{
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED|T1_DIV_BY_1);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   output_high(PIN_C0);
   output_high(PIN_C1);
   output_high(PIN_C2);
   
   delay_ms(1000);

   printf("Iniciando SD Card\r\n");

   if(SDCard_init()==0){
      printf("Error\r\n");
   }else{
      printf("Se ha iniciado correctamente la memoria!!!\r\n\r\n");
      ProbandoFuncionamiento();      
   }
   while(1){}
   
}
//******************************************************************************
int1 ProbandoFuncionamiento(void){
char j,k;
long i;

   printf("Lectura del CID:\r\n");
   if(SDCard_read_CID()==0){return(0);}
      
   printf("\r\nLectura del CSD:\r\n");
   if(SDCard_read_CSD()==0){return(0);}
   
   
   printf("\r\nSe realiza escritura de la memoria en 512:\r\n");
   if(SDCard_write_block(512,BufferSD)==0){
      printf("Error! No se ha podido escribir\r\n");
      return(0);
   }
   
   printf("\r\nSe lee el sector de la memoria 0:\r\n");
         
   if(SDCard_read_block(0,BufferSD)==0){
      printf("Error! No se ha podido leer\r\n");
      return(0);
   }
           
   printf("Valores Leidos:\r\n\r\n");
   for(j=0;j<16;j++){
      for(k=0;k<32;k++){
         printf("%X,",BufferSD[((int16)j)*32+((int16)k)]);
      }
      printf("\r\n");
   }
          
   printf("Se lee el sector de la memoria 512:\r\n");
         
   if(SDCard_read_block(512,BufferSD)==0){
      printf("Error! No se ha podido leer\r\n");
      return(0);
   }
   
   printf("Valores Leidos:\r\n\r\n");
   for(j=0;j<16;j++){
      for(k=0;k<32;k++){
         printf("%X,",BufferSD[((int16)j)*32+((int16)k)]);
      }
      printf("\r\n");
    }
    return(1);
}



