Lib. for Atmel 1Mbits Serial EEPROM, AT24C1024B

Dependents:   LPC1114_data_logger dmx_to_stepper BSM02 LPC1114_barometer_with_data_logging

Files at this revision

API Documentation at this revision

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;