Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

Au sujet de RTS/CTS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » jeu. 4 janv. 2018 18:55

Bonsoir à tous,

Je ne sais pas trop comment utiliser ou interpréter la sortie RTS du module.

Il s'agit d'une sortie, c'est donc le module radio qui signale au PIC qu'il est disponible ou non pour recevoir des données ?
Donc dans la logique, si il est activé , donc mon PIC reçoit un état bas sur sa broche, alors le module ne peut rien recevoir donc il ne faut rien lui envoyer ?
Donc mon PIC doit envoyer des infos au module radio seulement si la broche du PIC est à l'état haut ?

Sans titre.jpg


Ce qui donnerais dans mon programme :

Code : Tout sélectionner

#define RTS        PORTC.B5 // Entrée

...
...
...



// Cette fonction envoie au module radio les valeurs des potars pour les moteurs
void Envoi_Potar_TOR(){

 if (RTS == 1){    // Je vérifie que le module est prêt a recevoir
 
     
//Envoi d'un message
     UART1_Remappable_Write(0x02);             // Start
     UART1_Remappable_Write(0x00);             // Commande
     UART1_Remappable_Write(0x04);             // Nbe de DATA
     UART1_Remappable_Write(Joystick_G_DG);    // DATA
     UART1_Remappable_Write(Joystick_G_HB);    // DATA
     UART1_Remappable_Write(Joystick_D_DG);    // DATA
     UART1_Remappable_Write(Joystick_D_HB);    // DATA
     UART1_Remappable_Write(0x02^0x00^0x04^Joystick_G_DG^Joystick_G_HB^Joystick_D_DG^Joystick_D_HB);   //CS
     
  
}   
 
}
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Au sujet de RTS/CTS
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#2 Message par paulfjujo » jeu. 4 janv. 2018 19:52

j'interpreterai plutot le contraire

if (RTS == 0){ // Je vérifie que le module est prêt a recevoir
//Envoi d'un message

RTS , PRET à Envoyer est actif à l'etat bas
si à RTS est à 1, l'UART n'acceptera plus de bytes en reception

me trompe-je ?
Aide toi, le ciel ou FantasPic t'aidera

Au sujet de RTS/CTS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » jeu. 4 janv. 2018 20:07

Bonsoir Paul,

Non tu as juste !

Donc dans la logique, si il est activé , donc mon PIC reçoit un état bas sur sa broche,..

La j'ai juste

... alors le module ne peut rien recevoir donc il ne faut rien lui envoyer ?

La j'ai faux , car le module est donc ready ! et non Busy .

C'est donc quand la broche de mon PIC est à l'état 0 que je peux envoyer des donnés au module radio.

Code : Tout sélectionner

// Cette fonction envoie au module radio les valeurs des potars pour les moteurs
void Envoi_Potar_TOR(){

  if ( 
RTS == 0){          // Si RTS est a l'état 0 alors le module est libre, je peux lui envoyer
     //Envoi d'un message
     
UART1_Remappable_Write(0x02);             // Start
     
UART1_Remappable_Write(0x00);             // Commande
     
UART1_Remappable_Write(0x04);             // Nbe de DATA
     
UART1_Remappable_Write(Joystick_G_DG);    // DATA
     
UART1_Remappable_Write(Joystick_G_HB);    // DATA
     
UART1_Remappable_Write(Joystick_D_DG);    // DATA
     
UART1_Remappable_Write(Joystick_D_HB);    // DATA
     
UART1_Remappable_Write(0x02^0x00^0x04^Joystick_G_DG^Joystick_G_HB^Joystick_D_DG^Joystick_D_HB);   //CS
   
}
 
 } 


Penses-tu que c'est vraiment utile de gérer cela ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Au sujet de RTS/CTS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#4 Message par Jérémy » jeu. 4 janv. 2018 20:52

Du coup je me dis que je peux aussi faire l'inverse. ?

C'est à dire quand mon PIC reçoit une info par l'interruption UART, je peux signaler au module radio que le PIC est occupé en mettant la Broche CTS du pic à 1 ! Et à la fin de la réception je le repasse à 1.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Au sujet de RTS/CTS
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#5 Message par paulfjujo » dim. 28 janv. 2018 17:21

bonjour Jeremy,

J'ai du aussi m'y mettre au RTS/CTS , pour une application en ASM avec un 16F874
programmateur pour AT89C2051 !
La difficulté est qu'un cordon TTL/USB 5V ne gere pas ces signaux (4 fils seulement)
Heureusement j'avais gardé un cordon USB / DB9 RS232 Trendnet TS59 .. qui a ces signaux sur la DB9 en niveaux RS232
donc rajout d'un MAX232 ..( recupéré sur un montage 16F628 DDS )
j'y ai rajouté les 2 info manquantes .. et HOP.

Le role de CTS et RTS me parait un peut surfait lorsqu'on est à 9600 bauds et un cycle d'instruction de 1µS ( dans mon cas FOSC=4MHz)
de plus en langage asm ..
Je ne suis d'ailleurs pas arrivé à mettre ce role en evidence .

Le Terminal REALTERM peut gerer le flux de controle RTS/CTS.

nota: j'ai ussi un cordon USB/LTTL 3,3V avec 6 fils .. CTS/RTS ??? pas encore testé.

pour info , je vous donne ma connectique ,qui doit etre valable pour moulte PIC <-> PC COM.

Interface_TTL_RS232_ICL232.jpg
Aide toi, le ciel ou FantasPic t'aidera


Retourner vers « Généralités sur les PICs »

Qui est en ligne

Utilisateurs parcourant ce forum : Bing [Bot] et 37 invités