Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Cast des variables ?
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonsoir à tous ,
Je me pose la question des "cast" des types de variables .
J'aimerais récupérer la valeur d'une lecture anagogique qui se fait sur 10-bits, par une valeur sur une seule byte . Dans le but d'envoyer ça à mon module radio.
Voici une partie du code :
une variable tempen unsigned int pour stocker ma valeur en 10-bit
Ensuite je déclare donc en Charmes variables de joysticks à envoyer
j'ai l'impression que c'est pas top !
Je me pose la question des "cast" des types de variables .
J'aimerais récupérer la valeur d'une lecture anagogique qui se fait sur 10-bits, par une valeur sur une seule byte . Dans le but d'envoyer ça à mon module radio.
Voici une partie du code :
une variable tempen unsigned int pour stocker ma valeur en 10-bit
Ensuite je déclare donc en Charmes variables de joysticks à envoyer
j'ai l'impression que c'est pas top !
Code : Tout sélectionner
char Joystick_D_HB, Joystick_D_DG, Joystick_G_HB, Joystick_G_DG;
unsigned int temp ;
---
---
---
ADPCH = ADC_RD7; // On change de broche pour lire la suivante icic RD7
delay_ms(1);
ADCON0.ADGO = 1; // lancement de la conversion
while (ADCON0.ADGO); // On attend la fin de la conversion
temp = (ADRESH<<8) + ADRESL; // On enregistre le résultat
Joystick_G_DG = temp >> 2 ;
Cast des varaibles ?
Cast des variables ?
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Temps-x a écrit :Source du message ça veut dire 0 ou 1 si j'ai bien compris la question
Oups , une seule byte ! lol
Correction effectuée dans le premier post
Cast des variables ?
Et pourquoi tu envoies pas directement les octets ADRESH et ADRESL ?
Sinon,
unsigned char tempH = temp >> 8;
unsigned char tempL = temp & 0x0f;
Le cast n'est pas forcément nécessaire, il faudrait savoir quel est son but.
SendChar(temp>>8);
SendChar(temp);
On peut avoir la doc du module radio, depuis le temps que t'en parles :)
Sinon,
unsigned char tempH = temp >> 8;
unsigned char tempL = temp & 0x0f;
Le cast n'est pas forcément nécessaire, il faudrait savoir quel est son but.
SendChar(temp>>8);
SendChar(temp);
On peut avoir la doc du module radio, depuis le temps que t'en parles :)
Cast des variables ?
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonsoir satinas,
Pour limiter le nombre de BYTES à envoyer !
Car je galère a faire un truc propre! Je mélange tout .
J'ai 4 lectures analogiques à faire avant chaque envoie et deux trois autres bricoles.
Voici la notice de mon module radio ( un peu d'aide ne serait pas de refus aussi .. ) . La notice n'est pas en ligne il faut la demander après avoir acheter un module.
satinas a écrit :Source du message Et pourquoi tu envoies pas directement les octets ADRESH et ADRESL ?
Pour limiter le nombre de BYTES à envoyer !
Car je galère a faire un truc propre! Je mélange tout .
J'ai 4 lectures analogiques à faire avant chaque envoie et deux trois autres bricoles.
Voici la notice de mon module radio ( un peu d'aide ne serait pas de refus aussi .. ) . La notice n'est pas en ligne il faut la demander après avoir acheter un module.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Cast des variables ?
Pour envoyer une valeur 16 bits temp de type unsigned int (et pas unsigned char comme tu as mis plus haut !)
On envoie l'octet de poids fort, ensuite l'octet de poids faible, et la fonction SendByte() acceptera cela :
void SendByte(unsigned char data);
SendByte(temp>>8);
SendChar(temp);
Même si le compilateur considère que les char sont unsigned par défaut, je trouve plus propre de le spécifier quand on manipule des octets non signés.
On envoie l'octet de poids fort, ensuite l'octet de poids faible, et la fonction SendByte() acceptera cela :
void SendByte(unsigned char data);
SendByte(temp>>8);
SendChar(temp);
Même si le compilateur considère que les char sont unsigned par défaut, je trouve plus propre de le spécifier quand on manipule des octets non signés.
Cast des variables ?
Bonsoir,
Tu veux dire : 4 lectures numériques
Dans ta configuration tu prends une Justification à gauche, comme ça tu utilises juste ADRESH
ADRESH = 512, 256, 128, 64, 32, 16, 8, 4
Total de ADRESH = 1020
ADRESL = 2, 1
Total de ADRESL = 3
Comme tu peux le voir ADRESL est insignifiant, et sa sert à rien de le compter
__________________________________________________________________________________________________________________
Sinon l'autre méthode consiste à faire une division par 4 pour avoir un octet
Si la somme de ADRESH et de ADRESL font 1023 tu le divises par 4, ça te fera un octet
A+
4 lectures analogiques
Tu veux dire : 4 lectures numériques
Dans ta configuration tu prends une Justification à gauche, comme ça tu utilises juste ADRESH
ADRESH = 512, 256, 128, 64, 32, 16, 8, 4
Total de ADRESH = 1020
ADRESL = 2, 1
Total de ADRESL = 3
Comme tu peux le voir ADRESL est insignifiant, et sa sert à rien de le compter
__________________________________________________________________________________________________________________
Sinon l'autre méthode consiste à faire une division par 4 pour avoir un octet
Si la somme de ADRESH et de ADRESL font 1023 tu le divises par 4, ça te fera un octet
A+
Cast des variables ?
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Temps-x a écrit :Source du message Sinon l'autre méthode consiste à faire une division par 4 pour avoir un octet
Si la somme de ADRESH et de ADRESL font 1023 tu le divise par 4, ça te fera un octet
A+
Oui ca c'est celle que j'utilise. je divise par 4 avec mon >>2 .
Mais ta méthode d'alignement à gauche , est simplement très maligne !!! parfaite, rapide et simple ... fallait y penser .
Cast des variables ?
Cast des variables ?
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 33 invités