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 8 kwi 2025, o 13:46


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
    Autor Wiadomość
    PostNapisane: 16 maja 2015, o 11:09 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Witam wszystkich ;)
    Prosiłbym o sprawdzenie mojego kodu.
    Zbudowałem prostą aplikację w c# wysyłającą na μC dane i odbierającą je z niego.
    Jest to wstęp do mojego projektu, w którym mam zamiar sterować kilkoma serwami z poziomu aplikacji w c#. Wprowadzając dane w aplikacji mam zamiar sterować wyhyleniem kolejnych serw podłączonych do μC.

    Wstępnie postanowiłem wykonać samą komunikację oraz sprawdzić ją na diodach.
    Korzystam z "Mirkowych" funkcji do obsługi UART.

    Może przedstawię moje wypociny. (choć trudno nazwać je w 100% "moimi")
    Aplikacja:
    Obrazek

    (Button2 ma za zadanie wysyłać wprowadzone do labelka dane)

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

    Kod c na μC:
    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.

    funkcja uartgetc() (zamieszczona w uart.c)
    Edit.
    W sumie może nie będę jej umieszczać, ze względu na P.Mirka, nie prosił mnie o to bezpośrednio ale chyba tak będę mieć czystsze sumienie ;)
    Ogółem problem polega na tym, że moje diody wcale nie zmieniają swojego stanu. diody są podpięte prawidłowo (sprawdziłem zwykłą funkcją PORTB ^=LED1)
    Inne funkcje działają poprawnie.
    Np. gdy wysyłam z mikroklocka wartość int a=10; poprzez uart_putint(a,10); to w textboxie pojawia mi się ta wartość.
    Co prawda... Gdy na przemian wysyłam:

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


    To w textboxie wyświetla się raz 237 potem 10 potem 237 potem 10 (to byłoby ok) a tu nagle pojawia się 7! i dalej...10...237...10...
    Jak to wyjaśnić?

    No i główny problem, ten odbiór danych przez mikroklocka..
    Poradzi ktoś?



    Ostatnio edytowano 17 maja 2015, o 10:52 przez Czapek, łącznie edytowano 4 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 maja 2015, o 12:35 
    Offline
    Użytkownik

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

    1.. prosze o czytanie zasad działów , a nie pisanie gdzie się podoba ... topic5809.html
    2.. Pisałem o tym na forum i ja i kolega developer ....

    zanim ci podpowiemy ... zapoznaj się z:

    ---->> DLA C++
    topic100.html
    topic97.html

    --->> DLA C#
    topic93.html
    topic93.html#p42386
    topic2232.html

    w obu przypadkach zasada jest taka sama...
    podejrzyj sobie

    _________________
    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: 16 maja 2015, o 15:01 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Kurde, sorka ^^ Tak przeleciałem działy, zauważyłem ze ktoś pisał i o c# i o c na mikroklocu i uznałem, że można ;p
    Tak czy siak sporo szukałem, być może i na jeden z tych zamieszonych przez Ciebie linków już się natknąłem, dzięki ;)
    Poczytam dokładnie to co zamieściłeś i dam znać jakie wyniki ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 maja 2015, o 16:51 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    No dobra, sprawdziłem dokładnie kod, który umieszczony jest tutaj:
    topic2232.html
    w sumie na bazie tego budowałem apkę w c#.
    No i co... nie działa odbiór danych.
    Wysyłanie bezpośrednio z mikroklocka do apki działa. Wyniki są wyświetlane.
    W drugą stronę już nie działa...
    Znając życie mam jakiś prosty błąd którego nie widzę ;/

    Edit.
    Sprawdzam też apkę która jest zamieszona w całości w powyższym temacie.
    Wyświetlanie danych w danej aplikacji również mi nie działa. Gdy wysyłam bezpośrednio z mikrokontrolera -> dane są wyswietlane (co prawda krzaczki ale jednak).
    Gdy robię pętlę tzn wysylam na mikrokontroler i bez żadnych przeróbek wysyłam z powrotem do aplikacji to nie wyświetla.

    I co dziwne, w mojej aplikacji jak wysyłam tak jak wyżej - bezpośrednio z mikrokontrolera na aplikację to nie ma krzaczków - są ładnie wyświetlone dane.

    w przypadku "pętli" wykorzystuję
    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 w przypadku bezpośredniego z mikroklocka na aplikację:
    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 tym drugim przypadku CZASEM zamiast 7000 wyświetla mi się 0. ( w mojej aplikacji)

    Edit.
    Czy jest mozliwość przeniesienia posta do właściwego działu?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2015, o 10:16 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Sprawdziłem teraz samą apkę (zwarłem Tx z Rx w ft232).
    Działa bez zarzutów.
    Więc problem tylko z kodem na µC. µC odbiera jedynie zera.



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

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Taktowanie wewnętrznym oscylatorem 8Mhz.
    W przypadku, gdy wysyłam na sztywno wartości z mikroklocka na aplikację->odbiór jest bezproblemowy.
    mam na myśli:
    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: 17 maja 2015, o 10:58 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Już to poprawiłem ;)
    Był to nieznaczny błąd w kodzie w c#.

    Nie wiem, może to ma znaczenie. pracujuę na atmedze8..
    Ale wydaje mi się, ze gdyby miało to znaczenie to w terminalu odbierałbym zawsze krzaki..

    Edit

    Tak dla sprawdzenia podpiąłem kwarc 16Mhz.
    UBRR liczę tak jak P. Mirek pokazał:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    I działa wciąż tylko wysyłanie "sztywnych" wartości z mikrokontrolera na aplikację.
    Gdy próbuję odebrać dane, odbierane są tylko zera, nie ważne czy używam putty czy swojej aplikacji.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2015, o 11:33 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    W sumie usunąłem wszystko co związane z RS485.
    Podesłać Ci cały projekt? Nie chciałbym tu umieszczać całych bibliotek P.Mirka.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2015, o 11:53 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Nie trzeba... Sprawdziłem wszystko raz jeszcze.
    Aż głupio przyznać.
    Przez zwykły pośpiech usunąłem linijkę odpowiadającą za ustawienie bitów UCSRB w przypadku gdy nie używamy RS485.
    W związku z czym były problemy z odbiorem danych przez mikrokontroler.

    Dzięki Antystatyczny, pytając o bibliotekę obsługi RS485 zwróciłeś moją uwagę właśnie na sprawdzenie tego.

    I dzięki SunRiver, duuużo poczytałem, a nie tak na gotowca ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2015, o 12:05 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Do najlepszych na pewno nie należę ;)
    Ale cieszę się, że mogę wreszcie ruszyć dalej z projektem, kolejny mały kroczek ;)
    Pozdrawiam gorąco!



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

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Hej.
    Nie wiem czy warto zakładać nowego posta ;)
    Przeleciałem filmiki z linku:
    http://mirekk36.blogspot.com/2015/01/wi ... start.html
    No i napotkałem mały problem...
    Otóż komunikacja po uarcie działa bez zarzutów ale tylko jeśli wykorzystuję putty. Moja aplikacja natomiast już robi jakiś problem...
    (Do tej pory wszystko fajnie działało, dopiero jak przerzuciłem się na poniższy kod - coś się posypało- ale tylko dla mojej aplikacji, w putty dział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.


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


    I dla lepszej analizy.
    Poniższy kod dział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.


    Dlaczego dalej drążę?
    Bo zależy mi na przesyłaniu stringów a nie pojedynczych znaków. W dalszej części mam zamiar przesyłać stringi zawierające dane liczbowe do sterowania serwami.

    edit. Oczywiście korzystam z bibliotek Pana Mirka.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 cze 2015, o 08:51 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Git, znalazłem.
    Problem polegał na braku znaku \n\r. Wystarczyło w apce po wysłanym ciągu wysłać Environment.NewLine i wszystko działa ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 cze 2015, o 16:17 
    Offline
    Użytkownik

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

    otóż to ... program zwykle oczekuje końca i tu ja np stosuję CR/LF jednocześnie :)
    dlatego też polecałem poczytać oczywiście bo zabawa jest naprawdę fajna z C# i mikroklockiem
    jak chcesz na szybko na kilku komach pracować zassaj Debunala z mojej strony to taki dziwny terminal :)


    Autor postu otrzymał pochwałę

    _________________
    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: 1 lip 2015, o 17:12 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Największa radość zawsze gdy zaczyna działać jak należy ;)
    Drążę temat dalej, jak na razie udało się ruszyć przerwania na rf12b, dioda świeci się gdy dojdzie JAKIKOLWIEK sygnał. Teraz kwestia zbadania dlaczego sygnał nie jest taki jaki chcę.
    Prosty if pozwala mi na sprawdzenie czy dany string jest taki jaki wysylam. Gdy jest taki sam ma zapalić diodę. Nie zapala.
    Rozkminiam, może uda się bez pomocy. Jak nie uda się to będę precyzować ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lip 2015, o 22:37 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    No i męczę się od jakiegoś czasu.
    Przybliżę sprawę.
    Z aplikacji wysyłam znak "a" ( po prostu wpisuje go z klawiatury) Jest on zakończony znakiem enter (konkretnie Environment.NewLine)
    Odbierane jest to przez pierwszy mikrokontroler i bez żadnych zmian wysyłan przez rfm12b do drugiego mikroklocka. Sprawdzam tu diodą czy:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    W tym miejscu wszystko się zgadza. Dioda zapala się.
    Jednak wysyłając dane z pierwszego do drugiego mikrokontrolera sygnał jest odbierany, ale nie dokładnie taki jak wysłany? Sprawdzam to znów prostym warunkiem:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Dioda nie zapala się. Niezgodność danych. Zastanawia mnie to, co dokładnie zostaje wysłane funkcją send() (z bibliotek do RFM12 Pana Mirka).
    Gdybym miał możliwośc obserwacji tego ;D (jakiś LCD czy coś)

    Na dziś mam dość. Jutro może coś wymyślę. Jakby ktoś miał ochotę przeanalizować moje wypociny, chętnie pokażę kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lip 2015, o 22:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 10 mar 2013
    Posty: 739
    Lokalizacja: Poznań
    Pomógł: 84

    A nie powinno się znaku porównywać w ten sposób ?
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Autor postu otrzymał pochwałę


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

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

    Próbowałem i tak i tak. Nie działało.
    W dalszym celu mam porównywanie stringów, a potem porównywanie danych liczbowych uzyskanych z zamiany stringów na liczby przy pomocy atoi();
    Dlatego też takie porównanie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lip 2015, o 14:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    Sprobuj tak w miejscu gdzie odbierasz dane z RFM

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


    Autor postu otrzymał pochwałę

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lip 2015, o 16:29 
    Offline
    Użytkownik

    Dołączył(a): 25 mar 2015
    Posty: 105
    Pomógł: 2

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

    Rozwiązało problem.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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