Usart ou I2C?
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 46

Usart ou I2C?



  1. #1
    invite0b3246fe

    Question Usart ou I2C?


    ------

    Bonjour,

    Dans mon projet, j'utilise un 18F452, qui me permet d'acquerir des données. Je les stock dans la mémoire (enfin ca je dois ecrire le programme) puis à l'aide d'un pc portable je viens recuperer les informations acqueri au préalable.

    Donc je me demande quoi utiliser comme protocole de communication? l'usart ou l'i2c?

    Sachant que je suis vraiment débutant, je programme sur MikroC et/ou MPLAB C18.

    Avez-vous des exemples à me proposer?

    -----

  2. #2
    verdifre

    Re : Usart ou I2C?

    bonjour,
    Si tu doit communiquer avec un pc l'utilisation de l'usart me semble s'imposer, a moins que tu n'aie un pc equipé d'un port i2c (ca m'etonerait)
    bref l'usart + max 232 va te permettre de gerer une liaison rs232, port com de ton pc alors que l'i2c ne te permettra pas de communiquer avec ton pc
    il faudra quand même que tu ecrives un bout de programme sur ton pc pour recuperer tes données
    fred

  3. #3
    invite0b3246fe

    Re : Usart ou I2C?

    Merci de ta réponse,

    Aurais tu un exemple de programme à me proposer, parceque je ne sais vraiment pas comment faire, je cherche sur le net, mais je ne trouve rien de concret (je dois vraiment etre un boulet lol).
    Je dois aussi donnée l'adresse où sont stockées les données, et ca me pose un probeéme, je ne sais pas où les stocker dans mon pic en attendant d'etre récuperées.

  4. #4
    invite753da5c7

    Re : Usart ou I2C?

    Pour le stockage, je te conseille d'utiliser une EEPROM externe.
    La 24LC256, par exemple, permet de stocker 256 Kbits de données, ce qui n'est pas trop mal (selon les besoins, bien sûr). Et tu peux en mettre jusqu'à 8.
    Utiliser une EEPROM série te fera utiliser l'I2C, et tu trouveras pleins d'exemples sur le web (en particulier sur les forums de Microchip).

    En ce qui concerne le RS232, je te conseille vivement un coup de google "RS232". Lis bien ce que tu trouves, et une fois que tu as compris le principe (ca fait peur au début, mais c'est pas si compliqué), jette toi sur l'USART.
    Encore une fois, pour la programmation coté PIC, je te conseille les forums de microchip, qui regorgent de threads ou ces questions ont déjà été abordées.

    Amicalement,
    Etienne

  5. A voir en vidéo sur Futura
  6. #5
    verdifre

    Re : Usart ou I2C?

    bonjour,
    je pense que le probleme de communication n'est pas le plus compliqué dans ton affaire. Quand tu auras maitrisé le reste de ton application ca te semblera abordable
    fred

  7. #6
    invite0b3246fe

    Re : Usart ou I2C?

    Est ce que je peux me passer d'une EEPROM et utiliser la mémoire interne du 18f452 pour stocker mes données?

  8. #7
    verdifre

    Re : Usart ou I2C?

    bonjour,
    ca depend du volume de données que tu désires stocker. avec ce que tu racontes il n'y a pas assez de renseignements pour pouvoir te repondre
    fred

  9. #8
    invite0b3246fe

    Re : Usart ou I2C?

    En fait j'ai un tableau de 16 lignes et 10 colonnes, dans lequel je mets comme information des mots ne dépassants pas 5 caractéres.

  10. #9
    invite0b3246fe

    Re : Usart ou I2C?

    C'est comme un rapport en fait je fais un dessin avec excel et je le mets en ligne

  11. #10
    verdifre

    Re : Usart ou I2C?

    bonjour,
    ce que tu indiques la c'est ce que tu désires afficher, il sera peut etre plus interessant de stocker les mesures sous forme binaire plutot que sous forme de caracteres, mais vu le nombre il faut au minimum compter 160 octets. aprés ca depend de ce que tu mesures, si c'est sur 8 ou 16 bits etc.....
    apres tu calcule la taille memoire nessecaire
    et tu regardes sur le datasheet du micro_c pour voire si ca passe...
    fred

  12. #11
    invite0b3246fe

    Re : Usart ou I2C?

    voici l'exemple du tableau, il est tres simple pas compliqué du tout
    Fichiers attachés Fichiers attachés

  13. #12
    invite0b3246fe

    Re : Usart ou I2C?

    En fait je recois des informations sous formes binaires sur mes ports A, B et D (0 ou 1)
    A partir de la je les convertis en caractére voulu, soit R.A.S. soit DEFAUT

  14. #13
    invite753da5c7

    Re : Usart ou I2C?

    et bien dans ce cas-là, ne t'embete pas !

    stocke tes informations sous forme de bits ! et tu convertiras en caractères textes une fois que l'info sera revenue sur le PC !

    Du coup, une EEPROM externe serait vraiment un souci inutile

    Amicalement,
    E.

  15. #14
    invite0b3246fe

    Re : Usart ou I2C?

    oui j'y avais pensé, mais comme je ne fais pas l'acquisition des données directement du pc au µc, je cherche à stocker les données reçuent dans le µc pendant un certain temps, enfin du moins s'il reste de la place dans la mem

  16. #15
    invite753da5c7

    Re : Usart ou I2C?

    Ben oui, mais qu'est ce qui fait que tu as envie de stocker les données sous forme de caractères ?
    verdifre l'a déjà évoqué, donc je ne ferai que rajouter une couche, mais vraiment, les caractères ne sont pas un bon moyen de stocker des données !

    Par exemple, si tu as un bit dont la valeur est 0 ou 1, ca ne prend que... 1 bit a stocker
    Maintenant, si tu veux stocker la valeur "OUI" en caractères, il te fait 4 caractères (O, U, I et le terminateur de chaîne), qui sont codés sur 8 bits chacun !
    Donc, ici, ton stockage en caractères est 32 fois plus gourmand qu'un stockage sous forme de bits !

    Qu'en penses-tu ?

  17. #16
    invite0b3246fe

    Re : Usart ou I2C?

    c'est vrai que la ca laisse réfléchir. Donc en faite la meilleure solution c'est ce que vous proposez, et je dois ensuite faire un petit programme sur le pc afin de convertir les bits en caractéres.
    Mais la se pose le probléme (enfin pour moi) d(utiliser la mémoire du µc pour ne pas ecraser à chaque fois les données reçuent. J'ai pu créer la liaison serie avec MikroC en utilisant la fonction Init_Usart(), Xrit_Usart().
    Je vous montre le programme que j'ai ecrit. Un fichier texte est joint, dites moi ce que vous en pensez.
    Fichiers attachés Fichiers attachés

  18. #17
    verdifre

    Re : Usart ou I2C?

    bonjour,
    Par contre si tu stockes les données dans le microp il va surement falloir prevoir un horodatage pour retrouver tes petits quand tu va les transferer sur le pc. Ca peut prendre pas mal de place supplementaire.
    fred

  19. #18
    invite753da5c7

    Re : Usart ou I2C?

    Citation Envoyé par verdifre
    bonjour,
    Par contre si tu stockes les données dans le microp il va surement falloir prevoir un horodatage pour retrouver tes petits quand tu va les transferer sur le pc. Ca peut prendre pas mal de place supplementaire.
    fred
    Effectivement, ca peut être un problème.
    Dans un projet pour lequel je travaille, j'ai opté pour un horodatage relatif (vu qu'avec un quartz 4 MHz, une horloge temps réel est problématique).

    Pour te donner une piste là-dessus, srr, tu peux compter le temps (grossièrement) entre la prise de mesure et la transmission. Du côté PC, tu remets tout ca en place. Avec un "unsigned int" pour gérer le temps relatif, tu t'en tires pour 18 heures avant débordement, avec une précision à la seconde ! Et tout ca pour uniquement 16 bits. Elle est pas belle la vie ?

  20. #19
    invite0b3246fe

    Re : Usart ou I2C?

    Ok et merci,
    Je compte utiliser un quartz de 10MHz (plus simple pour les temps de cycles).
    Donc dés que je fait une mesure j'ai un mot sur 16bits qui determine le temps. De cette manière je peux aussi juste incrémenter et à chaque fois que je recherche les données je donne la valeur de ce mot. Il est vrai que si je fait un horloge "pseudo-réelle" il me sera plus facile de rechercher mes données!!!
    Cependant, avec MikroC, je ne trouve pas les fonctions permettant de pouvoir utiliser la mémoire du µc, avec MPLAB C18 je devrais utiliser les fonctions définies dans memory & string (ex: memechar, memecpy, ...).
    Est-ce bon? Suis-je sur la bonne voie? Y'a t-il une autre manière d'exploloiter la memoire du µc?

  21. #20
    invite0b3246fe

    Re : Usart ou I2C?

    oups petite erreur de ma part lol

  22. #21
    invite753da5c7

    Re : Usart ou I2C?

    Citation Envoyé par srr
    Cependant, avec MikroC, je ne trouve pas les fonctions permettant de pouvoir utiliser la mémoire du µc, avec MPLAB C18 je devrais utiliser les fonctions définies dans memory & string (ex: memechar, memecpy, ...).
    Est-ce bon? Suis-je sur la bonne voie? Y'a t-il une autre manière d'exploloiter la memoire du µc?
    Je ne connais pas MikroC, mais effectivement, en C, tu réserves de la mémoire avec la fonction malloc(); tu y accèdes en utilisant le pointeur mémoire retourné.

    Si ce que je dis ne t'es pas familier, je te conseille de te tourner vers des tutoriels de langage C, à la rubrique "mémoire dynamique". Tu en trouveras de très bons en cherchant sur Google.

    Amicalement,
    E.

  23. #22
    invite0b3246fe

    Re : Usart ou I2C?

    Ok merci du conseil, je vais voir de suite. Sinon je peux le faire avec MPLAB C18, ce log est plus commun pour la prog', enfin par raport à MikroC

  24. #23
    invite0b3246fe

    Re : Usart ou I2C?

    Re, J'ai un petit probléme avec C18,
    voila j'ai déclaré un tableau et quand je veux lui affecter une chaine de caractére il me sors une erreur en compilant: voici le tableau avec l'erreur

    static char rapportest [16][10];
    static int i,j,k,m=0; // variables permettant de naviguer dans le tableau (l sert pour la boucle).
    static unsigned int tlp,search,find1,find2,*p;

    TRISA=TRISB=TRISD=1; // initialisation des ports en entrées.
    // initialisation du tableau.
    rapportest [0][0]="Nom";
    rapportest [0][1]="Etat";
    rapportest [0][2]="Etat";
    rapportest [0][3]="Etat";

    V:\Analyseur test auta\acquisition données pic\AU.TA.c:21:Error [1131] type mismatch in assignment
    V:\Analyseur test auta\acquisition données pic\AU.TA.c:22:Error [1131] type mismatch in assignment
    V:\Analyseur test auta\acquisition données pic\AU.TA.c:23:Error [1131] type mismatch in assignment
    V:\Analyseur test auta\acquisition données pic\AU.TA.c:24:Error [1131] type mismatch in assignment

    Que dois-je faire?

  25. #24
    monnoliv

    Re : Usart ou I2C?

    Quand tu fais
    Code:
    rapportest [0][0] = "sdfsdqf"
    tu es en train de vouloir assigner une chaîne de caractères (plusieurs caractères donc) à une variable qui ne peut accepter qu'un caractère. Essaie plutôt
    Code:
    rapportest [0]="Nom";
    rapportest [1]="Etat";
    rapportest [2]="Etat";
    rapportest [3]="Etat";
    A+
    Ne soldez pas grand mère, elle brosse encore.

  26. #25
    invite0b3246fe

    Re : Usart ou I2C?

    Ok, merci de la soluce

  27. #26
    invite753da5c7

    Re : Usart ou I2C?

    La solution de monnoliv ne me paraît pas très rigoureuse... Peut être que ca compilera, mais peut être aussi que ca ne marchera pas

    En toute rigeur, tu dois utiliser la fonction memcpy(), parce que quand tu fais

    rapportest [0]="Nom";

    tu assignes une adresse mémoire "Nom" (char*) à une adresse mémoire statique (vu que tu as déclaré rapportest comme char[16][10], et non char*[16]).

    Amicalement,
    E.

  28. #27
    monnoliv

    Re : Usart ou I2C?

    Effectivement, c'est assez brutal
    Faudrait voir le code assembleur généré...
    A+
    Ne soldez pas grand mère, elle brosse encore.

  29. #28
    invite0b3246fe

    Re : Usart ou I2C?

    euh en code assembleur ca risque d'etre dur vu que je suis une quiche an asm lol.

    Je pensais à une chose aussi, vu que dans mon tableau je dois avoir sur la 1ere ligne des commentaires style "nom", "etat", et que sur la 1ere colonne je dois mettre le nom des information arrivant, cela me pose un probléme vu la manière dont vous me proposez de proceder pour remplir le tableau.

    Je sais pas si je me suis bien fait comprendre.

  30. #29
    invite753da5c7

    Re : Usart ou I2C?

    Srr,

    Tu vas penser que je radote (et c'est le cas ), mais c'est pour la bonne cause :

    Je te conseille VRAIMENT de stocker le *minimum* d'infos sur ta carte. Les chaines de caractère "NOM" et "ETAT" n'ont aucun intérêt pour le PIC, juste pour l'utilisateur final, donc tu devrais les utiliser une fois les infos transmises sur le PC !

    Si ton tableau dans le pic est (par exemple)
    Mesure Etat
    12 VRAI
    16 FAUX
    987 VRAI
    44 FAUX

    ne déclare pas un tableau de type char[][]. qui contiendra les chaines de caractère; choisis plutôt un format auquel tu te tiendras, et n'utilise que

    int mesures[MA_TAILLE];
    char valeurs[MA_TAILLE];

    ce qui sera beaucoup plus compact.

  31. #30
    invite0b3246fe

    Re : Usart ou I2C?

    ok je vais faire ca, je ne penses pas que tu radottes, mais c'est pour mon bien et tu t'y connais mieux que moi, donc je vais suivre ton conseil !!!

    Je vais juste installer visual C basic sur le pc et hop on récupére le tout.

    Et puis pour les info' je n'aurais pas meme pas besoin de créer un tableau sur le pic alors!!! juste je compte le nombre d'info' analysées et avec le pc je fais l'analogie !!!

    je vous tiendrais au courant de l'évolution

    Franchement super forum vous etes des bons les mecs!!!!

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. USART du PIC16F628
    Par Patrick dans le forum Électronique
    Réponses: 2
    Dernier message: 01/06/2008, 16h28
  2. USART sur PIC
    Par noisyboxes dans le forum Électronique
    Réponses: 6
    Dernier message: 23/04/2007, 08h39
  3. USART sut ATmega8515
    Par jleclercq6 dans le forum Électronique
    Réponses: 1
    Dernier message: 28/02/2007, 15h59
  4. 16F876 Et transmission USART
    Par Peter dans le forum Électronique
    Réponses: 13
    Dernier message: 07/11/2006, 19h36
  5. Usart Avr
    Par invite2b4da655 dans le forum Électronique
    Réponses: 13
    Dernier message: 21/05/2006, 00h43
Découvrez nos comparatifs produits sur l'informatique et les technologies.