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.

NM7010A Wiznet + bascom

KJ 10 Cze 2007 22:15 2709 2
  • #1 10 Cze 2007 22:15
    KJ
    Poziom 31  

    Witam. Po długim oczekiwaniu dostałem w końcu w/w moduł zaprojektowałem płytkę z atmega128 podłączyłem wszystko jak w module easytcpip zmontowałem. Wgrałem program przykładowy konfigurujący moduł i odpowiedział na ping-a. Potem postanowiłem sprawdzić kolejny program przykładowy którego kod zamieszczam (jedyne zmiany jakich dokonałem dotyczą użytego procesora kwarca i puli adresów ip) no i zaczęły sie problemy mianowicie komunikacja jest niestabilna układ poprawnie konfiguruje się co któryś reset a poprawna komunikacja z komputerem zdarza się raz na kilkanaście prób. Nie wiem czy jest to kwestią sprzętu czy bibliotek bascomowych nie mam pomysłu jak to sprawdzić ... Dołączam kod programu i schemat.

    Code:

    '-------------------------------------------------------------------------------
    '                          CLIENTTEST.BAS
    '                    (c) 2002-2003 MCS Electronics
    '     start the easytcp.exe program and listen to port 5000
    '-------------------------------------------------------------------------------

    $regfile = "M128def.dat"
    $crystal = 14745600
    $baud = 19200

    Const Sock_stream = $01                                     ' Tcp
    Const Sock_dgram = $02                                      ' Udp
    Const Sock_ipl_raw = $03                                    ' Ip Layer Raw Sock
    Const Sock_macl_raw = $04                                   ' Mac Layer Raw Sock
    Const Sel_control = 0                                       ' Confirm Socket Status
    Const Sel_send = 1                                          ' Confirm Tx Free Buffer Size
    Const Sel_recv = 2                                          ' Confirm Rx Data Size

    'socket status
    Const Sock_closed = $00                                     ' Status Of Connection Closed
    Const Sock_arp = $01                                        ' Status Of Arp




    Const Sock_listen = $02                                     ' Status Of Waiting For Tcp Connection Setup
    Const Sock_synsent = $03                                    ' Status Of Setting Up Tcp Connection
    Const Sock_synsent_ack = $04                                ' Status Of Setting Up Tcp Connection
    Const Sock_synrecv = $05                                    ' Status Of Setting Up Tcp Connection
    Const Sock_established = $06                                ' Status Of Tcp Connection Established
    Const Sock_close_wait = $07                                 ' Status Of Closing Tcp Connection
    Const Sock_last_ack = $08                                   ' Status Of Closing Tcp Connection
    Const Sock_fin_wait1 = $09                                  ' Status Of Closing Tcp Connection
    Const Sock_fin_wait2 = $0a                                  ' Status Of Closing Tcp Connection
    Const Sock_closing = $0b                                    ' Status Of Closing Tcp Connection
    Const Sock_time_wait = $0c                                  ' Status Of Closing Tcp Connection
    Const Sock_reset = $0d                                      ' Status Of Closing Tcp Connection
    Const Sock_init = $0e                                       ' Status Of Socket Initialization
    Const Sock_udp = $0f                                        ' Status Of Udp
    Const Sock_raw = $10                                        ' Status of IP RAW



    $lib "tcpip.lbx"


                                                           ' specify the tcpip library
    Print "Init , set IP to 192.168.1.8"                        ' display a message

    Enable Interrupts                                           ' before we use config tcpip , we need to enable the interrupts
    Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.1.8 , Submask = 255.255.255.0 , Gateway = 192.168.1.1 , Localport = 1000 , Tx = $55 , Rx = $55

    'Use the line below if you have a gate way
    'Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 192.168.0.1 , Localport = 1000 , Tx = $55 , Rx = $55

    Dim Bclient As Byte                                         ' socket number
    Dim Idx As Byte
    Dim Result As Word                                          ' result
    Dim S As String * 80

    For Idx = 0 To 3                                            ' for all sockets
      Bclient = Getsocket(idx , Sock_stream , 0 , 0)            ' get socket for client mode, specify port 0 so loal_port is used
      Print "Local port : " ; Local_port                        ' print local port that was used
      Print "Socket " ; Idx ; " " ; Bclient
      Result = Socketconnect(idx , 192.168.1.16 , 5000)         ' connect to easytcpip.exe server
      Print "Result " ; Result
    Next

    Do

      If Ischarwaiting() <> 0 Then
      Print "tu jest"                                           ' is there a key waiting in the uart?
         Bclient = Waitkey()                                    ' get the key
         If Bclient = 27 Then
           Input "Enter string to send " , S                    ' send WHO , TIME or EXIT
           For Idx = 0 To 3
              Result = Tcpwritestr(idx , S , 255)
           Next
         End If
      End If

      For Idx = 0 To 3
         Result = Socketstat(idx , 0)                           ' get status
         Select Case Result
           Case Sock_established
                Result = Socketstat(idx , Sel_recv)             ' get number of bytes waiting
                If Result > 0 Then
                   Do
                     Result = Tcpread(idx , S)
                     Print "Data from server: " ; Idx ; " " ; S
                   Loop Until Result = 0
                End If
           Case Sock_close_wait
                Print "close_wait"
                Closesocket Idx
           Case Sock_closed
                'Print "closed"
         End Select
      Next
    Loop
    End

    0 2
  • #2 03 Gru 2007 22:41
    maxerman
    Poziom 2  

    Witam,

    Czy może się udało rozwiązać opisywany problem ?

    Pozdrawiam.

    0
  • #3 20 Paź 2009 15:16
    ky3orr
    Poziom 10  

    dołączam się do pytania czy udało Ci sie rozwiązać problem.
    sam walczę z TWI. mam odpowiedź na pinga, jednak gdy chcę skorzystać z magicznej funkcji sntp() zupełnie nic nie dostaję (jedynie 0).

    pozdrawiam

    0