Witam,
Mam problem i brak mi już pomysłów żeby go rozwiązać. Otóż, mam do Atmegi128 podłączoną pamięć DataFlash AT45DB041D, któa jest połączona w taki sposób (układ MMnet01):
SPI inicjalizuję w taki sposób:
i próbuję odczytać status pamięci:
i nie wiem dlaczego w pętli while odczytującej, program się zatrzymuje, tzn nie chce wyjść z pętli.
Próbowałem zainicjalizować SPI na wszystkie 8 częstotliwości, na wszystkich to samo.
Proszę o pomoc.
Mam problem i brak mi już pomysłów żeby go rozwiązać. Otóż, mam do Atmegi128 podłączoną pamięć DataFlash AT45DB041D, któa jest połączona w taki sposób (układ MMnet01):
SPI inicjalizuję w taki sposób:
void spi_init(void)
{
DDRB |= ( 1 << PB1 ); //SCK
DDRB |= ( 1 << PB2 ); //SI
DDRB |= ( 1 << PB5 ); //CS
SPCR = ( 1 << SPE ) | ( 1 << MSTR );
SPSR = 0;
}i próbuję odczytać status pamięci:
spi_init();
unsigned char status;
PORTB &= ~( 1 << PB5 ); //CS ON
//wysłanie
SPDR = 0xd7;
while(!(SPSR & (1 << SPIF)));
//odbiór
SPDR = 0;
while(!(SPSR & (1 << SPIF))); //<------ tutaj zatrzymuje sie program
status = SPDR;
PORTB |= ( 1 << PB5 ); //CS OFF i nie wiem dlaczego w pętli while odczytującej, program się zatrzymuje, tzn nie chce wyjść z pętli.
Próbowałem zainicjalizować SPI na wszystkie 8 częstotliwości, na wszystkich to samo.
Proszę o pomoc.