Aller au contenu


Photo
- - - - -

communication RS232 pic 16f45k en C


  • Veuillez vous connecter pour répondre
5 réponses à ce sujet

#1 SProduction

SProduction

    Membre

  • Membres
  • 28 messages

Posté 10 novembre 2012 - 08:22

Bonsoir à tous,

Je cherche à acquérir des données d'un port série sur un pic.

En effet (à titre d'essai) je vais envoyer des paquets de 8 bits depuis le port série de mon pc. Je souhaiterai que le pic soit capable de me le décoder: Des valeurs (de 0 à 7 pour commencer) seront envoyées sur le port série, et je souhaiterai que le pic puisse les déchiffrer et allumer la led qui correspond (une des 8 leds).

Par contre, je n'ai aucune idée du programme qu'il me faut réaliser pour lire et "déchiffrer" ce informations en C. Quelqu'un pourrait-il me donner une petite piste?

Merci

Seb

#2 Sani300

Sani300

    Habitué

  • Membres
  • PipPip
  • 150 messages
  • Gender:Male

Posté 10 novembre 2012 - 09:30

Jamais fait mais à mon avis regarde le composant MAX232, il pourra à mon avis t'aider !

http://www.ti.com/lit/ds/symlink/max232.pdf
http://goo.gl/SXb9w

#3 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 11 novembre 2012 - 03:18

Jamais fait mais à mon avis regarde le composant MAX232, il pourra à mon avis t'aider !

http://www.ti.com/lit/ds/symlink/max232.pdf
http://goo.gl/SXb9w


Le MAX232 est effectivement le bon composant puisqu'il transforme des données série au format UART TTL en série RS232.
Mais si j'ai bien compris la demande il s'agit plus de la programmation du PIC pour qu'il prenne en charge les échanges.
Côté électronique c'est vraiment simple. Par contre côté code je n'ai jamais utilisé de PIC je ne pait donc pas t'aider. Mais ici la majorité de la caumunaoté travaille sur Arduino, pas de PUC.
Il y a bien permis nous deux ou trois membres qui connaissent les PICs, mais je te conseil de chercher des tutos dédiés aux PICs. Voir même pauser la même question sur un forum dédié a cette famille de microprocesseurs.
Par contre si tu trouves la solution n'hésites pas a nous la donner ;)

Cdlt
Yves

 


#4 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 11 novembre 2012 - 12:06

Hello !

Pour récupérer les paquets sur le port UART, tu dois activer les interruptions qui vont bien. Regarde dans la doc dans la partie UART.
J'essaye de retrouver du code, mais je pense que c'est pour PIC33F...

Mon site internet : http://ferdinandpiette.com/


#5 SProduction

SProduction

    Membre

  • Membres
  • 28 messages

Posté 11 novembre 2012 - 04:19

Merci j'ai trouvé ce que je cherchais!! (je vous poste un exemple de code d'ici 10 minutes...)

#6 SProduction

SProduction

    Membre

  • Membres
  • 28 messages

Posté 11 novembre 2012 - 04:42

Voila le code:


char uart_rd;

void main() {

  ANSELC = 0;                     

  UART1_Init(9600);               
  Delay_ms(100); 
  
  UART1_Write_Text("Start");
  UART1_Write(13);
  UART1_Write(10);

  while (1) { 
                    
    if (UART1_Data_Ready()) {     
      uart_rd = UART1_Read()+1;     
      UART1_Write(uart_rd);       
      
    };
  };
};


En gros: je bosse sur le port C, lorsque je recois une info (valeur) sur le port série ( if (UART1_Data_Ready()) ), je rentre cette valeur dans une variable "uart_rd" en lui ajoutant 1 ( uart_rd = UART1_Read()+1; ) puis je la renvoie vers le PC ( UART1_Write(uart_rd); )

Bien entendu, les 2 dernières étapes peuvent être remplacées par d'autres actions comme la commande d'une led, moteur, envoie d'infos vers un logiciel ou module de restitution vocale, etc...

En ce qui concerne les essais, le meilleur logiciel que j'ai trouvé est Serial Port Monitor. Il permet d'envoyer des valeurs sur le port série, et en meme temps de lire ce qui lui est répondu; il peut bosser en décimal, binaire, hexa, octal, et d'autres encore.


Voilà, voilà,



J'espère que ca en aidera peut etre d'autres qui passeront ici dans quelques temps...

Et encore merci à vous ( => ne pas oublier d'inclure de MAX232 dans le montage ;) )




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users