Bienvenu(e)! Identification Créer un nouveau profil

Recherche avancée

C18 avec 18F4550 USB et variable signed - unsigned

Envoyé par xavtronic 
C18 avec 18F4550 USB et variable signed - unsigned
mardi 20 mars 2007 14:19:59
Bonjour,

J'ai un problème avec mes variables sous C18 (version étudiante).

J'utilise l'application de microchip USB pour créer un périférique avec le protocole HID.

Donc revenont aux variables. J'ai déclaré des variable de type int en unsigned et signed. Mon problème est dès que je leur passe une valeur par l'USB tout deviens en signé et meme une valeur 0x80 qui en int devrait etre positive devient néfative...

Avez-vous une solution? J'ai cherché à pas mal de place, mais aucunes solutions...

Voici quand meme le bout de code pour la version signé:

-----------------------------------------------
int X1 = 0;

X1 = Buffer[i+2]; // Mise en forme des données recues
X1 = X1<<8;
X1 = Buffer[i+3] + X1;
-----------------------------------------------
Dans ce vas si je donne une valeur de 0 dans Buffer[i+2] et de 0x80 dans Buffer[i+3] si je relis mes valeur j'ai 0xFF80, mais si je mets 0x01 dans Buffer[i+2] et de 0x80 dans Buffer[i+3], j'ai bien la bonne valeur à la fin.


Et celle pour la version non-signé (rien ne change sauf la déclaration)

-----------------------------------------------
unsigned short vX1 = 0;
vX1 = Buffer[i+4];
vX1 = vX1<<8;
vX1 = Buffer[i+5] + vX1;
-----------------------------------------------
Idem pour cette version (cf. juste au dessus)


Merci pour votre aide... Car la je sais plus quoi faire, j'ai essayé pas mal de truc, meme de tester manuelle et de convertir mes nombre avec le complément à 2, mais rien à faire!

A+
Xavier
[xavtronic.freezee.org]

Re: C18 avec 18F4550 USB et variable signed - unsigned
mardi 20 mars 2007 15:29:50
Salut,

Visiblement c'est pas un probleme de signe, c'est un probleme quand tu envoies 0, si avec 1 ça marche...

Essaye un peu d'envoyer 0x81 et 0x80... 0x81 c'est -127 en signé donc tu devrais voir directement si le probleme est du à un signe (j'en doute) ou à quelque part dans le programme quand tu envoies 0...

Sinon, désolé je ne vois pas

A+
Re: C18 avec 18F4550 USB et variable signed - unsigned
mardi 20 mars 2007 21:22:53
Hello,

J'ai également essayé d'envoyé des nombre suppérieur à 0x80 et toujours le meme problème...

J'ai également essayé de faire des masque et des teste pour les valeurs suppérieru à 0x7FFF (donc négatif), mais sans succès.

Je me demande si ce n'et pas du au décalage de 8bits que je fait...

Il faudra que je refasse plus de test, mais la je dois dire que je ne vois pas d'ou peu venir l'erreur. Si quelqu'un à une autre idée ou théorie je suis preneur.

A+
Xavier
Re: C18 avec 18F4550 USB et variable signed - unsigned
mercredi 21 mars 2007 16:12:51
Hello

Bon en fait j'ai trouvé une solution, peut-etre que ca servira à quelqu'un d'autre aussi donc je la poste.
Les données recues de l'USB sont stocké quand BUffer[] qui est un tableau de char... Mais signé, donc une foi modifié ma ligne c'est bon....

A+
Xavier
Re: C18 avec 18F4550 USB et variable signed - unsigned
mercredi 21 mars 2007 20:10:28
Yop,

En effet des fois on cherche des heures pour des c*****, merci pour l'info

A+

Benjamin
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquez ici pour vous connecter