Bonjour.
Voila, j'aimerais savoir comment mémoriser un mot 16 bit dans un PIC16F1936.
Merci.
-----
Bonjour.
Voila, j'aimerais savoir comment mémoriser un mot 16 bit dans un PIC16F1936.
Merci.
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'.
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.
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
Salut
Ok donc il n'y a pas a indiqué l'adresse mémoire alors ?
Aurais-tu un exemple de code en C ?
Merci
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
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
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.
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 ?
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.
Je viens de regarder dans le datasheet du pic mais il n'y a rien concernant l'uart, est-ce normal ?
Section 20 : EUSART.
Ok merci je vais regarder ça.
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 ?
Si je réserve ou si je ne réserve pas cet emplacement ?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.
Merci
Salut.
Pour le port série c'est l'UART qu'il faut utiliser. Je ne pense pas que le SPI soit compatible.
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.Si je réserve ou si je ne réserve pas cet emplacement ?
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.
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 ?
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.
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.
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
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.
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.