xamrex napisał(a):
Zmieniłem kod na;
Kod zmieniłeś, ale nie napisałeś, czy połączyłeś pin CS (PB4) mikrokontrolera z pinem S pamięci?
xamrex napisał(a):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Chyba robie dokładnie tak jak jest napisane
Niestety nie robisz.
Przede wszystkim
na początku funkcji InitSpi() należy wstępnie ustawić pin CS w stan wysoki:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Po drugie, masz w dokumentacji napisane, że pin CS musi przejść w stan NISKI PRZED ROZPOCZĘCIEM transmisji i powrócić do stanu WYSOKIEGO PO ZAKOŃCZENIU transmisji WSZYSTKICH DANYCH na nią się składających (takich jak komenda, adres, odczytywane lub zapisywane dane), czyli do odczytania statusu powinieneś mieć:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Nie dosyć, że zrobiłeś to w odwrotnej kolejności, to jeszcze w dodatku wcale nie w trakcie transmisji, która przecież rozpoczyna się wpisaniem bajtu do SPDR i kończy ustawieniem flagi SPIF po transmisji ostatniego odebranego/wysłanego bajtu.
Masz przecież w dokumentacji dokładne przebiegi i opisy, jak to powinno wyglądać. Wystarczy poświęcić trochę czasu, żeby to uważnie przeczytać, przeanalizować i zastosować

EDIT:
Proponuję zwrócić uwagę również na to:
Cytuj:
5.1.2 Power-up conditions
When the power supply is turned on, VCC continuously rises from VSS to VCC. During this
time, the Chip Select (S) line is not allowed to float but should follow the VCC voltage. It is
therefore recommended to connect the S line to VCC via a suitable pull-up resistor (see
Figure 16).