This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

FM24C256

Hello there,

Please help me, i am looking for a code using CodeVision on How to store and read data from FRAM(FM24C256)...im waiting for your reply.. Thanks in advance...........

Bryan

Parents
  • Edited Code:

    /* the I2C bus is connected to PORTB */
    /* the SDA signal is bit 3 */
    /* the SCL signal is bit 4 */
    
    #asm
        .equ __i2c_port=0x18
        .equ __sda_bit=3
        .equ __scl_bit=4
    #endasm
    
    /* now you can include the I2C Functions */
    #include <i2c.h>
    
    #include <mega16.h>
    #include <stdio.h>
    
    #define FRAM_BUS_ADDRESS 0xa0
    
    /* read a byte from the FRAM */
    unsigned char fram_read(unsigned char address)
    {
      unsigned char data;
    
      i2c_start();
      i2c_write(FRAM_BUS_ADDRESS);
      //i2c_write((FRAM_BUS_ADDRESS|(int)&0xFE));
      //i2c_write(address+1);
      i2c_write(address);
      i2c_start();
      i2c_write(FRAM_BUS_ADDRESS|1);
      data=i2c_read(0);
      i2c_stop();
      return data;
    
    }
    
    /* write a byte to the FRAM */
    void fram_write(unsigned char address, unsigned char data)
    {
      i2c_start();
      i2c_write(FRAM_BUS_ADDRESS);
      //i2c_write((FRAM_BUS_ADDRESS|(int)0xFE));
      //i2c_write(address+1);
      i2c_write(address);
      i2c_write(data);
      i2c_stop();
    }
    
    void main(void)
    {
      unsigned char i;
    
      PORTB = 0b00000000;
      DDRB  = 0b00000000;
    
      /*-HW UART-*/
      UCSRA = 0x00;
      UCSRB = 0x18;
      UCSRC = 0x86;
      UBRRH = 0x00;
      UBRRL = 0x17;
    
      /* initialize the I2C bus */
      i2c_init();
    
      /* write the byte 55h at address AAh */
      fram_write(0xaa,0x55);
    
      /* read the byte from address AAh */
      i=fram_read(0xaa);
    
      /*--------------------------------------------*/
      if (i=='\0'){
           printf("\rFRAM is Empty...\r");
         }
      else{
           printf("\rData stored in FRAM : %c \r",i);
         }
      /*--------------------------------------------*/
    
      while (1); /* loop forever */
    }
    

Reply
  • Edited Code:

    /* the I2C bus is connected to PORTB */
    /* the SDA signal is bit 3 */
    /* the SCL signal is bit 4 */
    
    #asm
        .equ __i2c_port=0x18
        .equ __sda_bit=3
        .equ __scl_bit=4
    #endasm
    
    /* now you can include the I2C Functions */
    #include <i2c.h>
    
    #include <mega16.h>
    #include <stdio.h>
    
    #define FRAM_BUS_ADDRESS 0xa0
    
    /* read a byte from the FRAM */
    unsigned char fram_read(unsigned char address)
    {
      unsigned char data;
    
      i2c_start();
      i2c_write(FRAM_BUS_ADDRESS);
      //i2c_write((FRAM_BUS_ADDRESS|(int)&0xFE));
      //i2c_write(address+1);
      i2c_write(address);
      i2c_start();
      i2c_write(FRAM_BUS_ADDRESS|1);
      data=i2c_read(0);
      i2c_stop();
      return data;
    
    }
    
    /* write a byte to the FRAM */
    void fram_write(unsigned char address, unsigned char data)
    {
      i2c_start();
      i2c_write(FRAM_BUS_ADDRESS);
      //i2c_write((FRAM_BUS_ADDRESS|(int)0xFE));
      //i2c_write(address+1);
      i2c_write(address);
      i2c_write(data);
      i2c_stop();
    }
    
    void main(void)
    {
      unsigned char i;
    
      PORTB = 0b00000000;
      DDRB  = 0b00000000;
    
      /*-HW UART-*/
      UCSRA = 0x00;
      UCSRB = 0x18;
      UCSRC = 0x86;
      UBRRH = 0x00;
      UBRRL = 0x17;
    
      /* initialize the I2C bus */
      i2c_init();
    
      /* write the byte 55h at address AAh */
      fram_write(0xaa,0x55);
    
      /* read the byte from address AAh */
      i=fram_read(0xaa);
    
      /*--------------------------------------------*/
      if (i=='\0'){
           printf("\rFRAM is Empty...\r");
         }
      else{
           printf("\rData stored in FRAM : %c \r",i);
         }
      /*--------------------------------------------*/
    
      while (1); /* loop forever */
    }
    

Children
No data