Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

atmega8 [bascom] C35 komunikacja z uC

graffiti333 18 Mar 2009 11:07 2793 5
  • #1 18 Mar 2009 11:07
    graffiti333
    Poziom 9  

    Witam

    Robie włącznik/dialer gsm na C35 ale mam problem czasami z błędnym odczytywanie komend AT oto część kodu.

    Code:

    $regfile = "m8def.dat"
    $crystal = 11059200
    $baud = 19200

    Wait 1
      Print "ATX0" ; Chr(13) 
      Waitms 100
      Print "ATZ" ; Chr(13)
      Waitms 100
      Print "ATE" ; Chr(13) 
      Waitms 100
      Print "AT+CLIP=1" ; Chr(13) 

     Gosub Oproznij_bufor

    For Licznik = 1 To 3

           Print "AT+CPBR=" ; Licznik ; Chr(13)                 ' Pobiera telefony uprawnione do pamieci
       Waitms 300
          Call Odbierz_uart
      ' Waitms 200
          Print #1 , Dane ; Chr(13)
       Telefon = Mid(dane , 13 , 9)                             ' 13
       Print #1 , " Tel" ; Telefon ; Chr(13)
       Tel_eeprom = "48" + Telefon
       Tel_tab_upr(licznik) = Tel_eeprom
       Gosub Oproznij_bufor
       Next Licznik

    Oproznij_bufor:

    Do
       Kod = Inkey()                                            'Czyści bufor
       Bufor = Ischarwaiting()
       Dane = "0"
    Loop Until Bufor = 0
    Return

      Odbierz_uart:
       Dane = ""
      Do
       Kod = Inkey()
      Dane = Dane + Chr(kod)
      Bufor = Ischarwaiting()

      Loop Until Bufor = 0 Or Kod = "13"

     Return


    Problem jest w tym ze nie za kazdym razem po podlaczeniu zasilania chce poprawnie w pętli odczytać numery z karty sim, czasmi jest tak ze odczyta 2 jedego nie albo wcale.

    Co robie zle ?

    uC jest zasilany 5 V , telefon polaczony TX uC jest przez diode zenera 3 V RX bezposrednio do telefonu.

    0 5
  • #2 19 Mar 2009 02:09
    atom1477
    Poziom 43  

    Może UART źle ustawiony.
    Dodaj do kodu coś takiego:

    Code:

    Config Com1 = Dummy , Synchrone = 0 , Parity = Odd , Stopbits = 2 , Databits = 8 , Clockpol = 0


    I kombinuj. Zmieniaj Parity i StopBits. Może zacznie działać.


    A do tego najprędzej stawiał bym na złe poziomy napięć. Telefon może zwracać dane w LVTTL czyli gdzieś do 3.3V co ATMega może odbierać jako logiczne 0. Na 99% tak jest.
    Spróbuj coś takiego:
    atmega8 [bascom] C35 komunikacja z uC

    0
  • #3 06 Kwi 2009 10:54
    PiotrEtenM500
    Poziom 19  

    Problem rozwiązany, czy nadal są błędy, mam podobne problemy lecz modem się resetuje po wydaniu komendy bez względu czy jest podłączony do PC czy ATM8, co ciekawe robi to losowo nie zawsze choć często mu przytrafia. posiadam SIMCOM SIM300D zasilam z aku 3,7V uP i modem do PC podłączone mam przez MAX 2322.

    0
  • #4 19 Maj 2009 11:12
    wicy
    Poziom 22  

    Podepnę się pod najświeższy temat o podłączaniu C35 do uP :)

    Zestawiłem połączenie z ATMega16, podpinając 5V bezpośrednio pod gniazdo baterii a linie TX i RX procesora bezpośrednio pod gniazdo komórki.
    Naczytałem się setki postów o podłączaniu linii TX/RX przez pullupy, zenery, maxy.. Ja podłączyłem bezpośrednio i wszystko działa już 3 dzień non stop. Transmisja w obie strony jest OK.
    Więc pytam o co w tym chodzi? Podłączyłem nie tak? Spalę coś? Jakoś trzeci dzień nic się spalić nie chce...

    0
  • #5 19 Maj 2009 11:50
    pixel7
    Poziom 22  

    Te telefony mają logikę na poziomie 3.3V. Większość nie pracuje na poziomie 5V (objawem jest komunikat na wyświetlaczu "Szukam sieci") i kilka razy taki miałem przy bezpośrednim połączeniu. W każdym razie warto zastosować choćby dzielnik na opornikach na linii RX telefonu.
    W przypadku zasilania telefonu bez baterii ten problem nie występuje i raczej nie wyrządzi żadnych szkód. Ale co jeśli zabraknie prądu?

    0
  • #6 19 Maj 2009 13:54
    wicy
    Poziom 22  

    Błąd "Szukam sieci" pojawiał mi się nawet przy połączeniu kabelkiem C35->PC, przy niektórych programach.
    Przy obecnym połączeniu uP<->C35 (linia TX/RX bezpośrenio, bez baterii, zasilanie pod baterię 5V) błąd taki mi się nie pojawia. Jedyne co "wariuje" to wskaźnik naładowania baterii na LCD - pokazuje różne stany.

    Docelowo układ będzie pracował TYLKO w sytuacji włączenia prądu :) więc problem "jeśli zabraknie prądu" mnie akurat nie dotyczy :)

    0
  Szukaj w 5mln produktów