begin process at 2010 03 18 13:31:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Les PIC

 > 

Microcontroleur PIC


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Microcontroleur PIC

mercredi 15 février 2006 à 09:22:19 | Microcontroleur PIC

pickolo

salut
j'utilise un PIC 16F628 pour traiter une serie d'information venant d'un PC via le port RS232.le probleme se posse lorsque je doit envoyer les informations a 4 equipements que j'ai monté avec toujours les meme PIC 16F628. Les informations du PC passe par un HUB construit a cette effet et chaque equipements a une adresse personnelle. Le probleme est que lorsque j'envoi les infos pour un equipement je ne peux plus envoyer d'autre informations aux autres equipements du moins ils ne reagissent plus aux nouveaux messages. Mais lorsque je fais un reset sur un equpement et que j'envoi un message a cet equipement il reagit.
je veux commender ces 4 equipements sans avoir a faire de reset pour que l'un traite les information quand un precedent en a deja traité.
Pouvier vous m'aider?

lundi 20 février 2006 à 18:08:24 | Re : Microcontroleur PIC

frobinet

Réponse acceptée !
Salut, Le protocole série n'a pas d'adressage ! Donc qui s'occupe de rediriger est-ce que c'est le Hub qui determine la cible ou est-ce que c'est le microcontroleur qui considère que c'est pour lui ou pas ? Comment les autres sont mis en attente (mise en attente logiciel ou matériel DTR/DSR) ? Petite astuce : Dans notre cas, nous envoyons dans chaque trame emise une entête reprenant la cible ce qui permet à chaque unité de vérifier si le message est pour lui et en cas de plantage il n'y a pas à faire de fonction de reveil!
mardi 21 février 2006 à 09:27:43 | Re : Microcontroleur PIC

pickolo

slt Frobinet

Dans ma conception actuelle ce sont les microcontroleurs de chaque boitiers qui reconnaisent les informations.car chaque information a une entete .pratiquement voila un extrait du code pour l'entete.

ADRESSE1 bsf RCSTA,CREN ; debut de réception
 
  btfss PIR1,RCIF  ; attend que le flag soit à 1 ==> dés que l'octet est reçu et
                                ; transféré  dans rcreg
  
goto $-1
  movfw RCREG   ; charger octet reçu dans W
  movwf CTRL_ADRESSE ; le sauver l'octet d'adresse
  movfw  CTRL_ADRESSE ; on charge RCREG dans W
  xorlw 0x31  ;adresse définie pour la CABINE 1
  btfss STATUS,Z 
  goto ADRESSE1 
  
  btfss PIR1,RCIF  ; attend que le flag soit à 1 ==> dés que l'octet est reçu et
                               ; transféré dans rcreg
  
goto $-1
  movfw RCREG   ; charger octet reçu dans W
  movwf CTRL_PHONE ; le sauver l'octet d'adresse
  movfw  CTRL_PHONE ; on charge RCREG dans W
  xorlw 0x41  ;Téléphone décroché
  btfss STATUS,Z 
  goto RECEPTION1 
  call MES_AFF6

Pour la mise en attente des autres je ni ai vraiment pas pensé
Et je ne sais pas trop grande chose sur le DTR/DSR mais je vais faire des recherches tout à l'heure.
merci pour ton aide
mon contact msn si tu veux: kolotcholoma@hotmail.com

mardi 21 février 2006 à 10:13:13 | Re : Microcontroleur PIC

frobinet

Salut, Suivant les lignes de ton programme, tu reboucle sur le test de chaque caractère reçu par le port série jusqu'à ce que tu reconnaisse le numéro de cabine et pas seulement sur une entête ! La longueur de ta trame lorsque les deux interlocuteurs se parle est elle importante et est-tu sûr que dans une des trames que reçoit la cabine 2 (0x32) tu n'utiserai pas un 0x31 qui passerai du coup la cabine 1 en reception alors qu'elle ne devrait pas.
mardi 21 février 2006 à 12:16:11 | Re : Microcontroleur PIC

pickolo

Hi

Pour ce qui est des trames envoyer aux differentes cabines il n ya pas de risque de repeter par exemple l'adresse d'une autre cabine.j'ai devollopé parallelement une interface en VB qui me génére les trames pour chaque cabine avec les adresses comme entete de chaque trame.
comme je l'ai dit precedament quand j'envoi les informations pour la cabine 1 tout marche correctement ;par ailleurs si je souhaite envoyer des infos a la cabine 2 rien et il faut d'abors faire un reset de la cabine 2 avant puis renvoyer la trame pour observer quelque chose.
Et ce probleme se posse quand j'en vois plusieurs octets (12 octets environ )de suite a la cabine 1.
sinon pour 2 octets envoyés il n'ya pas de probleme a communiquer avec la cabine 2 bizar!
vois tu peux de quoi je parle?
comment faire une procedure de mise en attente?

mardi 21 février 2006 à 12:53:08 | Re : Microcontroleur PIC

frobinet

Réponse acceptée !
Yes but, As tu un exemple de trame qui fais planté ? (les douzes octets qui font planté à coups sûr par exemple !)
mardi 21 février 2006 à 16:54:13 | Re : Microcontroleur PIC

pickolo

ADRESSE1 bsf RCSTA,CREN ; debut de réception
 
  btfss PIR1,RCIF  ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1
  movfw RCREG   ; charger octet reçu dans W
  movwf CTRL_ADRESSE ; le sauver l'octet d'adresse
  movfw  CTRL_ADRESSE ; on charge RCREG dans W
  xorlw 0x32  ;adresse définie pour la CABINE 1
  btfss STATUS,Z 
  goto ADRESSE1 
  

  btfss PIR1,RCIF  ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1
  movfw RCREG   ; charger octet reçu dans W
  movwf CTRL_PHONE ; le sauver l'octet d'adresse
  movfw  CTRL_PHONE ; on charge RCREG dans W
  xorlw 0x41  ;Téléphone décroché
  btfss STATUS,Z 
  goto RECEPTION1 
  call MES_AFF6
  
RECEPTION1 
          
  movfw CTRL_PHONE ;RCREG  ; charger octet reçu dans W
  movwf X0  ;  sauver
  nop
  
         
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1      
  movfw RCREG  ; charger octet reçu dans W
  movwf X1  ;  sauver
  nop
  
     
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1       
  movfw RCREG  ; charger octet reçu dans W
  movwf X2  ;  sauver
  nop
  

  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1  
  movfw RCREG  ; charger octet reçu dans W
  movwf X3  ;  sauver
  nop 
  
         
  btfss PIR1,RCIF  ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1       
  movfw RCREG  ; charger octet reçu dans W
  movwf X4  ;  sauver
  nop 
  
     
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1 
  movfw RCREG  ; charger octet reçu dans W
  movwf X5  ;  sauver
  nop


  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1 
  movfw RCREG  ; charger octet reçu dans W
  movwf X6  ;  sauver
  nop

         
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1       
  movfw RCREG  ; charger octet reçu dans W
  movwf X7  ;  sauver
  nop

     
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1       
  movfw RCREG  ; charger octet reçu dans W
  movwf X8  ;  sauver
  nop 


  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1      
  movfw RCREG  ; charger octet reçu dans W
  movwf X9  ;  sauver
  nop

         
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1   
  movfw RCREG  ; charger octet reçu dans W
  movwf X10  ;  sauver
  nop
  
    
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1    
  movfw RCREG  ; charger octet reçu dans W
  movwf X11  ;  sauver
  nop

    
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1       
  movfw RCREG  ; charger octet reçu dans W
  movwf X12  ;  sauver
  

         
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1   
  movfw RCREG  ; charger octet reçu dans W
  movwf X13  ;  sauver
  nop  

     
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1    
  movfw RCREG  ; charger octet reçu dans W
  movwf X14  ;  sauver
  nop
  

  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1       
  movfw RCREG  ; charger octet reçu dans W
  movwf X15  ;  sauver
  nop

         
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1   
  movfw RCREG  ; charger octet reçu dans W
  movwf X16  ;  sauver
  nop 

     
  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1    
  movfw RCREG  ; charger octet reçu dans W
  movwf X17  ;  sauver
  nop
  

  btfss PIR1,RCIF ; attend que le flag soit à 1 ==> dés que l'octet est reçu et transféré dans rcreg
  goto $-1       
  movfw RCREG  ; charger octet reçu dans W
  movwf X18  ;  sauver
  nop     


  bcf RCSTA,CREN ; FIN de réception

TRANSFERT1 ;call Clear_LCD ;on efface l'ecran

 ;**************************************************
 ;**********************  LIGNE1 *******************
   
  movlw ' '  ;espace
  call LCD_PUTCHAR

  movlw ' '  ;espace
  call LCD_PUTCHAR

 ;*****************************************
 ;*************** ************ *************

  movfw X0  ;prémiere lettre du type 
  call LCD_PUTCHAR

  movfw X1  ;deuxième lettre du type 
  call LCD_PUTCHAR

  movfw X2  ;troisième lettre du type 
  call LCD_PUTCHAR
 
 ;******************************************

  movlw ' '  ;espace
  call LCD_PUTCHAR

  movlw ' '  ;espace
  call LCD_PUTCHAR

 ;**********************************************
 ;*************** ***************** *************

  movfw X3  ;prémiere lettre 
  call LCD_PUTCHAR

  movfw X4  ;deuxième lettre 
  call LCD_PUTCHAR

  movfw X5  ;troisième lettre 
  call LCD_PUTCHAR

  movfw X6  ;quatrième lettre 
  call LCD_PUTCHAR

  movfw X7  ;cinquième lettre 
  call LCD_PUTCHAR

  movfw X8  ;sixième lettre 
  call LCD_PUTCHAR

  movfw X9  ;septième lettre 
  call LCD_PUTCHAR

 ;******************************************

  movlw ' '  ;espace
  call LCD_PUTCHAR

  movlw ' '  ;espace
  call LCD_PUTCHAR


 ;*******************************************
 ;///////////////////////////////////////////
 ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 ;*******************************************

 ;**************************************************
 ;**********************  LIGNE2 *******************

  movlw 0xC0  ;basculement a la ligne 2 première position a gauche
  call LCD_PUTCMD ;envoi la commande au LCD

 ;*******************************************
 ;*************  TEMPS ECOULE****************

  movlw 'T'  ;T pour indiquer la zone de chrono (temps)
  call LCD_PUTCHAR

  movlw ':'  ;deux point d'espacement
  call LCD_PUTCHAR

 ;*******************************************

  movfw X10  ;dizaines 
  call LCD_PUTCHAR

  movfw X11  ;unités 
  call LCD_PUTCHAR

 ;*******************************************
  movlw ':'  ;deux point d'espacement
  call LCD_PUTCHAR
 ;*******************************************

  movfw X12  ;dizaines 
  call LCD_PUTCHAR

  movfw X13  ;unités 
  call LCD_PUTCHAR

 ;********************************************
  movlw ' '  ;espace
  call LCD_PUTCHAR

  movlw ' '  ;espace
  call LCD_PUTCHAR

 ;******************************************** 
 ;****************************** **************

  movlw 'F'  ;
  call LCD_PUTCHAR

  movlw ':'  ;deux point d'espacement
  call LCD_PUTCHAR

 ;********************************************


  movfw X14  ;
  call LCD_PUTCHAR

  movfw X15  ;
  call LCD_PUTCHAR

  movfw X16  ;
  call LCD_PUTCHAR

  movfw X17  ;
  call LCD_PUTCHAR

  movfw X18  ;
  call LCD_PUTCHAR  

  goto ADRESSE1

mardi 21 février 2006 à 17:01:43 | Re : Microcontroleur PIC

pickolo

ci.dessus c'est la trame la plus longue que les pic recoivent.
regarde s'il ya quelque chose d'anormal qui planterai le reste des cabines fait moi signe.
mais ça marche bien pour une cabine.
A +

mardi 21 février 2006 à 17:19:52 | Re : Microcontroleur PIC

frobinet

Le caractère de sélection de la cabine est 0x31 soit '1' or tu envoie visiblement un afficheur horaire (LIGNE 2), il y a de grande chance que la trame contienne au moins un caractère numerique '2','3','4' ce qui fais que la mauvaise cabine croit que la trame est pour elle et rentre dans ta fonction de reception, la trame n'étant pas complète elle n'est plus en attente du prochaine ordre. Choisit commme adresse de Cabine les adresses 0xB1, 0xB2, 0xB3, 0xB4 et comme adresse de racrochage un 0xBA comme ça il y a peu de chance que t'utilise ces carcatères
mardi 21 février 2006 à 18:45:50 | Re : Microcontroleur PIC

pickolo

ok j'ai essayer ça et je te contact pour te donner une suite
merci encore
et A+


Cette discussion est classée dans : informations, pic, microcontroleur, equipements, 16f628


Répondre à ce message

Sujets en rapport avec ce message

pic 16f628 [ par theyoupione ] je suis un débutant dans la programmation de PIC et je voudrai savoir comment réaliser avec le 16f628:la réception de 2 signaux analog (d'un inclinomè espion clavier pic 16f628 [ par pic16f ] Bonjour,  Quelqu'un pourrait-il m'aider à écrire un petit programme assembleur permettant à un PIC 16f628  d'espionner les touches d'un clavier matric application microcontroleur PIC [ par vbfrance02 ] salut, je vx realiser une application (une sorte emetteur-recepteur) a base de microcontroleur PIC qui permet de declencher automatiquement un enregi utiliser un pic 16f84 pour actionner un relais à une heures précise [ par ydelanick ] Je suis dans un lycée technique et on nous à donné comme projet de réaliser le systeme que je vous décris. Je voudrais actionner un relais 12V-DC à l' besoin d'aide svp [ par sniple ] bonjour a tous, je travaille mnt sur un projet,j'ai fait l'etude théorique et j'ai des difuculté a propos du programmation. mon projet porte sur la co pic 16f84 [ par lilyange ] c lilyangebonsoir a tous ,voila je debute dans la programmation des pic , et j'ai comme projetde générer un signal carré a l'aide d'un pic 16f84 donc envoie de commande AT d'un pic 18F452 vers module GPRS [ par mannouing ] slt,je fait un programme en C de la liaison série RS232. j'arrive pas a comprendre comment envoyer les commande AT pour la communication  de  pic avec PIC 16F877 et MMC (sd) [ par disiz02 ] Bonjours, Je suis étudiant et je voudrais avoir de l'aide a propos de la programmation d'un PIC 16f877 qui me permettra de connecter et de prendre l Communications série avec PIC [ par Neszreth ] Bonjour,je souhaiterais savoir s'il est possible de faire dialoguer un pic 18f2680 en série sur plusieurs broches.Mon problème: je cherche à réaliser


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,527 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales