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/ |