EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Topics / Using internal eeprom(256 bytes)

Using internal eeprom(256 bytes)

|

Microcontroller › PIC › Using internal eeprom(256 bytes)

  • This topic has 1 reply, 2 voices, and was last updated 12 years, 4 months ago by Anonymous.
Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • August 28, 2013 at 10:41 am #2611
    akshat
    Participant

    I am trying to write data on internal eeprom but i am getting the result.

    Help me…

     

    Write code:-

     

    volatile BYTE i;
    volatile BYTE vDummy;
    BYTE vSPIONSave;
    BYTE SPICON1Save;
    BYTE B,C;
    BYTE* Dummy_ptr; //Akshat
    BYTE D;
    volatile BYTE Dummy;

    void Write(DWORD address,BYTE val)
    {
     vBytesInBuffer = 0;
        EEPROMAddress = address;
     
     EEPROMBuffer[vBytesInBuffer++] = val;
     B = EEPROMBuffer[0]; 

        // Configure SPI
        SPI_ON_BIT = 0;
        EEPROM_SPICON1 = PROPER_SPICON1;
        SPI_ON_BIT = 1;

        // Set the Write Enable latch
        EEPROM_CS_IO = 0;
        EEPROM_SSPBUF = OPCODE_WREN;
        WaitForDataByte();
        vDummy = EEPROM_SSPBUF;
        EEPROM_CS_IO = 1;

        // Send WRITE opcode
        EEPROM_CS_IO = 0;
        EEPROM_SSPBUF = OPCODE_WRITE;
        WaitForDataByte();
        vDummy = EEPROM_SSPBUF;

        // Send address
     //#if defined(USE_EEPROM_25LC1024)
        //EEPROM_SSPBUF = ((DWORD_VAL*)&EEPROMAddress)->v[2];
        //WaitForDataByte();
        //vDummy = EEPROM_SSPBUF;
        //#endif
     
        EEPROM_SSPBUF = ((DWORD_VAL*)&EEPROMAddress)->v[1];
        C = ((DWORD_VAL*)&address)->v[0]; //akshat
        WaitForDataByte();
        vDummy = EEPROM_SSPBUF;

       EEPROM_SSPBUF = ((DWORD_VAL*)&EEPROMAddress)->v[0];
        C = ((DWORD_VAL*)&address)->v[0]; //akshat
        Dummy_ptr = &C; //akshat
        D= (*Dummy_ptr); //Akshat
        WaitForDataByte();
        Dummy = EEPROM_SSPBUF;
        Dummy_ptr = &Dummy; //Akshat
        D = (*Dummy_ptr); //Akshat
       

        for(i = 0; i < vBytesInBuffer; i++)
        {
            // Send the byte to write
      EEPROM_SSPBUF = EEPROMBuffer;
            WaitForDataByte();
            vDummy = EEPROM_SSPBUF;
        }

        // Begin the write
        EEPROM_CS_IO = 1;

     // Update write address and clear write cache
        EEPROMAddress += vBytesInBuffer;
        vBytesInBuffer = 0;

        // Restore SPI State
        SPI_ON_BIT = 0;
        EEPROM_SPICON1 = SPICON1Save;
        SPI_ON_BIT = vSPIONSave; 
    }

     

     

     

    Read code:-

     

    BYTE Read(DWORD address)
    {
        // Save the address and emptry the contents of our local buffer
        EEPROMAddress = address;
        vBytesInBuffer = 0;
     XEEReadArray(EEPROMAddress, EEPROMBuffer, EEPROM_BUFFER_SIZE);
     
        // Return a byte from our local buffer
        return EEPROMBuffer[EEPROM_BUFFER_SIZE – vBytesInBuffer–];
    }

    XEE_RESULT XEEReadArray(DWORD address, BYTE *buffer, WORD length)
    {
        volatile BYTE i;
        volatile BYTE vDummy;
        BYTE vSPIONSave;
        BYTE SPICON1Save;
        BYTE B,C;
        volatile BYTE Dummy;
        BYTE* Dummy_ptr; //Akshat
        BYTE D;
        // Save SPI state (clock speed)
        SPICON1Save = EEPROM_SPICON1;
        vSPIONSave = SPI_ON_BIT;

        // Configure SPI
        SPI_ON_BIT = 0;
        EEPROM_SPICON1 = PROPER_SPICON1;
        SPI_ON_BIT = 1;

        EEPROM_CS_IO = 0;

        // Send READ opcode
        EEPROM_SSPBUF = OPCODE_READ;
        WaitForDataByte();
        Dummy = EEPROM_SSPBUF;

        //Send address
        //EEPROM_SSPBUF = ((DWORD_VAL*)&address)->v[2];
        //WaitForDataByte();
        //Dummy = EEPROM_SSPBUF;

        EEPROM_SSPBUF = ((DWORD_VAL*)&address)->v[1];
         C = ((DWORD_VAL*)&address)->v[0]; //akshat
        WaitForDataByte();
        Dummy = EEPROM_SSPBUF;

        EEPROM_SSPBUF = ((DWORD_VAL*)&address)->v[0];
        C = ((DWORD_VAL*)&address)->v[0]; //akshat
        Dummy_ptr = &C; //akshat
        D= (*Dummy_ptr); //Akshat
        WaitForDataByte();
        Dummy = EEPROM_SSPBUF;
        Dummy_ptr = &Dummy; //Akshat
        D = (*Dummy_ptr); //Akshat
       
        while(length–)
       {
           EEPROM_SSPBUF = 0;
           WaitForDataByte();
           Dummy = EEPROM_SSPBUF;
           if(buffer != NULL)
              *buffer++ = Dummy;
       }

        EEPROM_CS_IO = 1;

        // Restore SPI state
        SPI_ON_BIT = 0;
        EEPROM_SPICON1 = SPICON1Save;
        SPI_ON_BIT = vSPIONSave;
       
        return XEE_SUCCESS;
    }

     

    i am writing and reading data using internal eeprom. I am not  getting the results.

     

    August 29, 2013 at 4:51 am #10384
    Anonymous
    Guest

    Hi Akshat

    You forgot to mention which microcontroller are you using!

  • Author
    Posts
Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.
Log In

RSS Recent Posts

  • Wien bridge oscillator January 19, 2026
  • Silicon insulated wire January 19, 2026
  • Unable To Get Advertised Op-Amp Slew Rate January 19, 2026
  • Op amp shock January 19, 2026
  • My Advanced Realistic Humanoid Robots Project January 18, 2026

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2026 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise