Forum: Mikrocontroller und Digitale Elektronik SD-Karte funktioniert bei PIC24fj128gb010 aber nicht beim Pic24fj256gb410


von N. Z. (w47)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe meinen PIC24FJ128GB010 mithilfe der MLA (Microchips Library for 
Application) bzw der FILEIO-Library dazu bringen können Daten auf eine 
SD-Karte zu schreiben und auslesen zu können.

Jetzt möchte ich das selbe Programm auf dem PIC24FJ256GB410 zum laufen 
bringen. Da der Controller Audio Codec supported, verwende ich im 
Gegensatz zum anderen Controller den drv_spi_16bit_v2.c Treiber.

Neben einem anderen Treiber musste ich die Configuration Bits anpassen. 
Ansonsten ist alles gleich (abgesehen davon das die Pins diesmal mit PPS 
auf die GPIOs gemappt wurden). Auch die Hardware ist gleich.

Leider Funktioniert weder das Schreiben noch das Lesen.
Beim Debuggen konnte ich festellen, dass die nachfolgende Bedingung 
(CMD0) (aus der sd_spi.c Datei) erfüllt ist:

if(response.r1._byte != 0x01) //Check if card in idle state now.

und aus diesem Grund ein Initialisierungsfehler zurückgegeben wird.

Zum Programmieren verwende ich das Explorer 16 Board mit den oben 
genannten Controllern als PIM und einen ICD3 Debugger.

Als Entwicklungsumgebung dient MPLAB X IDE  v3.26 mit einem 
XC16-Compiler v1.26.

Da ich hauptsächlich die Config Pins verdächtige, sind diese im Anhang 
zu finden.


Ich hoffe jemand hat eine Idee woran es liegen könnte und kann mir 
helfen.
Schon mal vielen Dank im Voraus!

von Gerhard M. (ggcode)


Lesenswert?

Hallo,
vermutlich hier:
-------------------------------------------
Ansonsten ist alles gleich (abgesehen davon das die Pins diesmal mit PPS
auf die GPIOs gemappt wurden.
------------------------------------------
Einfach mal messen (Oszi) ob die Signale auch aus dem PIC kommen.

Gruß Gerhard

von N. Z. (w47)


Angehängte Dateien:

Lesenswert?

Hallo Gerhard,

zunächst einmal Danke für deine Antwort.

Ich habe am Controller mit einem Oszi nachgemessen.
An allen Pins (SCK, SDO, SDI,CS) liegt nichts an!

Bei meinem alten Controller dagegen konnte ich die Signale sauber 
messen.

Wie gesagt, eigentlich habe ich abgesehen von den Configs und der 
Pinbelegung nichts verändert.

Ich hänge meine Pinbelegung mal mit in den Anhang.

Ich bin wirklich für jede Idee dankbar.

von Gerhard M. (ggcode)


Lesenswert?

Hallo,
die IO's sind immer analog und müssen auf Digital gestellt werden 
(zumindest bei denen die diese Funktion haben).
Hast du aber so wie ich sehe bereits gemacht. Schau dir nochmals das 
Mapping an. Nicht jeder IO kann für jede Funktion genutzt werden. Gerade 
bei den Kommunikationsschnittstellen (SPI, i2C, UART) gibt es da 
Einschränkungen.

Hier hilft dir das Datenblatt weiter.

Gruß Gerhard

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.