RTV forum PL | NewsGroups PL

Zastosowanie programowej magistrali SPI w mikrokontrolerach AVR: wydajność vs. wygoda?

Programowa magistrala SPI

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Zastosowanie programowej magistrali SPI w mikrokontrolerach AVR: wydajność vs. wygoda?

Atlantis
Guest

Sat Sep 13, 2014 6:26 am   



Czy stosowanie programowej magistrali SPI w ośmiobitowych
mikrokontrolerach AVR ma jakiś sens? Utrata wydajności w stosunku do
sprzętowego interfejsu będzie zauważalna? Tak się zastanawiam, bo
przecież w większości przypadków transmisja SPI nie jest realizowana w
żadnym przerwaniu, a program najzwyczajniej w świecie czeka na
zakończenie procesu w pętli while(). Równie dobrze mógłby się wtedy
zajmować machaniem pinami.

Dlaczego pytam? Nieraz podłączane kolejnego urządzenia do istniejącej
magistrali sprzętowej jest kłopotliwe punktu widzenia projektu PCB.
Zwłaszcza, gdy jest to płytka jednostronna. Czy w takim wypadku mógłbym
przeznaczyć wolne piny na programową magistralę dokładnie tam, gdzie
jest to dla mnie wygodne?

Rozumiem, że mogłoby to być problemem w przypadku przesyłania dużych
ilości danych (np. odczyt i zapis na płytę SD). Jeśli jednak komunikuję
się z urządzeniem wysyłającym ramki mające po kilkadziesiąt - kilkaset
bajtów (np. moduł radiowy), to czy zauważę różnicę po zastosowaniu
programowego SPI?

Grzegorz Kurczyk
Guest

Sat Sep 13, 2014 7:38 am   



W dniu 13.09.2014 o 08:26, Atlantis pisze:
Quote:
Czy stosowanie programowej magistrali SPI w ośmiobitowych
mikrokontrolerach AVR ma jakiś sens? Utrata wydajności w stosunku do
sprzętowego interfejsu będzie zauważalna? Tak się zastanawiam, bo
przecież w większości przypadków transmisja SPI nie jest realizowana w
żadnym przerwaniu, a program najzwyczajniej w świecie czeka na
zakończenie procesu w pętli while(). Równie dobrze mógłby się wtedy
zajmować machaniem pinami.

Jeśli podłączane urządzenie jest dość powolne, a przygotowanie danych do
wysyłki wymaga od procesora większego zaangażowania, to sprzętowe SPI
może wysyłać bajt, a procek w międzyczasie nie musi "bezmyślnie" czekać
w pętli while() tylko może sobie szykować kolejny bajt do wysyłki. Z
przerwań też jak najbardziej się korzysta.

Quote:
Dlaczego pytam? Nieraz podłączane kolejnego urządzenia do istniejącej
magistrali sprzętowej jest kłopotliwe punktu widzenia projektu PCB.
Zwłaszcza, gdy jest to płytka jednostronna. Czy w takim wypadku mógłbym
przeznaczyć wolne piny na programową magistralę dokładnie tam, gdzie
jest to dla mnie wygodne?


Rozumiem, że mogłoby to być problemem w przypadku przesyłania dużych
ilości danych (np. odczyt i zapis na płytę SD). Jeśli jednak komunikuję
się z urządzeniem wysyłającym ramki mające po kilkadziesiąt - kilkaset
bajtów (np. moduł radiowy), to czy zauważę różnicę po zastosowaniu
programowego SPI?


Oczywiście można. W niektórych projektach tak robię. M.in. właśnie do
sterowania modułem radiowym RFM12B. Ale wyświetlacz graficzny popędzam
jednak ze sprzętowego SPI.

Pozdrawiam
Grzegorz

Marek
Guest

Sat Sep 13, 2014 7:52 am   



On Sat, 13 Sep 2014 08:26:22 +0200, Atlantis <marekw1986NOSPAM@wp.pl>
wrote:
Quote:
bajtów (np. moduł radiowy), to czy zauważę różnicę po zastosowaniu
programowego SPI?

Wielokrotnie używam mieszanego spi hard/soft w jednym mcu, jeśli
zegar mcu nie jest na jakiś wolnych f <30Mhz to programowa sekwencja
wysłania nawet dwubajtu (niektóre rfm wymagają 16bit spi) po spi nie
jest specjalnie uciążliwa.

--
Marek

elektroda NewsGroups Forum Index - Elektronika Polska - Zastosowanie programowej magistrali SPI w mikrokontrolerach AVR: wydajność vs. wygoda?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map