Webserver ENC28J60 + PIC18F4620

OP #3059617
Hallo zusammen,

ich bin momentan auch dabei den ENC28J60 über SPI anzusprechen, ich 
verwende dafür einen PIC18F4620 mit einem 32MHz Quarz.

Allerdings klappt die Initialisierung des ENC noch nicht wirklich.
Hat eventuell jemand eine funktionsfähige Init für den ENC28J60 in C 
evtl. für einen PIC18?

Im Moment finde ich den Fehler in meiner Init nicht, ich vermute das ich 
evtl. noch Pausenzeiten einfügen muss. Im Datenblatt find ich aber 
nichts außer die Zeit für den Reset.

Gruß chrisb20
OP
Den hätte ich auch nehmen können, hab aber ein externes Ethernetmodul 
mit dem ENC drauf.
Nachdem ich so wie alle erst mal über die SPI Frequenz von 8MHZ 
gestolpert bin hab ich das jetzt mit einem 32MHz Quarz behoben.
Nur nimmt, so wie es momentan aussieht, der ENC die Werte die ich 
versuche in seine Register zu schreiben nicht an.

chrisb20
OP
@joachim: im Prinzip baut meine Hardware auf dem Schaltplan auf, nur 
mich interessiert es das selber zu programmieren, Fertige Module gibt es 
ja jede Menge.

@Theo: den Link kenn ich schon allerdings bringt mich das auch nicht 
weiter, den das ist ja erst der nächste Schritt mit dem TCP/IP zeugs 
aber im Moment klappt die Init noch nicht.
OP
japp ich schreib mal schnell auf wie das ganze verbaut ist:


-----------
          |                             ---------------
          |--SCK------------------------|              |
 PIC      |                             |              |
 18f4620  |--SDI-------| 74HC08     |---| ENC28J60     |
          |--SDO-------| AND-GATTER |---|              |
          |                             |              |
          |--+5V------------------------|              |
          |--GND------------------------|              |
-----------                             ---------------|
Chris Br schrieb:
> Den hätte ich auch nehmen können, hab aber ein externes Ethernetmodul
> mit dem ENC drauf.

... das Du unbedingt nehmen wolltest.

Du wirst Dir das ohnehin nochmal überlegen müssen. Dein PIC18F4620 hat 
nämlich etwas wenig Flash. Die 128k des 18F67J60 sind bei mir schon ganz 
gut gefüllt. Wenn Du Dein Modul unbedingt verwenden musst, wäre ein 
18F47J13 oder 18F47J53 beispielsweise besser geeignet - das sind dann 
auch gleich stromsparende 3.3V-Typen (erkennbar an den J in der 
Bezeichnung).

Ansonsten folge meinem Rat, und Deine Probleme werden verschwinden.

fchk
Gast
> der ENC28J60 hat aber "5V Tolerant Inputs" laut Datenblatt

Der SO vom ENC muss aber einen ausreichenden Level für den SDI des µC 
bringen, deshalb muss da ein 74HCT... dazwischen, das "T" steht für 
TTL-Pegel.
Chris Br schrieb:
> ja wollte das Modul schon verwenden, wegen dem Flash hatte ich mir
> überlegt vllt ein EEPROM noch an den SPI Bus dran zu hängen um etwas
> mehr Speicher zu haben.

Aus einem SPI-EEPROM kann kein PIC Code ausführen. Schon verloren.

> Hast du den ENC28J60 schon einmal mit einem Controller selbst
> programmiert oder nur mit dem Olimex Modul?

Ich habe immer integrierte Lösungen verwendet, weil die leistungsfähiger 
sind und das ganze in der Summe billiger ist. Und ich habe meine eigenen 
Boards gebaut.

fchk
OP
Ich hab jetzt gerade mal versucht den Quarz am PIC noch einmal zumessen 
und hab etwas komisches Festgesellt.

Wenn ich mit dem Oszi an den Quarz gehe dann gehen meine LEDs aus und 
auf dem Oszi ist auch kein Takten des Quarzes zu sehn sondern nur eine 
gleichspannung die aber von der höhe sehr gering ist.

Hat dazu jemand eine Idee, ist das ein Software- oder Hardwareproblem?

Gruß chrisb20
OP
Chris Br schrieb:
> Ich hab jetzt gerade mal versucht den Quarz am PIC noch einmal zumessen
> und hab etwas komisches Festgesellt.
>
> Wenn ich mit dem Oszi an den Quarz gehe dann gehen meine LEDs aus und
> auf dem Oszi ist auch kein Takten des Quarzes zu sehn sondern nur eine
> gleichspannung die aber von der höhe sehr gering ist.
>
> Hat dazu jemand eine Idee, ist das ein Software- oder Hardwareproblem?
>
> Gruß chrisb20

hab den Fehler gefunden, da hatte sich ein Kabel gelöst gehabt und hatte 
daher keinen richtigen Kontakt
OP
So wie es aussieht funktioniert die Übertragung über SPI nicht korrekt.
Den Clock kann ich zwar messen aber die Ausgabe der Daten nicht.

Kann es sein das nach der Übertragung des SSPBUF Registers ein Interrupt 
ausgelöst wird, welcher zuerst gelöscht werden muss damit ein weiteres 
Byte übertragen werden kann???

Hat zu diesem Problem jemand eine Antwort für mich?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.