-         

Ergebnis 1 bis 2 von 2

Thema: w5100 über soft-spi an atmega2560 RX-Pufferproblem

  1. #1

    w5100 über soft-spi an atmega2560 RX-Pufferproblem

    Anzeige

    Hallo,

    ich verusche verzweifelt meinem wiznet w5100 über soft-spi an atmega2560
    etwas per tcp zu empfangen...

    w5100 = server und Pc = client


    das klapp soweit eigentlich auch ganz gut... doch leert der den
    RX-Puffer anscheinend nicht. Wenn ich einen datenpacket an der w5100 und
    ihn mir dann zurückgeben lasse kommt er fehlerlos, doch holt er beim
    abfragen des RX-Puffers immer wieder die selben daten. Wenn ich dann
    noch ein Datenpacket auf die Reise schicke gibt es Datensalat.

    das DSCON Flag wird nach jedem empfang gesetzt...

    Wie kann ich den Puffer meines w5100 leeren?



    mfg Philipp




    Code:
    Sub receive
       Local I As Word                                          'word = 2 byte variable
       Local Top As Word                                        'word = 2 byte variable
       Local Bytes_rcv As Word                                  'word = 2 byte variable
    
       'Check for new incomming data
       Call Wiz5100_readvalue(&H4 , &H26)                        'hole 0x0426(receivesize register) MSB
       Bytes_rcv = Wert                                         'schreibe geholten wert in bytes_rcv
       Shift , Bytes_rcv , Left , 8                             'LSB -> MSB
       Call Wiz5100_readvalue(&H4 , &H27)                       'hole 0x0427(receivesize register) LSB
       Bytes_rcv = Bytes_rcv + Wert                             'schreibe geholten wert in bytes_rcv
    
       If Bytes_rcv > 0 Then                                    'wenn bytes vorhanden
          Bytes_rcv = Bytes_rcv - 1                             'offset-1 : um die offset adresse zu bekommen
    
          For I = 0 To Bytes_rcv                                'hier werden die einzelnen Bytes in buffer geschrieben....
             Top = I + &H6000                                   'RX base adresse 0x6000     chipbase ist 0x00
             Msb = High(top)                                    'msb lesen
             Lsb = Low(top)                                     'lsb lesen
             Call Wiz5100_readvalue(msb , Lsb)                  'hole wert von adresse
             If Bytes_rcv < 200 Then                            '200 bytes empfangen
                Buffer = Buffer + Chr(wert)                     'schreibe geholten wert zu buffer
             End If
          Next
       Elseif Bytes_rcv > 700 Then
          Call Wiz5100_writevalue(&H4 , &H1 , &H40)             'Set RECV flag
    
    
       Call Wiz5100_writevalue(&H4 , &H1 , &H40)                'Set RECV flag
       End If
    
    End Sub

  2. #2

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •