Interfejs SPI programowy czy sprzętowy (BASCOM)

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Interfejs SPI programowy czy sprzętowy (BASCOM)

Post autor: Tranzystor » 28 sie 2007, 9:00

Witam,
ostatnio bardzo zainteresował mnie interfejs SPI, niestety w BASCOMie jest ten problem, że trzeba wybrać jedną z dwóch opcji, interfejs SPI programowy lub sprzętowy. W tym momęcie zrobiłem się zielony :lol: Według mnie sprzętowy interfejs SPI będzie wolniejszy, ale za to bardziej stabilny, jego wadą na pewno będzie to, że nie można wykorzystać dowolnych nóżek mikroprocesora... A interfejs SPI programowy będzie szybszy, ale za to mniej stabilny, będzie obciążał program, zaletą tu jest wybór portów mikroprocesora, które mają służyć jako interfejs SPI.

Nie jestem jednak pewien czy moje rozumowanie jest dobre. Chciałbym się dowiedzieć jaka różnica w prędkości danych będzie pomiędzy interfejsem SPI programowym, a sprzętowym. To mnie najbardziej interesuje.


Pozdrawiam :grin:

Awatar użytkownika
Sagittarius
Użytkownik
Posty: 130
Rejestracja: 29 maja 2007, 9:29
Lokalizacja: Kujawsko-pomorskie
Kontakt:

Post autor: Sagittarius » 28 sie 2007, 12:24

SPI sprzętowy będzie szybszy. Ma również tą zaletę, że można pracować z przerwaniem. Odciążasz tym sposobem procesor. Obsługa sprzętowa będzie stabilniejsza, pewniejsza i będzie mniej obciążać procesor. Faktycznie wyprowadzenia są ściśle określone w tym wypadku, ale moim zdaniem nie jest to zbyt dokuczliwe. Obsługa programowa będzie nieco miniej stabilna. Łatwiej zgubić puls zegarowy, bit danych... Pamiętaj, że SPI może pracować z pierwszym bitem jako MSB lub LSB oraz dodatkowo sygnałem aktywnym może być stan wysoki lub niski. Szybkość... coż, moim zdaniem nie jest to aż tak tragiczny parametr. Jeśli zablokujesz procesor dużą ilością przerwań, to i tak nic nie zrobisz z danymi odebranymi przez SPI, bo nie będzie na to czasu ;-) A więc szybkość, to nie wszystko. Trzeba iść na kompromis ;-)

Pozdrawiam

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 28 sie 2007, 12:26

O to mi mniej więcej chodziło. W sumie przerwań to ja nie będę chyba w ogóle wykorzystywał. No, może jedno :razz:

Dzięki za pomoc...
Pozdrawiam

Awatar użytkownika
Sagittarius
Użytkownik
Posty: 130
Rejestracja: 29 maja 2007, 9:29
Lokalizacja: Kujawsko-pomorskie
Kontakt:

Post autor: Sagittarius » 28 sie 2007, 12:30

Podpowiedz może, do czego chcesz użyć SPI? Masz jakąś gotową aplikację?

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 28 sie 2007, 12:34

Sagittarius pisze:Podpowiedz może, do czego chcesz użyć SPI? Masz jakąś gotową aplikację?
Chodzi o programator ISP, chcę żeby szybko był programowany mikroprocesor oraz do kart pamięci SD/MMC. Jak każdy elektronik chcę zbudować własny programator do procesorów. :cool:

Awatar użytkownika
Sagittarius
Użytkownik
Posty: 130
Rejestracja: 29 maja 2007, 9:29
Lokalizacja: Kujawsko-pomorskie
Kontakt:

Post autor: Sagittarius » 28 sie 2007, 12:49

Właśnie zacząłem prace nad swoim programatorkiem. Musisz tu uważać z prędkością jeszcze bardziej. W przypadku programatora, on będzie urządzeniem Master i przez to generatorem sygnału zegarowego. W przypadku AT89S53 sygnał zegarowy interfejsu musi mieć częstotliwość niższą 40 razy niż częstotliwość, z jaką taktowany jest programowany układ. Dlatego, jak widzisz, szybkość nie jest zawsze najważniejsza.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 28 sie 2007, 12:57

Rozumiem Cię, jednak jeżeli chodzi o mikroprocesory AVR jest trochę inaczej. Wczoraj czytałem trochę w notach katalogowych i wychodzi na to, że można przesyłać dane do procesora AVR nawet z prędkością powyżej 12MHz, ale wymaga to szybszego taktowania mikroprocesora. Mój programator ma być taktowany z rezonatora kwarcowego 16MHz czyli prędkość przesyłania danych przez SPI sprzętowe wyniesie 4MHz. Wydaje mi się, że to jest średnia prędkość i nie powinno być żadnych problemów z programowaniem procesorów AVR przy takiej częstotliwości. Zresztą istnieje możliwość zmiany dzielnika w środku programu, więc wydaje mi się, że akurat z prędkością problemu nie będzie.

Pozdrawiam

Awatar użytkownika
Sagittarius
Użytkownik
Posty: 130
Rejestracja: 29 maja 2007, 9:29
Lokalizacja: Kujawsko-pomorskie
Kontakt:

Post autor: Sagittarius » 28 sie 2007, 13:03

Możliwe, że taktowanie będzie wyższe w AVR, ale pewności nie mam. Wydaje mi się, że różnica wynikać będzie z różnic w sposobie taktowania rdzenia. Musisz mieć możliwość zmiany częstotliwości, by programowo dostosowywać programator do programowanego układu, a nie zwiększać częstotliwości taktowania programowanego układu, by dostosować go do programatora ;-) Życzę powodzenia w pracach i wielu zaprogramowanych "mróweczek" ;-)

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 28 sie 2007, 13:07

Sagittarius pisze:Możliwe, że taktowanie będzie wyższe w AVR, ale pewności nie mam. Wydaje mi się, że różnica wynikać będzie z różnic w sposobie taktowania rdzenia. Musisz mieć możliwość zmiany częstotliwości, by programowo dostosowywać programator do programowanego układu, a nie zwiększać częstotliwości taktowania programowanego układu, by dostosować go do programatora ;-) Życzę powodzenia w pracach i wielu zaprogramowanych "mróweczek" ;-)
Chodziło mi o dopasowanie programatora do mikroprocesora, a nie na odwrót. Zobaczymy co z tego wszystkiego wyjdzie :razz:


Pozdrawiam

ODPOWIEDZ