Arnie napisał(a):
napisz jeszcze kiedy się uruchamiają, gdy mierzysz woltomierzem napięcie miedzy H i L? jeśli tak to może wskazywać na problem z rezystorami.
Z tym uruchamianiem to na prawdę wygląda bardzo randomowo. Raz mi się uruchomił jak mierzyłem napięcie pomiędzy poligonem(GND) a ścieżka RX lub TX. Co ciekawe, niekoniecznie łączy się ten mikrokontroler którego moduł mierze tylko ten drugi
Ale na 100 pomiarów tylko z trzy, cztery raz poszło. Czasami się udało jak sprawdzałem napięcia na liniach CAN H i CAN L, ale to tez co przy co 30 pomiarze. Czasami jak, dosłownie - masowałem moduł, następowała inicjacja. Jednak czasami z 10min próbuje je zmusić do pracy - masuje, mierze, dociskam, chucham i dmucham a one nic:( Tak jak pisałem na początku, wszystkie ścieżki sprawdzałem omomierzem czy są połączone z odpowiednimi nóżkami oraz sprawdzałem dla każdego pinu czy napięcie na nim jest takie jak na ścieżce.
Na sieci jest stan recesywny. Napięcia pomiędzy GND-CANH oraz GND-CANL wychodzą 2.4-2.5V. Różnicowe napięcie jest w mV.
volt_1 napisał(a):
a bym zaryzykował z tym podciąganiem. U siebie mam na obu końcach magistrali po 2,2k na H i na L.
Żeby dokładnie zobrazować jak podciągnąłem rezystory wykonałem rysunek:
Nie miałem rezystorów o wartości 2,2k, dlatego oba Rp podłączyłem o rezystancji 2,7k ohm. Rp- terminatory mają cały czas 160ohm. Układ zachowuje się tak samo. Jak mu się zachce to się aktywuje, ale zaznaczam że dzieje się to jak coś przy nich dotykam. Jeśli zostawię wszystko, to nawet z 30min mija a one nic.
Tak wygląda cała funkcja main(), którą wgrałem do układów. Jest to funkcja z poradnika SunRiver'a z paroma moimi poprawkami.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Próbowałem zrobić jakieś pseudo debugowanie funkcji mcp2515_init(), wiem że zwraca ona false w tym warunku
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
CNF1, ten rejestr odpowiada za ustawienia prędkości.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jedyne co się różni to to że SunRiver robił te konfiguracje dla mikroprocesora taktowanego z zewnątrz 16MHz. Moje są taktowane z wewnątrz z 8MHz. Jednak, to nie powinno robić różnicy, ponieważ jak rozumiem, zmienia to tylko taktowanie SPI z 8MHz na 4MHz. Jednak przy 125kbps to chyba nie powinno robić CAN'owskim kontrolerom różnicy.
Nie mniej jednak, inicjacja nie przechodzi pozytywnie tutaj. Nie wiem dlaczego...
Cała funkcja init
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.