David Möschwitzer / AT24C64D
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers AT24C64D.h Source File

AT24C64D.h

00001 #ifndef AT24C64D_H
00002 #define  AT24C64D_H
00003 
00004 #include "mbed.h"
00005 #include "AT24C.h"
00006 
00007 class  AT24C64D : public AT24C
00008 {
00009 
00010     public:
00011         static const uint16_t ADDR_MASK = 0x1FFF;
00012         
00013         //variable
00014         bool bAck;
00015         static const uint16_t READY_TIME_US = 5000;                             // Write time in us
00016         static const uint16_t READY_TIME_MS = 5;
00017         
00018     
00019         // function
00020         AT24C64D(I2C *_i2c, uint8_t uiAddr);
00021         virtual uint8_t getAddrBus();
00022         virtual uint8_t getAddrUser();
00023         
00024         virtual bool write(char * cData);
00025         virtual bool write(uint16_t uiAddr, char *cData);
00026         virtual bool write(uint16_t uiAddr, char * cData, uint16_t uiLength);
00027         
00028         
00029         virtual bool read(char * cData);
00030         virtual bool read(uint16_t uiAddr, char *cData);
00031         virtual bool read(uint16_t uiAddr, char * cData, uint16_t uiLength);
00032         
00033         virtual void reset();
00034         virtual bool erase();        
00035         virtual bool isReady();
00036         
00037         
00038         
00039         virtual void setAddrWrite(uint16_t Addr);
00040         virtual uint16_t getAddrWrite();
00041         virtual void incAddrWrite();
00042         virtual void decAddrWrite();
00043          
00044          
00045         virtual void setAddrRead(uint16_t Addr);
00046         virtual uint16_t getAddrRead();
00047         virtual void incAddrRead();
00048         virtual void decAddrRead();
00049 
00050          
00051     private:
00052     
00053         // constants
00054 
00055         const uint8_t AT24C64D_W;
00056         const uint8_t AT24C64D_R;
00057         static const int HARD_ADDR           = 0xA0;                                 
00058         static const int USER_ADDR_MASK      = 0x07;
00059 
00060             
00061         
00062         static const uint8_t SIZE_PAGE      = 32;                               // 32-Byte Page Write Mode (Partial Page Writes Allowed)
00063         static const uint16_t MEM_ADDR_MAX  = 8192;                             // 0...4095
00064         static const uint16_t TIMEOUT_VAL   = 1000;
00065         
00066         // variable
00067         bool bReady;
00068         bool bTimerRun;
00069         uint16_t uiTimeOut;
00070         
00071         uint16_t uiAddrWrite;
00072         uint16_t uiAddrRead;
00073         uint16_t uiAddrTemp; 
00074          
00075         uint8_t uiAddrQuotient;                                                  // 
00076         uint8_t uiAddrRemainder;                                                 //         
00077         
00078         char cBuffer[2 + SIZE_PAGE];                                            // 2 Address Bytes + 32 Byte Data
00079         
00080         // Class
00081         I2C *i2c;
00082         Timer *timer;
00083         
00084         
00085         // functions
00086         //virtual void setReady();
00087         void startTimer();
00088         bool ACKpolling(uint8_t uiAdr);
00089         //virtual void abortTransmition();
00090 
00091 };
00092 
00093 #endif