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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 13 kwi 2025, o 04:24


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 71 ]  Przejdź na stronę Poprzednia strona  1, 2, 3  Następna strona
    Autor Wiadomość
    PostNapisane: 16 mar 2015, o 22:06 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Należy się :)

    W while() projektu m8, tylko funkcja odbierz_can(); odbiera. Te warunki z enkoderem są przygotowane do wysłania danych. Wgrałem do procka ten projekt z samą funkcją odbierz_can(); w pętli. Jednak nic nie odbiera. Tak ogólnie to masz dość rozbudowane te funkcje. Dlatego wole najpierw wysłać i odebrać na podstawie po prostu mcp2515_send_message(&message) i mcp2515_get_message(&message). Wydaje mi się to logiczne, jak zrobiłem. No ale nie działa



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 mar 2015, o 20:50 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    tomek2864 napisał(a):
    Tak ogólnie to masz dość rozbudowane te funkcje.

    One nie są rozbudowane, tam poprostu jest niezły bałagan.

    Według oryginału funkcja mcp2515_check_message() sprawdza tylko stan pinu INT, następnie funkcja _get_message() sprawdza w którym z 2 "rejestrów/ mailboxów" odbiorczych znajduje się nowa wiadomość, odczytuje spod wyznaczonego "adresu" nagłówek i dane tejże wiadomości.
    SUNRiver obsługiwał tylko standardowy nagłówek, ja potrzebowałem extended więc modyfikując na szybko oryginał strasznie nabałaganiłem, no ale u mnie działa.
    MCP2515 ma jeszcze opcję filtrowania nadchodzących ramek/ wiadomości, ja z tego nie korzystałem, SUN chyba też nie, więc nie sądzę aby u Ciebie takie filtry się pojawiły i miały blokować odbiór ramek.

    A pokaż wiadomość jaką wysyłasz.

    Spróbuj w module nadającym, w chwilę po transmisji odczytać rejestry TXB0CTRL i TXB1CTRL, tam są chyba bity obrazujące status transmisji.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 mar 2015, o 17:45 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Obrazek

    Nie ogarniam już tego. Tryb loopback niby się udaje a jednak jak widać na screenie odczyt rejestrów TXB0CTRL i TXB1CTRL, maja one wartości 0. To samo przy zmianie trybu na normalny. Nadawanie tam tez zwraca taka wartość. Zeby nie było wątpliwości, rejestry sprawdzam w module, którym nadaje wiadomość do urządzenia, które tylko nasłuchuje.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 mar 2015, o 20:16 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    Ze zrzutu wynika, iż zapełniasz wszystkie trzy bufory nadawcze(TXB0-TXB2), a kolejne próby kończą się błędami, bo w buforach wciąż tkwią niewysłane ramki.

    Natomiast wartości 0 w TXBnCTRL świadczą o tym, że albo transmisja przebiegła bez problemów (wtedy kontroler sam czyści bit TXREQ) co nie może mieć miejsca bo bufory się zapychają, albo w Twojej procedurze nadawczej brakuje na końcu żądania transmisji (ustawiony bit TXREQ w TXBnCTRL , gdzie n to nr bufora nadawczego oczywiście). ds. str. 17

    W poprzednim poście pisząc o zrzutach z TXBnCTRL zapomniałem o trzecim - TXB2CTRL (moja wina), ale podejrzewam, że tam też masz 0.

    Mając w pamięci poprzednie doświadczenie z NIEZAPISYWANIEM wartości do rejestrów lub odczytywaniem dziwnych wartości, zrobiłbym mały eksperyment, a mianowicie w zupełnie nowej funkcji wpisał do TXB0CTRL priorytet 1 czyli ustawiony bit TXP0, w TXB1CTRL priorytet 2 czyli bit TXP1, a w TXB2CTRL prior 3 czyli oba powyższe bity, a następnie odczytał zawartość tych rejestrów, ciekawe czy pokrywały by się z wartościami wpisanymi? ds. str.18

    Korci mnie jeszcze, żeby zapytać czy aby nie masz zamienionych linii CAN H i L pomiędzy modułami. Taki twister w poprzedniej firmie zabrał nam kilkanaście godzin dochodzenia dlaczego tylko połowa cylindrów silnika pracuje.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 17:59 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Sprawdziłem dla obu tych procedur wysyłania:

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


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



    "Clearing the TxBnCTRL.TXREQ bit while it is set, or setting the CANCTRL.ABAT"
    Jest procedura ustawiająca i sprawdzająca czy rejestry TXBnCNTRL.TXREQ są 0, z tym że nie może ich ustawić. Wprawdzie jest to napisane tak: if (bit_is_clear(status, 2)) ale zgodnie z językiem najpierw jest czyszczenie bitu a potem sprawdzenie czy zwraca prawdę(powidło się czyszczenie). W ds jest mowa o ustawieniu CANCTRL.ABAT=1, ale to nie jest warunek konieczny jeśli TxBnCTRL.TXREQ są zero.


    Ale już wiem co robiłem na pewno źle! Odczyt rejestrów robiłem w złej funkcji. Z tym że teraz, kiedy odczytuje rejestry, nie mam wartości 0 dla TxBnCTRL. Tak wygląda odczyt:
    Obrazek

    Sprawdzam czy poprawnie idzie zapisywać do rejestrów priorytety i je odczytać. Funkcje:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Wynik odczytu:
    Obrazek

    Widać zmiany w rejestrach, kiedy ustawiam priorytety. Kiedy następuje wysyła też się one zmieniają. Funkcja send nie zwraca też tutaj zera. Tylko że drugi moduł nie odczytuje nic. Sprawdziłem połączenie. Mam tak samo jak na poprzednich zdjęciach. Miernikiem też te połączenia są zwarte. Nie mam zamienionych linii H i L


    Moduł odbierający w ma zapętloną funkcje odbierz_can(), z Twoich bibliotek



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 21:54 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    Wartości zwracane z TXBnCTRL są oczywiście w zapisie dziesiętnym?
    24 bitowo 0b00011000 czyli bit TXERR ustawiony, znaczy szyna zajęta podczas próby nadania ramki.
    Przy 81 dodatkowo ustawiny bit ABTF porzucono nadawanie ramki, ale tu użyłeś funkcji read_status, moim zdaniem jednak powinno być mcp2515_read_register(TXB1CTRL).

    ------------------------ [ Dodano po: 12 minutach ]

    Właśnie poprawiałem :)
    A gdybyś tak po udanej initi odłączył moduł odbierający, może on jednak śmieci?



    Ostatnio edytowano 21 mar 2015, o 22:11 przez volt_1, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:09 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    W błąd Cie wprowadziłem.
    Korzystam z mcp2515_read_register(TXB1CTRL), przy odczycie. Przedtem korzystałem z read_status co było błędem, i zwracało 0

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:12 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    czyli 24 to z read_register jest?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:17 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Tak, rejestry TXBnCTRL odczytuje funckja read_rej().

    Odłączyłem moduł odbierający(kontroler CAN i atmege) od zasilania, po inicjacji obu układów. Nadawczy wypisuje to samo

    Odpięcie podciągniętych rezystorów tez nie zmienia niczego



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:20 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    Zamień moduły CAN pomiędzy Megami, bo pewnie trzeciego modułu nie posiadasz w zapasie?
    Moduł podczas nadawania ramki sprawdza stan linii RX i jak sam wystawia recesywny a jednocześnie odbiera dominujący to stwierdza błąd bo coś nadaje w tym samym czasie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:27 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Do trzeciego mam płytkę wytrawioną ale posiada uszkodzoną jedną ze ścieżek. Dopiero w pn bym mógł ją zlutować.

    Zmieniłem moduły CAN, w obu atmegach. Jest to samo, czyli kontrolery CAN pracują identycznie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:40 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    Zmień program w nadającym tak żeby nic nie nadawał żaden z modułów tylko init i cisza, a potem zmierz napięcie pomiędzy CAN H i L powinno być bliskie nap zasilania/ podciągania linii, ale jeśli będzie wynosić blisko 0V to jednak któryś zwiera, podobno 2551 są szczególnie wrażliwe na przepięcia, dziwne że inita przechodzą, a potem cuda.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:51 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Uporządkuje to:
    uint8_t 24 to bitowo 0b00011000
    czyli TXERR i TXREQ

    TXERR: Transmission Error Detected bit
    1 = A bus error occurred while the message was being transmitted.

    Błąd na magistrali podczas przesyłania wiadomość

    TXREQ: Message Transmit Request bit
    1 = Buffer is currently pending transmission
    (MCU sets this bit to request message be transmitted - bit is automatically cleared when
    the message is sent)
    Bufor jest zajęty i wystąpiło żądanie transmisji. Powinno wyczyścić ale nie czyści skoro if(bit_is_clear(status, 2)) zwraca fałsz. Więc wie że nie wysłał nic.

    Także coś na magistrali dzieje się złego. Tylko co... po odłączeniu drugiego modułu nic się nie zmienia. Może ten kontroler sam się jakoś zakłóca? Ścieżki za blisko? :D Jakaś pasożytnicza pojemność gdzieś się nie tworzy...?

    Wyjechałem z układami ale nie zabrałem miernika. Dopiero w pn to zmierzę :/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 mar 2015, o 22:56 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    No to weekend'uj, a od poniedziałku ostro do roboty:-)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2015, o 11:41 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    hm... ciekawe możliwe że masz jakiś kłopot na samej magistrali , układy, które opisałem działają bez zarzutu i nie mam z nimi kłopotów odpalają od strzała. Dobrze by było jakbyś podsłuchał analizatorem co się dzieje na:

    SPI --- dojście do kontrolera MCP2515 z atmegi (choć wygląda że masz tu dobrze i init się wykonuje , ale może coś nie dochodzi)
    RX/TX -- przed MCP2551 czy w ogóle cos idzie na transceiver
    MAgistrala -- czyli na samej magistrali CAN


    warto sprawdzić czy terminacja jest właściwa i poziomy napiec , magistralkę powinieneś prowadzić na jednej parze przewodów skrętki

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 mar 2015, o 13:49 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Pomiary zrobiłem dla układów zasilanych z programatora napięciem 5V.

    W obu atmegach wykonała się tylko funkcja init:
    Moduł 1
    H 2.45V
    L 2.45V
    TX 4.8V
    RX 4.8V

    Moduł 2
    H 2.5V
    L 2.45V
    TX 5V
    RX 5V

    Wiec nie wyjaśniło to za bardzo niczego.


    W poście z dnia 14 mar 2015, o 21:39 umieściłem zdjęcia jak wyglądają moje układy. Wykorzystuje terminatory 120 Ohma i rezystory podciągające 2.7K Ohma. Biały przewód widoczny na zdjęciu to 6x0.5mm YTDY. Ma on jakieś 0.6m. Analizatora się jeszcze nie dorobiłem, próbuje sobie radzić inaczej. Po kilku dniach wraz z pomocą volt_1 udało się przejść init, wiec liczę że nadanie i odebranie pierwszej wiadomości też się uda :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 mar 2015, o 17:01 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    tomek2864 napisał(a):
    Wiec nie wyjaśniło to za bardzo niczego.

    No raczej wyjaśniło, prosiłem o pomiar napięcia pomiędzy H i L, tymczasem jak wnioskuję mierzyłeś względem GND, no ale nawet, jeśli dla obu linii masz ten sam potencjał (różnica 50 mV) to znaczy, że ...? Napięcie różnicowe wynosi 0V, CAN to przesył różnicowy prawda?
    http://en.wikipedia.org/wiki/CAN_bus
    Według WIKIPEDII 0V to 1 bitowa.
    Któryś z modułów nadaje?
    Ja bym przy podpiętym voltomierzu (+ do CAN H, - do CAN L) odłączał od szyny kolejno same moduły CAN, tak żeby terminatory i podciąganie pozostało, i obserwował miernik.

    P.S. mowa o analizatorze CAN czy SPI?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 mar 2015, o 18:12 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Z tych napięć wynika napięcie różnicowe. W druga stronę już nie. Gdybym podał tylko różnicowe powstała by niejasność jakie jest H-GND i L-GND. Zakładając pomiar innych napięć na modułach, można byłoby się spodziewać że któryś z nich źle pracuje. Dlatego zmierzone wartości tego nie wyjaśniły.

    Napięcie różnicowe w przedziale [0;0.5]V daje stan recesywny czyli dla stanów logicznych 1 - jak napisałeś :)

    Pomiar magistrali, + do CAN H, (-) do CAN L.
    -Napięcie różnicowe na magistrali, kiedy żaden z modułów nie nadaje(tylko init) wynosi +0.05V. Odłączyłem najpierw każdy moduł z osobna i oba. Napięcie różnicowe nie uległo zmianie.
    -Następnie, jeden moduł nadaje, drugi się tylko inicjuje. Wraz z pojawianiem się w rejestrach TXBnCTRL 24, napięcie różnicowe mierzę -0.57V. Kiedy odłączę moduł drugi(nie nadający) nie wpływa na zmianę napięcia, lecz ponowne podłączenie tego modułu, daje odczyt(różnie) w okolicy [-1; - 0.8] V, gdzie to napięcie zaczyna spadać aby ustabilizować się w okolicy -0.57V.

    Co do analizatora to wydaje mi się że ważne aby pokazał przebiegi. Nie musi wspierać tych protokołów. W sieci są Saleae z okolicach 40zł, jest to cena do zaakceptowania. Pytanie tylko czy jest sens to kupować. Już kiedyś kupowałem miernik, lutownice za 30zł i i tak po paru miesiącach musiałem kupić droższy sprzęt, a tamto teraz leży i gnije...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 mar 2015, o 20:49 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    Muszę przyznać, że nie mam pomysłów na Twój problem.
    A dodatkowo stwierdzam, że wynik pomiaru napięć, który właśnie wykonałem na swojej "sieci", potwierdza Twoje pomiary; jednocześnie burząc moje dotychczasowe wyobrażenia o stanach: dominującym i recesywnym.

    Dotychczas uważałem, że stan recesywny czyli ustępujący, czyli sytuacja gdy żaden z węzłów nie wpływa na stan linii CAN H i L to różnica napięć wynikająca tylko i wyłącznie z faktu istnienia rezystorów podciągających (H~VCC, L~GND => 5V w moim i Twoim przypadku), a stan dominujący to wymuszona różnica ~ 0V.

    Przyznaję, że w swych chaotycznych przemyśleniach zapomniałem o wpływie terminatorów na napięcia linii.
    Nauka jednak nie pójdzie w las. ;)

    Tak więc u mnie w prawidłowo (tak myślę) działającej sieci, gdy żaden z węzłów nie nadaje (cisza w eterze) różnica napięć wynosi 200mV, niestety również nie posiadam sprawnego oscyloskopu więc napięć podczas transmisji nie podam.

    Chyba jednak będziesz musiał polutować trzeci moduł i podmieniać go, aby wykluczyć czy któryś nie śmieci, ja bym tak próbował.
    Ale może ktoś mądrzejszy zaproponuje inne rozwiązanie.

    P.s. A może by spróbować użyć karty dźwiękowej do przybliżonego podglądu szyny, zakres napięć 5V powinien pasować, ale ale częstotliwość! baudrate trzeba by obniżyć, sam nie wiem, to chyba jednak kiepski pomysł.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 mar 2015, o 16:04 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Witam ponownie:), sprawiłem sobie elegancki chiński analizator. Już pojawiły się pierwsze ciekawostki, które można uznać za postęp. Do rzeczy:
    Pierwsze moje kroki z obsługą takiego sprzętu, dały te oto ramkę
    Obrazek

    Jak widać Data Field Byte 171 i 205 daje to co przesyłam czyli
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    171 = 0xab
    205 = 0xcd
    A to dobrze.
    Tylko dlaczego drugi moduł tego nie odbiera i dlaczego z rejestrów TXBnCNTRL modułu nadającego odczytuje 24? :)

    Dodam że są to stare moduły. Nowe mam już wytrawione(poprawiłem linie do oscylatora), tyle że muszę je polutować

    Ale mi to poprawiło humor :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 mar 2015, o 18:44 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    tomek2864 napisał(a):
    sprawiłem sobie elegancki chiński analizator. Już pojawiły się pierwsze ciekawostki, które można uznać za postęp.


    Widzisz ... może on chiński , ale swoją robotę robi , a czasem bez analizatora jak bez ręki ...
    Ja bez saleae się nie biorę do roboty z magistralami, bo wole widzieć co tam się dzieje
    a teraz tak...
    Widzę ramka poszła ale cos jest nie tak w komunikacji prawdopodobnie nie zostaje zainicjowany odbiór
    w module , czyli:

    1. Adresat nie jest ustalony
    2. Ramka nie jest kompletna
    3. Inicjacja odbioru na magistrali nie wystąpiła

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 mar 2015, o 19:57 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    SunRiver napisał(a):
    1. Adresat nie jest ustalony
    2. Ramka nie jest kompletna

    Tomek pokaż funkcję odbierz_CAN którą zastosowałeś w module odbiorczym?
    A nadajesz przez _send_message, czy send_extend_message?
    Nie wiem czy to może mieć wpływ, ale filtrów w odbiorczym nie ustawiłeś?
    Moduł odbierający też wyprowadziłeś z LOOPBack`a?
    Nie mogę teraz obejrzeć tego zrzutu, ale czy po CRC jest ACK od odbiornika; a później EOF?

    P.S. Ile taki analyzer kosztuje?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 mar 2015, o 20:16 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    volt_1 napisał(a):
    P.S. Ile taki analyzer kosztuje?


    klon ok 40pln ... znajdziesz na taniocha markt
    ja za swój logic16 dałem 1,7 kpln ..

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 mar 2015, o 20:19 
    Offline
    Moderator zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 3228
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

    A nie różnią się pewnie niczym...

    _________________
    http://www.jaglarz.info



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 mar 2015, o 20:33 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    Właśnie widziałem na "Aledrogo" od 35, no trzeba będzie nabyć.

    Panowie Moderatorzy, widzą na tym zrzucie bit potwierdzenia? bo na telefonie to kiepsko oglądnąć.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 mar 2015, o 21:46 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    Jaglarz napisał(a):
    A nie różnią się pewnie niczym...


    może ... ale oryginał to oryginał i ma suport

    właśnie nie widzę tu potwierdzenia.

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 mar 2015, o 22:22 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Przed wejściem do pętli głównej while(), ustawiam tryb normalny
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Moduł, który nadaje zawiera w pętli tylko procedure wysłania, przy użyciu funkcji mcp2515_send_message:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Tak wygląda definicja funkcji mcp2515_send_message, która jest prosto z archiwum w poradniku Sun'a
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    W module odbiorczym sprawdzałem funkcje z poradnika mcp2515_get_message() oraz odbierz_can()
    mcp2515_get_message() :
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


    W przypadku obu funkcji odbiorczych, ciągle oczekują one na odbiór. Moduł nadawczy, ustawia rejestry TXBnCTRL na 24 czyli jedynki dla TXERR i TXREQ.
    Filtrów nie ustawiałem. Chciałbym uruchomić najpierw najprostszą transmisje.

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

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


    Taki wygląda ramka:
    Obrazek
    Na końcu jest brak potwierdzenia jako NAK - negative-acknowledge.
    Rejestry TXBnCTRL dla czytają to samo, a odbiorczy bez wzruszenia nasłuchuje



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 mar 2015, o 00:47 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Większe prawdopodobieństwo jest w tym, że błąd jest natury technicznej - w budowie modułów CAN? Nie chce niepotrzebnie błądzić. Dlatego muszę, stopniowo ograniczać obszar poszukiwań. Lepszego pomysłu nie mam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 mar 2015, o 20:16 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    Polutowałeś już nowe moduły? To powinno wyjaśnić sprawę sprzętową.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2015, o 20:44 
    Offline
    Użytkownik

    Dołączył(a): 13 gru 2013
    Posty: 34
    Pomógł: 0

    Równo miesiąc z tym walczyłem, ale było warto :D Udało mi się nadać i odebrać wiadomość :)
    Tak wygląda fragment nadanej ramki, jest w niej ACK.
    Obrazek

    Polutowałem dwa nowe moduły. Byłem co do tego sceptycznie nastawiony, ale jednak. Wina leży w wykonaniu poprzednich modułów CAN. Nadal nie wiem, co z nimi jest źle. Tak wyglądają dwa nowe, dziś polutowane i jeden z tych starych modułów. Trochę lepiej mi teraz wyszło, to lutowanie SMD.
    Obrazek

    Kiedy w sieci jest moduł nadający i odbierający, w rejestrach TXBnCTRL nadającego mam zera po nadaniu wiadomości. Jak odłączę drugi moduł - odbierający, rejestry TXBnCTRL zapełniają się wart. 24.

    Dziękuję za pomoc! Volt, przez Twoje komentarze nie odpuściłem tematu:D Mam nadzieje że będzie już z górki, chce rozbudować transmisje i skomunikować ze sobą kilka urządzeń. Czysta przyjemność:)



    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: 71 ]  Przejdź na stronę Poprzednia strona  1, 2, 3  Następna strona

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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


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