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

Recherche avancée

Problème driver PIC 18F4550

Envoyé par usbrs232 
Re: Problème driver PIC 18F4550
mardi 13 mars 2012 21:50:46
Re ,

Malgré cela j'arrive a envoyer quelque chose sur mon port serie , mais en modifiant le main maintenant la connexion usb ne s'effectue plus . A t'on touché à un paramètre sans le savoir :

Mal placé le pragma code ou autre ??? car c'est le seul endroit du programme que nous avons touché.

Merci et bonne soirée

@++
Igor

Re: Problème driver PIC 18F4550
mercredi 14 mars 2012 18:12:48
Bonjour Benjamin ,

Finalement nous avons trouvé le problème concernant l'echec de l'USB , il provient de l'interruption de l'USART . Il y a une interférence avec le driver que nous arrivons pas à ressoudre.

As tu une idée sur ce problème ?



Merci d'avance ,

@+++
Igor
Re: Problème driver PIC 18F4550
mercredi 14 mars 2012 19:48:23
Salut,

La seule idée qui me vient est que ton interruption pourrait consommer trop de temps et que dès lors le refresh de l'usb ne se fait pas correctement. Le mieux c'est avec un pickit ou un icd de faire un débug en pas à pas voir ce qui se passe

Benjamin

.: [www.roboticus.org] :. Control your own world !
Re: Problème driver PIC 18F4550
mercredi 14 mars 2012 20:42:33
Re ,

Nous avons essayer pas à pas avec pickit2 il reste bloquer dans la boucle d'envoi de donnée ( lettre =0X41) . Je te ci-joint le main et user , Pourrais tu vérifier si tu vois un truc que nous avons pas vu ? Qu'est ce que t'appelle par le refresh de l'usb ???

[www.fileserve.com]

[www.fileserve.com]

j'ai une autre question , concernant l'envoi de donnée si j'envois une lettre sur le portserie ( à travers l'hyperterminal ) , ainsi que l'usart la reçoit et que je transfère sur le buffer de l'usb ( quel fonction dois je utiliser getUSART ?? ). Comment vais je le voir sur ton writeHID ?

Merci pour tout .


Igor
Re: Problème driver PIC 18F4550
jeudi 15 mars 2012 12:05:41
Salut,

Tu dois revoir le principe des interruptions, des flags d'interruptions, .... Comme je te l'ai dis précédemment, tu as des problèmes avec tes flags et c'est ça qui te fait tourner en boucle.

Mettre dans ton code

while(!PIR1bits.TXIF);

N'est pas viable non plus. Si tu dois utiliser les flags d'interruption c'est dans les interruptions et en les resetant dans la procédure d'interruption!

.: [www.roboticus.org] :. Control your own world !
Re: Problème driver PIC 18F4550
jeudi 15 mars 2012 18:24:21
Salut ,

Merci pour tes renseignements , mais après avoir enlevé le GIE qui bloque la communication de l'usb ceci fonctionne maintenant mais bon nous avons pas tout résolu.
Je voulais savoir USBtacks c'est la fonction qui communique avec le PC Si j'ai bien compris?

De même une autre question , là je vais envoyer des trames directement du programme pour l'observer sur le HIDsimple Write , je fais ceci dans le process io avec les fonctions ci-dessous ??

Fonction de reception d'un trame
HIDRxReport(Buffer,PacketSize)

Fonction pour voir si le micro est entrain d'envoer quelque chose ou si il est libre pour envoyer
mHIDTxIsBusy()

Fonction pour envoyer
HIDTxReport(Buffer, PacketSize)


Merci encore .

Igor
Re: Problème driver PIC 18F4550
vendredi 16 mars 2012 18:11:59
Bonjour Benjamin ,

Tout marche pratiquement , j'arrive à envoyer de l'usb et que cela s 'affiche sur lhyperterminal via le rs232 . Un seul point noir le retour si j'écris sur l'hyperterminal ça ne marche pas , mais ceci vient de l'interruption de USART que je maitrise mal .On dirait que j'ai un problème de priorité entre usart et l'usb . J'ai juste ce petit point à régler et j'ai terminé.

Pourrais tu me dire en quoi l'interruption de l'usart empeche l'usb qui fait que je perds ma reconnaissance sur le PC .? Malgré que j'ai enlevé le GIE dans mon programme interruption.

Merci
@++
Re: Problème driver PIC 18F4550
vendredi 16 mars 2012 19:52:58
Salut,

Oui tu dois te servir de fonctions HIDTX, HiDRx ...

Le problème que je présume avec tes interruptions c'est que comme tu ne reset pas correctement les flags, le processeur retourne tout le temps dans le code d'interruption. Dès lors ton processeur ne sait plus s'occuper de la fonction USBTask, qui n'est dès lors, a mon avis plus jamais exécutée.

Une façon de la constaté est a chaque fois que tu entres dans la routine d'interruption de changer l'état d'une led (allumer, sortir). Avec un oscilloscope tu verras si, en effet, la routine bouffe toute la consommation.

A+

Benjamin

.: [www.roboticus.org] :. Control your own world !
Re: Problème driver PIC 18F4550
lundi 19 mars 2012 11:30:53
Bonjour Benjamin,

J'ai donc reussi à avoir l'interruption en gardant la connexion de l'usb ( C'est le Top ) .Malheureusement je perds mon emission de l'usb vers l'uart :

Voici le code que j'ai pour l'interuption :

void interruption(void) // Fonction d'interruption
{
USBTasks(); // USB Tasks
INTCONbits.GIE=0;

if(PIR1bits.RCIF)

{
DB5 = 0;
Data=RCREG; // Place le caractère reçu dans Data
RCSTAbits.CREN=0; // Désactive la réception de donnée

envoi_donnee(Data);
// Temporisation(10);
RCSTAbits.CREN = 1;
PIR1bits.RCIF=0;


}
DB5 = 1;
INTCONbits.GIE=1; // On re active les interruption a 0
PIE2bits.USBIE=1;
}



Voici le code pour l'envoie de donnée :


mHIDTxIsBusy();
if (HIDRxReport(Buffer,PacketSize ))
{
for ( i=0; i<PacketSize; i++)
{
envoi_donnee(Buffer);
}
}


Il m'envoie plus rien , très étonnant . As tu une idée sur ce petit problème ?


Merci d'avance

Igor
Re: Problème driver PIC 18F4550
lundi 19 mars 2012 17:37:01
Re Benjamin ,

Merci pour tout en tout cas , tout marche très bien .

J'ai une dernière question pour le soft coté pc , j'aimerai crée un soft idem au tien mais dans le quel je pourrai écrire et recevoir les chaines de caractères. Je compte le faire en VB Pourrais tu me d'aider pour réaliser la partie USB . Je suis novice pour la prog en VB.

Merci

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

Cliquez ici pour vous connecter