Witam! W³a¶nie próbuje uruchomiæ obs³uge pamiêci flash (AT45DB041B) za pom±c± SPI w ATMEGA8 Znalaz³em jaki¶ przyk³±dowy program obs³ugi podobnej pamiêcie z tym, ¿e napisany w C a ja próbuje pisaæ w asemblerze. Poni¿ej przedstawiam jedn± funkcje , i mam takie pytanko co oznacza taki zapis: SPDR = (char)(page_counter >> 6); wydawalo mi sie ze w c >> oznacza przesuniêcie w prawo a to by oznaczalo: zapisz do SPDR 0x00 przesuniête w prawo o 6 pozycji. czy dobrze mysle ?? Gdyby ktos mogl napisac co trafia po kolei do SPDR w tej funkcji bylbym wdzieczny!
#define MM_PAGE_TO_B2_XFER 0x55
#define MM_PAGE_TO_B1_XFER 0x53
.....
unsigned int page_counter = 0;
....
void next_page_to_next_buffer (unsigned char active_buffer, unsigned int page_counter)
{
unsigned char temp=0x80
PORTB &= ~DF_CHIP_SELECT; // enable DataFlash if (active_buffer == 1) // if buffer1 is the active buffer { SPDR = MM_PAGE_TO_B2_XFER; // transfer next page to buffer2 } else // else { SPDR = MM_PAGE_TO_B1_XFER; // transfer next page to buffer1 } while (!(SPSR & temp)); // wait for data transfer to be completed SPDR = (char)(page_counter >> 6); while (!(SPSR & temp)); // wait for data transfer to be completed SPDR = (char)(page_counter << 2); while (!(SPSR & temp)); // wait for data transfer to be completed SPDR = 0x00; // write don't care byte while (!(SPSR & temp)); // wait for data transfer to be completed PORTB |= DF_CHIP_SELECT; // disable DataFlash and start transaction
}
Z gory dziekuje
Pozdrawiam !
Krzysiek