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 12:12


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 22 gru 2019, o 20:19 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Witam,

    od kilku dni usilnie próbuje uruchomić kod z BB dotyczącego bufora cyklicznego na ATtiny4313. Jednak gdy próbuje odczytać dane, które wysyłam poprzez RealTerm czy też Putty, uC nic nie zwraca lub zwraca krzaki. Czy jest szansa na pomoc ze strony forum? Bardzo dziękuje za każdą pomoc.

    A oto kod programu:
    main.c
    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.


    kod ukryto

    }[/syntax]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 gru 2019, o 20:56 
    Offline
    Użytkownik

    Dołączył(a): 29 paź 2017
    Posty: 232
    Pomógł: 26

    Jeśli widzisz jakieś krzaki to jest pół sukcesu. Procesor coś wysyła ale prawdopodobnie nie masz ustawionych zgodnie parametrów transmisji i stąd krzaki. Zacząłbym od wysyłaniu jednego znaku i odebrania go na terminalu. Nie jest to może odkrywcza porada . Poza tym pod mam wrażenie że sei(); dałbym po zakończeniu wszystkich init_ szczególnie za inicjalizacją uarta.

    _________________
    Jestem na GG 31324
    Nowy soft, nowa nadzieja.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 gru 2019, o 21:10 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Jeśli chodzi o wysyłanie danych na terminal to nie ma z tym najmniejszego problemu. Aktualnie przerobiłem trochę kod i wygląda on następująco:
    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.


    Obrazek

    Efekt uruchomienia programu jest widoczny na obrazku. Program zatrzymuje się ponieważ w buforze cały czas dostaje zera tak jakby zostawał cały czas w funkcji pobierającej jeden bajt z bufora.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 gru 2019, o 21:35 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2596
    Pomógł: 129

    Po pierwsze to obserwuj dane w hexie i w ascii - jest łatwiej. Po drugie polecam zakup prostego analizatora stanów logicznych, dzięki któremu będziesz miał możliwość sprawdzić m.in. z jaką tak naprawde prędkością nadajesz/odbierasz znaki +mnóstwo innych ciekawych funkcji przydatnych w codziennej pracy elektronika.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 gru 2019, o 22:50 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Niestety problem wciąż występuje... wygląda to tak jakby procesor był resetowany za każdym uruchomieniem USART.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 gru 2019, o 23:00 
    Offline
    Użytkownik

    Dołączył(a): 29 paź 2017
    Posty: 232
    Pomógł: 26

    Restart może występować gdy masz włączone jakieś przerwanie a wektor przerwania jest pusty.

    _________________
    Jestem na GG 31324
    Nowy soft, nowa nadzieja.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 06:05 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Z tego co pamiętam to Mirek wspominał żeby właśnie po uruchomieniu przerwania umieścić choć pustą obsługę tego przerwania, żeby właśnie nie zachodziły dziwne rzeczy. Wrzuciłem ten program na ATMege328P i wciąż to samo.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 06:11 
    Offline
    Użytkownik

    Dołączył(a): 29 paź 2017
    Posty: 232
    Pomógł: 26

    No właśnie o tym pisałem. Czy masz te "puste" obsługi przerwań? Po gdy nie masz, to wektor takiego nie pustego przerwania wskazuje na restart.

    _________________
    Jestem na GG 31324
    Nowy soft, nowa nadzieja.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 08:45 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Popatrz na ten zapis

    Kod:
    uint8_t cnt = 0;
                Data_Buffer[cnt] = Data_Flag;
                cnt++;
                USART_Send_Int(Data_Buffer[cnt], 10);
                Data_Flag = USART_Get_Rx_Byte();


    Zapisujesz znak do Data_Buffer[0]
    A wysyłasz znak z Data_Buffer[1]
    Tylko że niewiesz jaki tam jest znak, bo nigdy nie zapisujesz do Data_Buffer[1] bo przed robisz cnt++

    Jesli chodzi o niby zatrzymanie sie programu że śle same zera to patrz to

    Kod:
    if ( UART_RxHead == UART_RxTail ) return 0


    Zawsze zwraca zero jeśli bufor cykliczny pusty z funkcji pobierającej znak

    A Ty na to zero nie reagujesz że pusty bufor i wysyłasz dalej same zera.

    .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 09:07 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Poprawiłem składnie pętli która pobierała znaki (usunięcie cnt++), jednak jak w takim razie uniknąć tego zapychania zerami? Jeżeli chce przesłać dane, ale dopiero po uruchomieniu. Gdy tylko wyślę coś na terminal dostaję krzaki lub bezsensowne znaki. Co do przerwań to tak mają puste ciała jeśli są już wywoływane.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 09:13 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Zapychania zerami hmm,
    to jest info że bufor pusty, a to jaki to będzie znak to już Ty decydujesz i jak będziesz na niego reagował żeby właśnie kiedy masz pusty bufor to kończysz odbieranie znaków z bufora cyklicznego.

    .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 09:17 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Gdy wgrałem ten oto kod bufor kompletnie nie reaguje na dane wysyłane przez terminal, nie wysyła nawet zer które poprzednio się pojawiały.

    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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 09:39 
    Offline
    Użytkownik

    Dołączył(a): 01 lis 2013
    Posty: 301
    Pomógł: 32

    Witaj,

    Kolego, zacznij od najprostrzego kodu. Wywal te wszystkie PWM-y, i2c itp, itd i uruchom poprawnie samą transmisje UART.
    Jaką wartość ma to _MYUBRR ?

    Podepnij diodę pod jedną z wolnych nóżek procka. W funkcji przerwania UART od odbierania znaku, dopisz sobie przełączanie pinu z podpiętym LED-em i będziesz widział, czy przerwanie od odebranej danej z UART się w ogóle wykonuje. Ten fakt pokaże migający LED.

    Co do kodu, zauważ, że wszystko, co jest w tym warunku:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    się nie wykona, jeżeli nie wystąpi przerwanie od odebranej danej z UART-a.
    Jeżeli nie wystąpi przerwanie od odebranej danej, to wskaźniki RX/TX położenia danych w buforze będą równe, co z kolei powoduje, że w tym miejscu:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    do zmiennej Data_Flag zawsze będzie wpisywana wartość 0, jako wynik zwracany przez USART_Get_Rx_Byte();

    Zacznij naukę od samego początku książki BB, bo widzę, że nie masz pojęcia co te kody, które wklejasz robią. Tak się nie da, nawet z pomocą kolegów z forum.

    _________________
    Pozdrawiam,
    sq8mvy, Paweł



    Ostatnio edytowano 23 gru 2019, o 09:54 przez gizmo5418, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 09:47 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Tak jak kolega wyżej napisał robisz coś po omacku kopiuj wklej, miałeś _UBRR a potem zmieniasz na _MYUBRR i nie działa,

    Kolega wyżej dobrze podpowiada idź tą ścieżka nauki

    .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 09:56 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Po pierwsze to wynika to z tego że testuje róże wersje bibliotek na moim urządzeniu, nie ma fizycznej możliwość wpięcia się w układ ponieważ jest to gotowy układ na PCB. Po drugie gdy teraz umieściłem kody w tablicy a następnie przesłałem je przy pomocy funkcji PutC do bufora w rezultacie dostaję mniej danych niż zostało zadeklarowane.

    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.


    Usunięcie pozostałych funkcji również nic nie zmienia.

    A oto efekt działania pętli:
    Obrazek

    Wygląda to tak jakby wywołanie jakiejkolwiek funkcji związanej z USARTem powoduje częściowe zapełnienie bufora cyklicznego jednak, po jednokrotnym wykonaniu pętli while(1) cały program staje.

    Co do wartości która podane jest jako _MYUBRR to obliczona jest ona następująco:
    #define USART_BAUD 9600
    #define _MYUBRR (((F_CPU + USART_BAUD*8UL)) / (16UL*USART_BAUD) - 1)

    Natomiast jeśli usunę: USART_PutS("Start\r");
    To na termialu otrzymuje:
    Obrazek

    Czyli tak jakby więcej danych niż powinienem oczekiwać.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 10:14 
    Offline
    Użytkownik

    Dołączył(a): 01 lis 2013
    Posty: 301
    Pomógł: 32

    RychuER napisał(a):
    Po pierwsze to wynika to z tego że testuje róże wersje bibliotek na moim urządzeniu...


    Więc skup się na jednej wersji biblioteki, ale ze zrozumieniem, co ona robi, i ją w pełni uruchom.
    Następnie wyrzuć z kodu to:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Bo to jest całkowicie nie potrzebne na razie.

    RychuER napisał(a):
    ...nie ma fizycznej możliwość wpięcia się w układ ponieważ jest to gotowy układ na PCB.

    Mam rozumieć, że cały układ jest zalany jakąś masą i masz wyprowadzony na zewnątrz tylko Rx i Tx ?
    Nie można podejść do ścieżek, z miernikiem, jakimś analizatorem stanów logicznych czy oscyloskopem ?

    Weź na boku, nawet na stykówce uruchom podstawowy układ z Atmegą i tam uruchamiaj komunikację z UART-em. Następnie działającą bibliotekę przenieś do docelowego układu.

    _________________
    Pozdrawiam,
    sq8mvy, Paweł



    Ostatnio edytowano 23 gru 2019, o 10:18 przez gizmo5418, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 10:16 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Z całym szacunkiem, ale testujesz biblioteki których kompletnie nie znasz, nie wiesz co w nich się dzieje, jest czegoś za mało za dużo, niewiesz na jaką wielkość jest ustawiony bufor odbiorczy czy wysyłając.

    Tak sie kończy właśnie szukanie cudu, a potem nie działa, albo działa, ale nie tak jak byś oczekiwał,

    Znajomość bibliotek to podstawa żeby z nich umieć skorzystać.

    Masz BB tam jest libs do uart, Mirek dobrze go opisał w BB i jeszcze są przykłady/objasnienia na YT korzystaj z pewniaków które działają 100/100, albo napisz swoją biblioteke.

    .



    Ostatnio edytowano 23 gru 2019, o 10:17 przez Szofer, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 10:17 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Nie jest zalany masą, miałem na myśli brak możliwości ingerencji w strukturę układu, za chwilę zabieram się za napisanie tego od nowa miejmy nadzieję że z lepszym skutkiem.

    ------------------------ [ Dodano po: 15 minutach ]

    Nie wmawiaj mi ze nie wiem jak działa ta biblioteka to po prostu kolejka FIFO, tylko ze znak CR ma za zadanie wykrycie końca ramki. Testuje z tego względu ponieważ układ się blokuje a skoro opiera się o przerwania to powinien działać swobodnie w tle. Napisze to jeszcze raz ale od zera tak jak wspomniałem wyżej.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 11:01 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Kolego forum Atnel to nie takie same forum jak elek... w której miałbyś odp że temat był wałkowany miliony razy poszukaj sobie zamykam temat i do kosza.

    Przepraszam jeśli odebrałeś to jakoś opacznie, ja nie miałem złych intencji, poprostu widać że nie znasz "czyjeś" biblioteki do UART-a, odsyłamy do BB mega kopalnia wiedzy, do Mirkowego YT naprawdę to jest ogromna kopalnia wiedzy, a nie złośliwość że trzeba oglądnąć poradnik czy poczytać BB, to jest dobra rada nic złośliwego.

    .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 11:47 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Ja również przepraszam, po prostu frustracja i brak snu nie pozwala mi myśleć racjonalnie, dziękuje za dotychczasową pomoc i zabieram się jeszcze raz do pracy. :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 12:07 
    Offline
    Użytkownik

    Dołączył(a): 01 lis 2013
    Posty: 301
    Pomógł: 32

    RychuER napisał(a):
    po prostu frustracja i brak snu nie pozwala mi myśleć racjonalnie......


    Więc zacznij od wypoczęcia. Kiedy umysł jest zmęczony, nie wyspany, to nie funkcjonuje poprawnie. Wtedy banalnie proste rzeczy stają się wręcz nie do rozwiązania. A tak się nie da, bez względu ile kaw czy tigerów byś nie wypił, bedziesz stał w miejscu z rozwiązaniem problemu.

    Odejdź od projektu, odpocznij, prześpij się z tematem.....

    _________________
    Pozdrawiam,
    sq8mvy, Paweł



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 14:57 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    A więc tak kod obsługi wygląda dokładnie tak jak jest to opisane w BB:




    Oraz plik main.c
    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.


    A więc tak, założyłem że w pierwszej kolejności w sposób sztuczny umieszczę dane w buforze przy pomocy funkcji USART_PutC, następnie w pętli for umieszczonej przed pętlą while sprawdzę czy jestem w stanie cokolwiek odczytać. W pierwszej linii terminalu wyraźnie dostrzegam znaki ASCII które zostały prze zemnie zadeklarowane w tablicy Data_to_send[], jednak po zakończeniu odczytu z bufora wciąż otrzymuje jeszcze kolejne komunikaty o braku danych w buforze co jest prawdą ponieważ dane zostały opróżnione przy pomocy drugiej pętli for?

    Obrazek

    Czy w tym momencie transmisja przebiegła poprawnie? Według mnie tak, tylko należało by teraz zmusić układ do pracy kiedy tych danych jeszcze nie otrzymał, ponieważ przy braku zapełnienia bufora wstępnymi wartościami zera pochodzące z warunku poniżej zamazują bufor?
    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: 23 gru 2019, o 15:28 
    Offline
    Użytkownik

    Dołączył(a): 01 lis 2013
    Posty: 301
    Pomógł: 32

    Nic w buforach nie nadpiszesz, bo taki jest mechanizm w bibliotece, której używasz. Nawet, jak bufor TX będzie miał 2 bajty, to wyślesz bez problemu całą tablicę -sprawdź sam.

    W buforze RX, jak się cały zapełni ( nie będziesz odczytywał nadchodzących danych ) nie nadpisze już odebranych danych, tylko wyśle informację zwrotną do terminala o zapełnieniu bufora RX, a nadchodzące kolejne dane zostaną utracone. Taki stan będzie trwał do czasu, aż zaczniesz odczytywać dane z bufora odbiorczego.

    Musisz zmienić trochę myślenie. Staram się zrozumieć, co chcesz uzyskać, ale nie potrafię.
    Popatrz na spokojnie na bibliotekę od obsługi UART i przeanalizuj mechanizmy w niej zawarte, bo nie wiesz, co tam się dzieje.

    Pętle wykonują się jedna po drugiej.
    Najpierw wysyłasz - pierwsza pętla - widać, że wszystko zostało wysłane - pierwsza linia w terminalu, a następnie w drugiej pętli:
    - sprawdzasz, czy jest coś do odebrania. Jak nic nie będzie w buforze odbiorczym ( nic nie wyślesz z terminala), to funkcja zwróci wartość "0" i wyśle na terminal tekst "Brak danych"
    - ta wartość zwrócona zostanie zamieniona na liczbę jako tekst i wysłana na terminal.
    Druga pętla wykona się 8 razy, co widać w terminalu i po zakończenio wejdzie w ostatnią pętlę nieskończoną while(1)

    Wszystko działa, tak jak oprogramowałeś, biblioteka zachowuje się poprawnie.


    Autor postu otrzymał pochwałę

    _________________
    Pozdrawiam,
    sq8mvy, Paweł



    Ostatnio edytowano 23 gru 2019, o 15:49 przez gizmo5418, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 15:31 
    Offline
    Użytkownik

    Dołączył(a): 13 paź 2015
    Posty: 303
    Lokalizacja: Rybnik
    Pomógł: 10

    RychuER, wrzucasz na forum biblioteki z BB?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 15:51 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Biblioteka nie jest taka sama jak w BB, nie wiedziałem że nie można umieszczać tych kodów.

    EDIT:
    Przekazałem już informację z prośbą o edycję lub usunięcie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2019, o 22:12 
    Offline
    Użytkownik

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

    [zrobione]

    _________________
    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: 25 gru 2019, o 14:05 
    Offline
    Użytkownik

    Dołączył(a): 27 lis 2012
    Posty: 291
    Pomógł: 6

    Pewnie jesteś na wyższym poziomie, ale dla relaksu rzuć okiem na http://jaktodziala.eu/jak-dziala-bufor-cykliczny/.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 sty 2020, o 12:15 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Dzięki pomocy gizmo udało się uruchomić poprawnie bufor cykliczny, jednak mam pewien problem ponieważ próbuje aktualnie dostosować bufor do swoich potrzeb a mianowicie, zależy mi na wysłaniu ramki danych w takiej postaci:
    |Adres urządzenia| Kod funkcji do wykonania | Dane funkcji | Znak stopu = CR|

    Jednak jak należy w sposób poprawny zdekodować ramkę aby móc przekazać jej odpowiednie pola danych do dalszych funkcji?

    Próbowałem dokonać tego w taki sposób:
    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.


    Jednak przy próbie wysłania danych przez RealTerm dostaje ramke uprzednio wypełnioną zerami a następnie dopiero moje dane np. 00000001APM255.

    Z góry dziękuje za pomoc.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 sty 2020, o 13:26 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    Zauważ, że jeżeli byte jest równe 0 to funkcja Frame_Check też Ci się wykona.
    Może to dlatego?

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 sty 2020, o 13:50 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Jeżeli dobrze myślę muszę w jakiś sposób najpierw wypełnić bufor danymi które przesyłam a dokładnie max 16 bajtów, ale zapisywać tylko w przypadku gdy coś się w nich znajdzie innego niż zero?



    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: 32 ]  Przejdź na stronę 1, 2  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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO