Hallo, ich habe mir ein komplettes Modul vom ENC28J60 gekauft. Das Modul hängt an einer C-Control Pro 128 (Atmega 128). Der SPI-Bus ist ohne Levelshifter verbunden und der ENC hat auch seine 3,3V. Nun habe ich von der Web-Seite "http://members.home.nl/bzijlstra/software/examples/enc28j60.htm" Das Testprojekt "Step 24: ARP, PING and Viktor...." umgeschrieben. Der Code scheint auch zu funktionieren, den ab und zu bekomme ich auf einen Ping an den Controller auch eine Antwort. Leider bekomme ich nicht auf jeden Ping halt eine Antwort. Da habe ich einwenig im Debugmodus mal geschaut was für Bytes gelesen werden. Und siehe da, es kommt ein haufen Schrott an. Ich habe auch mal das RJ45-Kabel abgezogen. Zu meinem erstaunen, denn ich dachtem wenn keine Daten Empfangen werden ist auch der Puffer irgend wan mal leer. Im Gegenteil, ich bekomme da auch ständig irgend etwas. Mein Controller hat ein 14,7456 MHz Quarz. Und ich habe auch schon verschiedene SPI-Taktraten getestet. Betreiben wollte ich die SPI mit (14,7456/4) 3,6864 Mhz. Kann mir da einer vieleicht weiterhelfen ? Mfg.
Hallo nochmal, ich habe mir jetzt ein ARP Packet gebastelt das ich in einer Schleife ständig an meinen PC sende. SPI-Takt = 3,6 Mhz Value = 0 Value = set_Bit_in_Byte(Value,Econ1_txrst,1) Enc28j60bitfield_set(Econ1 , Value) Enc28j60bitfield_clear(Econ1 , Value) Enc28j60writebuffer_Test() 'call sende ARP Enc28j60packetsend(60) Und siehe da, es kommen alle 60Byte an. Mein PC antwortet sogar auf die Anfrage. Nur mit dem Empfangen habe ich Probleme. Dort habe ich sehr viel Schrott. Was kann das sein ?? Gruss
Einstrahlung von aussen ? soll heissen EMV ? Die Datenleitungen sich max. 10cm. Der Atmega vom C-Control ist doch in einem Metalgehäuse.
Ich habe noch mal einwenig gestestet. Mein Problem ist jetzt das Abholen der Daten aus dem Buffer. Der NextBufferPointer liegt sporadisch immer daneben.? Schon die 6 Byte mit dem Pointer sind Schrott. Das fängt schon mit dem ersten Lesevorgang an. die Daten sind aber alle da, nur halt nicht an der berechneten Position. Ich habe als Anhang mal einwenig Programmcode angehängt. Sub Enc28j60init() Sub Enc28j60packetreceive() Gruss
Hallo nochmal, seitdem ich folgende Zeile eingefügt habe funktioniert es halbwegs. If NextPacketPointer + 1500 >= Rxstop_init Then NextPacketPointer = Rxstart_init End If Aber warum sieht der enc28j60 nicht, dass er über sein Rxstop ist und automatisch wieder beim Start anfängt. Oder habe ich ein Fehler beim Init. gemacht das ich ein Register vergessen habe? Gruss
Hallo, ich habe mein Fehler selber gefunden. Beim Auslesen vom Enc28j60readcontrolregbyte lag ich immer 1 Byte vom Buffer daneben. Ping klappt jetzt ohne Probleme mit ca. 60ms. Gruss
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.