Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 29 sty 2025, o 22:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 29 cze 2014, o 08:35 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

Czy istnieje jakaś istotna różnica pomiędzy sprzętowym i programowym SPI w mikrokontrolerach AVR (i ogólnie, w innych MCU)?
Mam na myśli przede wszystkim kwestię wydajności. Czy podpięcie układu przesyłającego większe ilości danych (np. ENC28J60) pod programowe SPI będzie miało jakieś negatywne konsekwencje dla działania urządzenia? Zastanawiam się nad tym, bo w końcu przy sprzętowym SPI i tak standardowo czeka się w pętli while() na zakończenie przesyłania bajtu. Teoretycznie w tym czasie MCU i tak nic nie robi, więc równie dobrze można by machać pinami. Ale czy na pewno nie ma żadnej różnicy?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2014, o 08:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2012
Posty: 238
Pomógł: 5

Różnica jest, sprzętowym szybciej. A czekanie zawsze możesz zrobić przed wysłaniem kolejnego bajtu a po wysłaniu uszykować kolejny do wysłania, wtedy wychodzi na to że podczas szykowania kolejnego bajtu sprzętowy SPI wyśle ten poprzedni co podałeś. Programowo trochę więcej dajesz uC do roboty przezto wolniej to będzie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2014, o 09:06 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

xbary napisał(a):
Różnica jest, sprzętowym szybciej. A czekanie zawsze możesz zrobić przed wysłaniem kolejnego bajtu a po wysłaniu uszykować kolejny do wysłania, wtedy wychodzi na to że podczas szykowania kolejnego bajtu sprzętowy SPI wyśle ten poprzedni co podałeś. Programowo trochę więcej dajesz uC do roboty przezto wolniej to będzie.


Jest jakaś zasada, mówiąc co można podpiąć do programowego SPI, a czego jednak nie powinno się podpinać?
Jak rozumiem nie ma problemu w przypadku jakiegoś I/O extendera albo wyświetlacza. Z ENC28J60 jak mniemam może być problem, w końcu tam przesyła się ramki mające i po 1500 bajtów. Miałem napisać, że to samo zapewne odnosi się do karty pamięci, ale co w przypadku, gdy jedynie logujemy zdarzenia do pliku tekstowego? Co z takim MCP2515 albo modułem radiowym?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2014, o 10:12 

Pomógł: 0

Atlantis napisał(a):
Jest jakaś zasada, mówiąc co można podpiąć do programowego SPI, a czego jednak nie powinno się podpinać?
Czemu nie korzystasz z źródeł producenta? http://www.atmel.com/images/doc2585.pdf



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2014, o 12:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Moim zdaniem, jeśli jest tylko możliwość, zawsze lepiej użyć rozwiązania sprzętowego. Upraszcza to kod i odciąża procesor. Zresztą właśnie w takim celu producenci umieszczają sprzętowe moduły do obsługi takich rzeczy jak SPI, I2C, UART...
Oczywiście, że jeżeli tylko co jakiś czas wysyłamy kilka bajtów np. przez SPI to to nie będzie miało większego znaczenia. Ale nawet wtedy kod będzie mniejszy. A poza tym można użyć sprzętowo generowanych przerwań co może być bardzo istotne w całej koncepcji programu bo dzięki temu możemy wyeliminować oczekiwania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2014, o 14:37 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

Moim zdaniem rozważania czy lepiej użyć SPI sprzętowego czy programowego to mniej więcej jak rozważanie zagadnienia czy lepiej użyć drewnianego liczydła czy kalkulatora ;)

No więc odpowiedź nasuwa się chyba sama i nawet ciężko po to do PDF'a zaglądać ... Tak samo ze sprzętowym I2C vs programowym I2C, tak samo ze sprzętowym RS232 czy programowym RS232 ....

Gdyby nie było żadnych różnic to który z producentów kusiłby się aby wbudowywać takie sprzętowe moduły, dodawać ich obsługę niezależnie od programu, przerwania i masę innych udogodnień ...

Atlantis napisał(a):
Jest jakaś zasada, mówiąc co można podpiąć do programowego SPI, a czego jednak nie powinno się podpinać?


Tak jest - ta zasada to po prostu "zdrowy rozsądek" ... potrzebujesz szybko - bierzesz sprzętowe, nie potrzebujesz szybko możesz skorzystać z programowego: SPI, I2C, RS232 itp

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO