Подскажите как правильно инициализировать. А то что то вроде как сделал как в DataSheet Записываю 0xAA а читаю 0x00 Вот исходники процедур под AVR 64
void INIT_FRAM (void) { SETBIT(PORTB,WPM); CLEARBIT(PORTB,CSM0); SPI_W(CMD_WREN_FRAM); SETBIT(PORTB,CSM0); DELAY100(); // задержка 100 ns CLEARBIT(PORTB,CSM0); SPI_W(CMD_INIT_FRAM); SPI_W(RG_STAT); SETBIT(PORTB,CSM0); CLEARBIT(PORTB,WPM); }
void WRITE_FRAM (unsigned int ADR, unsigned char DATA) { char h_byte, l_byte; l_byte=ADR; h_byte=ADR>>8; CLEARBIT(PORTB,CSM0); SPI_W(CMD_WR_FRAM); SPI_W(h_byte); SPI_W(l_byte); SPI_W(DATA); SETBIT(PORTB,CSM0);
}
char READ_FRAM (unsigned int ADR) { char h_byte, l_byte, DATA; l_byte=ADR; h_byte=ADR>>8; CLEARBIT(PORTB,CSM0); SPI_W(CMD_RD_FRAM); SPI_W(h_byte); SPI_W(l_byte); DATA=SPI_R(); SETBIT(PORTB,CSM0); return DATA; }
|