IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

probleme pour rentrer dans une boucle


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut probleme pour rentrer dans une boucle
    bonjour,
    voila je voudrais fair un truc tous simple.
    je travail avec un pic, sur une liaison serie. lorsque le modem me retourne CONNECT je desire rentrer dans une boucle.
    Pour cela je détect le 'C' de CONECT.

    voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    while(1)
        {
          if (DataRdyUART())
    	{
    	R_UART=ReadUART();
    	        if(R_UART=='C')	
    		{
    		        while(1)
    		        {
    		        //get_net();
    			if ( TickGetDiff(TickGet(), t) >= TICK_SECOND*1)
            			{
    					t = TickGet();
    					LED0_IO ^= 1;            
    				}
     
     
     
    			}					
    	        }
              }
     
          if ( TickGetDiff(TickGet(), t) >= TICK_SECOND/7)
          {
              t = TickGet();
              LED0_IO ^= 1;            // Blink system LED
          }
     
    }

    le code a marché hier matin, mais depuis hier midi cela ne marche plus. J'ai changé des lignes et ecrit d'autres entre temps.... mais rien..

    si qq un a une idée ?

  2. #2
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Est-ce normal que l'on ne sorte jamais du while une fois qu'on y est entré?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
    while(1)
     {
     //get_net();
     if ( TickGetDiff(TickGet(), t) >= TICK_SECOND*1)
      {
      t = TickGet();
      LED0_IO ^= 1;            
      }
     }
    ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut
    pour le moment oui,
    l'appelle des fonctions principales ce fait ds le second while.

    mais pour le moment je n'arrive meme pas a détecter le 'C'
    pourtant le modem me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ...OK..ATM0...OK..at&D0&K0&R0.
     ..OK..ATDT0860922000...CONNECT 46666 V42bis.

  4. #4
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Quel est le type retourné par ReadUART() ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut
    le type est un unsigned int.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    unsigned int ReadUART(void)
    {
        if(UART_MODEbits.PDSEL == 3)
            return (UART_RXREG);
        else
            return (UART_RXREG & 0xFF);
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut
    en fait j'ai l'impression que je ne rentre jamais dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	if (DataRdyUART())
    			{
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char DataRdyUART(void)
    {
        return(UART_STAbits.URXDA);
    }

  7. #7
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par tiya17 Voir le message
    en fait j'ai l'impression que je ne rentre jamais dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	if (DataRdyUART())
    			{
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char DataRdyUART(void)
    {
        return(UART_STAbits.URXDA);
    }
    Il faudrait en être sûr. Avez-vous la possibilité de faire un printf() comme ci-dessous?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (DataRdyUART())
     {
     printf("test\n");
     ...
     }

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut
    oui j'en suis sur désormais, en mode débug le programme reste sur la ligne

    je vien de faire un test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	if (DataRdyUART())
    			{
    				LED0_IO=1;
    				R_UART=ReadUART();
    				if(R_UART=='C')	
    					{
    						while(1)
    ma LED ne s'allume jamais

    snifff lol

  9. #9
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Hmmm... Je ne vois pas alors. Peut-être un problème du côté matériel? Désolé, je n'ai pas d'idée.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut
    c'est ce que je crains....
    mais merci qd meme ;-)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut
    le code comme il est devrait fonctionné, l'uart arrive bien a envoyé des données sur la liaison RS232.
    donc l'uart fonctionne.
    ou cela peut venir d'autre chose encors?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut
    je viens d'essayer avec un autre pic et toujours pareil, je ne rentre pas dans la boucle....

    2 fois un probleme de materiel?
    ou c le programmeur qu'il faut changer?

    j'y retourne

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut
    personne n'a d'idée pour ma boucle,
    une autre facon de voir....

    j'ai bien essayer avec des case mais marche pas non plus.... et de toute facon je suis obliger d'utilisé DataRdyUART()...

    snifff !!!!
    lol

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 43
    Points
    43
    Par défaut
    sa marche avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    while (1)
       {	
             if ( TickGetDiff(TickGet(), t) >= TICK_SECOND/11)
    	{
    		t = TickGet();
    		LED0_IO ^= 1;            // Blink system LED
    	}
     
    	if (DataRdyUART());
    	{
    	R_UART=ReadUART();
    	init_net();
            lcp_event_handler(EVENT_UP);
            do_lcp_actions();
     
    		if(R_UART=='C')
    		{	
    		LED0_IO=0;
    		while(1)
    		     {
    			get_net();
     
    			if ( TickGetDiff(TickGet(), t) >= TICK_SECOND*1)
           			       {
    					t = TickGet();
    					LED0_IO ^= 1;            // Blink system LED
    				}
    			}
    	     }
     
    	if(R_UART=='R')	LED0_IO=0;
    	 }
         }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de syntaxe dans une boucle for
    Par spoker04 dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/09/2008, 10h12
  2. probleme de variable dans une boucle
    Par www.rubis dans le forum Linux
    Réponses: 2
    Dernier message: 04/09/2007, 16h06
  3. Probleme pour sortir d'une boucle while
    Par aikinhdo dans le forum Langage
    Réponses: 0
    Dernier message: 27/07/2007, 15h01
  4. probleme de passage dans une boucle
    Par EssaiEncore dans le forum ASP
    Réponses: 16
    Dernier message: 15/02/2005, 17h39
  5. probleme de recordset dans une boucle do while
    Par Shoryu dans le forum ASP
    Réponses: 18
    Dernier message: 05/07/2004, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo