Прошу помощи! Atmega16 + GSM модуль +GNS-MC35iU (Siemens)

Здесь вопросы новичков
Ответить
novus2004
Сообщения: 1
Зарегистрирован: 13 май 2009, 15:49

Прошу помощи! Atmega16 + GSM модуль +GNS-MC35iU (Siemens)

Сообщение novus2004 » 13 май 2009, 16:00

Доброго времени суток, уважаемые форумчане.
В рамках курсовой работы, разбираюсь с сопряжением AVR c GSM модемом.
Итак, в наличие:
1) Отладочная плата AVR Easy http://kosmodrom.com.ua/data/avr-easy.php c установленным ATMEGA 16-16PU
2) GSM модем-терминал Novacom Wireless GNS-MC35iU (Siemens) c портами RS232\ USB
3) BASCOM AVR в качетсве средства разработки, прошиваю МЕГУ через JTAG прямо на отладочной плате.
4) COM кабель между платой и модемом (1 к 1 все проводники - сам паял))
5) COM кабель между платой и модем 1 к 1 только 2-2, 3-3, 5-5 - RX,TX,GND
6) мои кривые руки....... Ж)

ЗАДАЧА: написать программу, чтобы при нажатии кнопок на отладочной плате (С0, С1, С3)- модем звонил по записанным в программе номерам.
Задача, разбита на несколько этапов и на данном этапе я пытаюсь инициализировать модем командой AT и получить ответ ОК
Апноуты изучил, но не совсем понял.

Фьзами выставил частоту внутр. кварца МК на 8 мгц
AT командой установил скорость порта модема в 9600
В данном коде, я в цикле отправляю АТ команду модему, получаю даные от модема и жду пока он мне ответит ОК - а затем включаю светодиоды на макетки (порт В)
В процессе отладки, выяснятся, что я получаю в ответ - ту же команду, что и послал модему.
Подключал COM порт AVR easy напрямую к компу - пакеты снифером принимаются отлично.
Подключал модем к компу - управляется отлично.
Подключение проводил двумя типами кабелей ( см. выше п.4 и п.5)
Не могу понять в чём дело - ПОМОГИТЕ!!!!!!!

Уже 4-й день бьюсь - зашёл в тупик.
и комп компанды с AVR видит - и модем с компа.
А связать модем и МК не получается.

Помогите советами!!! Очень жду... Огромное спасибо.

Вот мой код (данного этапа):

Код: Выделить всё

   $regfile = "m16def.dat"
   $baud = 9600
   $crystal = 8000000

   Config Portb = Output
   Config Serialin = Buffered , Size = 16
   Config Serialout = Buffered , Size = 64


   Dim I As Byte
   Dim J As Byte
   Dim Nm As Byte
   Dim S As String * 64
   Dim Slen As Byte
   Dim J1 As Byte



   Declare Sub Getline(s As String)
   Declare Sub Flushbuf()


   Dim I1 As Byte , B As Byte
   Dim Sret As String * 66 , Stemp As String * 6

   Enable Interrupts

   Portb = 255

   Wait 1
           M1:
   Portb = 255
   Flushbuf

   Print "AT"
               Portb = 0
     S = ""
     Slen = 0
     J1 = 0
   Getline S
    Flushbuf
    Slen = Len(s)

    If Slen > 1 Then
         J1 = Instr(s , "ОK")
         If J1 <> 0 Then
'' УРА
              Portb = 100
              Wait 2
              Wait 25
          Else
               Goto M1

          End If

        Else
                Goto M1

    End If

      Goto M1


    End

     Sub Getline(s As String)
     S = ""
     Do
       Waitms 50
       B = Inkey()
       Select Case B
          Case 0                                               'nothing
          Case 13                                              ' we do not need this one
          Case 10 : If S <> "" Then Exit Do                    ' if we have received something
          Case Else
            S = S + Chr(b)                                     ' build string
       End Select
     Loop
   End Sub

   'flush input buffer
   Sub Flushbuf()
     Waitms 100                                                'give some time to get data if it is there
     Do
       B = Inkey()
       Waitms 50                                               ' flush buffer
     Loop Until B = 0
   End Sub

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей