00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <avr/io.h>
00019 #include <avr/signal.h>
00020 #include <avr/interrupt.h>
00021
00022 #include "spi.h"
00023 #include "spieeprom.h"
00024
00025
00026 void spieepromInit(void)
00027 {
00028
00029
00030
00031 }
00032
00033 u08 spieepromReadByte(u32 memAddr)
00034 {
00035 u08 data;
00036
00037
00038 spiTransferByte(SPIEEPROM_CMD_READ);
00039
00040 spiTransferByte(memAddr>>8);
00041 spiTransferByte(memAddr&0x00FF);
00042
00043 data = spiTransferByte(0xFF);
00044
00045 return data;
00046
00047 }
00048
00049 void spieepromWriteByte(u32 memAddr, u08 data)
00050 {
00051
00052 while(spieepromReadStatus() & SPIEEPROM_STATUS_WIP);
00053
00054
00055
00056 spiTransferByte(SPIEEPROM_CMD_WRITE);
00057
00058 spiTransferByte(memAddr>>8);
00059 spiTransferByte(memAddr&0x00FF);
00060
00061 spiTransferByte(data);
00062
00063 }
00064
00065 void spieepromWriteEnable(void)
00066 {
00067
00068
00069 spiTransferByte(SPIEEPROM_CMD_WREN);
00070
00071 }
00072
00073 void spieepromWriteDisable(void)
00074 {
00075
00076
00077 spiTransferByte(SPIEEPROM_CMD_WRDI);
00078
00079 }
00080
00081 u08 spieepromReadStatus(void)
00082 {
00083 u08 status;
00084
00085
00086 spiTransferByte(SPIEEPROM_CMD_RDSR);
00087
00088 status = spiTransferByte(0xFF);
00089
00090 return status;
00091 }