logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega162<>USART<>Siemens s65. Problem z połącze

Murakami 17 Gru 2009 16:40 3993 16
REKLAMA
  • #1 7401587
    Murakami
    Poziom 10  
    Witam, mam problem z którym męczę się już sporo czasu.
    Chcę połączyć Siemensa s65 z Atmegą162 przez sprzętowy USART Atmegi. W najprostszym rozwiązaniu mógłbym wybrać ATmegę w wersji zasilanej 3V, aby uzyskać kompatybilność napięć. Niestety takiej nie mam, a układ, na razie prototypowy musi być kompatybilny z GPSem na 5V, więc kwestią do rozwiązania jest sposób podłączenia Siemensa do zwykłej ATmegi 162.
    Schemat mojego układu wygląda następująco.
    ATmega162<>USART<>Siemens s65. Problem z połącze
    Transmisja od strony procesora jak widać zrealizowana jest na diodzie Zenera plus 500 ohowy rezystor. Daje to 5mA prąd diody zgodny z kartą katalogową. Na diodzie mam 2,66V czyli OK.
    Konwersję napięć z 2,5 V które daje TXSiemensa na potrzebne 5V procesorowi zrealizowałem na dwóch tranzystorach. Zgodnie z kartą katalogową ATmega uzna za stan wysoki 0,6Vcc czyli 3V, więc taką konwersję musiałem przeprowadzić. Oczywiście po próbach bez konwersji kiedy komórka nie odpowiadała i myślałem, że w tym tkwi problem. Niestety jak się okazało nie tylko w tym.
    Prosty program wysyła "AT" na USART1 do którego zgodnie ze schematem podłączony jest Siemens, a odpowiedź zwraca USART0 podłączony do komputera. Oczywiście odpowiedzi nie ma.
    Co ciekawe komórka podłączona identycznie z tym, że bezpośrednio przez MAX232 na COM komputera, odzywa się bez problemu, czyli wszystkie połączenia w tym sensie są dobre i spełniają swoją rolę.
    Gdzie robię błąd? Czym w tym problemie różni się transmisja i odbiór przez MAX od transmisji i odbioru z ATmegi? Tu i tu 5V, tu i tu sygnały według standardu RS232.
    Program jest dobry, sprawdziłem na kilka sposobów :|
  • REKLAMA
  • Pomocny post
    #2 7401726
    mirekk36
    Poziom 42  
    Tu masz schemat porządnego konwerterka - użyj scalaka w wersji HCT czyli 74HCT14 . Oczywiście konwerter to tylko te bramki

    ATmega162<>USART<>Siemens s65. Problem z połącze

    to na 100% działa z tym siemensikiem ;)
  • #3 7404252
    rotux
    Poziom 11  
    Zwykła atmega 162 może pracować zasilana napięciem 2,7 - 5,5V.
    Możesz śmiało obniżyć jej VCC do 3V3. Sprawdzone zresztą w praktyce, komunikacja z Siemensem MC60 śmiga bez problemu.
  • REKLAMA
  • #4 7404597
    arnoldziq
    VIP Zasłużony dla elektroda
    rotux napisał:
    Zwykła atmega 162 może pracować zasilana napięciem 2,7 - 5,5V.
    Możesz śmiało obniżyć jej VCC do 3V3. Sprawdzone zresztą w praktyce, komunikacja z Siemensem MC60 śmiga bez problemu.


    Przy obniżonym napięciu zasilania, nie zapomnij o zmniejszeniu kwarcu z 16MHz na 8MHz.
  • REKLAMA
  • #5 7405318
    Murakami
    Poziom 10  
    Dziękuję za wszystkie dotychczasowe rady. Właśnie wróciłem ze sklepu i zaraz zrobię konwerter na 74HCT14 z postu mirka. Jeśli to nie zadziała zmniejszę napięcie. Tak jak pisałem docelowo to nie wchodzi w grę, ale żeby przetestować transmisję rada jak najbardziej pomocna. Kwarc mam 8 Mhz więc jest OK. Według karty katalogowej moja atmega jest na 4,5 - 5,5 V. Ale skoro sprawdzone empirycznie to obniżę :) Ch.M. nie chodzi o podłączenie samego wyświetlacza lecz o całą sprawną komórkę sterowaną komendami AT wysyłanymi w kodzie ASCII, przez USART, ale wielkie dzięki za zainteresowanie.
  • #7 7407324
    AVRowiec
    Poziom 18  
    to nie problem układu tylko programu. z doświadczenia wiem że nawet złe dopasowanie napięć pozwala na poprawną komunikację ale za to dzieją się inne dziwne rzeczy.
    pokaż program.

    Proszę poprawić treść wiadomości - regulamin p.15
    [zumek]
  • #8 7411214
    Murakami
    Poziom 10  
    piotr411, jak to niepotrzebny? Wręcz przeciwnie. Bez kwarcu przy transmisji przez USART uzyskałem krzaki a nie komunikację. Być może często wystarczy wewnętrzny oscylator, ale to pewnie zależy od egzemplarza Atmegi. Moja przy wewnętrznym oscylatorze wysyłała krzaki na terminal, nawet przy wolnej transmisji 4800 bodów.
    AVRowiec program dobry, sprawdzałem go podłączając Atmegę przez MAX232 do komputera, idealnie wysyłała na terminal "AT>nowa linia>powrót karetki" tak jak powinna. Potem bawiłem się ze znakami powrotu karetki i nowej linii w różnej kolejności, ponieważ myślałem, że może akurat to jest ważne dla tego siemensa.
    W końcu podłączałem wszystko jednocześnie. Komórka z kompem przez MAX232 gadała, Atmega z kompem przez MAX232 gadała. Więc podłączyłem TXSiemensa przez MAX232 do kompa, a RXSiemensa do TX ATmegi. Tak żeby sprawdzić oddzielnie transmisję i odbiór Siemensa. Jeśli odbiór Siemensa z ATmegi byłby dobry Siemens odpowiedziałby na MAX232 który działał. Ponieważ nie odpowiadał stąd wniosek, że już przy odbiorze (rezystor i dioda zenera) miał jakiś kłopot.
    Tak czy inaczej zrobiłem konwerter z postu Mirka i w końcu ATmega i Siemens ze sobą ładnie porozmawiały tak jak należy :)
    Dla osób które trafią na ten wątek dopiszę jeszcze, że w Siemensie s65 trzeba zewrzeć do masy, przez rezystor 10 k, piny 5,6,7 (lub tylko któryś z nich ja zwarłem wszystkie i działa). Długo miałem kłopot z transmisją również przez to.
    Dzięki wszystkim za pomoc.
  • #9 7873871
    jo_666
    Poziom 10  
    jakim napięciem powinien być zasilony konwerter mirekk36'a?
  • #10 7874076
    mirekk36
    Poziom 42  
    jo_666 napisał:
    jakim napięciem powinien być zasilony konwerter mirekk36'a?


    Na tej płytce zastosowany jest konwerter do poziomów TTL, zatem zasilanie płytki co chyba powinno być oczywiste to standardowe +5V i można podłączać cały układ spokojnie także do procka zasilanego z +5V

    Dodano po 2 [minuty]:

    Murakami napisał:
    piotr411, jak to niepotrzebny? Wręcz przeciwnie. Bez kwarcu przy transmisji przez USART uzyskałem krzaki a nie komunikację. Być może często wystarczy wewnętrzny oscylator, ale to pewnie zależy od egzemplarza Atmegi. Moja przy wewnętrznym oscylatorze wysyłała krzaki na terminal, nawet przy wolnej transmisji 4800 bodów..


    Bo jeszcze nie za dużo wiesz o tym jak należy postępować w takich sytuacjach. Stosując prędkości typu 9600 ale nawet większe najspokojniej w świecie można stosować wewn. oscylator, a jeśli czasem bywa jakieś niedopasowanie choć bardzo rzadko to polecam zainteresować się bajtem kalibracyjnym o nazwie OSCCAL. Do którego jest dostęp z poziomu programu w procku i można spokojnie dostroić RS232 tak żeby chodził jak przysłowiowa brzytwa ;)
  • REKLAMA
  • #11 7876723
    jo_666
    Poziom 10  
    mirekk36 napisał:
    Na tej płytce zastosowany jest konwerter do poziomów TTL, zatem zasilanie płytki co chyba powinno być oczywiste to standardowe +5V i można podłączać cały układ spokojnie także do procka zasilanego z +5V

    zatem wspomniany konwerter z moim siemensem sl45 nie działa, po podłączeniu RxD telefon traci sieć
  • #12 7878187
    jousto
    Poziom 17  
    U mnie dzieje się to samo, używam modemu MC39 SIEMENSa, po odpaleniu i zalogowaniu modemu do sieci, jeśli próbuję wysłać z kontorlera do modemu polecenie AT to modem je realizuje, nie dając jednak żadnej odpowiedzi (w rozumieniu OK) ale jak np dzwonię na modem to mam odpowiedź z automatu że abonent ma wyłączony telefon, pomimo że dioda NET błyska tak jakby było w porządku.
    Czy zastosować jakiś konwenter napięć?
    Mam zwykłą Atmegę32 zasilaną z portu USB, a modem zasilam z baterii 3,6V
  • #13 7879940
    AVRowiec
    Poziom 18  
    Jakiś konwerter trzeba zastosować - koniecznie!

    Jeśli na UARCIE czy to uC czy terminala PC jest więcej niż 3,3V telefon głupieje!

    Np. SIEMENS C35 traci zasięg, odzyskując go co jakiś czas. Czasem są problemy z komunikacją. Ogólnie dziwne rzeczy.

    Pamiętajcie o konwerterach!
  • #14 7880352
    rpal
    Poziom 27  
    jesli wam ta komunikacja nie działa to zastanówcie się jaki poziom logiczny ma linia Txd od procesora. Tam na stałe musi być logiczne 1. Z konwerterterem czy z dzielinikiem na rezystowach komunikacaj musi nastąpić jeśli jej nie ma to macie albo błednie zrealizowaną transmisję albo źle podpięte końcówki. To musi działać, cudów nie ma.
  • #15 7881199
    jousto
    Poziom 17  
    Jasne a tym czasem chyba uszkodziłem modem, zwarłem niechcący TxD modemu do GND i od tej pory zupełnie się nie odzywa od UART, nawet podłaczony przez MAX232 do PC, chociaż poprzednio nie było żadnego problemu, odpowiadał na każdą komende wysyłając zwrotnie OK.
    Inna ciekawa rzecz to nawet jak miałem podłączony modem bezpośrednio do mikrokontrolera (mikrokontroler zasilany jest z zasilacza 5V, modem natomiast bezpośrednio z baterii 3,7V) to wykonywal (modem oczywiście) wszystkie posyłane do niego rozkazy ale nie potwierdzał wykonania odpowiadając OK, teraz niestety zacząłem kombinowac z dzielnikiem rezystancyjnym, zwarłem TxD (a może to było RxD) do masy i modem zmarł/:cry:
  • #16 7881837
    rpal
    Poziom 27  
    prędzej wysiadł ci uP niż modem, zwróć uwagę że na Txd jak na Rxd podczas komunikacji pojawia się logiczne 0 więc niby jak ma się on popsuć skoro normalna praca to pojawianie się 0 na jego wyprowadzeniach.
REKLAMA