Pytanko

Apr 20, 2004 3 Replies

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


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required