[an error occurred while processing this directive]
опять dataFLASH... уже раздербанил STK500 - не работает....
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено avrprog 25 июля 2002 г. 13:51

#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
void spi_w(char c) {
SPDR = c;
while (!(SPSR & (1<}

// read from SPI
char spi_r() {
unsigned char x;
spi_w(0x00);
x = SPDR;
return x;
}

// read from BUFFER
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;
}

// write to BUFFER
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;
}

// write BUFFER in dataFLASH
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;
}

// read form dataFLASH in BUFFER
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]);


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru