FatFs file library to create file system on SD card using PIC18f26k80

Thread Starter

Sangam Singh

Joined Jun 23, 2015
9
i am using PIC18f26k80 to create file system on a micro SD card using the FatFs library available here. I moved the .c and .h files to the working directory and implemented a sample code to read a text file and display it, available here. But i am getting error with the code.

This is my code:

Code:
// Header Files
#include <xc.h>
#include <p18cxxx.h>
#include <stdio.h>
#include <stdlib.h>
#include <plib/pconfig.h>
#include "ffconf.h"
#include "ff.h"
#include "diskio.h"
#include "integer.h"

// PIC18F25K80 Configuration Bit Settings

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG1L
#pragma config RETEN = ON           // VREG Sleep Enable bit (Ultra low-power regulator is Enabled (Controlled by SRETEN bit))
#pragma config INTOSCSEL = HIGH     // LF-INTOSC Low-power Enable bit (LF-INTOSC in High-power mode during Sleep)
#pragma config SOSCSEL = HIGH       // SOSC Power Selection and mode Configuration bits (High Power SOSC circuit selected)
#pragma config XINST = OFF          // Extended Instruction Set (Disabled)

// CONFIG1H
#pragma config FOSC = INTIO1        // Oscillator (Internal RC oscillator, CLKOUT function on OSC2)
#pragma config PLLCFG = ON          // PLL x4 Enable bit (Enabled)
#pragma config FCMEN = OFF          // Fail-Safe Clock Monitor (Disabled)
#pragma config IESO = OFF           // Internal External Oscillator Switch Over Mode (Disabled)

// CONFIG2L
#pragma config PWRTEN = OFF         // Power Up Timer (Disabled)
#pragma config BOREN = OFF          // Brown Out Detect (Disabled in hardware, SBOREN disabled)
#pragma config BORV = 3             // Brown-out Reset Voltage bits (1.8V)
#pragma config BORPWR = ZPBORMV     // BORMV Power level (ZPBORMV instead of BORMV is selected)

// CONFIG2H
#pragma config WDTEN = OFF          // Watchdog Timer (WDT disabled in hardware; SWDTEN bit disabled)
#pragma config WDTPS = 1048576      // Watchdog Postscaler (1:1048576)

// CONFIG3H
#pragma config CANMX = PORTB        // ECAN Mux bit (ECAN TX and RX pins are located on RB2 and RB3, respectively)
#pragma config MSSPMSK = MSK7       // MSSP address masking (7 Bit address masking mode)
#pragma config MCLRE = ON           // Master Clear Enable (MCLR Enabled, RE3 Disabled)

// CONFIG4L
#pragma config STVREN = ON          // Stack Overflow Reset (Enabled)
#pragma config BBSIZ = BB2K         // Boot Block Size (2K word Boot Block size)

// CONFIG5L
#pragma config CP0 = OFF            // Code Protect 00800-01FFF (Disabled)
#pragma config CP1 = OFF            // Code Protect 02000-03FFF (Disabled)
#pragma config CP2 = OFF            // Code Protect 04000-05FFF (Disabled)
#pragma config CP3 = OFF            // Code Protect 06000-07FFF (Disabled)

// CONFIG5H
#pragma config CPB = OFF            // Code Protect Boot (Disabled)
#pragma config CPD = OFF            // Data EE Read Protect (Disabled)

// CONFIG6L
#pragma config WRT0 = OFF           // Table Write Protect 00800-03FFF (Disabled)
#pragma config WRT1 = OFF           // Table Write Protect 04000-07FFF (Disabled)
#pragma config WRT2 = OFF           // Table Write Protect 08000-0BFFF (Disabled)
#pragma config WRT3 = OFF           // Table Write Protect 0C000-0FFFF (Disabled)

// CONFIG6H
#pragma config WRTC = OFF           // Config. Write Protect (Disabled)
#pragma config WRTB = OFF           // Table Write Protect Boot (Disabled)
#pragma config WRTD = OFF           // Data EE Write Protect (Disabled)

// CONFIG7L
#pragma config EBTR0 = OFF          // Table Read Protect 00800-03FFF (Disabled)
#pragma config EBTR1 = OFF          // Table Read Protect 04000-07FFF (Disabled)
#pragma config EBTR2 = OFF          // Table Read Protect 08000-0BFFF (Disabled)
#pragma config EBTR3 = OFF          // Table Read Protect 0C000-0FFFF (Disabled)

// CONFIG7H
#pragma config EBTRB = OFF          // Table Read Protect Boot (Disabled)

/*
*
*/
FATFS FatFs;   /* Work area (file system object) for logical drive */

int main (void)
{
    FIL file;       /* File object */
    char line[82]; /* Line buffer */
    FRESULT fr;    /* FatFs return code */


    /* Register work area to the default drive */
    f_mount(&FatFs," ", 0);

    /* Open a text file */
    fr = f_open(&file,"message.txt", FA_READ);
    if (fr) return (int)fr;

    /* Read all lines and display it */
    while (f_gets(line,sizeof line, &file))
        printf(line);

    /* Close the file */
    f_close(&file);

    return 0;
}
And this is the error that I am getting:

Code:
 main.c:91: error: (1466) registers unavailable for code generation of this expression
    main.c:94: error: (1466) registers unavailable for code generation of this expression
    main.c:98: error: (1466) registers unavailable for code generation of this expression
    main.c:102: error: (1466) registers unavailable for code generation of this expression
How shall I change my code to properly write/read files on the SD Card ?
 
Top