Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.



  1. #1
    Romain2

    Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.


    ------

    Bonjour,

    Je me suis lancé dans un projet d'écriture sur une carte SD avec un PIC(18F4550) et je voudrais commencer par le beaba en écrivant un fichier .TXT de quelques octets (toute l'alphabet par exemple) en FAT32 et qui puisse ensuite être lu sur un PC. La SD Card que j'utilise est une mini-SD de 512 Mo.

    J'ai déjà bien avancé je pense, j'ai tout programmé en C (mplab C18) pour pouvoir accéder aux différents secteurs de la SD Card (Master Boot Record, Boot Sector, FAT (il y en a 2), Root Directory, Data Section).

    J'ai commencé par chercher le premier cluster libre dans la FAT (première entrée qui a la valeur 00 00 00 00 h) et j'y ai mis 0F FF FF FFh pour le réserver. J'ai copié cette nouvelle entrée dans la deuxième FAT.

    Ensuite, j'ai écrit dans la Root Directory pour mettre l'entrée de mon fichier de 32 octets. Cette entrée est en format 8.3 (Shortfilename). J'y met le nom du fichier, son extension, son attribut (Archive à 1 seulement), le numéro du premier cluster trouvé précédemment, sa taille, et puis j'ai rajouté des dates et des heures (de création, modification) bidons trouvées sur d'autres fichiers.

    J'ai ensuite écrit mon fichier dans le cluster correspondant.

    Le problème c'est que lorsque je lie la SD Card sur un PC je trouve bien mon fichier en format TXT (avec l'icône du bloc note) et la taille indiquée est la bonne, mais quand j'essaie de l'ouvrir il m'envoie un message d'erreur me disant qu'il n'arrive pas à le trouver.

    Je ne comprends pas, j'ai comparé avec des fichiers txt que j'ai écris sur la même SD Card à partir du PC et je ne voie pas de différence dans la démarche (FAT écrite de la même facon, Root Directory cohérent avec ce que je m'attendais et contenu du fichier au bon endroit). Il doit y avoir quelque chose qui m'échappe mais je ne vois vraiment pas quoi.
    Si quelqu'un a une idée...

    Merci.

    -----

  2. Publicité
  3. #2
    chatelot16

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    donc le probleme ne vient pas de la facon de l'ecrire mais du contenu exact du fichier

    par example envoie en piece jointe le fichier txt qui ne marche pas et celui qui marche : car meme le fichier que window ne peut pas lire peut etre transmis en pj

  4. #3
    Romain2

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Merci pour votre réponse.

    Pour ce qui est du contenu des fichiers j'ai aussi regardé.
    Pour le fichier .TXT écrit par l'ordinateur, le contenu du fichier n'est que la liste des codes ASCII des caractères, des sauts et retours à la ligne que j'y ai mis.
    Je ne trouve aucun code qui puisse faire office de fin de fichier ou de début de fichier. Est ce normal?
    Le fichier TXT qui ne marche pas je l'ai écrit de la même manière.

  5. #4
    PA5CAL

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Il y a le caractère EOF ("End Of File", code hexa 1A), mais il n'est pas souvent interprété comme une fin de fichier. En fait, c'est la taille du fichier qui est enregistrée dans la directory qui fixe la fin.

    Pour tes tests, je te conseille de n'utiliser pour l'instant que des caractères imprimables (codes hexa >= 20 et < 7F). Mieux vaut ne chercher à régler qu'un problème à la fois.

    La chose que je ne vois pas dans ta description (qui me paraît par ailleurs correcte), c'est l'écriture du numéro de "cluster suivant" dans la FAT pour le chaînage des clusters du fichier, dans le cas où le taille de celui-ci dépasserait la taille d'un cluster. Peut-être le problème vient-il de là ?

  6. #5
    philo69

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Slt Romain2,

    Ton projet d'exploiter un SD Card par un PIC m'intéresse beaucoup. est ce que tu peux m'expliquer comment faire, stp? des liens pour se documenter?...etc

    Merci beaucoup par avance
    Phil

  7. A voir en vidéo sur Futura
  8. #6
    Romain2

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Bonjour PA5CAL,

    pour la FAT j'ai écrit 0F FF FF FFh à l'entrée correspondant au cluster n°3, dans la FAT1 ainsi que dans la FAT2 (apparemment la FAT2 est la copie de la FAT1 pour plus de sécurité).
    J'ai ensuite écrit dans la première entrée de 32 octets disponible dans la Root Directory en spécifiant que mon fichier fait 15 octets (donc rentre largement dans un seul cluster (un cluster fait 8*512 octets dans ma carte)).

    Ces 15 octets je les écris ensuite au début du cluster n°3 (la Root Directory étant dans le cluster n°2 (premier cluster réel), je me déplace de 8*512 octets à partir de l'adresse de la Root Directory). J'y écris les 15 premières lettres de l'alphabet en majuscule (donc les octets prennent des valeurs comprises dans la fourchette que vous m'avez donnée) et sans EOF à la fin.
    Il n'y a pas d'EOF dans les fichiers .TXT que j'ai mis sur la carte à partir du PC.

    Je me demande si il n'y a pas des choses à mettre dans le Boot Sector (premier secteur de la partition), parce que dans les autres secteurs je ne vois vraiment pas l'erreur.
    Est-ce que, aussi, les dates et heures à mettre dans la Root Directory sont obligatoires et est ce qu'elles doivent être cohérentes (que l'heure de dernière modification ne se retrouve pas avt l'heure de création du fichier)?
    Que j'en mette ou que je n'en mette pas, j'ai toujours le même message d'erreur de toute façon.

    Pour la doc, PHILO69, je vous la transmettrai plus tard, j'ai répertorié les adresses des sites intéressants mais je ne les ai pas sous la main. Commencez déjà par étudier comment marchent les modules SPI des PIC grâce à leurs datasheets (que vous pouvez trouver sur le site de microchip).
    Je ne sais pas quel PIC est le mieux pour ce genre d'application mais il en faut au moins un qui ait le module SPI. J'ai pris un PIC18F car il existe un compilateur C spécialement conçu pour les PIC18F (mplab C18) que l'on peut avoir gratuitement sans limitation pour 60 jours.
    Commencez aussi à regarder comment se gère la SD Card en mode SPI (surtout regarder la phase d'initialisation de la carte qui est assez lourde).
    Pour les recherches, je vous conseille de les faire en Anglais, vous trouverez pratiquement tout ce dont vous avez besoin.

  9. Publicité
  10. #7
    chatelot16

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    windows ne veut pas ouvrir ton fichier avec le blocnote , mais accepte il de le copier ?

    si il peut le copier , et que la copie est bien identique cela confirmera que ce fichier est bien ecrit dans la carte , mais que le contenu ne plait pas a bloc note

    tu peux aussi essayer de lire ce fichier sous dos !

  11. #8
    philo69

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Merci Romain2 pour les conseils.
    Effectivement, j'ai commencé à me documenter. Mais j'aimerais bien avoir ton code (bien commenté, stp !!). pas besoin de réinventer la roue !
    Merci par avance

  12. #9
    BastienBastien
    Invité

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Bonsoir,

    Tu peux également essayer avec un vrai système d'exploitation. Par exemple, avec un live CD de GNU/Linux. Tu peux utiliser la commande "file nom_de_fichier" pour savoir de quel type est ton fichier. La commande "ls -lh" pour connaître la taille et les droits sur ton fichier.

  13. #10
    Romain2

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Chatelot16,

    Je ne peux pas copier ce fichier, ni le déplacer, ni le supprimer.
    J'ai aussi essayé de le lire sous MS Dos: j'arrive à l'ouvrir mais il n'y a rien dedans.

    Merci BastienBastien pour votre suggestion mais je n'ai que Windows XP comme système d'exploitation.

  14. #11
    Romain2

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Bonjour,

    Toujours pas de suggestion?

    J'ai peut être un pb au niveau de la police de caractère: je ne la définie jamais.

    Comment est ce que cette police est définie dans un fichier .txt stocké dans
    une partition en FAT32?

    Merci.

  15. #12
    PA5CAL

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    J'ai une suggestion:
    - à partir d'un PC, reformater la carte SD et y enregistrer un fichier texte.
    - relire son contenu (en faisant un dump) à la fois sur le PC et à partir du PIC.

    C'est le meilleur moyen de voir ce qui cloche.

  16. Publicité
  17. #13
    Romain2

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Merci PA5CAL mais c'est bon ça marche finalement.

    J'ai formaté et reformaté jusqu'à ce que ça marche enfin... bizarre, je n'ai pas d'explication rationnelle. La seule explication que je trouve pour l'instant c'est que, avant, l'entrée du cluster 1 (le cluster 1 n'existe pas) dans la FAT était à 7F FF FF FFh et que maintenant elle est à 0F FF FF FFh... je pensais que cette entrée était bidon, mais peut être pas en fait.

    Pour la police de caractère à définir c'était une bêtise, il n'y a pas de police de caractère à définir sur la carte, c'est le bloc note qui gère tout ça à partir des codes ASCII qu'on lui donne (lorsqu'on change la police de caractère (ou fonte
    pour être plus général) sur le bloc note, on la change sur tout le fichier .txt et tous les autres fichiers .txt seront lus selon cette nouvelle police).

    Voilà, c'est cool. Je reviendrai peut être si j'ai d'autres pb plus tard.

  18. #14
    Romain2

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Pardon j'ai encore écrit des bêtises,

    la raison pour laquelle mon fichier ne voulait pas s'ouvrir n'est pas à cause de la valeur du cluster 1 mais à cause du nom que j'ai donné à mon fichier dans l'entrée de 32 octets au format 8.3 (ShortFilename).
    Dans ce type d'entrée, le nom du fichier est codé sur les 8 premiers octets et il ne faut surtt pas utiliser de minuscule apparemment mais que des majuscules (contrairement aux longfilenames).
    J'ai écrit une entrée de fichier ayant un nom tout en majuscule, il s'ouvrait bien (et peu importe ce qu'il y avait dedans).
    J'ai écrit la même entrée de 32 octets en changeant une majuscule par une misnuscule, il ne s'ouvrait plus.

    Voilà, c'était pour rectifier mon erreur.

  19. #15
    sefyu34

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    slt a tous moi en fet je debute avec le pic18f4550 avec 40 pin et je voudrai tout savoir si possible (les entrées/sorties, les octet, le fonctionnement des ports etc...)
    j'ai essyai d'etudier la data sheet mais c'est pas évident pour quelqu'un qui découvre... Merci pour votre aide!!!
    (precision: je suis en stage sur se sujet)

  20. #16
    Seb.26

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Citation Envoyé par sefyu34 Voir le message
    je debute avec le pic18f4550 avec 40 pin et je voudrai tout savoir si possible
    -> la datsheet !

    Citation Envoyé par sefyu34 Voir le message
    j'ai essyai d'etudier la data sheet mais c'est pas évident pour quelqu'un qui découvre...
    qui t'avait dit le contraire ?

    Sur le net tu trouveras sans doute quelques cours un peu plus facile pour commencer ... ( cherche Bigonoff ie. )
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  21. #17
    ADCA

    Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Bonjour,

    J'essaie aussi d'écrire des fichier .txt sur une SD Card à partit d'un PIC18 mais l'initialisation de ma SD Card ne fonctionne que sur une SD Card. Pouvez-vous m'envoyer le code correspondant à l'initialisation de SD Card pour comparer svp?
    D'avance merci,
    Za

  22. #18
    jjg

    Smile Re : Ecriture fichier TXT sur SD Card en FAT32 avec un PIC.

    Bonjour.
    Je viens de découvrir ce post.
    Je cherche à sauvegarder des données GPS sur une carte SD à partir d'un PIC. Pour ne pas consommer trop je voudrais écrire directement sur la carte SD et ne pas utiliser un module avec liaison RS232.
    Vous serait il possible de me fournir la trame de ce que vous avez déjà fait.

    Par avance merci.

  23. Publicité

Discussions similaires

  1. Ecrire des donnees dans un fichier .txt avec MATLAB
    Par ghislaine dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 24/10/2011, 16h03
  2. Fichier as.txt bien curieux, problème de connection, ...
    Par agentab dans le forum Internet - Réseau - Sécurité générale
    Réponses: 12
    Dernier message: 06/04/2007, 18h07
  3. transposer un fichier .txt en .xls
    Par abracadabra75 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 09/02/2007, 10h18
  4. adresse ip dans un fichier txt
    Par alainav1 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 25/11/2006, 12h06
  5. Fortran : écriture dans un fichier
    Par Coincoin dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 16/01/2006, 19h32
Découvrez nos comparatifs produits sur l'informatique et les technologies.