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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von nachbar (Gast)


Angehängte Dateien:

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


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

von Mitlesa (Gast)


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


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


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


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


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


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


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


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

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.