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.
Diff: AT93C56A.cpp
- Revision:
- 0:34cce085d32e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AT93C56A.cpp Fri Jul 17 12:05:06 2015 +0000 @@ -0,0 +1,91 @@ +#include "AT93C56A.h" +#include "mbed.h" + +AT93C56A::AT93C56A(PinName eecs,PinName eeck,PinName eedi,PinName eedo): _eecs(eecs),_eeck(eeck),_eedi(eedi),_eedo(eedo){ + _eecs=0; // Active High State + _eeck=0; +}; + +void AT93C56A::vSend(unsigned short usCommand) +{ + signed char i=10; + _eedi=1; //SB + _eecs=1; // Chip Select High + wait_us(1); // SB Clock Generation + _eeck=1; + wait_us(1); + _eeck=0; + while(i>=0) + { + _eedi = (usCommand>>i)&0x01; + i--; + wait_us(1); + _eeck=1; + wait_us(1); + _eeck=0; + } +} +void AT93C56A::vWriteEnable() +{ + vSend(EE_EWEN); + wait_us(1); + _eecs=0; //Chip Select Low +} +void AT93C56A::vWriteDisable() +{ + vSend(EE_EWDS); + wait_us(1); + _eecs=0; //Chip Select Low +} +void AT93C56A::vErase(unsigned short usAddr) +{ + vSend(EE_ERASE|usAddr); + wait_us(1); + _eecs=0; +/** wait busy flag clear */ + wait_us(1); // tcs > 250ns @2.7V + _eecs=1; + wait_us(1); // tsv < 250ns @2.7V + while(_eedo==0); // 0.1ms < twp < 10ms + _eecs=0; +} +void AT93C56A::vWrite(unsigned short usAddr, unsigned char ucData) +{ + signed char i=7; + vSend(EE_WRITE|usAddr); + for(i=7;i>=0;i--) + { + _eedi = (int)( (ucData>>i)&0x0001 ); + wait_us(1); + _eeck=1; + wait_us(1); + _eeck=0; + } + _eecs=0; +/** wait busy flag clear */ + wait_us(1); // tcs > 250ns @2.7V + _eecs=1; + wait_us(1); // tsv < 250ns @2.7V + while(_eedo==0); // 0.1ms < twp < 10ms + _eecs=0; +} +unsigned char AT93C56A::ucRead(unsigned short usAddr) +{ + unsigned char data=0; + signed char i=7; + + vSend(EE_READ|usAddr); + wait_us(1); + + for(i=7;i>=0;i--) + { + _eeck=1; + wait_us(1); + _eeck=0; + data = data | (_eedo<<i); + wait_us(1); + } + _eecs=0; + + return data; +} \ No newline at end of file