Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Module GSM2-Click
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#31 Message par Jérémy » lun. 1 août 2016 18:40 lien vers la Data-Sheet : Cliquez ici

Bonsoir ,

Je pense que j'ai mal exprimé mon probléme de compréhension ! je crois avoir trouvé l'explication en tout cas, à force de ruminer !

En fait le texte reçu est traiter à la volée et non comme une chaine de caractères. c'est pour cela qui peut détecter un "U" puis ensuite un "N", puis "R" etc ... jusqu' a trouver " UNREAD" dans une phrase. en fait le programme test chaque caractère 1 à 1 et non chaine par chaine..... .

la lecture des messages UNREAD peut prendre beaucoup de temps et aussi en taille ...

Pas tout a fait , car des qu'un message est reçu donc "UNREAD" il est lu, donc passe tout de suite en "READ". Par contre, la ou le programme d'exemple est peut être mal foutu, c'est que la commande demande d’afficher TOUT les messages ( "AT+CMGL=\"ALL\""), les UNREAD, les READ etc .... et ca, ça peut être long !!!

Je pense toute façon refaire le programme d'exemple à ma sauce, et m'inspirant du tiens et celui de l'exemple.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Module GSM2-Click
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#32 Message par Jérémy » jeu. 18 août 2016 13:42 lien vers la Data-Sheet : Cliquez ici

Bonjour à tous,

Je reprend mes investigations sur ce module !

Je cherche avant de me lancer dans la refonte du programme exemple à ma sauce, à etre certains d'avoir tout bien compris sur le focntionnement de celui ci .
Une chose me chagrine cependant sur cette petite fonction, et peut-être que vous pourriez éclairer ma lanterne :

Code : Tout sélectionner

//------------------------------------------------------------------------------
// Test du baud rate
  
while(1){
    
M95_Send(atc0);                 //On envoi la commande "AT" pour obtenir la réponse "OK" et verifier la com
    
Delay_ms(100);                  // Laisse le temps de recevoir la réponse
    
if (Get_response() == GSM_OK)   // Si la réponse du M95 repond est "OK" au test baud rate le programme peut continuer
      
break;                        // On sort de la boucle de test baud rate
  
}
 


J'ai écris test de baud rate, mais en fait ce n'est pas un test ni une calibration, mais tout simplement un arrêt pour être sûr que l'on est bien à la même vitesse ?
Je dis ça car il n'y aucune modification du baud rate, et donc si on est pas à la vitesse, on ne pourra jamais continuer dans le programme !

J’ai bon ?

merci de m'avoir lu !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Module GSM2-Click
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#33 Message par Jérémy » mar. 30 août 2016 08:35 lien vers la Data-Sheet : Cliquez ici

Voila une semaine de galère, en avancant à tatons !

Puis je me suis dis, il faudrait qu'il existe un forum dédié aux PIC pour poser ma demande d'aide !! humour!!

Blague à part .

Voici une ébauche de mon programme en construction. Pas trés subtile comme méthode, mais c'est la mienne. J'optimiserais au fur et à mesure quand tout fonctionnera .

Je suis actuellement vers la fin mais je but sur un probléme.

Le déroulemetn du programme est celui ci :
- Je check si j’ai un nouveau message ( avec la commandeM95_Send("AT+CMGL=\"REC UNREAD\"");)
- Si j'en ai pas je fais une pause de 2 secondes.
- si j'en ai un, j'enregistre le numéro de téléphone et la date et l'heure. ( GDH pour groupe date heure).
- j'envoie un petit message sur l'uart pour visualiser cette étape sur l'ordi.
- Si je reçois le mot "Chrono" j'enregistre e t transforme les valeurs recuesp our les utiliser ( pour le moment c'est inutile). J'envoie un autre message pour visualiser et je lève un flag pour dire qu'il faut que j'envoie la réponse.

Et la le bat blesse.
je compose mon numéro de téléphone pour envoyer la réponse, la ca passe encore et ca fonctionne bien .
A la suite de cette commande le module doit me répondre par un > sans mettre de CR ni de LF . Donc le symbol devrait se trouver en [0] de mon buffer.
Mais a chaque fois j'ai un message d'erreur qui s'affiche sur l'ordi et je ne comprends pas pourquoi .

Si vous comprennez quelques choses a ma facon de faire, et à mon probléme je vous en serait reconnaissant.

Code : Tout sélectionner

/*
 Test du module  GSM2 click
 * Description:
   Ce programme utilise le module GSM Quectel M95 pour envoyer et recevoir des SMS
   Je controle ma carte easy PIC et envoie son état par SMS .

 *configuration:
     MCU:             PIC18F46K22 : http://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf
     Carte:           EasyPIC7 : http://www.mikroe.com/easypic/
     Oscillateur:     HS 8.0000 MHz, 8.0000 MHz Crystal  PLL disable
     modules ext.:    gsm2 clickick : http://www.mikroe.com/click/gsm2/                           z
                      Quectel M95 : https://www.soselectronic.hu/a_info/resource/c/quectel/M95_ATC_V1.0.pdf
     SW:              mikroC PRO for PIC : http://www.mikroe.com/mikroc/pic/
 * NOTES:
   - Le clignotement de la led rouge "NET" rapide pas de connexion , lentement Connexion
 */
 
#define PWRKEY RE1_bit

char Message_SMS[255];  // Tableau de "char"  composant le SMS
char Numero_tel[20];  // tableau pour placer le numéro de téléphone en string format : {"+336********"}
char Gdh[50];
char Buffer[100];

char Val_Heures[3];
char Val_Minutes[3];
char Val_Secondes[3];
unsigned int Index =0;
unsigned int tempDataReadyiTimeout ;

char Flag_OKMessage_a_envoyerAttente_MessageMessage_recuMessage_luMessage_Ok;
int HeuresMinutesSecondes;

//------- On efface le Buffer -------------------------
void RAZ_Buffer()
   {
      
Index 0;
      for (
Index=0Index<=100Index++)
        {
          
Buffer[Index]=0;
         }
      
Index 0;
   }

//------- On efface le message à envoyer -------------------------
void RAZ_Message_SMS()
   {
      for (
Index=0Index<=254Index++)
        {
          
Message_SMS[Index]=0;
         }
      
Index 0;
   }

//------------------------------------------------------------------------------
// Envoi de commande ou donnée
void M95_Send(char *p){
   while(*
p) {
    
UART1_Write(*p++);
   }
   
UART1_Write(0x0D);   // On termine par un CR
}

//------------------------------------------------------------------------------
// Creation du corps du message
void Creation_du_message()
  {
     
Message_SMS[0] = 0;                  // Initialisation du début de tableau

     
strcat(Message_SMS"Valeur recues :");  // Ecrit du texte à la suite du NULL de départ
     
strcat(Message_SMS"\r\n");          // Passe à la ligne(CR + LF)
     
strcat(Message_SMS"H:");
     
strcat(Message_SMSVal_Heures);
     
strcat(Message_SMS" M:");
     
strcat(Message_SMSVal_Minutes);
     
strcat(Message_SMS" S:");
     
strcat(Message_SMSVal_Secondes);
     
strcat(Message_SMS"\r\n");
     
strcat(Message_SMS"\r\n");
     
strcat(Message_SMS"Voulez-vous le lancer ?");
     
strcat(Message_SMS0);
  }

//##############################################################################
// Lecture des données dans le buffer UART par INT
void interrupt(){

  if (
RCIF_bit == 1) {      // Si INT UART détecté

    
temp UART1_Read();      // On récupere et stock la donnée

          
if (temp == 10)         // Si "LF" detecté fin du message
             
{
               
DataReady 1;      // On signale au main qu'un message est pret
               
Buffer[Index] = // On rajoute un terminateur de string
               
Index ;         // On se place au depart pour le mot suivant
              
}
           else
            {
               
Buffer[Index] = temp// Sinon on rajoute la lettre au Buffer
               
Index++;              // On incremente pour le caractere suivant
            
}
   }
}


//##############################################################################
//###################     MAIN     #############################################
//##############################################################################
void main(){
  
ANSELA ANSELB ANSELC ANSELD ANSELE 0// Tous les PORT en Digital

  
SLRCON 0;      // Set output slew rate on all ports at standard rate

  
TRISB 0XFF ;   // Entrée
  
TRISD 0X00 ;   // Sortie
  
TRISE 0x00 ;   // Sortie
  
LATD 0;        // Mis à zéro des sorties
  
LATE 0;        // Mis à zéro des sorties
  
//------------------------------------------------------------------------------
// Réglages de l'interruption
  
RC1IE_bit 1;          // Enable Rx1 intterupts
  
PEIE_bit 1;           // Enable peripheral interrupts
  
GIE_bit  1;           // Enable global interrupts

//------------------------------------------------------------------------------
//  Activation de l'alim avec la pin PWRKEY
  
PWRKEY 0;             // Mise à zéro
  
delay_ms(3000);         // Maintenir à 0 pendant plus de 2S
  
PWRKEY 1;             // Allume le module

//------------------------------------------------------------------------------
  
UART1_Init(4800);      // Initialisation de l'UART
  
Delay_ms(100);
  
Sound_Init(&PORTC2);  // Initialisation du Sound
  
Delay_ms(100);

//------------------------------------------------------------------------------
// Parametrages du débit
  
while(1){
   
M95_Send("AT");   // Reglage des messages de type "texte"
   
delay_ms(200);
   if ( (
DataReady==1)&&(Buffer[0]=='O')&&(Buffer[1]=='K') )
      {
        
DataReady 0;
        break;
       }
  }
 
delay_ms(8000); // Configuration du baud-rate , ensuite initilaistaion du module
 
//------------------------------------------------------------------------------
// Parametrages du module
  
while(1){
   
M95_Send("AT+CMGF=1");   // Reglage des messages de type "texte"
   
delay_ms(100);
   if ( (
DataReady==1)&&(Buffer[0]=='O')&&(Buffer[1]=='K') )
      {
        
DataReady 0;
        break;
       }
  }

  while(
1){
    
M95_Send("ATE1");        // Désactivation de la commande "Echo"
    
delay_ms(100);
    if ( (
DataReady==1)&&(Buffer[0]=='O')&&(Buffer[1]=='K') )
      {
        
DataReady 0;
        break;
       }
   }

  while(
1){
    
M95_Send("AT+QMGDA=\"DEL ALL\""); // Envoi la commande pour effacer tous les messages
    
delay_ms(100);
    if ( (
DataReady==1)&&(Buffer[0]=='O')&&(Buffer[1]=='K') )
      {
        
DataReady 0;
        break;
       }
   }

//------------------------------------------------------------------------------
// 3 Bips pour signifier l'initialisation c'est bien passéee et finie
 
for (i=0;i<=2;i++){
     
Sound_Play(200050); // On joue un son
     
delay_ms(50);
  }

Flag_OK Message_a_envoyer Attente_Message Message_recu Message_lu 0;
Heures Minutes Secondes DataReady Message_recu 0;

RAZ_Buffer();
RAZ_Message_SMS();

//##############################################################################
//####################### BOUCLE PRINCIPALE     ################################
//##############################################################################
while(1) {

    
M95_Send("AT+CMGL=\"REC UNREAD\""); // On demande si il y a un message non lu
    
while (DataReady == 0);             // On attend une réponse
    
DataReady 0;                      // RAZ du flag

       
if ( (Buffer[0]=='O') && (Buffer[1]=='K'))
              {
                
delay_ms(2000);
              }
              
//---------   Apres une demande de lecture de message non lu on le traite  -----
       
if ( (Buffer[22]=='"') && (Buffer[23]=='+'))
          {
              for (
i=0;i<=11;i++)    // on enregistre le Numero de tel
              
Numero_tel[i] = Buffer[23+i];
              
Numero_tel[i]=0;

              for (
i=0;i<=18;i++)    // On enregistre la date et l'heure
              
Gdh[i] = Buffer[41+i];
              
Gdh[i]=0;

              
M95_Send("Message recu");
          }
//-------  Si le message recu commence par "Ch" pour Chrono on enregistre les valeurs
        
if ( (Buffer[0]=='C') && (Buffer[1]=='h'))
           {
             
RC1IE_bit 0;
             
Heures =  (((Buffer[8])-48)*10)+(((Buffer[9])-48));
             
Val_Heures[0]= Buffer[8] ;
             
Val_Heures[1]= Buffer[9] ;
             
Val_Heures[2]= 0;

             
Minutes =  (((Buffer[12])-48)*10)+(((Buffer[13])-48));
             
Val_Minutes[0]= Buffer[12] ;
             
Val_Minutes[1]= Buffer[13] ;
             
Val_Minutes[2]= 0;

             
Secondes =  (((Buffer[16])-48)*10)+(((Buffer[17])-48)) ;
             
Val_Secondes[0]= Buffer[16] ;
             
Val_Secondes[1]= Buffer[17] ;
             
Val_Secondes[2]= 0;

             
M95_Send("Message a envoyer");

             
Message_a_envoyer 1;  // On signale qu'il faut répondre
              
RC1IE_bit 1;
            }



       if (
Message_a_envoyer == 1)
           {
                 
Message_a_envoyer 0;             // RAZ le flag
                 
RAZ_Message_SMS();
                 
Message_SMS[0]=0;
                 
strcat(Message_SMS"AT+CMGS=\""); // rajoute la commande d'envoi de message(CMGS) et on ouvre les guillemets
                 
strcat(Message_SMSNumero_tel);   // On rajoute le nuémro de tel, Ex: "AT+CMGS=06******xx\""
                 
strcat(Message_SMS"\"");         // et on ferme les guillemets
                 
strcat(Message_SMS0);
                 
M95_Send(Message_SMS);

               while(
1)
               {
                  
Index 0;
                  if (
Buffer[0]=='>')
                     {
                           
//delay_ms(1000);
                           //Creation_du_message();            // On va créer le message
                           //M95_Send(Message_SMS);
                           
M95_Send("Envoi");
                           
UART1_Write(0x1A);                // Envoi CTRL + Z comme caractere de fin
                           
UART1_Write(0x0D);                // Envoi un  "CR"
                           //RAZ_Message_SMS();                    // Aprés l'envoi, on efface le message
                           
break;
                     }
                }
                     
             }


 }


Merci poar avance
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Module GSM2-Click
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#34 Message par paulfjujo » mar. 30 août 2016 12:19 lien vers la Data-Sheet : Cliquez ici

bonjour Jeremy



- Si j'en ai pas je fais une pause de 2 secondes.
- si j'en ai un, j'enregistre le numéro de téléphone et la date et l'heure. ( GDH pour groupe date heure).


cela sous-entend un if else quelque part ... pas vu dans ton code

Je ferais un RAZ_buffer() avant d'envoyer la cde
"M95_Send("AT+CMGL=\"REC UNREAD\""); de sorte que l'index soit bien en position 0
Aide toi, le ciel ou FantasPic t'aidera

Module GSM2-Click
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#35 Message par Jérémy » mar. 30 août 2016 15:42 lien vers la Data-Sheet : Cliquez ici

Bonjour Paul,

merci d'avoir jeté un œil dessus.

cela sous-entend un if else quelque part ... pas vu dans ton code

Oui , comme le code est fait seulement pour une application je suis allé directement a l'essentiel. Il n'est pas encore optimisé j'essaye de le faire fonctionner avant toute chose .
On retrouve donc le IF juste après l'envoi de la commande .

J'envoie la commande pour voir si il y a un message reçu . dans tous les cas, j'aurais forcement une réponse du module, soit c'est "OK" donc je n'ai rien reçu, soit c'est +CGMI ....... avec un " en buffer [22] et un + en buffer[23]

Code : Tout sélectionner

 M95_Send("AT+CMGL=\"REC UNREAD\""); // On demande si il y a un message non lu
    while (DataReady == 0);             // On attend une réponse
    DataReady = 0;                      // RAZ du flag

       if ( (Buffer[0]=='O') && (Buffer[1]=='K'))
              {
                delay_ms(2000);
              }
 


Je ferais un RAZ_buffer() avant d'envoyer la cde
"M95_Send("AT+CMGL=\"REC UNREAD\""); de sorte que l'index soit bien en position 0

ok je testerai ce soir . Mais le problème n'est pas vraiment la, il est vraiment sur la réception du caractère ">" pas détectable par interruption car sans " LF" à la fin .
Peut être que mon buffer se rempli entre temps et donc mon caractère ne se retrouve pas en Buffer[0] , mais j'ai essayé tellement de chose . je vais reprendre au départ je pense.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Module GSM2-Click
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#36 Message par Jérémy » mar. 30 août 2016 22:20 lien vers la Data-Sheet : Cliquez ici

Re,

je viens de tester cela ne change rien ....

j’ai donc décider de recommencer, mais dans l'autre sens !
D'entrée de jeu ça fonctionne pas !

je pense que je patauge dans la semoule avec la vitesse d’exécution....
En ,envoyant un sms directement en rentrant le numéro de téléphone dans le programme ca fonctionne parfaitement. Mais des que je veux faire réagir le module sur la reception d'un SMS, j'y arrive .

Je pense qu'au final la méthode de la machine est plus simple a mettre en œuvre....

PAr exemple voici seulement la bocule prinicipale. Je n'ai aucun probléme pour l'initialisation.

Code : Tout sélectionner

while(1) {

   if (PORTB.B0 == 1)
      {
        delay_ms(50);
        if (PORTB.B0 == 1)
           {
             while (PORTB.B0 == 1);
             M95_Send("AT+CMGL=\"REC UNREAD\""); // On demande si il y a un message non lu
           }
       }
 if (DataReady==1)
  {
    DataReady = 0;
   //---------   Apres une demande de lecture de message non lu on le traite  -----
   if ( (Buffer[22]=='"') && (Buffer[23]=='+'))
      {
          for (i=0;i<=11;i++)    // on enregistre le Numero de tel
          Numero_tel[i] = Buffer[23+i];
          Numero_tel[i]=0;

          for (i=0;i<=18;i++)    // On enregistre la date et l'heure
          Gdh[i] = Buffer[41+i];
          Gdh[i]=0;
      }
      
   if 
( (Buffer[0]=='C') && (Buffer[1]=='h'))
      {
        M95_Send(Numero_tel);
        M95_Send(Gdh);
      }
  }


Voici le résultat sur realterm:
Sans titre.jpg


J'envoie un sms , je le recois : +CMTI: "SM",1
J'appui sur mon BP (RB0) , ce qui as pour but d'envoyer la commande : "AT+CMGL="REC UNREAD");
Le module répond en envoyant 3 lignes à la suite.
pendant la reception j'enregistre le numero de telephone et le Gdh(Groupe date heure).
Puis je l'affiche .
la ca fonctionne ...... Mais d'ou vient ce PUT.... de message ERROR Je comprends pas mais alors vraiment pas
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Module GSM2-Click
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#37 Message par Jérémy » mer. 31 août 2016 07:36 lien vers la Data-Sheet : Cliquez ici

Bonjour ,

Voici un bout de programme qui fonctionne en parti . Disons que je reçois bien le SMS .

Mais je comprends toujours pas le mot "ERROR" et certains caractères qui s'ajoute !

Code : Tout sélectionner

//##############################################################################
while(1) {

   if (
PORTB.B0 == 1)
      {
        
delay_ms(50);
        if (
PORTB.B0 == 1)
           {
             while (
PORTB.B0 == 1);
             
Uart_Write_Text("AT+CMGL=\"REC UNREAD\""); // On demande si il y a un message non lu
             
UART_Write(13);
             
UART_Write(10);
           }
       }
       
  if (
DataReady==1)
     {
      
DataReady 0;
     
//---------   Apres une demande de lecture de message non lu on le traite  -----
      
if ( (Buffer[22]=='"') && (Buffer[23]=='+'))
         {
            for (
i=0;i<=11;i++)    // on enregistre le Numero de tel
            
Numero_tel[i] = Buffer[23+i];
            
Numero_tel[i]=0;

            for (
i=0;i<=18;i++)    // On enregistre la date et l'heure
            
Gdh[i] = Buffer[41+i];
            
Gdh[i]=0;
         }

      if ( (
Buffer[0]=='C') && (Buffer[1]=='h'))
         {
          
//RC1IE_bit = 0;
          
M95_Send(Numero_tel);
          
M95_Send(Gdh);

          
delay_ms(500);
          
RAZ_Message_SMS();
          
Message_SMS[0]=0;
          
strcat(Message_SMS"AT+CMGS=\""); // rajoute la commande d'envoi de message(CMGS) et on ouvre les guillemets
          
strcat(Message_SMSNumero_tel);   // On rajoute le nuémro de tel, Ex: "AT+CMGS=06******xx\""
          
strcat(Message_SMS"\"");         // et on ferme les guillemets
          
strcat(Message_SMS0);
          
M95_Send(Message_SMS);
          
//RC1IE_bit = 1;
          
delay_ms(500);
          
Index 0;
          if (
Buffer[0]=='>')
             {
               
RC1IE_bit 0;
               
UART_Write_Text("Enfin");
               
UART1_Write(0x1A);                // Envoi CTRL + Z comme caractere de fin
               
UART1_Write(0x0D);                // Envoi un  "CR"
               
RC1IE_bit=1;
             }
         }
         
      if ( (
Buffer[0]=='O') && (Buffer[1]=='K'))
         {
          
delay_ms(100);
         }
     } 


Sans titre.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Module GSM2-Click
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#38 Message par Jérémy » jeu. 1 sept. 2016 17:41 lien vers la Data-Sheet : Cliquez ici

Bonjour à tous,

Bon j'avance petit à petit, mais alors vraiment petit à petit .........

Mais je comprends toujours pas le mot "ERROR" et certains caractères qui s'ajoute !

Pour visualiser sur mon écran mes valeurs, j’envoie des phrases clefs ! du genre :

Code : Tout sélectionner

          M95_Send(Numero_tel);
          
M95_Send(Gdh); 


Mais forcement ces phrases vont aussi sur le module QUECTEL qui ne les comprends pas ! donc il me renvoie ERROR !!

J'affine mon programme, mais y'aura de la grosse optimisation a faire !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Module GSM2-Click
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#39 Message par Jérémy » jeu. 1 sept. 2016 20:28 lien vers la Data-Sheet : Cliquez ici

kiki connait la magie ?

Un truc de fou, comment voulez vous que je pète pas un câble avec ça .

Si j’enlève les lignes en commentaires ça me "reset" le module. Si je les mets en commentaires , ca fonctionne parfaitement !
Si j'en met qu'une en commentaire ca reset aussi ! J'ai essayé 5 fois de suite, même résultat a chaque fois . :furieux: Je vais rajouter un smileys qui s’arrache les cheveux !

Franchement si vous trouvez la solution respect !!!!! je précise que ma RAM est utilisé a 16% et ma ROM a 8% .
La broche d'alimentation est sur la Broche RE1, quand je reçois un sms, elle s'éteint donc ca reset le module. Mais pourquoi elle s'éteint ????

Voici la partie du code incriminer :
Ce sont les reponse 5 et 6 qui me font foirer le programme ! si 'jen met une des deux ca plante quelque soit le message envoyé. Si je les mets en commentaires ça fonctionne impeccable quelques soit le message envoyé.

Code : Tout sélectionner

      if (Buffer[0]=='>')
         {
          delay_ms(100);
          RC1IE_bit = 0;
         
          switch 
(reponse) {
            case  1: {
                       Creation_du_message();
                       M95_Send(Message_SMS);
                       break;
                     }
            case  2: {

                       UART1_Write_text("Le Chrono est parti !");
                       UART1_Write(0x0D);
                       UART1_Write(0x0A);
                       break;
                     }
            case  3: {
                        UART1_Write_text("La demande est annulée");
                        UART1_Write(0x0D);
                        UART1_Write(0x0A);
                        break;
                      }
            case  4: {
                        UART1_Write_text("ERREUR DE FORMAT\r\nIl faut envoyer :\r\nChrono Hxx Mxx Sxx");
                        UART1_Write(0x0D);
                        UART1_Write(0x0A);
                        break;
                      }
         /*  case  5: {
                        UART1_Write_text("Le chrono a ete arreter !");
                        UART1_Write(0x0D);
                        UART1_Write(0x0A);
                        break;
                      }
            case  6: {
                        UART_Write_text("Ceci est mon etat");
                        UART1_Write(0x0D);
                        UART1_Write(0x0A);
                        break;
                      }
           */
          }
             delay_ms(100);
             UART1_Write(0x1A);                // Envoi CTRL + Z comme caractere de fin
             delay_ms(100);
             RC1IE_bit = 1;
             delay_ms(1000);
             Attente_OK();
         }
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Module GSM2-Click
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#40 Message par Guest » jeu. 1 sept. 2016 21:16 lien vers la Data-Sheet : Cliquez ici

bon, j'ai pas suivie le post, mais il est ou, ton default pour un, switch ?

a+


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 31 invités