Pages: 1 2 [3]   Go Down
Author Topic: Lire et écrire sur une mémoire flash (NAND) USB ou SD ?  (Read 5873 times)
0 Members and 1 Guest are viewing this topic.
Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Super, merci pour ces infos, cela me permettra de faire une commande demain
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Commandé hier... reçu ce matin  smiley-grin

Montage des bestioles sur la planche à essai :



Avec un atmega 168... ça marche définitivement pas, je m'en suis aperçu après une bonne heure de galère  smiley-mr-green.

Avec la Mega, ça fonctionne bien, mais il y a un reset de l'Arduino à chaque fois que je remet la SD dans son logement...

J'ai deux carte une de 2 Gb et l'autre de 32 Mb, la 2Gb fonctionne, j'arrive à la formater-lire-écrire et l'autre n'est pas reconnue...
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Que ça ne marche pas avec un ATmega168 ne m'étonne pas trop ... avec un ATmega328 c'est déja crick-crack niveau ram disponible ...

Pour la 2eme carte SD de 32Mo qui n'est pas reconnu ça arrive avec certaine carte SD surtout avec d'ancienne carte, la seul solution c'est dans trouver un autre.

Pour le bug du reset c'est louche smiley-eek-blue tu n'aurai pas câblé l'interrupteur de détection d'insertion directement au gnd ou au +5v par hasard (sans résistance ce qui ferait un cours-circuit) ?
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non, les interrupteurs sont pattes en l'air... et ça ne le fait pas avec la carte de 32Mb.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Alors... :

  • Lorsque j'engage la SD, il y a un reset.
  • Lorsque la SD est engagée et que je débranche le gnd sur l'Arduino et que je le rebranche, pas de reset.
  • Lorsque la SD est engagée et que je débranche le 3.3V sur l'Arduino et que je le rebranche, il y a un reset.

J'ai revérifié les branchements et j'ai strictement ce qu'il y a sur mon schéma.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Je confirme le même phénomène avec le cablage : diviseur de tension. Il y a reset systématique de l'arduino dés l'insertion de la carte sd.
J'ai tenté de désactiver l'auto-reset avec une resistance, dans tous les autres cas, cela fonctionne mais pas au moment d'insérer la sd...reset...reset.

J'ai également bidouillé côté prog pour tenter d'éviter le phénomène et malgrés une suite conditionnelle à base de if à tout va, toujours reset...reset...

@+

Zoroastre.

EDIT1 : Reste à voir côté librairie...
________Déjà faut faire gaffe côté Sd2PinMap.h, les ports SDA, SCL sont peut être utiles avec certains shield et par défaut actifs (constaté avec une del), à désactiver si non nécessaire je pense...
« Last Edit: October 26, 2011, 11:10:39 am by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai résolu le problème du reset... ou plutôt contourné en utilisant l'interrupteur de détection de carte du support.

Un p'tit croquis :



Comme le reset ne se fait pas lorsque je déconnecte/reconnecte le GND, l'interrupteur ne mets le GND que lorsque la carte est en place  smiley-grin

C'est pas visible comme ça... mais je danse autour de ma table  smiley-lol
« Last Edit: October 26, 2011, 12:17:47 pm by Jean-François » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1392
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Comme je le disais dans le topic du gros big LCD, il est possible que les librairies pour SD soient un peu gourmandes. Dans le mesure où on utilise un port hw de l'ATmega, selon ce que l'on cherche à faire, ça doit être simplifiable. Vu que pour l'instant j'ai réussi à programmer tout ce que je voulais sans utiliser de librairies, je ne vois pourquoi je n'arriverais pas à faire marcher une SD avec un 168...

On y arriverait certainement mieux si les librairies étaient fournies avec une liste des ressources utilisées (quantité de RAM, Flash, timers, ports, int...), car certaines se coupent l'herbe sous le pied sans qu'on le sache vraiment. Il y a des progrès à faire de ce côté. (mon petit coup de gueule du matin... smiley ).

je ne fais que penser pour l'instant, il faut que je trouve un support pour SD, et je testerai réussirai la chose sur un 168. Dès lors, je vous tiendrai au courant!
Logged

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4983
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah oui, effectivement c'est exactement ce dont j'ai besoin, j'ai des cartes SD "normales" ainsi qu'un lecteur USB pour ce type de cartes.

Avec les microSD ça l'aurait moins bien fait  smiley-lol

trouver de l'adaptateur µSD vers SD , c'est facile
l'inverse est plus compliqué
reçu ça aujourd'hui
http://cjoint.com/12fe/BBynswFYdVk_sdmusd.jpg
pour utiliser de la Sd avec ça
http://www.emartee.com/product/41540/MP3%20Sound%20Module%20Mini%20SD%20Card

test semaine prochaine
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai refait le câblage de mon tupperware, dont justement la partie carte SD, le schéma est scrupuleusement suivit.... et le programme se plante aléatoirement à l'écriture des valeurs sur la SD.
Si j'allume le montage et que ça plante, je fais un simple reset de la carte et ça marche...

Deux soirs à chercher, et je m'aperçois que lorsque je tiens mon circuit avec les doigts en exerçant une pression sur le bord des pistes, ça plante moins, je teste avec un plastique entre mes doigts et la carte, ça ne marche plus.

Je regarde quelles sont les pistes qui peuvent être impliquées, il y en a trois. Je monte une capa entre les deux premières... pas ça, je décale d'une piste et BINGO, démarrage à chaque mise sous tension.

Entre la pin 9 et la 10 du TC74LCX125 une capa de 47 nf et c'est bon (la valeur de la capa au pifomètre  smiley-lol ).



« Last Edit: March 02, 2012, 01:49:23 am by Jean-François » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un petit bout de code afin de lire une valeur float sur la carte SD :

Code:
 if (!myFile.open("distance.txt", O_READ)) {
    sd.errorHalt("opening distance.txt for read failed");
  }
  Serial.println("distance.txt:");
  
  int data;
  String thisString="";
  // read from the file until there's nothing else in it:
  while ((data = myFile.read()) > 0){

    thisString+=char(data);
    Serial.write(data);
  }

  char carray[thisString.length() + 1]; //determine size of the array
  thisString.toCharArray(carray, sizeof(carray)); //put thisString into an array
  odo = (atof(carray)); //convert the array into a float   /1000000
  Serial.println (odo,3);

  // close the file:

  myFile.close();
« Last Edit: March 05, 2012, 07:23:38 pm by Jean-François » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pages: 1 2 [3]   Go Up
Jump to: