>> Résolu << : MEGA + lecteur de carte SD "LC studio" ne fonctionnent pas...

The same post in English at http://arduino.cc/forum/index.php/topic,125973.new.html#new

Bonjour à tous,

Lorsque j'ai commencé à travailler sur ce lecteur de carte SD, je pensais en avoir pour une quinzaine de minute à lancer le tout et quelque heures pour maitriser l'ensemble des fonctionnalités offertes par la libraire SD.h.
Sans doute y a t-il une info qui m'échappe car j'y suis depuis des heures et rien ne fonctionne. Pour le simple test de carte, j'obtiens invariablement le message suivant sur le mini terminal :

Initialisation de la carte SD... Echec de l'initialisation. Penser à vérifier les points suivants :
* Une carte SD est-elle insérée ?
* Votre câblage est-il correct ?
* Avez-vous modifié le shipSelct pour correspondre à votre micro-contrôleur ?

Le programme dans l'ATMEGA 2560 de la MEGA est celui fournis en exemple, accessible par Fichier/Exemples/SD/cardinfo de la version 1.0.1 d' ARDUINO.

Le code modifié pour le MEGA devient :

#include <SD.h>

Sd2Card card;
SdVolume volume;
SdFile root;

const int chipSelect = 6;    
//const int chipSelect = 53;    

void setup()
{
  Serial.begin(9600);
   while (!Serial) {     ; // wait for serial port to connect. Needed for Leonardo only  }

  Serial.print("\nInitializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
  pinMode(53, OUTPUT);     // 10 change this to 53 on a mega
  pinMode(chipSelect, OUTPUT);     // ICI : Tentative avec une autre pin (6) au hasard

  if (!card.init(SPI_HALF_SPEED, chipSelect)) {    Serial.println("initialization failed. Things to check:");
...
etc

J'ai fais un échange de carte MEGA,... un échange de carte SD (64Mo au départ et 32Go en second choix),... un echange de pin pour le Chip select CS (Pin 53 à la base pour le MEGA puis Pin 6 au hasard ensuite), puis fini vu le signal scope par mettre CS à la masse en hard,... J'alimente les cartes avec l'USB et comme on peut le voir sur les scopes, les tensions restent à peu près stable et nominales,... j'ai alimenté en 5 ou en 3,3V.

Je n'ai pas mis de résistance et de transistor d'adaptation 5V/3,3V et 3,3V/5V comme on le voit parfois sur le net. Je ne suis pas sans savoir que 70% à 90% de ce que l'on trouve sur la toile est à jeter mais je m'attend à beaucoup mieux de la part d'électroniciens, même amateurs.

La connectique est la suivante :
MEGA pin 50 --> miso (Master In) du lecteur de carte "LC studio"
MEGA pin 51 --> mosi (Master Out)
MEGA pîn 52 --> sck (Serial Clock)
MEGA pin 53 NC au final
MEGA pin 6 --> CS (Chip Select) puis à rien au final (CS lecteur à la masse)

Au Final,... le sempiternel message d'échec ci-dessus rappelé.

J'ai entrepris de cerner le problème avec un oscilloscope dont je livre quelques captures ci-dessous.

Ce qui m'étonne dans un premier temps est la différence de timing entre la pin 6 que j'ai sélectionne pour CS en programme et la réponse de la pin 53. (1ier scope)
En second, l'aspect du signal pin 6 en charge sur CS de la carte SD (quelle qu'elle soit).(2ième scope)
On voit sur le 4ième scope que l'horloge série est envoyée. Sur le 5ième et 6iémé que l'alim 3,3V ou bien 5V est à peut près correcte.
On voit sur le 7ièmé scope que l'Atmega entame une transaction avec la SD card (MOSI en pin 51).
On voit sur les 8ième et 9ième scopes que la SD répond sur MISO et le détail des mots échangés en scopes 10 & 11.

On peut trouver une expérience quasi similaire (avec un DueMilaNove) ici : http://electroniqueamateur.blogspot.fr/2012_06_01_archive.html mais en ce qui me concerne, bien que la carte SD puisse être indifféremment mise d'une face ou de l'autre, j'ai préféré mettre les bornes de la SD en contact avec les... contacts.

L'ordi que j'utilise est sous Windows 7. Il m'a servi a formater mes cartes SD en FAT,... FAT 16 par défaut d'indication j'imagine.

Je suis preneur de toute info nouvelle, de résultat d'expérience ou d'idée constructive et vous en remercie par avance.

Cordialement.

NB :bon descriptif du lecteur : http://babelduck.com/index.php/en/reference/user-manuals/1422-sd-card-module-user-manual

La carte Sd, n'est peut être pas formatée au bon format.
Il y a une possibilité de la formater avec la librairie SDfat.

Tien essaye ça, je vais essayer cette aprem moi.
Je te tien au courant si je le fait avant toi.
Cordialement

EDIT: Sa marche chez moi sachant que j'avais le meme soucis que toi hier lol.

Est ce que tu peux enlever le lien Ebay (cf la charte), merci.

Merci pour votre réactivité.

_ Jean-François,
mes cartes sont formatées en FAT sous Windows 7. Quand W7 indique FAT je pense qu'il s'agit de FAT16 !?
Je viens d'ajouter cet oubli dans la description du problème.
Le lien déconseillé a été suprimé... désolé. J'ai pourtant lu la charte mais bon... :slight_smile:

_ Snyp,
merci de me renvoyer une URL déja dans le descriptif du problème.
Du coup je ne suis pas sure que tu as vu les éléments du problème.

Essaye avec cette librairie :

http://code.google.com/p/sdfatlib/downloads/list

Apparemment c'est du fat32 qu'il faut (sans certitude)

Pour le lien, tu peux mettre une photo et un descriptif à la place :wink:

Désolé, autant pour moi :~
Je viens d'essayer sur ma mega et sa ne marche pas alors que sur ma duemilanove cela marche ]:).
Je te tien au courant si je trouve quelques choses

LibertyCareche:
La connectique est la suivante :
MEGA pin 50 --> miso (Master In) du lecteur de carte "LC studio"
MEGA pin 51 --> mosi (Master Out)
MEGA pîn 52 --> sck (Serial Clock)
MEGA pin 53 NC au final
MEGA pin 6 --> CS (Chip Select) puis à rien au final (CS lecteur à la masse)

Sur ma Mega ce sont les pin de 50 à 53 (incluses) qui sont utilisée et pas la 6.

Ici un code de tom Igoe avec les mêmes pin que chez moi :

Le pin 53 doit être en out pour que l'ATMEGA soit en mode Maitre. mais rien n'oblige de l'utiliser. On peut par exemple sélectionner plusieurs carte en parallèle sur miso mosi. Les oscillogrammes le montrent par ailleurs, le pin 53 réagit et le 6 aussi juste par instruction de la bibliothèque SD. Troisième élément, je n'oublie pas que je vois le Maitre "coser" et l'esclave lui répondre. Alors... la transaction ne se déroule pas comme il faut... ou-bien (j'y crois moins) il y a un bug dans la biblio...

J'ai commencé à mettre en doute la véracité du descriptif du lecteur de Carte SD. L'examen du circuit imprimé révèle qu'il y a quatre résistance de 10Ko de tirage (pull up) (Résistance de rappel — Wikipédia) au Vcc de 3,3V. Le 3,3 V peut être alimenté directement ou en 5V car il y a un régulateur AMS1117 (http://bbs.ednchina.com/images/attachments/201208/20120831094241621.pdf) implanté sur la carte (avec les condensateurs "qui vont bien").

L'oscillogramme n°2 (cf. photo orange très haute) indique qu'une tension ... "bizarre" se produit quand le pin 53 ... ou 6 essaye de commander le CS de la SD card.

Il me semble que de tels signaux n'indiquent rien de bon quand au comportement de l'ensemble. Je cherche là-dessus...

comment est faite l'adaptation 5V/3V3 des signaux SPI sur cette carte ?

Il n'y a pas d'adaptation (cf. 7ième ligne du problème)

Il semble que beaucoup de description de la toile s'en passe aussi aberrant que cela paraisse (cf. schéma trouvé sur la toile parmi d'autres). Si le problème persiste, Trois pont diviseur et un ampli transistor en base commune devraient suffire...

2059aeef.jpg

Alors pourquoi cela marcherais bien sur une duemilanove?

C'est là le point crucial de la question :slight_smile:
Tolérance des SD et DueMilaNove... !?

Est ce que tu as lu ce topic ?

http://arduino.cc/forum/index.php/topic,75761.0.html

Oui Jean-François, je l'avais lu. Simplement j'ai commandé le lecteur dont je parle et que j'ai. J'essaye donc d'en faire quelque chose.

Le schéma 1 sans ampli est tangent sur le plan signaux... autant que mon schéma actuel à peu de chose près.
Le schéma 2 est ce qu'il faut sérieusement.

Sinon j'ai lu www.badji.com mêmes problèmes semble t-il mais je n'ai pas fini la lecture. J'ai commencé comme il le dit avec pin 53 au lieu de 6 mais rien n'y fait...
Ceci étant, je set toujours le pin 53 en out pour la compat SD.h (cf. bout de programme).

Et voilà !! Je pense avoir trouvé le HIC !! C'est théorique mais en cherchant à reconstituer le schéma de la carte, j'ai vu, et je suis bien obligé de me rendre à l'évidence... que le régulateur est flottant ! Il semble que la masse de ce régulateur ne soit pas connecté à la masse carte. Electronique Chinoise s'il en est !! Cela pourrait bien expliquer le pourquoi des signaux bizarres... et le prix de cette carte.
Je vais faire une modification de la carte et ré essayer la com.

ça pourrait expliquer le problème effectivement.

J'ai de meilleurs signaux et de loin. Je tente une nouvelle adaptation en niveau mais... toujours pas de réponse positive du programme.
Voici des photos de la modif...

Ils ont l'air d'y arriver eux lol
http://www.element14.com/community/message/56085