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 1 maja 2025, o 22:47


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
    Autor Wiadomość
    PostNapisane: 3 cze 2014, o 23:22 
    Offline
    Użytkownik

    Dołączył(a): 03 sty 2013
    Posty: 49
    Pomógł: 0

    Chciałbym się doradzić w jaki sposób w Bascomie mogę zrealizować procedurę odbierającą dane przez port szeregowy. Mam połączone dwie atmegi8 (1 Tx -> 2 Rx), gdy w pierwszej wciskam przycisk powinna wysłać bajt, a druga powinna go odebrać, przetworzyć i czekać na wysłanie kolejnego bajtu. O ile z wysyłaniem nie ma problemów, o tyle mam zagwozdkę z systematycznym ich odbieraniem. Stosowałem komendy Waitkey oraz Inputbin, ale one po odebraniu bajtu kończą swoje działanie i kolejne dane nie są już odbierane. Potrzebuję procedurę, która będzie czekała na nadchodzącą transmisję i jednocześnie nie będzie blokowała pracy programu, po odebraniu bajtu przypisze go odpowiedniej zmiennej. Czy ktoś zechce mi pomóc? :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2014, o 02:13 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 31 lip 2012
    Posty: 157
    Pomógł: 8

    Jeśli ma oczekiwać i zarazem nie blokować to chyba przerwanie było by odpowiednie. Popatrz do help w polskiej wersji, tam coś jest napisane, poza tym pamiętam że tam nawet jakies przykłady były.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2014, o 08:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 maja 2013
    Posty: 432
    Lokalizacja: Gostyń / Poznań
    Pomógł: 25

    moze to cos pomoze :)

    http://avrhelp.mcselec.com/index.html?c ... rialin.htm

    _________________
    Podpis...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2014, o 11:35 
    Offline
    Użytkownik

    Dołączył(a): 03 sty 2013
    Posty: 49
    Pomógł: 0

    Wypróbowałem już wszystkie możliwości i poza jednokrotnym odbiorem komendami waitkey, input, czy inputbin nic nie działa. Nawet komenda ischarwaiting nie funkcjonuje, a powinna. Dodam, że w programie mam przerwanie od licznika timer1.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2014, o 11:57 
    Offline
    Moderator
    Avatar użytkownika

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

    maryushr napisał(a):
    Wypróbowałem już wszystkie możliwości i poza jednokrotnym odbiorem komendami waitkey, input, czy inputbin nic nie działa. Nawet komenda ischarwaiting nie funkcjonuje, a powinna. Dodam, że w programie mam przerwanie od licznika timer1.


    Skoro NIC koledze nie funkcjonuje to można byłoby wysnuć DWA wnioski, tylko dwa wnioski:

    1. albo te polecenia nigdy nie działały i nie działają w Bascomie, a wszyscy którzy ich używają i piszą że są ok - to kłamią w żywe oczy łącznie z autorem Bascoma

    2. albo kolega coś źle robi ... i to totalnie źle robi ....

    Którą opcję wybierasz ?

    _________________
    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: 4 cze 2014, o 12:28 
    Offline
    Użytkownik

    Dołączył(a): 03 sty 2013
    Posty: 49
    Pomógł: 0

    mirekk36 napisał(a):
    Skoro NIC koledze nie funkcjonuje to można byłoby wysnuć DWA wnioski, tylko dwa wnioski:

    1. albo te polecenia nigdy nie działały i nie działają w Bascomie, a wszyscy którzy ich używają i piszą że są ok - to kłamią w żywe oczy łącznie z autorem Bascoma

    2. albo kolega coś źle robi ... i to totalnie źle robi ....

    Wolałbym żeby była to odpowiedź druga, bo błędy można poprawić.
    Zamieszczam kod programu:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Kody wklejamy przy pomocy syntax=basic4gl - Różowo-zielony J.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2014, o 13:17 
    Offline
    Moderator
    Avatar użytkownika

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

    maryushr napisał(a):
    Wolałbym żeby była to odpowiedź druga, bo błędy można poprawić.


    No ale widać, że zakładasz - że jest możliwa w ogóle pierwsza opcja .... więc przy takim podejściu to jeszcze dłuuuuuuuuuuga droga przed kolegą ... :(

    _________________
    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: 4 cze 2014, o 14:50 
    Offline
    Użytkownik

    Dołączył(a): 03 sty 2013
    Posty: 49
    Pomógł: 0

    mirekk36 napisał(a):
    No ale widać, że zakładasz - że jest możliwa w ogóle pierwsza opcja .... więc przy takim podejściu to jeszcze dłuuuuuuuuuuga droga przed kolegą ... :(

    Wolałbym się skupić bardziej nad kodem programu, niż nad tym co zakładam, a czego nie zakładam, bo nie ma to wpływu na poprawność działania tego programu. Ale skoro już temat został podjęty, to im dłuższa droga tym więcej można się nauczyć i zagłębić w tematykę, nikt przecież nie jest fenomenalny. Jedyne co się traci, to czas, a pogoda ładna, zamiast siedzieć przy komputerze można pójść na spacer lub robić coś innego. Tak, czy inaczej cel wymaga osiągnięcia, a droga może być długa ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2014, o 15:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 maja 2013
    Posty: 432
    Lokalizacja: Gostyń / Poznań
    Pomógł: 25

    maryushr napisał(a):
    Wolałbym się skupić bardziej nad kodem programu, niż nad tym co zakładam, a czego nie zakładam, bo nie ma to wpływu na poprawność działania tego programu.


    Rozumiem że kolega pisze program na żywca bez żadnych założeń... a tu Mirek dobrze mówi, bo czasami jak sobie wbijesz że u Ciebie na bank dobrze że coś gdzieś źle to nigdy nie zauważysz swojego błędu... a jak Ci sarkastycznie Mirek zasugerował skoro wszystkim to działa i piszą w tym języku od lat a Tobie nagle nie działa to raczej ty masz coś źle... więc pomyśl nad swoimi założeniami, weź kartke, rozrysuj co i jak, dopasuj kod do narysowanych kwadracików i po nitce do kłębka znajdziesz co masz źle... tak tak... masz... bo zazwyczaj błąd jest po naszej stronie.... ;)
    A jak na chwilę obecną masz ciemność i wszystko wydaje Ci się ok to może lepiej wykorzystać pogodę, pójść na spacer, dotlenić to co się przydaje przy programowaniu i wrócić do tematu wieczorem... ;)

    _________________
    Podpis...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2014, o 15:26 
    Offline
    Moderator
    Avatar użytkownika

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

    No ale widzisz - właśnie O TO CHODZI, bo gdy ktoś nie widzi własnych błędów - tylko szuka ich u producentów a to oprogramowania a to części elektronicznych to nawet ciężko coś takiej osobie z takim nastawieniem podpowiadać - bo z góry i tak jest to skazane na porażkę ....

    Wystarczy jednak zmiana nastawienia i łatwiej się rozmawia bo DOKŁADNIE jak mówisz .... tzn piszesz wyżej

    ---------------------

    wracając więc do meritum .... proponuję ci po pierwsze odchudzić i napisać ten kod od nowa - taki testowy - tylko do odbierania danych i np ich wyświetlania na LCD albo nawet do odsyłania przez UART - wersja testowa. Bo generalnie cały program to niezły tzw bajzelek (bez obrazy) ale i to rozumiem bo każdy się uczy ...

    polecenie Ischarwaiting możesz umieścić w pętli głównej i oczekiwać na nadlatujące znaki ale ....

    ALE MUSISZ pamiętać o tym, że nie możesz wykonywać żadnych dłuższych operacji pomiędzy tym sprawdzaniem bo od razu rozwali ci to właśnie ten odbiór

    druga sprawa - potestuj sobie to NAJPIERW na terminalu czyli komunikacja z kompem przez RS232 - od tego się zaczyna naukę tworzenia komunikacji RS232, bo jak ty to odpalasz od razu na dwóch prockach - to jak widzę nie masz ŻADNEJ kontroli nad tym co się dzieje ....

    a gdybyś chciał mieć - to co za problem wpiąć się pinem RX jakiejś przejściówki w jedną albo drugą linię transmisyjną pomiędzy prockami i podsłuchiwać na terminalu co się dzieje - nie sądzisz że będzie łatwiej ...

    tylko .... no właśnie - tylko ZAPOMNIJ wtedy o przesyłaniu jakichś tam bajtów o wartości = 1 bo to kompletnie bez sensu do testów z terminalem, a dla ciebie żadna różnica jeśli będziesz np przesyłał kod ASCII znaku 1 czyli bajt o wartości 49 i już na terminalu będziesz mógł podglądać jak procki między sobą gadają ...

    jeśli wydaje ci się to mało zrozumiałe z tym ASCII to zajrzyj proszę tutaj:

    http://mirekk36.blogspot.com/2014/06/ja ... ascii.html

    _________________
    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: 4 cze 2014, o 15:38 
    Offline
    Użytkownik

    Dołączył(a): 03 sty 2013
    Posty: 49
    Pomógł: 0

    Doszedłem do wniosku, że zacznę jednak od podstawowej komunikacji pomiędzy procesorami, czyli tylko i wyłącznie odbiór wysyłanych znaków z wykorzystaniem zwykłego LCD, w projekcie mam zastosowany LCD 3,5 cyfry. Myślę, że przyczyną jest właśnie obsługa tego wyświetlacza, która rozwala mi komunikację. Ale to się okaże. Dziękuję za pomocne odpowiedzi.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2014, o 18:33 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    Można wykorzystać polecenia prinbin oraz inputbin lub serin i serout. Musisz doczytać.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 cze 2014, o 23:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    Możliwości jest wiele a rozwiązań tyle co programistów.
    Można użyć znaków ASCII co może być czytelne dla oka i łatwe do testowania z terminala poprzez wklepywanie kolejnych znaków.
    czyli w pętli głównej piszesz:

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


    Można tez użyc petli while -wend przykład dla drugiego portu
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    powyższe załatwia odbiór znaków ascii trzeba to teraz jakoś rozróżnić i zareagować.
    Pasuje po grupować te znaki w jakieś komendy:



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


    Żeby było jeszcze prościej i dla potomnych dla komend można zastosować stałe i łatwo sobie je edytować.

    Każde z wczesniej opisanych select CASE mozna sobie teraz łatwo edytować bez żmudnego przewijania w kodzie.
    Zmieniając stałe poniżej.
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Rozwiązanie z printbin
    Przydała by się tablica żeby odebrać dane ciurkiem.
    Podzielić na w bajty itp.

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



    Część nadawcza:

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


    To są wycinki najważniejszych fragmentów można z tego posklejać co nie co.
    Paweł



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 cze 2014, o 22:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    Niveasoft napisał(a):
    PS. Uart może być też buforowany


    Ja bym powiedział że MUSI być buforowany.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 cze 2014, o 20:41 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    Niveasoft napisał(a):
    Funkcja Ischarwaiting nie działa gdy włączymy buforowanie w Config serialinn.

    Nie zgodzę się z tobą nie działa jak używasz software uart.
    Jak używasz Hardware Uart działa bo sama nazwa mówi is char waiting -czyli jeśli znak czeka gdzie w buforze.
    I dokładnie jest to zademonstrowane w przykładzie do ischarwaitng
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lip 2014, o 20:02 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    Widzę że autor już zdążył zapomnieć o swoim problemie bo ani "bee" ani "mee" na nasze odpowiedzi.



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

    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