Forum: Mikrocontroller und Digitale Elektronik ENC28J60 an C-Contro Pro (Atmega128)


von Ck C. (blackdragon)


Lesenswert?

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.

von Ck C. (blackdragon)


Lesenswert?

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

von Max (Gast)


Lesenswert?

Einstrahlung von aussen ?

von Christian K. (Gast)


Lesenswert?

Einstrahlung von aussen ?
soll heissen EMV ?

Die Datenleitungen sich max. 10cm.
Der Atmega vom C-Control ist doch in einem Metalgehäuse.

von Christian K. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Christian K. (Gast)


Lesenswert?

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

von Christian K. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.