Brak komunikacji między Atmegą a modułem G SM po rs232

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Polish to

Threaded View
Ciąg dalszy moich zmagań nad stworzeniem interfejsu, który połączyłby  
pozostałości starego, tarczowego telefonu z modułem GSM. ;)
Program właściwie już skończyłem pisać - pozostała jeszcze tylko  
ewentualne implementacja dodatkowych funkcji (jak generacja dialtone'u)  
i wprowadzenie kilku drobnych poprawek.

Okazało się, że ktoś już coś takiego robił  
(https://www.sparkfun.com/products/287?) i nawet podzielił się kodem,  
więc mogłem podpatrzeć kilka rozwiązań. Tylko do pewnego stopnia rzecz  
jasna, choćby ze względu na zastosowanie innego procka i modułu.

Zarówno modem jak i Atmega bez problemu komunikują się z komputerem za  
pośrednictwem max3232. Po dokładnym przetestowaniu programu połączyłem  
obydwie płytki i włączyłem zasilanie. Mikrosteronikowi udało się
włączyć  
modem (zgłosił to mignięciem diody) a potem przestał reagować -  
najwyraźniej oczekując na odpowiedź z modemu. Zmodyfikowałem więc trochę  
funkcję odpowiedzialną za komunikację. Teraz zwraca wartość 0 nie tylko  
wtedy, gdy odebrany komunikat różni się od oczekiwanego, ale także  
wówczas, gdy czas oczekiwania na odpowiedź przekroczy zadaną wartość.

Dzięki temu dowiedziałem się, że inicjacja wykrzacza się na samym  
początku, nie otrzymując żadnej odpowiedzi na "AT". Przy czym nie wiem  
co nie dochodzi - komenda, czy odpowiedź.

Parametry połączenia są prawidłowe, zgodne z dokumentacją modemu. Poza  
tym wcześniej używałem obydwu płytek z tak samo skonfigurowanym terminalem.

Czy długość prowizorycznych połączeń (kabelki ze złączami do goldpinów,
 
długości kilkunastu cm) może być tutaj źródłem kłopotów?

Co powinienem sprawdzić?

Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
On 10.12.2012 20:20, Atlantis wrote:

Quoted text here. Click to load it
[...]

Quoted text here. Click to load it

Podłaczyć się równolegle pod RS-a dwoma terminalami i podsłuchiwać.

Mirek.


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
W dniu 2012-12-10 20:44, Mirek pisze:

Quoted text here. Click to load it

W tej chwili mam tylko jeden moduł na max3232, więc podsłuchiwałem na  
zmianę łącząc linię RX na zmianę z TX modemu i Atmegi.

W każdym razie pomogło. Okazało się, że przyczyna nie dosyć, że była  
programowa, to jeszcze prozaiczna. Zwyczajnie dałem za krótką przerwę  
pomiędzy włączeniem modułu a wysłaniem pierwszej komendy. Modem nie miał  
dostatecznie dużo czasu, żeby zainicjować obsługę rs232. Chyba będę  
musiał przeznaczyć jedną linię na obsługę sygnału zgłaszającego gotowość  
portu do przyjmowania danych.




Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
No i chyba za bardzo się pospieszyłem ze świętowaniem.
Co prawda po wprowadzeniu poprawek program przechodzi dalej z inicjacją  
modemu, ale komunikacja nie jest stabilna. Nie udało mi się dotrzeć do  
podania PIN-u...

"Podsłuchane" odpowiedzi napływające z modemu nie wyglądają zbyt ładnie.  
Pojawiają się wśród nich jakieś krzaczki znaki NULL...

Plik z przechwyconą sesją terminalową tutaj:
http://www.sendspace.pl/file/87b2c1f8cb9859f74317f79

W czym może leżeć przyczyna? Gdy "rozmawiałem" z modułem z komputera,  
przez terminal nie było czegoś takiego. Dostawałem "czyste" komunikaty,  
bez żadnych krzaczków. Wina leży po stronie połączeń czy może raczej  
nieodpowiedniego zasilania?

Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
On 10.12.2012 22:43, Atlantis wrote:

Quoted text here. Click to load it

No to już oscyloskop by się przydał, ale najpierw bym spróbował zasilać  
modem osobno żeby po masie od RS-a nie szło zasilanie.

Mirek.


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
W dniu 2012-12-10 23:08, Mirek pisze:

Quoted text here. Click to load it

Oscyloskop mam. Co powinienem sprawdzić?


Quoted text here. Click to load it

Hmm... Możesz napisać coś więcej? W jaki sposób powinienem poprowadzić  
masę i zasilanie? W tej chwili wygląda to następująco:

1) Na płytce z Atmegą znajduje się stabilizator 78T05, z kondensatorami  
330nF i 100nF. Stabilizator zasila Atmegę część płytki zawierającą uC  
(przez usuwalną zworkę). Z wyjścia biorę stabilizatora biorę też  
zasilanie modemu.
2) Zasilanie modemu filtrowane jest przez kondensator elektrolityczny  
1000uF w pobliżu modemu.
3) Masy obydwu płytek są połączone jednym przewodem (pomiędzy minusem  
kondensatora filtrującego zasilanie modemu a okolicą wyprowadzenia masy  
stabilizatora na płytce Atmegi).
4) Linie RX i TX obydwu urządzeń są połączone kawałkami przewodów o  
długości kilkunastu cm.

Może masa jest niewystarczająca? Powinienem dodać drugi kabel,  
prowadzący w pobliże wyprowadzeń TX i RX Atmegi?

Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
On 10.12.2012 23:35, Atlantis wrote:

Quoted text here. Click to load it

To raczej nic nie da. Po prostu połącz masę grubszym, krótszym przewodem  
a najlepiej podłącz na próbę zasilanie modemu z odseparowanego źródła.  
Nie wiadomo czy masa jest tutaj w ogóle problemem - trzeba to sprawdzić.

Mirek.

Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
W dniu 2012-12-11 00:12, Mirek pisze:

Quoted text here. Click to load it

W porządku. W następnej chwili wolnego czasu podłączę zasilanie Atmegi  
do baterii 9V (przez stabilizator 78T05 rzecz jasna) a modem zasilę (jak  
do tej pory) z zasilacza CB, przez inny stabilizator. Może to coś da...


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
Ok, wykonałem próbę. Jak już wspomniałem uC podłączyłem do bateryjki 9V  
poprzez stabilizator 5V. Moduł przez osobny stabilizator do zasilacza CB  
13,8V (może dawać ponoć do 5A, a moduł w peeku pobiera 1,5A).

Płytki miały więc osobne zasilania, połączone były jedynie przewodami  
masy, TX, RX, TS (ustawienie na stan wysoki włącza moduł) i DSC_EN (stan  
wysoki oznajmia włączenie modułu).

Pojawił się złowrogi objaw. Mianowicie po włączeniu zasilania Atmegi  
dioda na zasilaczu CB przygasła, dało się też słyszeć zauważalne  
brzęczenie. Jakby nagle zwiększył się pobór prądu...
Oczywiście natychmiast wszystko wyłączyłem i zrezygnowałem z dalszych  
eksperymentów.

Każda płytka z osobna dalej działa prawidłowo.

Czy to rozjaśnia w jakiś sposób sytuację? Gzie powinienem szukać błędu?


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
On 11.12.2012 20:23, Atlantis wrote:

Quoted text here. Click to load it

Stabilizator się wzbudza albo obciąża go któraś z tych linii sterujących  
do płytki atmegi albo zasilacz CB zepsuty. Więcej pomysłów nie mam.
Skoro moduł "szarpie" 1.5A to o jego zasilanie powinieneś najpierw  
zadbać i koło niego stabilizator i krótka masa, a atmega niech sobie  
wisi na kabelkach.

Mirek.


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
W dniu 2012-12-11 21:36, Mirek pisze:

Quoted text here. Click to load it

Co może być powodem? Dziwne jest to, że każda płytka z osobna na tych  
samych stabilizatorach działa zupełnie prawidłowo. Problem pojawia się  
dopiero po połączeniu ich razem.


Quoted text here. Click to load it

To była pierwsza rzecz jaka mi przyszła do głowy. Teraz jednak wychodzi  
na to, że problem nie był związany z "krzakami" odbieranymi przez  
Atmegę. Okazuje się, że po odłączeniu linii TS i DSC_EN od Atmegi  
zasilacz już nie wariuje. Jeszcze raz sprawdzę w dokumentacji czy czegoś  
nie przeoczyłem. Może faktycznie któraś z nich potrzebuje bufora?

Zasilanie modułu GSM włączam po prostu chwilę wcześniej (zwarłem  
odpowiednie piny, a więc starty następuje automatycznie) a po paru  
sekundach podaję zasilanie Atmedze.

Niestety - komunikacja wciąż nie odbywa się prawidło, pomimo  
rozdzielonego zasilania przychodzą nieprawidłowe znaki. Co ważne -  
zawsze zawartość terminala wygląda tak samo. Nie są to jakieś losowe  
znaczki...


Quoted text here. Click to load it

Odpada. Zasilacz świetnie sobie radzi z konstrukcjami krótkofalarskimi  
QRP, które podczas nadawania pobierają więcej prądu niż ten moduł. ;)


Quoted text here. Click to load it

Jak mówiłem - w tej chwili są dwa osobne stabilizatory. Jeden dla  
Atmegi, drugi dla modułu D15.


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
On 11.12.2012 22:11, Atlantis wrote:

Quoted text here. Click to load it

Przyznaję się że dopiero teraz przyjrzałem się dokładnie temu  
zapisowi... wygląda na to, że obok dwóch typowych (windowsowych) znaków  
końca lini (0D 0A 0D 0A), modem w pewnym momencie wysyła 0D FE 0D 0A a w  
pewnym 0D 0A 00 00.
Uwzględnij to w programie i tyle. Przyjmij za koniec linii 0D albo 0A a  
resztę znaków ignoruj.

Mirek.


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
W dniu 2012-12-11 23:15, Mirek pisze:

Quoted text here. Click to load it

Tak, tylko dlaczego nie robi tego, gdy jest podłączony do komputera  
przez max3232???


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
On 11.12.2012 23:20, Atlantis wrote:

Quoted text here. Click to load it
To gadaj z nim przez komputer. Podłącz do jednego com modem a do  
drugiego atmegę i ... hmm pewnie nie masz linuksa bo
cat /dev/ttyUSB0 > /dev/ttyUSB1 i odwrotnie załatwiłby sprawę. I przy  
okazji podsłuchać można.
5% szans że to jednak załócenia od zasilania i objawiają się właśnie po  
określonych komendach jak modem "bierze" prąd. FE to długi ciąg jedynek  
potem 0. Natomiast 00 00 (znak null dwa razy) no to dłuuugi ciąg zer...  
przy czym mało prawdopodobne żeby został odebrany przypadkowo.

Mirek.


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
Dnia Wed, 12 Dec 2012 00:05:34 +0100, Mirek napisał(a):
Quoted text here. Click to load it

Odwrotnie. Dwa bity zero (start i LSB), a potem jedynki.

Moze byc skutek jakiegos chwilowego zaklocenia ... ale zabraklo koledze 0A
po 0D.  
I tak dziwnie po CPIN ... modemik dostaje pin i probuje sie z siecia
skomunikowac ?


J.

Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
W dniu 2012-12-12 00:31, J.F. pisze:

Quoted text here. Click to load it

Wtedy to nawet jeszcze do tego nie dochodziło. Modem nie mógł poprosić o  
PIN, bo nie wiedział co dostaje w odpowiedzi na "AT+CPIN?". Zwracał po  
prostu "ogólny błąd". Przejście do pobrania PIN-u byłoby możliwe dopiero  
wtedy, gdyby otrzymał i zrozumiał komunikat "+CPIN: SIM PIN".

Jak już pisałem zastosowanie kwarcu trochę poprawiło sytuację. To znaczy  
wydaje mi się, że chodzi o kwarc, gdyż jednocześnie dałem też inny  
egzemplarz Atmegi8. Co parę odpaleń problem jednak powraca...


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
W dniu 2012-12-12 00:05, Mirek pisze:

Quoted text here. Click to load it

Jest jeszcze gorzej... Mój nowoczesny komputer stacjonarny nie ma już  
ani jednego złącza COM. Netbook rzecz jasna także. Korzystam z  
poczciwego ThinkPada, z jednym portem.
W przejściówki USB dopiero będę musiał się zaopatrzyć. ;)

Tak czy inaczej - usunąć trzeba przyczynę, zamiast leczyć objawowo.  
Komputera w obudowie telefonu przecież nie zamknę. ;)

Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
Poza tym z tego co widzę w pewnym momencie wysłał też dwa znaki NULL.


Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
On 10.12.2012 23:35, Atlantis wrote:
Quoted text here. Click to load it

Jakie parametry transmisji ustawiłeś i jaka częstotliwość w atmedze?

--  
Pozdrawiam
Michoo

Re: Brak komunikacji między Atmegą a mo dułem GSM po rs232
W dniu 2012-12-11 00:32, Michoo pisze:

Quoted text here. Click to load it

9600 bps, 8 bitów danych, brak parzystości, jeden bit stopu.
Taktowanie Atmegi jest ustawione na 8MHz, z wewnętrznego rezonatora RC.

Tak w razie, gdybym się pomylił i tego nie zauważył, to procedura  
inicjująca pracę modułu rs232 wygląda następująco:

void usart_init (void)
{
    UBRRH = 0;
    UBRRL = 51;
    
    UCSRB = (1<<RXEN) | (1<<TXEN) | (1<<RXCIE);
    UCSRC = (1<<URSEL) | (1<<UCSZ0) | (1<<UCSZ1);
}

Site Timeline