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



Teraz jest 13 gru 2024, o 17:33


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: 27317
Lokalizacja: Szczecin
Pomógł: 1041

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 ]
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: 27317
Lokalizacja: Szczecin
Pomógł: 1041

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: 27317
Lokalizacja: Szczecin
Pomógł: 1041

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