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
Du brauchst den Rx-Puffer nicht explizit zu löschen. Diu musst nur wie im Datsheet beschrieben den Rx-Pointer entsprechend der gelesenen Bytes wertersetzten. dann läuft alles wie von selbst ...
hallo gast, danke für die schnelle antwort ich denke das tue ich, doch leider noch das selbe problem....:(
1 | Sub receive |
2 | Local I As Word 'word = 2 byte variable |
3 | Local Top As Word 'word = 2 byte variable |
4 | Local Bytes_rcv As Word 'word = 2 byte variable |
5 | |
6 | 'Check for new incomming data |
7 | Call Wiz5100_readvalue(&H4 , &H26) 'hole 0x0426(receivesize register) MSB |
8 | Bytes_rcv = Wert 'schreibe geholten wert in bytes_rcv |
9 | Shift , Bytes_rcv , Left , 8 'LSB -> MSB |
10 | Call Wiz5100_readvalue(&H4 , &H27) 'hole 0x0427(receivesize register) LSB |
11 | Bytes_rcv = Bytes_rcv + Wert 'schreibe geholten wert in bytes_rcv |
12 | |
13 | If Bytes_rcv > 0 Then 'wenn bytes vorhanden |
14 | Bytes_rcv = Bytes_rcv - 1 'offset-1 : um die offset adresse zu bekommen |
15 | |
16 | For I = 0 To Bytes_rcv 'hier werden die einzelnen Bytes in buffer geschrieben.... |
17 | Top = I + &H6000 'RX base adresse 0x6000 chipbase ist 0x00 |
18 | Msb = High(top) 'msb lesen |
19 | Lsb = Low(top) 'lsb lesen |
20 | Call Wiz5100_readvalue(msb , Lsb) 'hole wert von adresse |
21 | If Bytes_rcv < 200 Then '200 bytes empfangen |
22 | Buffer = Buffer + Chr(wert) 'schreibe geholten wert zu buffer |
23 | End If |
24 | Next
|
25 | Elseif Bytes_rcv > 700 Then |
26 | Call Wiz5100_writevalue(&H4 , &H1 , &H40) 'Set RECV flag |
27 | |
28 | |
29 | Call Wiz5100_writevalue(&H4 , &H1 , &H40) 'Set RECV flag |
30 | End If |
31 | |
32 | End Sub |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.