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



Teraz jest 26 mar 2026, o 17:07


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 15 paź 2014, o 08:39 
Offline
Nowy

Dołączył(a): 08 sie 2014
Posty: 6
Pomógł: 0

Cześć !
Wczoraj siedziałem nad optymalizacją funkcji przerwania SPI i maksimum co mi się udało wycisnąć to poprawna transmisja przy zegarze ustawionym na 500kHz. Powyżej tej prędkości z niewiadomych powodów nie jestem w stanie przesłać odpowiedzi. Mikrokontroler ustawiony jako slave, zegar 32Mhz, i jak widać na załączonym obrazku za wiele to się w funkcji przerwania nie dzieje.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Gdybym chciał przyspieszyć to tylko asembler, czy jestem już ślepy i przeoczyłem jakąś oczywistość ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2014, o 17:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 maja 2014
Posty: 126
Pomógł: 12

Tak patrzę i używasz do odbioru danych DMA, ale nie wyłączasz przerwania od SPI i co bajt sprawdzasz warunek:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Można wyłączyć przerwanie od SPI i w przerwaniu od zakończenia transferu od DMA załączyć je ponownie i sobie sprawdzać crc czy co tam dalej robisz.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tak z ciekawości, ten xor jest do sprawdzania poprawności transmisji? Widzę, że kolega pisze coś do dcc ;) Gdzie tam się używa SPI do transmisji sygnałów?

_________________
Pozdrawiam, Adrian.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2014, o 15:37 
Offline
Nowy

Dołączył(a): 08 sie 2014
Posty: 6
Pomógł: 0

Federerer napisał(a):
nie wyłączasz przerwania od SPI i co bajt sprawdzasz warunek

Tak, ponieważ w pierwszej wersji robiłem tak jak proponujesz i moment włączenia SPI powodował zakłócenia - zgubienie lub przekłamanie na pierwszym znaku po zakończeniu transferu DMA.
Cytuj:
Tak z ciekawości, ten xor jest do sprawdzania poprawności transmisji?

Tak właściwie to chciałem podzielić transmisję na dwa etapy - pierwszy "sterujący" w którym ustalane są parametry transmisji - ten obsługuję przerwaniem, a drugi to dane - ten obsługuję DMA. CRC dla transferu DMA liczy się "w locie", do sprawdzania poprawności pierwszego planowałem użyć XOR.

Cytuj:
Widzę, że kolega pisze coś do dcc ;) Gdzie tam się używa SPI do transmisji sygnałów?

Tak, to będzie centralka DCC. I masz rację, w DCC nie używa się SPI ;)
Ale jakoś te dane, trzeba do niej dostarczyć.

Aktualnie porzuciłem ten pomysł i eksperymentuję z innym. Plan jest taki, żeby w całości do transmisji użyć DMA i przesyłać całe "bloki pamięci". Problem polega na tym, że taki blok stanowi niepodzielną jednostkę dla programu. Trochę się obawiam, co się stanie jeśli w trakcie transmisji "zgubię" bajt lub dwa. DMA czeka na ściśle określoną ilość bajtów i może to doprowadzić do sytuacji że bloki przesuną się względem siebie. Próbuję teraz określić czy mógłbym poprzez sprawdzanie zmian pinu SS określić czy transmisja nie zakończyła się wcześniej niż się tego spodziewa DMA.
Czy ktoś z was może wie, czy linuksowy driver SPI może podzielić transmisję SPI na mniejsze elementy ?
Czy na przykład wysyłając 100 bajtów zostaną one dostarczone jako całość w trakcie jednej zmiany SS ? Czy też możliwa jest sytuacja, że zostaną podzielone np na dwa bloki po 50 bajtów i przesłane w dwóch zmianach SS.



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: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO