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

Recherche avancée

Programmation d'un PIC18F2550 pour USB HID

Envoyé par ghostevil 
Programmation d'un PIC18F2550 pour USB HID
mercredi 25 mai 2011 08:24:49
Bonjour à tous,
Je débute en programmation d'usb. Je dois reprogrammer un pic qui possède déjà un programme contrôlant l'état de ses sorties grâce à un programme sur un pc et via une liaison USB. Or ce programme est en assembleur, et mon rôle est de le faire en C. J'utilise donc MPLAB et C18 ainsi que MPLAB ICD3 pour le programmer.
Pour le moment j'arrive à allumer ou éteindre des LEDs branchées sur les sorties du PIC mais je galère pour la partie en USB.
Et quand je connecte ma carte à mon pc, il détecte un périphérique HID, avec les bons PID, VID et Rev mais il me met : "Ce périphérique ne peut pas démarrer. (Code 10)" donc je suppose que j'ai du oublier des appels de fonction ou autre...

Voila le lien

Cela comprend un fichier ZIP avec le programme actuel (en C) et un fichier assembleur de l'ancien programme.

Après des tests en commutant les sorties en fonction de l'état de USBDeviceState, j'ai remarqué que USBSuspendControl ne changeai pas d'état. Et donc ma fonction ProcessIO ne vérifie pas si il y a eu réception de données.
Quand est-ce que cette variable doit passer à zéro ?

Merci de m'aider SVP, je galère trop...

Re: Programmation d'un PIC18F2550 pour USB HID
samedi 28 mai 2011 15:06:59
Salut,

Je vais te répondre quelque chose qui ne va pas t'aider, j'ai compilé ton code chez moi et je n'ai pas d'erreur quand je branche la carte.

1. As-tu essayé de commenter tous les traitements que tu fais dans ton code (genre commente ProcessIO()) pour voir si le probleme vient pas d'une mauvaise boucle ou quelque chose du style du a ton hardware (j'ai mis ton code sur un 4550 sans hardware spécifique derrière)
2. Que consomme ta carte USB? il est peut être probable que la carte consomme trop (en mA, je ne sais pas ce que tu as dessus) et que windows te protège de l'utiliser. Ici tu aurais mis 32ma
3. Change le PID, peut-être que ton PID est associé à un autre device, j'ai déjà rencontré ce genre de probleme

A++

Benjamin

.: [www.roboticus.org] :. Control your own world !
Re: Programmation d'un PIC18F2550 pour USB HID
dimanche 29 mai 2011 19:03:11
Bonjour à tous, je me permet de demander de l'aide à la suite de ce topic car ce que je désire faire est en lien direct.
Débutant dans l'utilisation du port usb, certe d'un 18f4550, je n'arrive pas à le faire reconnaitre par le pc.

Après de nombreuses recherches sur le net et sur le forum, je ne trouve aucun exemple d'utilisation avec un oscillateur de 48Mhz. Même en modifiant la source pour l'adapter à du 48Mhz (enfin je pense le faire comme il faut) mon pc de le reconnait à aucun moment.

Si quelqu'un pouvait m'aider ou me fournir les sources d'un exemple quel qu'il soit afin de vérifier le bon fonctionnement et la compatibilté avec mon pc. Au niveau des compilo pic j'ai une petite préférence pour le ccs, je peut également utiliser c18 à première vue pas mal utiliser par les membres de ce forum.

Merci de votre aide.
Je précise que mon os est un seven 64 bits.
Re: Programmation d'un PIC18F2550 pour USB HID
lundi 30 mai 2011 11:02:37
Salut,

Je n'ai jamais utilisé de quartz a 48Mhz, mais peux-tu tjrs faire un screenshot de ta configuration qu'on vérifie ensemble?

Essayes-tu d'utiliser ta carte avec le bootloader? j'ai constaté des problèmes sous windows 7 en utilisant le bootlodaer

Es-tu sur de ton hardware?

As-tu essayé le code HID mis en téléchargement sur ce site?

A+

Benjamin

.: [www.roboticus.org] :. Control your own world !
Re: Programmation d'un PIC18F2550 pour USB HID
lundi 30 mai 2011 17:23:06
Voici le montage
le bootloader? késako
le hardware fonctionne j'en suis sur, je l'ai testé en fesant clignoter la led brancher en D1.

Le code mit sur le site, je n'arrive simplement pas à le compiler :
----------------------------------------------------------------------
Debug build of project `F:\dl\hid\HID\MCHPUSB.mcp' started.
Language tool versions: mpasmwin.exe v5.41, mplink.exe v4.39, mcc18.exe v3.38, mplib.exe v4.39
Preprocessor symbol `__DEBUG' is defined.
Mon May 30 19:19:54 2011
----------------------------------------------------------------------
Make: The target "C:\Mes Projets\hid\_output\main.o" is out of date.
Executing: "C:\Program Files (x86)\Microchip\mplabc18\v3.38\bin\mcc18.exe" -p=18F4550 /i"C:\Mes Projets\hid" "main.c" -fo="C:\Mes Projets\hid\_output\main.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
F:\dl\hid\HID\main.c:160:Error [1224] configuration setting 'FCMEM' not recognized
F:\dl\hid\HID\main.c:165:Error [1225] configuration value '28' not recognized for configuration setting 'BORV'
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `F:\dl\hid\HID\MCHPUSB.mcp' failed.
Language tool versions: mpasmwin.exe v5.41, mplink.exe v4.39, mcc18.exe v3.38, mplib.exe v4.39
Preprocessor symbol `__DEBUG' is defined.
Mon May 30 19:19:55 2011
----------------------------------------------------------------------
BUILD FAILED


Edit : Après quelques recherches j'ai réussi a identifier le problème qui est la disparition du registre de conf FCMEM au profit de FCMEN et la valeur 28 passe à la valeur 2.

Bref après la compilation et la programmation du pic je branche celui ci en usb et paf "Périphérique non reconnue".
Je commence à regretter xp.sad smiley



Modifié 1 fois. Dernière modification le 31/05/11 17:30 par Flo.30.
Re: Programmation d'un PIC18F2550 pour USB HID
mardi 31 mai 2011 20:06:12
"Périphérique non reconnue", c'est déjà un bon départ, au moins la connexion s'initialise.

Tu as bien essayé le code HID? pas le code pour le driver full speed de microchip?

Tu essayes en simulation sous proteus, ou tu as réalisé un hardware?

En recompilant le code, tu as regler les flags pour fonctionner a 48Mhz ou tu l'as laissé tel quel? as-tu alors essayé avec un oscillateur a 20Mhz

Si tu as réalisé un hardware, comment as-tu monté ton oscillateur?

A++

Benjamin

.: [www.roboticus.org] :. Control your own world !
Re: Programmation d'un PIC18F2550 pour USB HID
mardi 31 mai 2011 20:38:52
J'ai utiliser le code que tu fourni sur ce site donc le hid. Pour ce qui est du hard là breadboard est mon ami(montage réel) ainsi que proteus.
Les flags pour le 48mhz je les ai pas trouver( je suis vraiment au tout début de c18). J'ai testé avec le 48 bien sur sa marche pas surtout que le signal est envoyee que sur un seul port du pic ce n'est pas un quartz mais un oscillateur à cette fréquence. J'ai testé avec un quartz de 32 (je penser que sa changer pas grand chose) je n'ai pas de 20 mhz sous là main donc si tu peut m'indiquer les registres qui faut modifier pour changer le signal d'horloge je t'en serait reconnaissant.


Merci

Edit : Après avoir trouver comment modifier le type et la valeur de l'horloge le pic est reconnue par seven sans souci (un miracle) par contre il y'a une chose que je ne comprend pas. Où se trouve le nom que remonte le pic au pc "USB HID example - ...". Je me doute qu'il doit bien être défini quelques parts mais impossible de trouver cet endroit.

Reste plus qu'a réussir à attaquer le driver en c/c++.



Modifié 2 fois. Dernière modification le 01/06/11 15:48 par Flo.30.
Re: Programmation d'un PIC18F2550 pour USB HID
mercredi 1 juin 2011 20:57:08
Salut,

Le nom est dans usb_descriptors.c (du moins pour le firmware C18)

ceci dit, ça ne releve pas du miracle ;-) mais juste de la bonne configuration de ton pic

Pour qui est du C/C++ ça ne devrait pas être trop dur, mais je n'ai jamais fait de C++ donc je ne sais pas vraiment t'aider. Tu trouveras par contre des exemples en Delphi et C# sur ce site

A++

Benjamin

.: [www.roboticus.org] :. Control your own world !
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquez ici pour vous connecter