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 de tempo


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut probleme de tempo
    bonjour,
    voila j'expose mon problème.
    je doit effectué plusieurs palier d'alarme et envoyé le code( Nmsb et Nlsb) correspondant. sa c pas un soucis sa marche mon gros souci ces que a ma pré alarme 16 mA je doit attendre 2s puis envoyé un nouveau code correspondant a 20 mA et la sa ne marche pas car sous simulation avec proteus sa passe directement au 20 mA.
    mon explication est peut être pas très précise veuille m'en excusé.
    voici mon programme a leur actuel
    en espérant que vous puissiez m'aide

    cordialement.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    //*******************************************************************************
    // liaison SPI 
    //
    // rôle : écrire dans une mémoire EEPROM extérieure au PIC par la liaison SPI
    //*******************************************************************************
     
    #include <p18f452.h>
    #include <stdio.h>
    #include <spi.h>
    #include <delays.h>
    #define SPI_CS PORTAbits.RA5
     
    void Delay10KTCYx( unsigned char unit);	
    void main (void)
    {
    	char E,x;
    	char Nmsb;
    	char Nlsb;
    	char T;
    	E = (PORTB&0x1F);
    	T = 0;
     
    	DDRAbits.RA5=0;		
    	PORTAbits.RA5=1;
    	DDRCbits.RC3=0;		 
    	PORTCbits.RC3=0;
    	DDRCbits.RC5=0;		 
    	PORTCbits.RC5=0;
    	DDRBbits.RB0=1;
    	DDRBbits.RB1=1;
    	DDRBbits.RB2=1;
    	DDRBbits.RB3=1;
    	DDRBbits.RB4=1;
    	DDRBbits.RB5=1;
    	DDRBbits.RB6=1;
    	DDRBbits.RB7=1;
    	while(1)
    	{	
    	switch (E)
    	{
     
    	case 0x00:		// Normal 4mA
    		 Nmsb=0x01;
    		 Nlsb=0x91;
    	   	T=0;
    		break;
    	case 0x01:		// défault materiel 2mA
    		 Nmsb=0x00;
    		 Nlsb=0xC9;
    		T=0;
    		break;
    	case 0x02:		// défault capteur UV ou IR 2,6mA
    		 Nmsb=0x01;
    		 Nlsb=0x05;
    		T=0;
    		break;
    	case 0x04:		// Inhibition 3,4mA
    		 Nmsb=0x01;
    		 Nlsb=0x55;
    		T=0;
    		break;
    	case 0x08:		// IR² 8mA
    		 Nmsb=0x03;
    		 Nlsb=0x22;
    		T=0;
    		break;
    	case 0x10:		// UV 12mA
    		 Nmsb=0x04;
    		 Nlsb=0xB0;
    		T=0;
    		break;
    	case 0x18:		// UV+IR² 16mA   préalarme
     
     
    	if (T==0) 
    			{	Nmsb=0x06;
    		 		Nlsb=0x40;
    				T=1;
    			}
     
     
     
     
     
     
    	if (T==1) {	Nmsb=0x07;
    		 	   		Nlsb=0xDA;
    			}
    }
     
     OpenSPI(SPI_FOSC_64, MODE_00, SMPMID);
     
    		SPI_CS = 0; 		//Sélection du CNA
    		WriteSPI(Nmsb);	//envoie donnée poids fort
    		while(!PIR1bits.SSPIF);
    		PIR1bits.SSPIF=0;
    		WriteSPI(Nlsb);	//envoie donnée poids faible
    		while(!PIR1bits.SSPIF);
    		PIR1bits.SSPIF=0;
    		SPI_CS = 1; 	
     
    	CloseSPI();
     
    if (T=1) {Delay10KTCYx(170);
    }
    }
     
     
    }

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
         case 0x18:		// UV+IR² 16mA   préalarme	
                      if (T==0) 
                      {
                         Nmsb=0x06;
                         Nlsb=0x40;
                         T=1;
                      }
                      if (T==1)
                      {	
                         Nmsb=0x07;
                         Nlsb=0xDA;
                      }
    Quel que soit la valeur de T, au final T==1 et Nmsb=0x07 , Nlsb=0xDA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (T=1) 
    {
      Delay10KTCYx(170);
    }
    Probablement, if(T==1)....

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut
    Citation Envoyé par diogene Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
         case 0x18:		// UV+IR² 16mA   préalarme	
                      if (T==0) 
                      {
                         Nmsb=0x06;
                         Nlsb=0x40;
                         T=1;
                      }
                      if (T==1)
                      {	
                         Nmsb=0x07;
                         Nlsb=0xDA;
                      }
    Quel que soit la valeur de T, au final T==1 et Nmsb=0x07 , Nlsb=0xDA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (T=1) {
      Delay10KTCYx(170);
    }
    Probablement, if(T==1)....


    oui exactement au finale j'ai toujours Nmsb=0x07; Nlsb=0xDA; qui s'affiche alors que je voudrai que sa soit ceci qui s'affiche en 1er Nmsb=0x06;Nlsb=0x40;
    et au bout de 2 seconde alors on affiche Nmsb=0x07; Nlsb=0xDA; mais sa la simulation ne le fait pas

    j'ai bien mis if(T==1) pour le delay mais sa n'arrange rien

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Je suppose (sans être certain parce que je n'ai fait que relever les bizarreries du code sans l'éplucher) que, sans doute, on devrait avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (T==0) 
    {
        Nmsb=0x06;
        Nlsb=0x40;
        T=1;
    }
    else
    {	
        Nmsb=0x07;
        Nlsb=0xDA;
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut
    Citation Envoyé par diogene Voir le message
    Je suppose (sans être certain parce que je n'ai fait que relever les bizarreries du code sans l'éplucher) que, sans doute, on devrait avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (T==0) 
    {
        Nmsb=0x06;
        Nlsb=0x40;
        T=1;
    }
    else
    {	
        Nmsb=0x07;
        Nlsb=0xDA;
    }

    bon je crois qu'on y est presque , alors j'ai mon 16 mA qui s'affiche sa déjà c bon. est au bout de 2 sec j'ai le 20 mA qui s'affiche sauffe que moi je voudrait qui reste le 20mA alors que le sa oscille entre 16 et 20

    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
     
     
    		if (T==0)  
    {		  
       		  Nmsb=0x06;
      		  Nlsb=0x40;
      		  T=1;
    }
    		else if (T==1)
    {
    			Delay10KTCYx(90);
    			T=2;
    }
    		else  if (T==2)
    {		
       		 Nmsb=0x07;
       		 Nlsb=0xDA;
    }	
     
     
    break;
    }
    [/QUOTE]
    alors avec quelques petit changement j'ai réussi a se que ma tempo soi prise en compte mais j'oscille toujours alors que j'aimerai rester a 20 mA

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut
    bon bein voila je n'est toujours pas trouver de solution pour éviter que le logiciel tourne en boucle si quellequ'un a la moindre petite idée je suis preneur merci

Discussions similaires

  1. probleme de tempo
    Par zit_zit dans le forum VB.NET
    Réponses: 17
    Dernier message: 10/12/2007, 16h51
  2. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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