Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

programme tourne en boucle alors qu'il n'y a pas de while



  1. #1
    amoniaque

    programme tourne en boucle alors qu'il n'y a pas de while

    Bonjour,

    Je débute dans le domaine des PIC18 (18F14K50 dans mon cas) que je programme sous MPLAB avec le compilateur C18 (pour voir le résultat j'utilise la simulation sous Isis).

    Pour commencer j'ai fait un classique chenillard dont voici le programme :

    Code:
    unsigned char Cycle[9] = {0,1,2,4,8,16,32,64,128};
    unsigned char i;
    	
    void delay (int Cycles)
    {
      int k;
    
      for (k = 0; k < Cycles; k++)
        ;
    }
    
    void main (void)
    {
    	TRISC = 0x00;	//le port C tout en sorties
    	
    	for ( i=0; i<9; i++)
    	{
    		PORTC = Cycle[i];
    		delay (10000);
    	}
    
    }
    Le principe est simple : j'applique chaque mot du tableau au port C.
    Par contre, quand je simule sous ISIS, le programme tourne en boucle et je n'arrive pas à comprendre pourquoi alors que je n'ai pas mis de while ou tout autre ligne demande de reboucler au début...

    Merci par avance.

    -----


  2. Publicité
  3. #2
    MiGaNuTs

    Re : programme tourne en boucle alors qu'il n'y a pas de while

    Comme il n'a plus de programme a exécuter et que tu ne l'arrête pas, ton pic plante puis reboot.
    mets un "sleep" (ou qqch du genre) a la fin et hop, il va se mettre en veille définitivement, donc s'arrêter.

  4. #3
    thundertom

    Re : programme tourne en boucle alors qu'il n'y a pas de while

    pas sur que ça passe avec le sleep...en principe pour que le PIC "parte" en sleep il faut qu'au moins une source d'intéruption capable de le réveiller soit paramétrée.

    mais par principe, un programme principal est toujours une boucle infinie.
    quel est le but de n'effectuer qu'une fois ton bout de code?
    Fabricando fit faber

  5. #4
    amoniaque

    Re : programme tourne en boucle alors qu'il n'y a pas de while

    Bonjour,


    @ MiGaNuTs : ou un " while (1);" et ça restera en suspend à cette ligne tant qu'il n'y aura pas d'événement extérieur.

    @ thundertom : aucun intérêt en particulier de ne faire qu'une fois le code. Mais après avoir passé de longues heures sur des programmes en VB.Net , je n'ai pas l'habitude de voir ma fonction principale reboucler à sa première ligne ...

    Il suffisait d'intégrer ce petit détail, merci à vous !

  6. #5
    ftorama

    Re : programme tourne en boucle alors qu'il n'y a pas de while

    Citation Envoyé par amoniaque Voir le message
    Bonjour,


    @ MiGaNuTs : ou un " while (1);" et ça restera en suspend à cette ligne tant qu'il n'y aura pas d'événement extérieur.
    Un while(1) ne laisse pas le processeur en suspend, il mouline à fond, consommant allègrement des watts. Ca n'a rien à voir avec un mode de veille.

    @ thundertom : aucun intérêt en particulier de ne faire qu'une fois le code. Mais après avoir passé de longues heures sur des programmes en VB.Net , je n'ai pas l'habitude de voir ma fonction principale reboucler à sa première ligne ...
    Et pourtant un programme VB boucle mais c'est transparent pour le programmeur lambda. Simplement, en utilisation de base, on ne programme que des évènements.
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  7. A voir en vidéo sur Futura

Sur le même thème :

Discussions similaires

  1. [Blanc] LV Bosch SGI45M16EU : programme s'arrête alors qu'il reste 38' !
    Par yragael78 dans le forum Dépannage
    Réponses: 1
    Dernier message: 02/01/2010, 14h01
  2. Réponses: 7
    Dernier message: 06/07/2009, 13h47
  3. Petit exercice plus compliqué qu'il n'y parait...
    Par narcisse0 dans le forum Epistémologie et Logique
    Réponses: 53
    Dernier message: 20/02/2008, 16h43
  4. [Blanc] bouton programme qui tourne pas
    Par ducmostro dans le forum Dépannage
    Réponses: 6
    Dernier message: 01/08/2007, 21h17
  5. Messages d'envois manqués... alors qu'il n'y a pas d'envoi!!
    Par Calia dans le forum Internet - Réseau - Sécurité générale
    Réponses: 7
    Dernier message: 09/07/2006, 17h56