ATNEL tech-forum
https://forum.atnel.pl/

magistrala CAN
https://forum.atnel.pl/topic19545.html
Strona 1 z 1

Autor:  Papryk [ 5 lis 2017, o 18:51 ]
Tytuł:  magistrala CAN

Witam,

Zwracam się do Was z pytaniem odnośnie magistrali CAN (mcp2515). Natknąłem się na problem, którego nie do końca rozumiem. Jeśli wysyłam z jednego urządzenia kilka różnych wiadomości (o różnym ID), to urządzenie odbiorcze częściej odbiera wiadomość, która została wysłana pierwsza, a pozostałe bardzo rzadko. Udało mi się już ustalić, że prawdopodobnie chodzi o bufory mcp2515. Wiem, że każdy z nich ma swój priorytet i najpierw bufor o najwyższym priorytecie jest wysyłany. Zatem dlaczego dla takiego schematu transmisji jak niżej, wiadomość 1 jest częściej wysyłana? Przecież bufor 0 i 1 zostaną zapełnione i przez 100ms podczas delay powinny zostać oba wysłane, jednak tak się nie dzieje. Zrobiłem test i przez kilka minut odbiornik odebral 2500 wiadomosci nr 1 i tylko 300 wiadomosci nr 2.

1. CAN_wyslij(wiadomosc_1)
2. CAN_wyslij(wiadomosc_2)
3. delay(100);

Jeżeli między wysłaniem wiadomości 1 i 2 wstawie delay, to odbiornik odbiera tyle samo wiadomosci nr 1 i 2. Jednak takie rozwiązanie od razu odpada. Zmniejszając delay różnica w ilości odebranych wiadomości się zwiększa.

1. CAN_wyslij(wiadomosc_1)
3. delay(50);
2. CAN_wyslij(wiadomosc_2)
3. delay(50);

Czy mógłby mi ktoś wyjaśnić dlaczego mcp2515 nie wysyła wiadomości z drugiego bufora podczas delay(100) i co mogę zrobić aby wiadomości zostały wysłane jedna po drugiej?

Z góry dziękuje.

Edit.

Napisałem kod, w którym czekam aż zwolni się bufor 0 i tylko przy jego pomocy wysyłam wiadomości. Efekt ten sam. Może to nie wina nadawcy, a odbiorcy?

Autor:  wat1970 [ 5 lis 2017, o 20:13 ]
Tytuł:  Re: magistrala CAN

SunRiver jest chyba ekspertem od tego scalaczka :) Ja obecnie rozgryzam MCP2517FD ale do transmisji jeszcze nie doszedłem :)

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/