##// END OF EJS Templates
Corrected bug 591
Corrected bug 591

File last commit:

r53:8299696715f8 dev_alexis
r56:bf21d93f0037 dev_alexis
Show More
24LC0X.c
103 lines | 3.1 KiB | text/x-c | CLexer
/*------------------------------------------------------------------------------
-- This file is a part of the libuc, microcontroler library
-- Copyright (C) 2011, Alexis Jeandet
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-------------------------------------------------------------------------------
-- Author : Alexis Jeandet
-- Mail : alexis.jeandet@gmail.com
-------------------------------------------------------------------------------*/
#include <24LC0X.h>
#include <i2c.h>
#include <core.h>
/*
struct 24LC0X_str
{
i2cDev iicdev;
unsigned char devAddress;
unsigned char size;
};
*/
void eeprom24lc0xopen(eeprom24lc0xDev* dev, i2c_t iicdev, unsigned char A0_A1_A2_val, unsigned int size)
{
dev->iicdev = iicdev;
dev->devAddress = 0x50 | (A0_A1_A2_val & 0x7);
if(size == 2048) dev->size = 2;
if(size == 1024) dev->size = 1;
}
void eeprom24lc0xpagewrite(eeprom24lc0xDev dev,unsigned char address,unsigned char* page)
{
int cmdcnt=1,datacnt=8;
//i2cwrite(dev.iicdev,address,page)
//i2cwrite2(dev.iicdev,dev.devAddress,&address,&cmdcnt,page,&datacnt);
}
void eeprom24lc0xpageread(eeprom24lc0xDev dev,unsigned char address,unsigned char* page)
{
int cmdcnt=1,datacnt=8;
/*i2cwrite(dev.iicdev,dev.devAddress,&address,&cmdcnt);
i2cread(dev.iicdev,dev.devAddress,page,&datacnt);*/
}
void eeprom24lc0xbytewrite(eeprom24lc0xDev dev,unsigned char address,unsigned char data)
{
int cmdcnt=1,datacnt=1;
//i2cwrite2(dev.iicdev,dev.devAddress,&address,&cmdcnt,&data,&datacnt);
}
unsigned char eeprom24lc0xbyteread(eeprom24lc0xDev dev,unsigned char address)
{
int cmdcnt=1,datacnt=1;
unsigned char data = 0;
/* i2cwrite(dev.iicdev,dev.devAddress,&address,&cmdcnt);
i2cread(dev.iicdev,dev.devAddress,&data,&datacnt);*/
return data;
}
void eeprom24lc0xreadn(eeprom24lc0xDev dev,unsigned char address,unsigned char* data, unsigned int count)
{
int cmdcnt=1,datacnt=count;
/* i2cwrite(dev.iicdev,dev.devAddress,&address,&cmdcnt);
i2cread(dev.iicdev,dev.devAddress,data,&datacnt);*/
}
void eeprom24lc0xwriten(eeprom24lc0xDev dev,unsigned char address,unsigned char* data, unsigned int count)
{
int cmdcnt=1,datacnt=8;
while(count >8)
{
cmdcnt=1;datacnt=8;
// while(i2noerr!=i2cwrite2(dev.iicdev,dev.devAddress,&address,&cmdcnt,data,&datacnt)){cmdcnt=1;datacnt=8;}
count-=8;
address+=8;
data+=8;
}
cmdcnt=1;datacnt=count;
// while(i2noerr!=i2cwrite2(dev.iicdev,dev.devAddress,&address,&cmdcnt,data,&datacnt)){cmdcnt=1;datacnt=count;}
}