eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Brak komunikacji między Atmegą a modułem GSM po rs232
Ilość wypowiedzi w tym wątku: 81

  • 61. Data: 2012-12-23 15:42:06
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: Atlantis <m...@w...pl>

    BTW mam jeszcze jedno pytanie o obsługę bufora odbiorczego.

    Mianowicie jak uniknąć sytuacji, kiedy jakiś błąd transmisji (np.
    przeinaczony znak) uniemożliwi jego normalne wyczyszczenie? Normalnie w
    tym przypadku mamy do czynienia z dwiema sytuacjami:

    1. Wysyłanie polecenia do modułu i oczekiwanie na odpowiedź. Tutaj mogę
    wyczyścić bufor przed rozpoczęciem tej procedury i przed jej
    zakończeniem (bez względu na to, czy wynik będzie pozytywny czy nie).

    2. Bardziej kłopotliwa jest jednak druga sytuacja, mianowicie
    oczekiwanie na konkretną wiadomość, wysłaną przez moduł w przypadku
    konkretnego zdarzenia (np. "RING\r\n\r\n" przy połączeniu przychodzącym)
    tutaj bufor mogę wyczyścić dopiero w przypadku rozpoznania właściwej
    komendy. A co, jeśli do bufora przyjdzie coś innego? Wtedy po prostu
    kolejny komunikat zostanie do niego doklejony...

    Poprzednio, gdy analizowałem komunikaty linijka po linijce, przepisując
    je do innej tablicy ten problem nie występował - przyjście kolejnej
    linijki czyściło bufor z jego poprzedniej zawartości.

    Czy istnieje jakiś sposób na nauczenie programu rozróżniania
    poszczególnych komunikatów jako odrębnych całości, nawet jeśli składają
    się z kilku linii? Jedyne rozwiązanie jakie w tej chwili przychodzi mi
    do głowy, to zastosowanie timera, który cyklicznie czyściłby bufor,
    zapobiegając "sklejeniu" dwóch komunikatów.


  • 62. Data: 2012-12-23 23:45:55
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: Marek <f...@f...com>

    On Sun, 23 Dec 2012 15:42:06 +0100, Atlantis <m...@w...pl>
    wrote:
    > przeinaczony znak) uniemożliwi jego normalne wyczyszczenie?
    Normalnie w

    Po co w ogóle chcesz czyścić bufor? W normalnym korzystaniu nie ma
    takiej potrzeby, jedynie zagrożenie to nadpisanie danych, gdy za
    wolno go czytasz (jest za mały).
    Problem może nastąpić gdy dane beda się pojawiac niespodziewanie np.
    RING w trakcie procesowania innej komend. O ile pamiętam RING pojawi
    się po OK ostatniego pol

    --
    Marek


  • 63. Data: 2012-12-23 23:50:26
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: Marek <f...@f...com>

    On Sun, 23 Dec 2012 23:45:55 +0100, Marek <f...@f...com> wrote:
    > się po OK ostatniego pol

    Urwało posta.. ostatniego polecenia więc wystarczy przed wysłaniem
    kolejnego polecenia wysadzić czy czegoś nowego w buforze nie ma.

    --
    Marek


  • 64. Data: 2012-12-24 11:39:17
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sun, 23 Dec 2012 23:45:55 +0100, Marek napisał(a):
    > On Sun, 23 Dec 2012 15:42:06 +0100, Atlantis <m...@w...pl>
    >> przeinaczony znak) uniemożliwi jego normalne wyczyszczenie?
    > Po co w ogóle chcesz czyścić bufor? W normalnym korzystaniu nie ma
    > takiej potrzeby,

    Musi jednak jakos lapac dane do porownania, zeby rozne smieci nie zaklocily
    przetwarzania.
    \r czy \n jest wystarczajace - je ignotujemy, ale one wyznaczaja kolejne
    komunikaty.
    Nawet jesli jakies smmieci przejda, to "ring" jest powtarzany za kazdym
    dzwonkiem.
    A inne ... timeout. Nie bylo potwierdzenia w stosownym czasie - powtarzamy.

    J.


  • 65. Data: 2012-12-24 16:41:08
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: Marek <f...@f...com>

    On Mon, 24 Dec 2012 11:39:17 +0100, "J.F."
    <j...@p...onet.pl> wrote:
    > Musi jednak jakos lapac dane do porownania, zeby rozne smieci nie
    zaklocily
    > przetwarzania.
    Nie wiem jakie śmieci masz na myśli.
    Bufor cykliczny ma zapis i odczyt niezależny. Funkcja odczytu z
    bufora pobieraja tylko te dane (z bufora), które nie zostały jescze
    odebrane. Funkcja zapisujaca (przerwanie usarta) dodaje odebrane do
    bufora i przesuwa wskaźnik odczytu dla funkcji czytujacej. Jeśli nic
    nowego w buforze nie ma funkcja odczytyjaca zwraca null. Wtedy wiemy
    ze bufor jest "pusty".
    "Czyszczenie" bufora (jeśli w ogóle konieczne) robi się poprzez
    zrownanie wskaźnika odczytu i zapisu (danych nie trzeba "zerować").
    Jak już pisałem RING nie powinIen się pojawić z nienacka tzn. w
    połowie odpowiedzi na poprzednie polecenie, ale tuż po jego
    zakończeniu lub w trakcie przerwy między poleceniami. Wystarczy
    pilnowac aby po każdej odpowiedzi lub przed nowym zapytaniem
    sprawdzac czy w buforze nie pojawił się ring.

    --
    Marek


  • 66. Data: 2012-12-26 11:24:58
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: Atlantis <m...@w...pl>

    Tak swoją drogą, jeśli chodzi o programowanie AVR to (abstrahując od
    tematu modułu GSM) jedno pytanie chodzi mi po głowie. Mianowicie do
    jakiego stopnia trudności można zakwalifikować projekty wykorzystujące
    moduły Ethernet? Takie konstrukcje widuje się od jakiegoś czasu coraz
    częściej - czy to w postaci jakiegoś Arduino z odpowiednim shieldem czy
    też układu zaprojektowanego zupełnie od podstaw.

    To wyższa szkoła jazdy, wymagająca kilkuletniego doświadczenia czy może
    nie jest aż tak źle? Istnieją gotowe rozwiązania, które pozwalałyby
    ominąć programowanie obsługi TCP/IP? Załóżmy, że w grę wchodzi
    transmisja niezbyt złożonych danych - np. telnet.


  • 67. Data: 2013-01-09 20:16:26
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: Atlantis <m...@w...pl>

    Tak swoją drogą, jeśli chodzi o poziomy napięć pomiędzy modułem a Atmegą.

    W nocie katalogowej modułu D15 znajduje się informacja, że sygnały są
    buforowane przez MC74VHCT244.
    Znajduje się tam także następujący schemat:

    http://obrazki.elektroda.pl/2864570200_1357753039.pn
    g

    Jak widać na liniach wejściowych, za buforami znajdują się dzielniki
    napięcia.

    Natomiast linie wyjściowe połączone są jedynie przez bufor. Nota o tym
    co prawda nie wspomina, ale czy tam nie powinny się przypadkiem znaleźć
    jakieś rezystory podciągające do VCC?

    BTW jak zachowa się uC AVR, jeśli na początku programu nie ustalimy
    stanu wejścia podciągając go do plusa lub masy przez wpisanie
    odpowiedniej wartości do PORTx? Przyjmie jakąś domyślną wartość czy też
    jego stan będzie nieustalony?


  • 68. Data: 2013-01-09 23:45:08
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Atlantis <m...@w...pl> napisał(a):
    > BTW jak zachowa się uC AVR, jeśli na początku programu nie ustalimy stanu
    > wejścia podciągając go do plusa lub masy przez wpisanie odpowiedniej
    > wartości do PORTx? Przyjmie jakąś domyślną wartość czy też jego stan
    > będzie nieustalony?

    Nieustalony, będzie zbierać śmieci. Co rozumiesz przez wartość domyślną? Co
    miałoby ją zmieniać?

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 0 days, 7 hours, 4 minutes and 35 seconds


  • 69. Data: 2013-01-10 19:02:31
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: Atlantis <m...@w...pl>

    W dniu 2013-01-09 23:45, Grzegorz Niemirowski pisze:

    > Nieustalony, będzie zbierać śmieci. Co rozumiesz przez wartość domyślną?
    > Co miałoby ją zmieniać?

    Gdyby np. kompilator ustawiał jakąś domyślną wartość wejścia w
    przypadku, gdyby użytkownik tego nie zrobił.
    Tak swoją drogą kiedy wskazane jest podciągnięcie linii do VCC przez
    rezystor, a kiedy powinienem tego unikać? Oczywiście pomijając oczywiste
    sytuacje, jak np. zastosowanie bufora z otwartym kolektorem.

    Słyszałem też głosy mówiące, że uC powinien być połączony z modułem za
    pośrednictwem szeregowych rezystorów. Rozwiązanie wskazane czy nie?



  • 70. Data: 2013-01-10 19:09:22
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Atlantis <m...@w...pl> napisał(a):
    > Gdyby np. kompilator ustawiał jakąś domyślną wartość wejścia w przypadku,
    > gdyby użytkownik tego nie zrobił.

    Jakby kompilator ustawiał wartość wejścia, to to już przestałoby być
    wejście, tylko by było zwykłe wyjście. Użytkownik też nic nie robi. Wejście
    jest wejściem dlatego, że stan jest wyznaczany przez czynniki zewnętrzne. Po
    co Ci wejście, na którym możesz coś ustawić?

    > Tak swoją drogą kiedy wskazane jest podciągnięcie linii do VCC przez
    > rezystor, a kiedy powinienem tego unikać? Oczywiście pomijając oczywiste
    > sytuacje, jak np. zastosowanie bufora z otwartym kolektorem.

    Np. gdy w jakichś sytuacjach do wejścia nie jest nic podłączone.

    > Słyszałem też głosy mówiące, że uC powinien być połączony z modułem za
    > pośrednictwem szeregowych rezystorów. Rozwiązanie wskazane czy nie?

    Jeśli są zasilane różnymi napięciami.

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 0 days, 0 hours, 25 minutes and 47 seconds

strony : 1 ... 6 . [ 7 ] . 8 . 9


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: