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? 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 4 cze 2025, o 19:42


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
    Autor Wiadomość
    PostNapisane: 13 kwi 2020, o 15:13 
    Offline
    Użytkownik

    Dołączył(a): 07 lut 2015
    Posty: 157
    Pomógł: 2

    Witam,
    nie mogę poradzić sobie z odbiorem binarnym 9-bitów.
    Układ:
    zestaw z Atmega1284,
    UART0 8,n,1,9600 -> komunikacja z terminalem
    UART1 9,n,1,9600 -> komunikacja z urządzeniem

    Dla testów podłączyłem TXD2 z RXD2 (pin PD2 z PD3). Wysyłam jeden znak i chcę go odebrać.

    Jak wysyłanie jest OK, to z odbieraniem mam problem, nie umiem tego sparsować czy co.
    Zrobiłem taki eksperyment:
    Dla testów przed wysłaniem znaku zeruję bufor odbiorczy.
    Po nadaniu sprawdzam zawartość tego bufora, a w nim pełno śmieci.
    Obrazek

    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.

    Dodam, że jedyną zmianę jaką zrobiłem w bibliotece z uwagi na bugi, to:
    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: 13 kwi 2020, o 20:13 
    Offline
    Użytkownik

    Dołączył(a): 07 lut 2015
    Posty: 157
    Pomógł: 2

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

    Linia dataH =(UCSR1B & (1<<RXB81)) > 0; Co to jest? To chyba nie może działać.

    ------------------------ [ Dodano po: 2 minutach ]

    To chyba tak ma być, bo w sumie w dataH jest jeden bit, 0 lub 1.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 kwi 2020, o 21:33 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27406
    Lokalizacja: Szczecin
    Pomógł: 1043

    Ma tak być jak jest w bibliotece wszystko i nie zmieniaj bo wtedy narobisz sobie takiego bigosu - że ja na pewno nie pomogę bo jak?

    Biblioteka DOSKONALE działa dla ramek 9-bitowych no ale trzeba takie mieć i nie spodziewaj się że to odbierzesz albo zobaczysz poprawnie w terminalu bo jak ? Na PC nie ma obsługi ramek 9-bit - więc coś bardzo mocno przekombinowałeś

    zrób sobie dwa urządzenia tzn dwa procki i jeden niech do drugiego coś przesyła za pomocą 9-bit i będzie ci to ładnie śmigało. Albo weź sobie jednego procka z dwoma UART'ami np ATmega644P albo ATmega1284P i jednym UARTem gadaj sobie z drugim prockiem po 9-bit a drugim uartem wysyłaj sobie do terminala np wartości HEX odebranych ramek 9-bitowych

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 09:36 
    Offline
    Użytkownik

    Dołączył(a): 07 lut 2015
    Posty: 157
    Pomógł: 2

    Dziękuję za odpowiedź,
    1. oczywiście, że nie odbieram ramek z 9-bit terminalem, bo takiego nie mam i nawet nie mogę znaleźć.
    2. mam drugie urządzenie, które wysyła te cholerne ramki, mam analizator Saleae i wszystko mogę podejrzeć.
    3. wysyłam ramki 9-bitowe do urządzenia, urządzenie rozumie, przesyła właściwe odpowiedzi (oglądam na analizatorze Saleae).
    4. mam u siebie ATmege1284, a nie ATmege1284P, ale to chyba nie stanowi (jeszcze sprawdzę czy mam pod ręką Atmege644P lub ATmege1584P, ale chyba nie).
    5. tak jak pisałem, nie umiem odczytać zarówno odpowiedzi z urządzenia jak i jak i odpowiedzi gdy nadaję i odbieram (TXD2 do RXD2 bezpośrednio mostek).
    6. gdzie tkwi mój błąd?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 09:48 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27406
    Lokalizacja: Szczecin
    Pomógł: 1043

    Nef.ID napisał(a):
    mam u siebie ATmege1284, a nie ATmege1284P

    to po co ci inny procek - skoro ten też ma dwa UARTy ?

    Nef.ID napisał(a):
    3. wysyłam ramki 9-bitowe do urządzenia, urządzenie rozumie, przesyła właściwe odpowiedzi (oglądam na analizatorze Saleae).

    zobacz jak nielogicznie piszesz i ciężko cię przez to zrozumieć - bo z tego pkt.3 wynika że niby ci wszystko działa

    a tutaj:
    Nef.ID napisał(a):
    . tak jak pisałem, nie umiem odczytać zarówno odpowiedzi z urządzenia

    no to o co chodzi ?

    Po pierwsze jak spojrzałem na kod który pokazałeś to złapałem się troszkę za głowę - no bo jak można sprowadzić testy jednostkowe do czegoś takiego ?

    Czy nie prościej napisać do TESTÓW najprostszy kod gdzie jeden procek będzie nadawał UWAGA! JEDNĄ i tylko JEDNĄ ramkę 9 bitową - a w drugim procku ją odbierać, czyli jedno słowo 16-bitowe ? No bo to co się dzieje u ciebie w tym parsowaniu .... to ... nie nie - to nie mam na tyle czasu żeby analizować tak dziwne rzeczy - tzn może nie dziwne ale nie mam czasu

    Zrób prosty kod jak pisałem wyżej, sprawdź Saleae czy ramka ładnie wychodzi na drucie, a w funkcji parsującej odbierz słowo i w zależności od konkretnej wartości zapalaj albo gaś diodę LED, nie potrzebny do takiego testu nawet drugi UART i już można mieć PODSTAWY opanowane w 5 sekund albo zgłosić jakiś konkretny problem na najprostszym kodzie. Wtedy będzie można coś pomóc - ok ?

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 13:29 
    Offline
    Użytkownik

    Dołączył(a): 07 lut 2015
    Posty: 157
    Pomógł: 2

    Wysyłam, jak od samego początku piszę, tylko jedną ramkę. Oto ona, teraz to 0x0035:
    Obrazek

    Obrazek

    Załączam jeszcze raz program testowy, ale już z powyrzucanymi wszystkimi dodatkowymi rzeczami, aby było prościej do analizy:
    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 wyniku otrzymuję size=1, a z bufora 0.
    Obrazek
    Poprzednio pokazywałem też zawartość całego bufora odbiorczego, który przed odbiorem ramki zerowałem w całości, a po otrzymaniu jednego tylko znaku miałem w nim sieczkę, o dziwo zawsze taką samą.
    PS. Mirek, rozumiem, drugi zestaw, ale moje urządzenie było już drugim urządzeniem, ale dobrze- zmontuję coś drugiego na testy.

    ------------------------ [ Dodano po: 16 minutach ]

    Dodam tylko, że prędkość transmisji to 19200, jakby co.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 14:37 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27406
    Lokalizacja: Szczecin
    Pomógł: 1043

    No teraz to można popatrzeć na kod ... tylko na razie nie mam jak sprawdzić/potwierdzić - ale w międzyczasie zapytam bo pokazałeś tam na saleae czasy, zamiast pokazać wynik analizatora rs232 - dobrze zdekodował ramkę? jest poprawnie nadawana ?

    i nie mówię o dwóch zestawach - nawet na stykówce niech jeden procek nadaje

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    a jak będę miał chwilkę to taki kodzik mogę wrzucić na przetestowanie i zobaczymy co i jak

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 15:01 
    Offline
    Użytkownik

    Dołączył(a): 07 lut 2015
    Posty: 157
    Pomógł: 2

    Dobrze, urządzenie, które nadaje ramki 9-bit i wiem co nadaje, dokładnie obejrzałem analizatorem Saleae. I takie same tj. 9-bitowe nadaję. Zresztą co widać na załączonym obrazku - 1 bit =52 usek, 2 bity 104 usek, 3 bity to 157 usek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 15:35 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27406
    Lokalizacja: Szczecin
    Pomógł: 1043

    Nef.ID napisał(a):
    Zresztą co widać na załączonym obrazku - 1 bit =52 usek, 2 bity 104 usek, 3 bity to 157 usek.

    Lubisz sobie utrudniać życie - toż masz w programie LOGIC za darmo pełno analizatorów w tym podstawowy do RS232, zobacz - a tu ja nadaję ramkę testową i gdybym zadawał pytanie na forum to bym pokazał taki przebieg z Saleaez włączonym analizatorem zamiast bawić się w czasówki - nie ważne jaka prędkość

    więc u mnie nadaje sobie ATmega32 tak:

    Obrazek

    nic dodać nic ująć - widać wszystko jak BYK, na dłoni albo jak na patelni ... (i dlatego myśl Pan o takich testach NAJPROSTSZYCH i używaniu analizatorów protokołów) na przyszłość

    zaraz sprawdzę odbieranie

    ------------------------ [ Dodano po: 34 minutach ]

    proszę bardzo - a dla utrudnienia dodałem przesyłanie dwóch ramek jedna po drugiej co ok 500ms, tak wyglądają na analizatorze w saleae

    Obrazek

    no i proszę na dwóch zestawach ATB to śmiga, żeby było ciekawiej to nadawca jest na m32 zaś odbiorca na m1284P

    Obrazek

    ------------------------ [ Dodano po: 37 minutach ]

    pętla główna nadawcy:

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



    a u odbiorcy wygląda to tak:


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



    zaś sama funkcja parsująca "parse9"


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


    ------------------------ [ Dodano po: 39 minutach ]

    więc jak widzisz wszystko śmiga, gra i buczy ... dlatego prosiłem cię zrób najprostsze testy jednostkowe - zrób tak jak ja tutaj ... i sprawdź czy ci to działa - a jeśli nie to znaczy, że gdzieś babola robisz ale gdzie ? tego nie wiem po tym opisie .... przetestuj na dwóch prockach i pokaż swoje rezultaty

    ------------------------ [ Dodano po: 40 minutach ]

    aha na zakończenie dodam, że testy prowadziłem na tej bibliotece ze sklepu a nie na jakichś swoich nowszych zmodyfikowanych wersjach tej biblioteki - bo niedługo ukaże się nowa wersja i będzie miała DUŻO lepsze pracy z transmisją binarną.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 19:53 
    Offline
    Użytkownik

    Dołączył(a): 07 lut 2015
    Posty: 157
    Pomógł: 2

    Jeszcze raz napiszę odnośnie powyższego wpisu Mirka o "zmodyfikowanych" wersjach biblioteki przeze mnie:
    Mam wersję biblioteki v.1.1
    I taką informację w consoli:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Natomiast w pliku multi_usart_c mam:
    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.

    Dlatego też musiałem wprowadzić te zmiany(o których pisałem), żadnych innych, bo
    a/ nie znam się na tyle, by czegoś nie spieprzyć
    b/ nie wiem do końca, co autor miał na myśli.
    Dlatego też podałem to wszystko, by upewnić się co do słuszności, bo widać, że plik nie zna zmiennych dataH i dataL.



    Ostatnio edytowano 14 kwi 2020, o 20:07 przez Nef.ID, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 20:04 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27406
    Lokalizacja: Szczecin
    Pomógł: 1043

    hmmm podeślij mi na biuro@atnel.pl tę bibliotekę którą otrzymałeś od nas ? bo coś mi tu nie pasuje

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 20:28 
    Offline
    Użytkownik

    Dołączył(a): 07 lut 2015
    Posty: 157
    Pomógł: 2

    wysłałem



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2020, o 20:44 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27406
    Lokalizacja: Szczecin
    Pomógł: 1043

    odpisałem na maila

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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

    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