Thursday, June 30, 2016

USB [HID] Communication Using PIC18F And Mikro C.

Bonsoir, Aujourd'hui je viens pour vous expliquer le protocole USB de fa�on � r�pondre a ce genre de questions :



  • C'est quoi USB.
  • Pourquoi USB.
  • USB ou Serial Communication.
  • Comment il fonctionne.
  • Comment on peut le trouver dans un microcontr�leur tels que PIC18F4550.
  • Comment assurer la liaison entre ce dernier et le monde externe.









Alors, avant de commencer tout il faut savoir les outils qu'on va utiliser pour atteindre notre objectif.




Commen�ons � r�pondre au question si dessus:

C'est quoi l'USB:

USB ou universal Serial Bus c'est un bus de communication et au m�me temps alimentation, l'histoire est commenc�e en 1960 lorsque 7 grandes familles de technologie de nos jours ont d�cid� de mettre en oeuvre un bus unique de communication entre l'ordinateur et les machines �lectroniques externes. Ces grandes 7 familles sont : Compaq, DEC, IBM, Intel, Microsoft, NEC and Nortel.



Certified USB.svg


Alors depuis ces jours la majorit�, �a si c'est pas tout les pi�ces �lectroniques construites sont interfac�es par des ports USB (Clavier,Souris,Webcam,.....).
La naissance de ce dernier a mis un echec au Serial Port connu (PortCOM) puisque:
L'USB fonctionne avec des hautes vitesses comme ils offre la possibilit� d'alimenter les pi�ces connect�es � l'ordinateur.

L'USB est simple et autonome il suffit de le brancher ou le d�brancher.

L'USB (Bus) est capable de supporter jusqu'a 127 p�riph�riques connect�es si on fonctionne sous la technologie 8 bits.
si le premier bit est sp�cifie le mode (en Anglais Modifier) comme a l'exemple d'un clavier du PC le premier bit celui le responsable d'informer si la touche shift ou Alt est appuy�e.  Alors automatiquement il sera pas utilis� prenons le reste, on a 2*2*2*2*2*2*2 = 127.

L'USB contient un vitesse de communication �norme, prenons l'exemple de l'USB 3.0, ce dernier est capable de faire transf�rer 5 Gbit par seconde. Mieux que �a je pense pas qu'il y a .

L'USB est simple et facile il s'agit de 4 Pins, ou deux sont fournit a l'alimentation (+Vcc = 5V et GND = 0V) et les deux derniers sont (data+,data-).


Ce qui nous int�resse aujourd'hui c'est pas comment implanter ce dernier sur un �c mais comment faire relier un �c qui inclut ce dernier avec un ordinateur.

Alors prenons l'exemple de Pic 18F4550, ce dernier il est capable de se communiquer via son usb avec le monde externe mais comment?

R�sultat de recherche d'images pour "18f4550"


Les pins 23,24 sont les pins D+ et D- du Pic  alors la communication n�cessite qu'elle se passe � travers ces deux.

faisons une simulation tr�s simple sur isis de ce Pic:



 Les �tapes � suivre les plus importantes sont au Mikro C for Pic, donc il faut : 


  • R�gler le Clock
  • Savoir ou exactement �crire le programme 
  • G�n�rer le fichier descipteur pour adapter le port usb avec l'ordinateur.

Donc avant tout, il faut bien lire quelques notes sur le Datasheat de PIC18F4550.
A la page 26 il est inclut l'architecture interne du g�n�ration du Clock montre que l'USB n�cessite au moins 48Mhz pour fonctionner.
  



Alors que PLL c'est celle qui va convertir la fr�quence d'entr�e 4 en 96 et puisque elle sera pass�e par un diviseur sur 2 on aura en fin un 48Mhz. donc �a diff�re quelle valeur du quartz on utilise si c'est 4 pas comme si c'est 8 ou 16. chaque une provient d'une m�thode de calcul � faire..

A la page 175 du Datasheat on prenons l'architecture m�moire du Pic on remarque que:

L�espace fournit pour les donn�es USB commence depuis 500 Hexa donc au niveau du programme il faut bien noter �a. Aussi le buffer � transf�rer est par d�faut 64 et puisque 64 en d�cimale c'est 50 en Hexa il faut noter �a aussi pour �viter tout genre de chevauchement possible.

Suivez ces �tapes sur Mikro C for Pic:

  1. Cr�er un nouveau Project
  2. Choisissez Pic18F4550 avec Frequence 8 Mhz


  3. Inclure Toutes les librarys et cocher la case pour ouvrir 'Edit project' et Finish

  4. Suivez les modifications suivantes et OK:  


                            
  5. Cliquer Tools puis HID Terminal . Faites ceci puis enregistrez le descripteur dans la m�me directory ou le projet existe.



       
  6. A l�extr�mit� droite cliquez Project Manager puis Add file et ajouter le descripteur construit


                               






unsigned char readbuff[64] absolute 0x500;   
unsigned char writebuff[64] absolute 0x540;

char cnt;
char kk;

void interrupt(){
USB_Interrupt_Proc();
}

void main(void){
ADCON1 |= 0x0F;
CMCON |= 7;

HID_Enable(&readbuff,&writebuff);

while(1){
while(!HID_Read())
;

for(cnt=0;cnt<64;cnt++)
writebuff[cnt]=readbuff[cnt];

while(!HID_Write(&writebuff,64))
;
}
}


Comme il est indiqu� ce programme fournit par Mikroelectronika va permettre au port usb de lire les donn�es entr�es et les r��crire.


Ce deuxi�me programme au dessous est une manipulation directe de la pr�sence de communication USB, L'objectif c'est de clignoter une diode Led via Communication USB. Ici le principe de commande est sur condition de buffer[0] donc il faut pas oublier qu'on a 64.
Pour rendre le travail plus pro une application construite sur C# ou Labview pourra jouer le role de HID Terminal. 



unsigned char readbuff[64] absolute 0x500;   
unsigned char writebuff[64] absolute 0x540;

char cnt;
char kk;

void interrupt(){
USB_Interrupt_Proc();
}

void main(void){
ADCON1 |= 0x0F;
CMCON |= 7;

HID_Enable(&readbuff,&writebuff);

while(1){
while(!HID_Read())
;

for(cnt=0;cnt<64;cnt++)
if (readbuff[0] == 1)
{
Portd.f0 = 1;
delay_ms(500);
Portd.f0 = 0;
delay_ms(500);
}
else
{Portd.f0 = 0;}
while(!HID_Write(&writebuff,64))
;
}
}



Voila une vid�o d�monstrative de fonctionnement avec tout les d�tails a poursuivre sur Mikro C for Pic et au dessous vous trouverez tout le projet gratuitement t�l�chargeable.   

No comments:

Post a Comment