Goto page 1, 2, 3, 4, 5, 6 Next
Atlantis
Guest
Mon Dec 10, 2012 8:20 pm
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ć?
Mirek
Guest
Mon Dec 10, 2012 8:44 pm
On 10.12.2012 20:20, Atlantis wrote:
Quote:
Przy czym nie wiem
co nie dochodzi - komenda, czy odpowiedź.
[...]
Quote:
Co powinienem sprawdzić?
Podłaczyć się równolegle pod RS-a dwoma terminalami i podsłuchiwać.
Mirek.
Atlantis
Guest
Mon Dec 10, 2012 9:40 pm
W dniu 2012-12-10 20:44, Mirek pisze:
Quote:
Podłaczyć się równolegle pod RS-a dwoma terminalami i podsłuchiwać.
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.
Atlantis
Guest
Mon Dec 10, 2012 10:43 pm
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?
Mirek
Guest
Mon Dec 10, 2012 11:08 pm
On 10.12.2012 22:43, Atlantis wrote:
Quote:
Wina leży po stronie połączeń czy może raczej
nieodpowiedniego zasilania?
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.
Atlantis
Guest
Mon Dec 10, 2012 11:35 pm
W dniu 2012-12-10 23:08, Mirek pisze:
Quote:
No to już oscyloskop by się przydał
Oscyloskop mam. Co powinienem sprawdzić?
Quote:
ale najpierw bym spróbował zasilać modem osobno żeby po masie od RS-a
nie szło zasilanie.
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?
Mirek
Guest
Tue Dec 11, 2012 12:12 am
On 10.12.2012 23:35, Atlantis wrote:
Quote:
Może masa jest niewystarczająca? Powinienem dodać drugi kabel,
prowadzący w pobliże wyprowadzeń TX i RX Atmegi?
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.
Michoo
Guest
Tue Dec 11, 2012 12:32 am
On 10.12.2012 23:35, Atlantis wrote:
Quote:
4) Linie RX i TX obydwu urządzeń są połączone kawałkami przewodów o
długości kilkunastu cm.
Jakie parametry transmisji ustawiłeś i jaka częstotliwość w atmedze?
--
Pozdrawiam
Michoo
Grzegorz Niemirowski
Guest
Tue Dec 11, 2012 1:29 am
Atlantis <marekw1986NOSPAM@wp.pl> napisał(a):
Quote:
Oscyloskop mam. Co powinienem sprawdzić?
Kształt sygnału szeregowego, szerokość bitów.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express:
http://www.grzegorz.net/oe/
Uptime: 0 days, 7 hours, 58 minutes and 3 seconds
Mario
Guest
Tue Dec 11, 2012 1:55 am
W dniu 2012-12-10 22:43, Atlantis pisze:
Quote:
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?
Może procek nie pracuje na kwarcu tylko na wewnętrznym generatorze RC.
Możesz mieć kilka procent odchyłki w prędkości transmisji.
--
pozdrawiam
MD
Piotr Gałka
Guest
Tue Dec 11, 2012 9:36 am
Użytkownik "Atlantis" <marekw1986NOSPAM@wp.pl> napisał w wiadomości
news:ka5o4e$qus$1@portraits.wsisiz.edu.pl...
Quote:
W dniu 2012-12-10 23:08, Mirek pisze:
No to już oscyloskop by się przydał
Oscyloskop mam. Co powinienem sprawdzić?
Najlepiej jak nadajnik nadaje 2 bity stopu, a odbiornik akceptuje 1 bit
stopu.
P.G.
Adam Wysocki
Guest
Tue Dec 11, 2012 4:57 pm
Atlantis <marekw1986NOSPAM@wp.pl> wrote:
Quote:
"Podsłuchane" odpowiedzi napływające z modemu nie wyglądają zbyt ładnie.
Pojawiają się wśród nich jakieś krzaczki znaki NULL...
Posłuchaj oscyloskopem - sprawdź stromość obu zbocz na obu liniach, może
potrzebny jest jakiś pullup na linii od modemu do atmegi? Sprawdź szerokosć
impulsów.
--
Gof
http://www.chmurka.net/
Atlantis
Guest
Tue Dec 11, 2012 7:44 pm
W dniu 2012-12-11 00:12, Mirek pisze:
Quote:
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ć.
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...
Atlantis
Guest
Tue Dec 11, 2012 7:51 pm
W dniu 2012-12-11 00:32, Michoo pisze:
Quote:
Jakie parametry transmisji ustawiłeś i jaka częstotliwość w atmedze?
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);
}
Atlantis
Guest
Tue Dec 11, 2012 7:54 pm
W dniu 2012-12-11 15:57, Adam Wysocki pisze:
Quote:
Posłuchaj oscyloskopem - sprawdź stromość obu zbocz na obu liniach, może
potrzebny jest jakiś pullup na linii od modemu do atmegi? Sprawdź szerokosć
impulsów.
A właśnie. Jak wygląda kwestia ustawienia bitów odpowiadających liniom
na których znajduje się TX i RX w rejestrach DDRC, PORTC i PINC?
W tutorialach, które czytałem ta kwestia raczej nie była poruszana -
pisano po prostu o rejestrach funkcyjnych i konfiguracyjnych modułu rs232.
Goto page 1, 2, 3, 4, 5, 6 Next