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.   

Full 6.6.1 Mikro C For Pic 2015




It is the moment to stop using Demo version. Now from here you could download, install Full 6.6.1 Mikro C For Pic 2015.






Aymen Lachkhem 

Saturday, June 25, 2016

Winning-v-Losing Trade with Same Setup

The difference between a winning trade and a losing trade with the same setup is the order flow.

This is key. I don't think I can emphasize this more. If you are not tracking order flow then you are trading with a blindfold.

Order flow should be in the direction of your trade at key levels where you trigger the trade. Whatever you use to trigger a trade, requiring the order flow to be strongly in the direction of the trade greatly increases the probability of the price moving in the direction of your trade.

The first pic shows the same indicators I have used since this blog began in 2009. What the arrows show is the order flow meeting requirements I have had programmed. The order flow helps not only identify the trades at key support and resistance areas but also show continuity of order flow. In this pic, price hit my FavFib and order flow confirmed that the sellers hit the market hard.

Pic 2 shows even more information about the volume imbalance within each bar. This more detailed information does not always need to be seen unless I am scalping. I do look at the detailed bar at the key levels. In this case, you can see the sellers inside the bar hitting the bid.

NinjaTrader 8 is still in beta and still has a number of issues. Hopefully all these will be resolved soon. However, the ability of NinjaTrader 8 to load ad use bid and ask data and micro second time stamping is a quantum step forward for order flow traders.