Forum: Mikrocontroller und Digitale Elektronik enc28j60 und sd (und atmega644p)


von nachbar (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin gerade dabei die SD-Karte näher kennenzulernen. Diese wird über 
Hardware-SPI des ATmega644p angesprochen. Am SPI ist ebenfalls der 
ENC28J60 angeschlossen, den ich bereits getestet hatte (Vielen Dank an 
Ulrich Radig). Nun möchte ich die SD-Karte ansprechen. Dazu setze ich 
die Selectleitung der ENC28J60 auf high, da diese low-aktiv ist. Nun 
würde ich erwarten, dass dieser die MISO-Leitung freigibt, indem diese 
auf low fällt. Leider bleibt diese auf high (Wie es im Bild zu sehen 
ist, hier wurde noch keine SD in den Slot eingesteckt).

Nun mit diese Problem hatte ich mich schon seit einigen Stunden 
beschäftigt und komme zu keiner Lösung, leider. Somit möchte ich fragen 
was mache ich falsch, bzw. wie bekomme ich den MISO-Ausgang des ENC frei 
für die Kommunikation mit der SD-Karte (rauslöten ist nicht so eine 
schöne Sache :D )?

Vielen Dank.

Sorry wenn das Problem etwas komisch beschrieben ist. Wenn noch was 
unklar ist, so bitte ich um eine Benachrichtigung.

von Marc S. (marc_s86)


Lesenswert?

ich hatte mal gelesen, dass manche von den SPI - Lan chips den bus nicht 
hergeben..

von Mitlesa (Gast)


Lesenswert?

Marc S. schrieb:
> ich hatte mal gelesen, dass manche von den SPI - Lan chips den bus nicht
> hergeben..

Das lässt sich ja leicht aus dem Datenblatt entnehmen, ich hab jetzt
aber keine Lust das für andere nachzuschauen.

Ein High auf der MISO Leitung kann ja auch ein floatender Zustand
sein, hervorgerufen durch einen schwachen Pullup der irgendwo
dazugeschaltet ist (z.B. auch vom Prozessor). Das würde man
warscheinlich sehen wenn man das Signal analog darstellen würde.
Mit dem Logikanalysator wohl keine Chance, der verschlimmbessert
die Situation eher noch.

von c-hater (Gast)


Lesenswert?

nachbar schrieb:

> die Selectleitung der ENC28J60 auf high, da diese low-aktiv ist. Nun
> würde ich erwarten, dass dieser die MISO-Leitung freigibt, indem diese
> auf low fällt. Leider bleibt diese auf high

Wenn der Ausgang hochohmig wird, was glaubst du, wird dann mit dem Pegel 
passieren? Was kann überhaupt noch passieren, solange keinerlei Strom 
rein- oder rausfließen kann?

Die Antwort ist natürlich: garnix: Der Pegel wird den letzten Zustand 
einfach beibehalten. Jedenfalls für eine relativ lange Zeit. Es sei 
denn, du selektierst ein anderes Gerät. Dann wird dessen Ausgang 
niederohmig und kann dann den Pegel des Bussignals kontrollieren.

von Marc S. (marc_s86)


Lesenswert?

Marc S. schrieb:
> ich hatte mal gelesen, dass manche von den SPI - Lan chips den bus
> nicht hergeben..

es ging da wohl hauptsächlich um arduino shields mit anderen chips:
http://john.crouchley.com/blog/archives/662
ob der enc auch probleme hat weiß ich leider nicht.

von nachbar (Gast)


Lesenswert?

Nach mehreren Versuchen hatte ich festgestellt, dass es am 
Logikanalysator gelegen ist, durch das hinzufügen eine Pulldowns mit 
einigen kOhm an MISO-Leitung wurde das Problem gelöst. Der ENC28J60 gibt 
den Bus auf wenn man diesen deselected, somit sollte es funktionieren.

Trotzdem besteht das Problem, dass die MicroSD-Karte nicht antwortet...

Hat schon jemand mit microSd an AtmegaXXX Erfahrungen?
Zur Karte: 2GB SanDisk microSD
Es wird richtig gesendet, aber es kommt keine Antwort

Vielen Dank schon mal an alle Helfer

von Mitlesa (Gast)


Lesenswert?

nachbar schrieb:
> durch das hinzufügen eine Pulldowns mit
> einigen kOhm an MISO-Leitung wurde das Problem gelöst.

Damit hast du kein Problem gelöst. Allerhöchstens hast du
ein floatendes High in ein floatendes Low gezwungen, was
der Tristate-Phase absolut nichts nützt.

Du könntest höchstens (durch Analyse mit dem LA) behaupten
dass dein MISO Bus nach wegnehmen des CS "schon wieder"
nicht auf Tristate geht sondern irgendwoher (vom ENC28J60?)
auf Low gezwungen wird.

von holger (Gast)


Lesenswert?

>durch das hinzufügen eine Pulldowns mit
>einigen kOhm an MISO-Leitung wurde das Problem gelöst.durch das hinzufügen

Bei SD Karten ist dort aber ein Pullup sehr hilfreich.

von c-hater (Gast)


Lesenswert?

nachbar schrieb:

> Nach mehreren Versuchen hatte ich festgestellt, dass es am
> Logikanalysator gelegen ist, durch das hinzufügen eine Pulldowns mit
> einigen kOhm an MISO-Leitung wurde das Problem gelöst. Der ENC28J60 gibt
> den Bus auf wenn man diesen deselected, somit sollte es funktionieren.

Das ist Unsinn. Der Logikanalysator hat ganz brav genau das angezeigt, 
was auf dem Bus los war.

Und wenn du auch nur den Hauch eines Anscheins von Kompetenz hättest, 
hättest du erkannt, daß es keinesfalls in Richtung Lösung geht, wenn du 
nur die Anzeige des Logikanalysators in Richtung deiner inkompetenten 
Erwartungen trimmst.

Das kann allenfalls dafür dienen, verschiedene denkbare 
Fehlersituationen zweifelsfrei voneinander zu unterscheiden. Du hast 
also herausbekommen, daß die Ansteuerung und die Logik des Enc28J60 
offensichtlich tut, was sie soll, das Problem also ausschließlich bei 
der Ansteuerung der SD-Karte liegen muß.

Das ist eigentlich ein guter Schritt bei der Fehlersuche. Das Problem 
ist nur: deine Kompetenz reicht nicht, um das Ergebnis eigenständig 
dementsprechend zu interpretieren, stattdessen erfindest du völlig 
fiktive "Fehler" beim Logikanalysator...

> Trotzdem besteht das Problem, dass die MicroSD-Karte nicht antwortet...

Genau...

Da stimmt was nicht. Jeder, der den Schädel nicht nur dazu hat, damit es 
ihm nicht in den Hals regnet, wird natürlich als allererstes die Signale 
zur SD-Card verfolgen, denn offensichtlich übernimmt sie ja niemals den 
Bus, womit alle Fehler innerhalb des SD-Codes als Ursache ausscheiden. 
Es muß daran liegen, daß die Karte erst garnicht mitkriegt, daß sie 
gemeint ist und irgendwas tun soll.

von nachbar (Gast)


Lesenswert?

an c-hater:

trinke weniger!!! und mach was aus deinem Leben, bist etwas verbittert. 
Aber das wird schon denke ich.
Trotzdem vielen Dank für deine nicht ganz so kompetente und hilfreiche 
Antwort (ein Tipp: nächstes mal einfach mal nichts schreiben :D )
Die Signale hatte ich direkt an der SD gemessen, die Spannung ist mit 
3,3V gegeben. (Der letze Absatz, endlich mal was sinnvolles, prima 
weiter so!)

an Marc S.:

Vielen Dank für die Website, hilft mir sogar weiter!

an Holger:

Ich hatte auch einen Pullup gemeint. Hatte das auch aus dem 
SD-Karten-Datenblatt.

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.