Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: LPC1114_data_logger dmx_to_stepper BSM02 LPC1114_barometer_with_data_logging
Revision 2:36339fd174d0, committed 2015-02-22
- Comitter:
- kenjiArai
- Date:
- Sun Feb 22 01:24:19 2015 +0000
- Parent:
- 1:05012e75c050
- Child:
- 3:e2268ee1cb0a
- Commit message:
- added change function for I2C frequency
Changed in this revision
| AT24C1024.cpp | Show annotated file Show diff for this revision Revisions of this file |
| AT24C1024.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/AT24C1024.cpp Sun Jun 29 06:52:37 2014 +0000
+++ b/AT24C1024.cpp Sun Feb 22 01:24:19 2015 +0000
@@ -1,12 +1,12 @@
/*
- * mbed library program
+ * mbed library program
* Control AT24C1024 EEPROM
*
- * Copyright (c) 2014 Kenji Arai / JH1PJL
+ * Copyright (c) 2014,'15 Kenji Arai / JH1PJL
* http://www.page.sannet.ne.jp/kenjia/index.html
* http://mbed.org/users/kenjiArai/
* Created: June 17th, 2014
- * Revised: June 25th, 2014
+ * Revised: Feburary 21st, 2015
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
@@ -18,57 +18,62 @@
#include "mbed.h"
#include "AT24C1024.h"
-AT24C1024::AT24C1024 (PinName p_sda, PinName p_scl) : i2c(p_sda, p_scl) {
+AT24C1024::AT24C1024 (PinName p_sda, PinName p_scl) : _i2c(p_sda, p_scl)
+{
AT24C1024_addr = AT24C1024ADDR;
}
-AT24C1024::AT24C1024 (I2C& p_i2c) : i2c(p_i2c) {
+AT24C1024::AT24C1024 (I2C& p_i2c) : _i2c(p_i2c)
+{
AT24C1024_addr = AT24C1024ADDR;
}
-uint8_t AT24C1024::read(int addr) {
-uint8_t eep_dt[2];
-uint8_t tmp_addr;
+uint8_t AT24C1024::read(int addr)
+{
+ uint8_t eep_dt[2];
+ uint8_t tmp_addr;
tmp_addr = AT24C1024_addr;
- if ( addr & 0x10000 ){ // addr > 0xffff then P0 sets 1
+ if ( addr & 0x10000 ) { // addr > 0xffff then P0 sets 1
tmp_addr += 0x02; // P0=1
}
eep_dt[0] = ( uint8_t )( (addr & 0xff00) >> 8 );
eep_dt[1] = ( uint8_t )( (addr & 0xff) );
- i2c_write_n_bytes((int)tmp_addr, (char *)eep_dt, 2);
- i2c_read_n_bytes((int)tmp_addr, (char *)eep_dt, 1);
+ _i2c.write((int)tmp_addr, (char *)eep_dt, 2);
+ _i2c.read((int)tmp_addr, (char *)eep_dt, 1);
return eep_dt[0];
}
-void AT24C1024::write(int addr, uint8_t dt) {
-uint8_t eep_dt[3];
-uint8_t tmp_addr;
+void AT24C1024::write(int addr, uint8_t dt)
+{
+ uint8_t eep_dt[3];
+ uint8_t tmp_addr;
tmp_addr = AT24C1024_addr;
- if ( addr & 0x10000 ){ // addr > 0xffff then P0 sets 1
+ if ( addr & 0x10000 ) { // addr > 0xffff then P0 sets 1
tmp_addr += 0x02; // P0=1
}
eep_dt[0] = ( uint8_t )( (addr & 0xff00) >> 8 );
eep_dt[1] = ( uint8_t )( (addr & 0xff) );
eep_dt[2] = dt;
- i2c_write_n_bytes((int)tmp_addr, (char *)eep_dt, 3);
+ _i2c.write((int)tmp_addr, (char *)eep_dt, 3);
}
-AT24C_STATUS AT24C1024::read_page(uint32_t addr_page_top, uint8_t *dt, int size) {
-uint8_t eep_dt[2];
-uint8_t tmp_addr;
+AT24C_STATUS AT24C1024::read_page(uint32_t addr_page_top, uint8_t *dt, int size)
+{
+ uint8_t eep_dt[2];
+ uint8_t tmp_addr;
- if (size >= 256 + 2){
- if ((addr_page_top & 0xff) == 0){
+ if (size >= 256 + 2) {
+ if ((addr_page_top & 0xff) == 0) {
tmp_addr = AT24C1024_addr;
- if ( addr_page_top & 0x10000 ){ // addr > 0xffff then P0 sets 1
+ if ( addr_page_top & 0x10000 ) { // addr > 0xffff then P0 sets 1
tmp_addr += 0x02; // P0=1
}
eep_dt[0] = ( uint8_t )( (addr_page_top & 0xff00) >> 8 );
eep_dt[1] = 0;
- i2c_write_n_bytes((int)tmp_addr, (char *)eep_dt, 2);
- i2c_read_n_bytes((int)tmp_addr, (char *)dt, 256);
+ _i2c.write((int)tmp_addr, (char *)eep_dt, 2);
+ _i2c.read((int)tmp_addr, (char *)dt, 256);
return AT24C_OK;
} else {
return AT24C_WRONG_TOP_ADDR;
@@ -78,22 +83,23 @@
}
}
-AT24C_STATUS AT24C1024::write_page(uint32_t addr_page_top, uint8_t *dt, int size) {
-uint8_t tmp_addr;
-int i;
+AT24C_STATUS AT24C1024::write_page(uint32_t addr_page_top, uint8_t *dt, int size)
+{
+ uint8_t tmp_addr;
+ int i;
- if (size >= 256 + 2){
- if ((addr_page_top & 0xff) == 0){
- for (i = 255 + 2; i > 1; i--){ // shift data
+ if (size >= 256 + 2) {
+ if ((addr_page_top & 0xff) == 0) {
+ for (i = 255 + 2; i > 1; i--) { // shift data
dt[i] = dt[i-2];
}
tmp_addr = AT24C1024_addr;
- if ( addr_page_top & 0x10000 ){ // addr > 0xffff then P0 sets 1
+ if ( addr_page_top & 0x10000 ) { // addr > 0xffff then P0 sets 1
tmp_addr += 0x02; // P0=1
}
dt[0] = ( uint8_t )( (addr_page_top & 0xff00) >> 8 );
dt[1] = 0;
- i2c_write_n_bytes((int)tmp_addr, (char *)dt, 256 + 2);
+ _i2c.write((int)tmp_addr, (char *)dt, 256 + 2);
return AT24C_OK;
} else {
return AT24C_WRONG_TOP_ADDR;
@@ -103,10 +109,7 @@
}
}
-void AT24C1024::i2c_read_n_bytes (int addr, char *dt, int n) {
- i2c.read(addr, dt, n);
+void AT24C1024::frequency(int hz)
+{
+ _i2c.frequency(hz);
}
-
-void AT24C1024::i2c_write_n_bytes (int addr, char *dt, int n) {
- i2c.write(addr, dt, n);
-}
--- a/AT24C1024.h Sun Jun 29 06:52:37 2014 +0000
+++ b/AT24C1024.h Sun Feb 22 01:24:19 2015 +0000
@@ -2,11 +2,11 @@
* mbed library program
* Control AT24C1024 EEPROM
*
- * Copyright (c) 2014 Kenji Arai / JH1PJL
+ * Copyright (c) 2014,'15 Kenji Arai / JH1PJL
* http://www.page.sannet.ne.jp/kenjia/index.html
* http://mbed.org/users/kenjiArai/
* Created: June 17th, 2014
- * Revised: June 25th, 2014
+ * Revised: Feburary 21st, 2015
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
@@ -94,11 +94,14 @@
*/
AT24C_STATUS write_page(uint32_t addr_page_top, uint8_t *dt, int size);
+ /** Set I2C clock frequency
+ * @param freq.
+ * @return none
+ */
+ void frequency(int hz);
+
protected:
- void i2c_read_n_bytes(int, char*, int);
- void i2c_write_n_bytes(int, char*, int);
-
- I2C i2c;
+ I2C _i2c;
private:
uint8_t AT24C1024_addr;