Mikrokontroler + modem - koncepcja komunikacji

Witam Chciałbym sterować modemem GSM za pomocą ATmega8 lub wyższym w związku z czym po głowie chodzi mi taka koncepcja działania. Czy ide dobrą drogą?

Kod:

RESET: ; ustawienie początku stosu ; ustawienie prędkości transmisji ; inne ustawienia początkowe, przerwania itp Loop1: ; Tu realizacja głównych zadań czyli wysyłanie poleceń do modemu, odbieranie...

rjmp Loop1

USART_RXC: ; przerwanie gdy odebrano kompletny znak rcall RxAnal ; czy znak w ASCII=10 to koniec lini i analizuj to co w buforze (1) ; zapisz znak do bufora ; zwieksz index bufora dla ewentualnego zapisu kolejnego znaku reti

RxAnal: ; analiza tego co przyszlo z modemu do znaku końca linii (2) ret

USART_TXC: ; skopiowanie znaku z RAM do USART Register Description ;obsługa danej która będzie za każdym razem przy wywołaniu tego przerwania zmniejszała ; się jeden aby wskazywać kolejny znak do wysłania i tak do osiągnięcia wartości 0 ; i jak osiagnie 0 to wyłączamy zezwolenia na przerwanie od "transmisji kompletnej" reti

SendCmd: ; wysyłanie polecenia do modemu ; zapisanie w RAM kompletnego polecenia do wysłania ; sprawdzenie ile znaków do wysłania i zapis tej liczby do ram ; wysłanie znaku ENTER do modemu ; zezwolenie na przerwanie od zdarzenia "transmisja kompletna" ret

(1) czy modem po odpowiedzi wysyła znak końca linii czy również powrotu karetki? (2) Mam na razie jedną koncepcję polegającą na porównywaniu tego co dostałem z wzorcami, tylko to dość czasochłonne i zawodne wg mnie ;(

Reply to
raF
Loading thread data ...

raF napisał(a):

Zdecydowanie nie. Napisz program raczej w języku C. Do takich zadań jak parsowanie odpowiedzi na komendy AT (szczególnie tych wieloelementowych, np. zapytanie o zapamiętane SMSy) i tak trzeba będzie napisać nieco kodu. A pisząc w czystym asemblerze urobisz się po pachy i stracisz masę czasu. Chociaż nie twierdzę, że nie da się - tylko po prostu nie ma sensu jeżeli ma to chodzić jak napisałeś na ATmega8 lub większym procu.

Odnośnie pytań: komendy wysyłane do modemu zawsze kończ znakiem CR (13). Modem zawsze odpowiada kończąc linie znakami CR,LF (13,10). Takie jest ustawienie standardowe a AFAIR kod końca linii można zmienić którymś S-rejestrem.

BTW: I nie nazywaj funkcji RxAnal. ;)

Reply to
Adam Dybkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.