[an error occurred while processing this directive]
|
#define DF_CHIP_SELECT 0x10 // DataFlash (PB 4)
#define B1_TO_MMP 0x83 // BUF. TO MMP WITH BUILT-IN ERASE
#define MMP_TO_B1 0x53 // MAIN MEMORY PAGE TO BUFFER 1
#define WRITE_B1 0x84 // BUFFER 1 WRITE
#define READ_B1 0x54 // BUFFER READ
// write to SPI // read from SPI // read from BUFFER // write to BUFFER // write BUFFER in dataFLASH // read form dataFLASH in BUFFER пишу так: проверяю так:
E-mail:
info@telesys.ru
void spi_w(char c) {
SPDR = c;
while (!(SPSR & (1<
char spi_r() {
unsigned char x;
spi_w(0x00);
x = SPDR;
return x;
}
void df_rb(int addr) {
int i;
SPCR = 0x5C;
PORTB &= ~DF_CHIP_SELECT;
spi_w(READ_B1);
spi_w(0x00);
spi_w((char)(addr>>8));
spi_w((char)(addr));
spi_w(0x00);
spi_w(0x00);
for (i=0;i<33;i++) { buf_r[i]=spi_r(); }
PORTB |= DF_CHIP_SELECT;
while(!(PINB & 0x02));
SPCR = 0x00;
}
void df_wb(int addr) {
int i;
SPCR = 0x5C;
PORTB &= ~DF_CHIP_SELECT;
spi_w(WRITE_B1);
spi_w(0x00);
spi_w((char)(addr>>8));
spi_w((char)(addr));
for (i=0;i<33;i++) { spi_w(buf_w[i]); }
PORTB |= DF_CHIP_SELECT;
while(!(PINB & 0x02));
SPCR = 0x00;
}
void df_buf_df(int page) {
SPCR = 0x5C;
PORTB &= ~DF_CHIP_SELECT;
spi_w(B1_TO_MMP);
spi_w((char)(page>>7));
spi_w((char)(page<<1));
spi_w(0x00);
PORTB |= DF_CHIP_SELECT;
while(!(PINB & 0x02));
SPCR = 0x00;
}
void df_df_buf(int page) {
SPCR = 0x5C;
PORTB &= ~DF_CHIP_SELECT;
spi_w(MMP_TO_B1);
spi_w((char)(page>>7));
spi_w((char)(page<<1));
spi_w(0x00);
PORTB |= DF_CHIP_SELECT;
while(!(PINB & 0x02));
SPCR = 0x00;
}
df_df_buf(1); // read form dataFLASH in BUFFER
buf_w[1]='U';
df_wb(5); // write to BUFFER
df_buf_df(1); // write BUFFER in dataFLASH
df_df_buf(1); // read form dataFLASH in BUFFER
df_rb(5); // read from BUFFER
putT(buf_r[1]);
Ответы