radek3035 napisał(a):
Zealota napisał(a):
Pomiędzy każdy bajt, wysłany sprzętowo, "wrzucasz" jedno "tyknięcie" zegara, po to by sterownik będący cały czas w CS = low, tylko "odhaczył, ten 9 nic nie znaczący bit.
bity idą od Msb czyli od D8 do D0, Pierwszy ustawiony na 'H' sygnalizuje że nadaję dane a na' L' że nadaję komendę. Nie da się go pominąć. Ustawiam CS na 'L'
Nadaję komendę a potem może być od zera do kilkudziesięciu danych nawet. Czyli pierwszy bit przesyłany na' L' i 8 bitów komendy potem bit danych 'H' i 8 bitów danych, bit 'H' i następne 8 bitów danych i następne... itd.. ewentualnie następny stan 'L' i 8 bitów nowej komendy i 'H' i 8 bit danych...
Hmm chyba nie zrozumieliśmy się

. Mi chodziło, że tę "drugą stronę" pomijamy

Najpierw idzie MSB, czyli znacznik komendy albo danych i to oczywiście zostawiamy i po kolei następne bity, aż dochodzi do dwóch ostatnich, które nie mają znaczenia, a ostatni z nich, czyli LSB "nadajemy" poprzez to dodatkowe, softwarowe "tyknięcie".
Tutaj nie ma znaczenia czy L czy H bo sterownik to pomija.
Należy pamiętać, ze w HW SPI mozemy sobie ustawi czy LSB czy MSB ma iść pierwszy, oczywiście w tym wypadku MSB (nie ustawiamy bitu DORD)
Zrobiłem dodatkowe testy, zmodyfikowałem kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Okazuje się, że SPI musi być wyłączone, gdy chcemy sobie "tyknąć" softwarowo zegarem.
Wrzuciłem na atmege328p kod i z zrobiłem screeny z analizatora stanów:


Popatrz jak ładnie widać te 9 tyknięcie, jest nieco węższe, ale można regulować instrukcją nop.
Drugi obrazek to już prędkość 4MHz, oczywiście samego zegara SPI.
Oczywiście mogłem popełnić jakiś błąd myślowy, nie będę się upierał

, ale na razie wychodzi mi, że to może działać.
------------------------ [ Dodano po: 1 minucie ]krish napisał(a):
"Kto szuka ten błądzi"?
W poście #8 z tego linku po drobnych przeróbkach masz kod, który powinien załatwić Twój problem (mix of bit-bang and hardware SPI):
http://www.avrfreaks.net/forum/9-bit-spiHehe, wydaje się, że właśnie chyba o tym pisałem w tych moich "wywodach"
