Pb de temps d'accès carte SD

Un log shield sur carte SD avec horloge RTC et zone de prototypage à pastilles carrées

Pb de temps d'accès carte SD

Message non lude mistercricri » Mar 29 Nov 2011 18:19

Bonjour :mrgreen:

je viens de faire un essai de la carte, ca a l'air de bien marcher sauf un petit soucis :

la fréquence d'écriture ne semble pas suivre la valeur demandée : ex, si je met 5000ms, ca enregistre toutes les 10s environ. Si je met 100ms, ca enregistre au mieux toutes les 6s. Est-ce un temps incompressible du à l'écriture sur la carte SD ? car du coup si c'est ca, ca ralenti grave le programme :?

d'avance merci :D
mistercricri
 
Messages: 8
Inscription: Mar 29 Nov 2011 18:15

Re: Pb de temps d'accès carte SD

Message non lude alain_g » Mar 29 Nov 2011 18:58

Bonsoir Mistercricri, je dirai que le délai que tu mets et que tu considères être entre deux mesures n'est pas tout à fait exact. En fait la ligne "delay(F_refresh);" te fige le programme sur le temps indiqué puis une fois ce délai écoulé, exécute les lignes qui suivent. Donc toutes tes instructions qui suivent doivent prendre environ 5 secondes ("moment = RTC.now();", lecture du capteur, ...).

Si tu veux que le délai soit celui indiqué il faudrait plutôt faire une boucle qui analyserait le temps entre le début de tes lignes contenues dans ta fonction "void loop" et qui en sortirai lorsque le délai est écoulé. Par contre, compte tenu de ce que tu as pu constater le délai ne pourrait pas être inférieur à 5 secondes...

Si tu veux un exemple, j'ai fait ce genre de boucle dans mon montage de datalogger multisondes mais j'y ai mis des délais en minutes: http://forum.snootlab.com/viewtopic.php?f=32&t=214


Alain
alain_g
 
Messages: 22
Inscription: Sam 29 Oct 2011 01:03

Re: Pb de temps d'accès carte SD

Message non lude mistercricri » Mar 29 Nov 2011 19:55

Merci pour ta réponse Alain, je comprends :mrgreen:

Est-ce quand même normal que cela prenne autant de temps pour écrire aussi peu de données ? :shock:
mistercricri
 
Messages: 8
Inscription: Mar 29 Nov 2011 18:15

Re: Pb de temps d'accès carte SD

Message non lude mistercricri » Mar 29 Nov 2011 20:25

je viens de changer de carte SD et cette fois j'arrive à enregistrer toutes les secondes en supprimant le délai ...

bizarre non ? :shock:
mistercricri
 
Messages: 8
Inscription: Mar 29 Nov 2011 18:15

Re: Pb de temps d'accès carte SD

Message non lude alain_g » Mar 29 Nov 2011 21:05

c'est vrai que cela parait bizarre mais tu dois avoir des cartes SD avec des temps de latence plus importants pour certaines...

++
alain_g
 
Messages: 22
Inscription: Sam 29 Oct 2011 01:03

Re: Pb de temps d'accès carte SD

Message non lude mistercricri » Mer 30 Nov 2011 22:35

J'ai un nouveau problème :mrgreen:

j'ai 2 arduino UNO : une REV1 et l'autre REV2

le même programme avec la même carte mémoire snootlab fonctionne parfaitement sur la REV2, mais pas sur la REV 1 :shock: :shock: :shock:

c'est un truc de fou !!!
mistercricri
 
Messages: 8
Inscription: Mar 29 Nov 2011 18:15

Re: Pb de temps d'accès carte SD

Message non lude mistercricri » Jeu 1 Déc 2011 11:48

ca y est j'ai trouvé d'où ca venait, j'avais les pin 12 et 13 en court circuit sur la V1 :lol:

ca marche nickel, vraiment génial cette carte mémoire :mrgreen:
mistercricri
 
Messages: 8
Inscription: Mar 29 Nov 2011 18:15

Re: Pb de temps d'accès carte SD

Message non lude mistercricri » Dim 4 Déc 2011 15:49

la galère continue :evil:

j'ai déjà flingué 3 cartes SD !!! :cry:

j'y comprend rien, d'une carte SD à l'autre j'ai des temps d'accès qui peuvent varier du simple au décuple :shock:

quand ca plante ca plante pendant les accès à la carte et le contrôleur est bloqué

sais plus quoi faire :evil:
mistercricri
 
Messages: 8
Inscription: Mar 29 Nov 2011 18:15

Re: Pb de temps d'accès carte SD

Message non lude Lionel » Dim 4 Déc 2011 16:26

Bonjour,

J'ouvre un sujet pour votre problème, il sera plus simple de répondre à vos propres questions.

Donc, vous serait il possible de décrire votre souci en ajoutant les conditions dans lesquelles il s'est produit.
Au niveau logiciel : Versions logicielles, OS, librairies, format de carte SD, code utilisé
Au niveau matériel : type de carte SD, d'arduino, photo nette de votre shield assemblé dessus dessous
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: Pb de temps d'accès carte SD

Message non lude mistercricri » Dim 4 Déc 2011 19:45

Merci Lionel c'est une excellente idée.

Concernant les cartes SD utilisées, j'en ai 3 actuellement :

1) 1 carte SD 256Mo TOSHIBA => accès super lent (3à 5s pour écrire une ligne)
2) 1 carte micro SD 512Mo KINGMAX avec son adaptateur => ca marchait bien (temps d'accès <1s) jusqu'à ce que je n'arrive même plus à la lire sur PC
3) 1 carte micro SD 2Go marque inconnue => a l'air de remarcher par mirâcle après le même problème qu'en 2)

l'arduino utilisée est une UNO REV.2 + shield mémoire uniquement (pas d'autres shields)

OS: windows 7 64 bits

code utilisé :

Code: Tout sélectionner

boolean SDCARD;

SDCARD=SD.begin(chipSelect);

// ENREGISTREMENT DES DONNEES

if (SDCARD) {

  String dataString = "";
 
  DateTime moment = RTC.now();

   datastring=String(moment.hour(),DEC)+':'+String(moment.minute(),DEC)+':'+String(moment.second(),DEC)+' ';
  datastring += String(TEMP_en_deg)+' ';
  datastring += String(ISTACK_en_A)+' ';
  datastring += String(NIVEAU,DEC)+' ';
  datastring += String(RELAIS,DEC)+' ';
  datastring += String(VENTI,DEC)+' ';
  datastring += String(ALMCELL,DEC)+' ';
  datastring += String(BOUTON,DEC)+' ';
  datastring += String(ALARME,DEC);

  digitalWrite(9, HIGH);

  fichier = SD.open("data.txt", FILE_WRITE);

  if (fichier)
    {
      fichier.println(datastring);
      fichier.close();
    } 

  digitalWrite(9, LOW);

}



P.S : je déclare tout ce qui faut pour le shield memoire j'ai juste pas fait le copier coller. Les valeurs enregistrées sont soit des int ou des booleans.

j'ai mis un if (SDCARD) pour enregistrer uniquement si la carte est insérée.

j'allume la led du shield pendant les accès disque pour voir leur durée :mrgreen:

j'ai volontairement allégé le copier coller de mon programme pour plus de clarté, j'ai laissé que la partie enregistrement (la où ca plante)

en clair ca plante juste avant (au moment de la construction de la string) ou pendant (led allumée)

je continue mes essais en modifiant la façon de faire la string, peut être une piste à ce niveau la :shock:

ca pourrait ressembler à un problème de mémoire vive qui sature ?
mistercricri
 
Messages: 8
Inscription: Mar 29 Nov 2011 18:15

Re: Pb de temps d'accès carte SD

Message non lude mistercricri » Dim 4 Déc 2011 20:03

alors la, j'hallucine :shock:

j'ai changé la façon de faire la string :

Code: Tout sélectionner
 

datastring=String(moment.hour(),DEC)+':'+String(moment.minute(),DEC)+':'+String(moment.second(),DEC)+' ';
datastring += String(TEMP_en_deg,DEC)+' '+String(ISTACK_en_A,DEC)+' ';
datastring += String(NIVEAU,DEC)+' '+String(RELAIS,DEC)+' '+String(VENTI,DEC)+' ';
datastring += String(ALMCELL,DEC)+' '+String(BOUTON,DEC)+' '+String(ALARME,DEC);



et la, plus de problèmes, en tout cas pas jusqu'à maintenant :geek:

j'ai du rater un épisode sur les strings, c'est pourtant pas la saison :lol: :lol: :lol:
mistercricri
 
Messages: 8
Inscription: Mar 29 Nov 2011 18:15


Retourner vers Mémoire

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron