eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaBrak komunikacji między Atmegą a modułem GSM po rs232Re: Brak komunikacji między Atmegą a modułem GSM po rs232
  • Data: 2012-12-15 20:04:14
    Temat: Re: Brak komunikacji między Atmegą a modułem GSM po rs232
    Od: Marek <f...@f...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Sat, 15 Dec 2012 18:07:13 +0100, Atlantis <m...@w...pl>
    wrote:
    > Niezależnie od tego stan wysoki na liniach rs232 wynosi 5V. W tej
    chwili

    Pisząc rs232 nasz na myśli usart mcu? Używasz jakieś przejściówki
    usart<->rs232 czy usart<->usb w przypadku łączenia się z pc?


    > Będę wtedy chyba potrzebował jakiegoś level shiftera?

    jeśli atmega nie może na 3.3v, to owszem albo level shifter ale można
    też obniżyć dzielnikami a podciagnac dioda + rez. osobiście używałem
    ten drugi sposób z powodzeniem.


    > Krótko rzecz ujmując używam dwóch tablic: rx_buffer[] i
    last_line[]. Do

    ja jestem zwolennikiem buforu odbiorczego typu ring, które wypełnia
    przerwanie po odbiorze znaku + funkcje odczytu zawartosci bufora.
    Algorytm to m.in. dwie funkcje (w psedokodzie):
    wyslij("at&f\r\n");
    czekajna("OK\r\n", 1000);
    Pierwsza wysyła string polecenia, druga odczytuje bufor (nie będę
    wnikał w obsługę bufora, sloty itp. ) czekając aż się pojawi
    oczekiwany string w określonym czasie (timeout w ms), jeśli się nie
    pojawi to funkcją zwraca błąd, który możemy obsłużyć. Bufor ring
    bardzo ładnie jest opisany wraz z przykładami w nocie an2120 dla
    m68hc08, polecam. Oczywiście ważne jest aby do funkcji oczekującej
    podawać "cały koniec" oczekiwanego stringu (wraz z "\r\n") aby nie
    doprowadzić do zbyt wczesnego nadania kolejnego polecenia.

    > BTW jeszcze pytanie natury formalnej. Jak inteligentny jest
    kompilator w
    > zakresie makrodefinicji zastępujących wartości liczbowe? Jeśli np.
    dam:
    > #define WARTOSC 31
    > a potem w programie dam:
    > if (zmienna < (WARTOSC-1))
    > To w którym momencie zostanie obliczona wartość? Podczas
    kompilacji, czy
    > też za każdym razem uC będzie sobie musiał odejmować jedynkę? ;)

    Nie powinien przy włączonej optymalizacji (to się chyba nazywa
    constant folding), po prostu sprawdzi czy,zmienna<30. Ale to zalezy
    od kompilatora i włączonego poziomu optymalizacji.

    --
    Marek

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: