www.mikrocontroller.net

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


Autor: Hannes (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: Dirk Broßwick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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".

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dirk Broßwick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Dirk Broßwick (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das Bild fehlte noch!

Autor: Hannes (Gast)
Datum:

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

Autor: Dirk Broßwick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö...
Habe ich da was überlesen?

Autor: Joerg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt DS39662B:

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

Autor: Ppp Mmm (sanic)
Datum:

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

Grüße,
Patrick

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dirk Broßwick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chrisg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Ppp Mmm (sanic)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chrisg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ppp Mmm (sanic)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.