apis14 napisał: Atmega16, mam juz wykonana plytke, sprzetowe SPI wykorzystuje do programatora. Pytanie brzmi: czy można dodatkowo zaimplementować SPI programowe? jesli tak to na co tzreba zwrócic uwagę?
Programujesz bez uruchomionej aplikacji (wymuszony tryb ISP), więc w trakcie działania programu SPI sprzętowe jest wolne. No chyba, że z kaprysu chcesz sobie przez
CONFIG SPI skonfigurować programowy SPI ale jest on bardzo ograniczony, gdyż nie można ustawić polaryzacji SCK, czy momentów próbkowania i działa tylko jako MASTER.
apis14 napisał: dodatkowo: czy ktoś wie jaka wersja bascoma umozliwia okreslenie cech "data order" i "spioutedge"? Posiadam 1.11.8.3 i tam to nie działa...
Jeśli chodzi o
DATA ORDER= to jest taka opcja w wersji 1.11.9.1 oraz wstecz od 1.11.8.8. Trzeba zatem BASCOMa zaktualizować. Nie wiem tylko skąd wziąłeś opcję
SPIOUTEDGE=? Jest opcja
PHASE= która określa kiedy dane są próbkowane. Jak ustawisz
0 to próbki są analizowane na pierwszym zboczu przebiegu SCK. Jak ustawisz
1 to analiza jest przeprowadzana na drugim zboczu SCK. Zrozumienie tego utrudnia nieco fakt, że za pomocą
POLARITY= można sobie odwrócić polaryzację SCK i raz będzie to opadające zbocze, a raz narastające. Patrz wykresy z rozdziału "
Używanie SPI".
apis14 napisał: i jak ustawić występujące w komendzie config spi "ss"?
To zależy czy będziesz adresował jedno czy więcej urządzeń na SPI. Jeśli masz jedno urządzenie to:
- Sprzętowy:
NOSS = 0 i SPI będzie generowało sygnał SS automatycznie.
- Programowy:
SS = PORTx.y a wtedy PORT
x.y będzie wybierał układ podrzędny Slave.
Jeśli zaś chcesz do SPI podłączyć kilka urządzeń to warto SS zablokować (
NOSS = 1 lub
SS = NONE). Ale wtedy będziesz musiał w programie sam wybierać urządzenie podrzędne aktywując jego końcówkę SS w inny sposób, np. zerując pin do którego SS danego urządzenia jest podłączona. Potem wykonać transmisję, i na koniec znów zdeaktywowac układ, np. ustawiając pin do którego SS danego układu jest podłączona.