Forum: Mikrocontroller und Digitale Elektronik ENC28J60 - Socket resp. SPI Probleme?


von Hannes (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

ich versuche mich verzweifelt daran, die Software sowie Hardware von
Nik-Bramert nach zu bilden. Software und Hardware habe ich aus diesem
Thread: http://www.mikrocontroller.net/forum/read-4-343017.html#new

Als Controller kommt auch ein ATmega8 zum Einsatz, jedoch mit externem
Takt von 12MHz. Dieses habe ich im Source auch angepasst.

Ich denke, dass ich Probleme beim SPI habe. Im Anhang ein Screenshot
vom Oszi was der "SCK" vom Atmega zum ENC treibt...Ich habe
eigentlich einen kontinuirrlichen Takt erwartet...?!?

Oder verstehe ich da was falsch?

von Dirk Broßwick (Gast)


Lesenswert?

Hallo,

ein kontinuierlicher Takt ist nicht zu erwarten, da der ATmega8 bei
einem Voll getaktetem SPI-Bus nicht schafft die Daten nahtlos
nachzuliefern. Das ist aber auch nicht schlimm, da der Slave ja die
takte verfolgt, und so keine verlieren sollte. Was aber seldsam
ausschaut ist der Takt an sich, der ist nicht wirklich rechteckig.
Entweder liegt das am Oszi oder du solltest mal die SPI-Leitung
überprüfen oder schaun ob der ATmega und der ENC28J60 mit Kondensatoren
geblockt sind. Und nicht vergessen, die Selectleitung für den ENC28J60
vom ATmega. Ohne die kann der senden was er will.

MfG Dirk

von Hannes (Gast)


Lesenswert?

Hi

Was genau meinst Du mit geblockt? Beide Controller haben VVC zu GND
100nF.
Bei den SPI Leitungen handelt es sich um kurze Drahtbrücken, ca. 10cm
Freiluft, was bei der Frequenz allerdings kein Problem sein sollte.
Könnte ich die SPI Leitungen gegen VCC ziehen?

In meiner Schaltung läuft der ATmega auf 5V, der ENC auf 3,3V. Die SPI
Leitungen vom ENC sind aber alle 5V Kompatibel (laut Datenblatt).
Der Takt selber schaut mir auch eher nach "Eine Seite geöffnet" aus!

Am Oszi selber liegt es nicht, ich habe noch einen externen Takt der
den ATmega speist - dieser ist "sauber".

von Thomas (Gast)


Lesenswert?

Hallo

ich habe auch Probleme mit dem SPI zu einem LCD-Display.
Mein Oszi ist nicht besonders gut (altes Hameg), aber ich erkenne zu
mindest, das der Takt auch sehr unsauber ist, beziehungsweise rauscht.
Ählnich wie bei dem Bild von Hannes.

Hat hierzu noch jemand einen Tipp?

von Dirk Broßwick (Gast)


Lesenswert?

Hallo,

anbei mal ein Bild wie sowas bei mir mal vor ca 1 Jahr aussah als ich
mal test mit spi gemacht habe. gut zu sehen der Takt und die Daten. Das
ganze ist mit ca 8MHz SPI-Takt gmacht worden. Habt ihr an die CS-Leitung
fuer den ENC28J60 gedacht ?

von Dirk Broßwick (Gast)


Angehängte Dateien:

Lesenswert?

Das Bild fehlte noch!

von Hannes (Gast)


Lesenswert?

Wirklich rechteckig ist das aber auch nicht... ;-) die Peaks am Anfang
sind aber nicht so ausgeprägt...mmh

von Dirk Broßwick (Gast)


Lesenswert?

:-) eigentlich braucht man sich auch nur das datensignal oben anschaun.
das hatt immr noch ca 2MHz und schaut recht sauber aus, und das mit ca
1m messleitung :-) und das unten konnte ich nicht wirklich messen,
sonst hätte für meine zwecke damals nicht alles mit rauf gepasst. Aber
ich denke mal man sieht was gemeint ist.

CA Dirk

von Joerg (Gast)


Lesenswert?

>> In meiner Schaltung läuft der ATmega auf 5V,
>> der ENC auf 3,3V. Die SPI Leitungen vom ENC
>> sind aber alle 5V Kompatibel (laut Datenblatt).

Die Eingänge des ENC sind 5V-tolerant. Hast Du einen Level-Shifter von
SO (ENC) nach SI (µC)?

von Hannes (Gast)


Lesenswert?

Nö...
Habe ich da was überlesen?

von Joerg (Gast)


Lesenswert?

Datenblatt DS39662B:

Seite 8, Kapitel 2.5 I/O-Levels, Figure 2-5 und 2-6

von Ppp M. (sanic)


Lesenswert?

Ich habe meinen ENC28J60 ohne Level Shifter laufen.
Der ATMega8 läuft mit 5V.

Grüße,
Patrick

von Hannes (Gast)


Lesenswert?

Also denn, dort wird ein AND Gatter empfohlen.
Ich habe kurzer Hand in das Datenblatt des 74HCT08 geschaut und frage
mich nun, ob ich den LevelShifter bisher verstanden habe.

Der LevelShifter benötigt 5V VCC und bekommt als Eingang 3,3V - gut,
daraus macht er dann 5V (AND beschaltung ist klar).

Wenn ich das Ding umgekehrt (5V zu 3,3V) einsetzen möchte, muss ich ein
Gatter nutzen, welches für VCC 3,3V vorgesehen ist, oder?

von Dirk Broßwick (Gast)


Lesenswert?

Umgekehrt reicht einfach ein Spannungteiler, möglichst hochohmig. Von 5
-> 3.3V macht der nicht, da die usgänge immer mit voller
Betriebsspannung betrieben werden beim 74HCT08.

CA

von Chrisg (Gast)


Lesenswert?

Auch ich betreibe hier einen ENC28J60 mit 3.3 V direkt an einem Atmega
mit 5V ohne Levelshifter. Ich habe MISO, MOSI, SCK und Chip-Select 1:1
über normale Drähte verbunden, und es läuft einwandfrei über Stunden
(MP3-Webradio, bis 320kbps). Der Atmega32 läuft mit 14.7456 MHz, und
der SPI-Speed ist auf das absolute Maximum eingestellt (Clk/2). Auch
mit langsameren Clocks funktioniert es (getestet mit Clk/128).

Der ENC liefert dafür eine genug hohe Spannung (3.3V bei High). Gemäss
Datenblatt von Atmel (Electrical Characteristics) beträgt die
Mindestspannung für eine sichere Erkennung des High-Pegels:

Zitat:
>Input High Voltage except XTAL1 and RESET pins: 0.6 VCC (VCC=2.7 -
5.5).
>"Min" means the lowest value where the pin is guaranteed to be read
as high
Bei 5V sind das also 3V, die 3.3 V liegen klar darüber. Den
Levelshifter kann man sich also sparen.

@Hannes
Reagiert der ENC denn auf einfache Befehle wie Register auslesen? Falls
nicht, ist der Pin "SS" am Atmega auf Ausgang geschaltet? Falls nicht,
meint der Atmega, er sei ein SPI-Slave.

Gruss
Christian

von Joerg (Gast)


Lesenswert?

Du brauchst beim ENC28J60 den Level-Shifter doch eigentlich nur für die
Richtung vom ENC zum Mega8 (SO, INT). Die Eingänge des ENC kommen mit
den 5V-Signalen des Mega8 klar.

von Hannes (Gast)


Lesenswert?

Den unsauberen SCK habe ich nun eleminiert. Ich bin mir zu 100% sicher,
dass es am externen Takt lag, dieser war auch nicht wirklich sauber.

Nun habe ich am ATmega einen Quarz-Oszillator mit 8MHz. Die Peaks sind
verschwunden. Ein relativ deutlicher Rechteck zeichnet sich ab,
Anstiegszeit bei 10ns ist auch im grünen Bereich.

Der ENC reagiert meiner Ansicht nach überhaupt nicht. Der Port PB2 (SS)
ist als Ausgang geschaltet...

von Ppp M. (sanic)


Lesenswert?

Auch hier die Frage: Bekommst du einen Link wenn du ein RJ45 Kabel in
die Buchse steckst(natürlich sollte das andere Ende des Kabels mit
einem PC oder einem Switch verbunden sein)?

@Chrisg: WebRadio hört sich interessant an. Gibt es irgendwo etwas zu
deinem Projekt zu lesen? Sowas wollte ich auch schon immer bauen :-)

Grüße

von Chrisg (Gast)


Lesenswert?

@Hannes
Ich würde auch erst mal testen, ob der ENC überhaupt läuft. Die Taktung
soll relativ heikel sein: Es wird ein Grundfrequenz-Quarz benötigt. Ich
habe mich deshalb für ein fertiges Modul von jelu.se entschieden,
welches ich an meine Schaltung gehängt habe. Das Modul hat aber eine
Fehlbeschaltung auf Ethernet-Seite, da muss man 2 Drähte vetauschen.
Hier im Shop gibt es jetzt ja auch ein entsprechendes Modul.

@Patrick Mania
Da gibt es nicht viel zu erzählen, ich verwende nur
Standardkomponenten. Für den Empfang benutze ich ein ENC-Modul von
jelu.se, für den Empfangspuffer ein 128kByte-RAM mit zwei Latches (zum
Pin-Sparen), für die Anzeige ein 16x2-LCD, und für die MP3-Dekondierung
einen vs1011 auf einer Tochterplatine von jelu.se.

Das ENC-Modul ersetzt einen X-Port, mit welchem ich leider nur max.
96kbps (sowie ein paar 128kbps-Stationen) zuverlässig direkt empfangen
konnte. Als Stack verwende ich einen modifizierten uip, erweitert um
eine einfache Fehlerkorrektur (bei einem Paketverlust werden
nachfolgende Pakete nicht einfach weggeworfen, sondern nur das fehlende
erneut angefordert).

Empfangen kann man damit Shoutcast-Radios (mp3-Streams) von
www.shoutcast.com. Das Protokoll ist extrem simpel, man schickt einen
speziellen HTTP-Request ähnlich wie bei einer Webseite, und erhält
einen MP3-Stream mit Meta-Daten zurück.

von Ppp M. (sanic)


Lesenswert?

@ChrisG:
Danke für die Info. Letztendlich ist für mich wirklich die Shoutcast
Umsetzung und die Synchronisation zwischen Daten abspielen und Daten
empfangen interessant.

Grüße

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.