Mémorisation mot 16 bit dans un pic ?
Répondre à la discussion
Affichage des résultats 1 à 25 sur 25

Mémorisation mot 16 bit dans un pic ?



  1. #1
    invite64bb1f45

    Mémorisation mot 16 bit dans un pic ?


    ------

    Bonjour.
    Voila, j'aimerais savoir comment mémoriser un mot 16 bit dans un PIC16F1936.
    Merci.

    -----

  2. #2
    abracadabra75

    Re : Mémorisation mot 16 bit dans un pic ?

    Bonjour.
    Tu l'écris dans 2 octets, à l' emplacement de ton choix.
    A+
    Il n'y a que dans le dictionnaire où 'réussite' vient avant 'travail'.

  3. #3
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Salut.
    Oui d'accord mais en fait j'aurais aimé avoir un exemple du code qui dit d'écrire telle valeur à tel emplacement dans la mémoire.
    Merci pour ta réponse.

  4. #4
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    Bonjour,
    abracadabra75 a tout dit, on est obligé d'écrire 1 octet à la fois.
    Exemple de code :
    Code:
    MOVLB bsr ; choix du BSR
    MOVLW valeur1
    MOVWF adresse1
    MOVLW valeur2
    MOVWF adresse2

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

    Re : Mémorisation mot 16 bit dans un pic ?

    Salut
    Ok donc il n'y a pas a indiqué l'adresse mémoire alors ?
    Aurais-tu un exemple de code en C ?
    Merci

  7. #6
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    Citation Envoyé par ren28042 Voir le message
    Ok donc il n'y a pas a indiqué l'adresse mémoire alors ?
    Si, MOVWF prend l'adresse mémoire en paramètre (en complément de bsr).

    Exemple de code en C :
    Code:
    unsigned char x;
    x = valeur;

  8. #7
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Mais si je veux stocker un mot de 16 bits à un emplacement précis dans la mémoire du PIC avec lequel je travail, comment dois-je faire pour le lire et le mémoriser ?
    Merci

  9. #8
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    Citation Envoyé par ren28042 Voir le message
    Mais si je veux stocker un mot de 16 bits à un emplacement précis dans la mémoire du PIC avec lequel je travail
    En C ?
    Code:
    short *ptr_16bits;
    ptr_16bits = adresse mémoire
    *ptr_16bits = valeur 16 bits;

  10. #9
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Merci sdec25
    Par contre comment lire le mot sachant qu'il arrive sur un port série.
    Et que les 16 données sont acquises sur les front descendants de l'horloge de données avec un enable.
    Merci

  11. #10
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    Il faut utiliser l'UART, c'est une autre histoire...
    Sinon je doute que tu ais besoin de connaître l'adresse mémoire de l'emplacement où tu stockes les 2 octets. En plus ça peut provoquer des problèmes si tu ne réserves pas cet emplacement. Une variable globale serait plus adéquate si tu veux garder la valeur en mémoire pendant toute la durée du programme et l'utiliser dans d'autres routines.

  12. #11
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Ok merci je vais regarder dans le datasheet pour voir comment utiliser l'uart.
    Par contre sais-tu ce que c'est, les variables de type int8 ou int 16 ?

  13. #12
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    int8 c'est char ou unsigned char
    int16 c'est int ou short
    Il y a aussi long qui est sur 32 bits et short long sur 24 bits mais ça dépend du compilateur, c'est marqué dans la doc de celui-ci.
    Pour l'UART il y a sûrement des bibliothèques et des .h à utiliser (fonctions genre openUART()) et des topics sur le forum.

  14. #13
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Je viens de regarder dans le datasheet du pic mais il n'y a rien concernant l'uart, est-ce normal ?

  15. #14
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    Section 20 : EUSART.

  16. #15
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Ok merci je vais regarder ça.

  17. #16
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Salut sdec25,
    Tu m'as conseiller d'utiliser l'EUSART pour acquérir le mot de 16 bits.
    Mais est-ce que je ne pourrais pas aussi utiliser le mode SPI ?
    Sinon je doute que tu ais besoin de connaître l'adresse mémoire de l'emplacement où tu stockes les 2 octets. En plus ça peut provoquer des problèmes si tu ne réserves pas cet emplacement.
    Si je réserve ou si je ne réserve pas cet emplacement ?
    Merci

  18. #17
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    Salut.

    Pour le port série c'est l'UART qu'il faut utiliser. Je ne pense pas que le SPI soit compatible.

    Si je réserve ou si je ne réserve pas cet emplacement ?
    Tu réserves un emplacement, disons à l'adresse 0x50, que tu vas utiliser pour stocker 2 octets. Le compilateur ne le sait pas et va peut-être utiliser cette adresse pour autre chose, donc il y aura des collisions.
    Il y a sûrement des moyens de dire au compilateur/linker de mettre une variable à un emplacement mémoire précis mais dans ton cas à quoi ça va servir ? Tu n'as qu'à utiliser une variable globale c'est plus simple.

  19. #18
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Ok merci.
    Dans le programme comment dois-je inclure le fichier <pic16f1936.h> (je suppose que c'est avec "#include") et ou est-ce que je peux le trouver ?

  20. #19
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    Citation Envoyé par ren28042 Voir le message
    Dans le programme comment dois-je inclure le fichier <pic16f1936.h> (je suppose que c'est avec "#include")
    Regarde dans ton répertoire des includes (configuré dans les options du compilateur). Si tu utilises HI-TECH c'est #include <htc.h>

  21. #20
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Salut
    Dans le répertoire des includes du compilateur,j'ai les 2 fichiers "htc.h" et "pic16f1936.h",dois-je inclure les 2 ?
    J'ai essayé mais ça me signale des erreurs.
    Voici le rapport d'erreur du compilateur HTC PICC Cpp
    Je programme en C et utilise MPLAB ICD2.
    --------------------------------------------------------------------------
    --------------------------------------------------------------------------
    Z:\main.c: 14: (107) directive # "Define" interdite (warning)
    Z:\main.c: 15: (107) directive # "Define" interdite (warning)
    Z:\main.c: 18: (335) pragma "config" inconnu (warning)
    Z:\main.c: 43: (195) erreur de syntaxe dans l'expresion (error)
    Z:\main.c: 45: (194) ")" attendue (error)
    Z:\main.c: 53: (194) ")" attendue (error)
    Z:\main.c: 54: (285) pas d'identificateur dans la déclaration (error)
    Z:\main.c: 54: (314) ";" attendu (error)
    Z:\main.c: 55: (285) pas d'identificateur dans la déclaration (error)
    Z:\main.c: 55: (314) ";" attendu (error)
    Z:\main.c: 67: (192) identificateur "TRISE3" indefini (error)
    Z:\main.c: 74: (192) identificateur "T1GCON_REG" indefini (error)
    Z:\main.c: 113: (188) expression contante requise (error)
    Z:\main.c: 120: (188) expression contante requise (error)
    Z:\main.c: 127: (188) expression contante requise (error)
    Z:\main.c: 134: (188) expression contante requise (error)
    Z:\main.c: 141: (188) expression contante requise (error)
    Z:\main.c: 148: (188) expression contante requise (error)
    BUILD FAILED: Fri Oct 23 09:20:15 2009
    --------------------------------------------------------------------------
    --------------------------------------------------------------------------
    Je ne comprend pas les warning au niveau des define.
    Aurais-tu une idée sur ces erreurs ?
    Merci.

  22. #21
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    MODIF du post précédent,dsl j'avais oublié des lignes.
    ****************************** **********************
    Salut
    Dans le répertoire des includes du compilateur,j'ai les 2 fichiers "htc.h" et "pic16f1936.h",dois-je inclure les 2 ?
    J'ai essayé mais ça me signale des erreurs.
    Voici le rapport d'erreur du compilateur HTC PICC Cpp
    Je programme en C et utilise MPLAB ICD2.
    --------------------------------------------------------------------------
    --------------------------------------------------------------------------
    # 1 "Z:\main.c"
    //Les includes:
    //#include <iostream.h>
    //#include <fstream.h>
    (168) option "-Omain.obj" inconnue
    (168) option "-Q" inconnue
    (168) option "-MPLAB" inconnue
    (168) option "-16F1936" inconnue
    Z:\main.c: 4:#include <htc.h> (141) ne peut pas ouvrir le fichier include "htc.h": Bad file descriptor
    Z:\main.c: 14: (107) directive # "Define" interdite (warning)
    Z:\main.c: 15: (107) directive # "Define" interdite (warning)
    Z:\main.c: 18: (335) pragma "config" inconnu (warning)
    Z:\main.c: 43: (195) erreur de syntaxe dans l'expresion (error)
    Z:\main.c: 45: (194) ")" attendue (error)
    Z:\main.c: 53: (194) ")" attendue (error)
    Z:\main.c: 54: (285) pas d'identificateur dans la déclaration (error)
    Z:\main.c: 54: (314) ";" attendu (error)
    Z:\main.c: 55: (285) pas d'identificateur dans la déclaration (error)
    Z:\main.c: 55: (314) ";" attendu (error)
    Z:\main.c: 67: (192) identificateur "TRISE3" indefini (error)
    Z:\main.c: 74: (192) identificateur "T1GCON_REG" indefini (error)
    Z:\main.c: 113: (188) expression contante requise (error)
    Z:\main.c: 120: (188) expression contante requise (error)
    Z:\main.c: 127: (188) expression contante requise (error)
    Z:\main.c: 134: (188) expression contante requise (error)
    Z:\main.c: 141: (188) expression contante requise (error)
    Z:\main.c: 148: (188) expression contante requise (error)
    BUILD FAILED: Fri Oct 23 09:20:15 2009
    --------------------------------------------------------------------------
    --------------------------------------------------------------------------
    Je ne comprend pas les warning au niveau des define et le fichier htc.h ne s'ouvre pas apparemment.
    Aurais-tu une idée sur ces erreurs ?
    Merci.

  23. #22
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    Bonjour,
    Normalement inclure htc.h suffit. Et si tu as un doutes tu peux regarder le contenu du fichier.h
    Sinon il faudrait voir ton programme main.c

  24. #23
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Salut
    En fait, c'était des problèmes de paramétrage du compilateur.
    Par contre je ne sais pas comment dire au programme de libérer la fréquence de sortie sur le port RC2.
    Aurais-tu une idée ?
    Sachant que cette fréquence est la sortie du TIMER1.
    Merci.

  25. #24
    sdec25

    Re : Mémorisation mot 16 bit dans un pic ?

    Citation Envoyé par ren28042 Voir le message
    Par contre je ne sais pas comment dire au programme de libérer la fréquence de sortie sur le port RC2.
    Comment ça ?

  26. #25
    invite64bb1f45

    Re : Mémorisation mot 16 bit dans un pic ?

    Eh bien comment faire pour mettre la sortie CCPx PIN au port RC2 ?
    Comment programmer cela ?
    Car je suppose qu'il ne suffit pas d'initialiser le portC.
    Il faut dire à quoi correspon la broche.
    Car je veux que le PIC libère la fréquence par le port RC2.
    Merci.

Discussions similaires

  1. pic 16F ecriture et lecture d'un bit en memoire
    Par alainav1 dans le forum Électronique
    Réponses: 16
    Dernier message: 21/06/2009, 21h28
  2. C pour PIC : récupérer le nième bit d'un entier
    Par Toufinet dans le forum Électronique
    Réponses: 24
    Dernier message: 21/02/2009, 13h10
  3. passer de 16 bit de la sortie du FIFO a 8 bit a l'entrée de l'UART
    Par invite6d135795 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/07/2008, 20h41
  4. memorisation etat entrée pic
    Par alainav1 dans le forum Électronique
    Réponses: 19
    Dernier message: 09/11/2007, 16h54
  5. Comment couper un mot binaire de 16 bit en 2 sur le 16F876
    Par Coch08 dans le forum Électronique
    Réponses: 8
    Dernier message: 24/04/2007, 07h56
Découvrez nos comparatifs produits sur l'informatique et les technologies.