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 :

Utilisation Usart pour communication


Sujet :

C

  1. #21
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Ca ferait un affichage plutôt bizarre dans une console...
    Oui, c'est bien pour ca. Les rares ou j'utilise une console simple style hyperterminal pour communiquer avec des modems (generalement j'utilise soit les outils fournis avec le modem, soit des consoles plus evolue, soit des "traceurs" style docklight) l'affichage est assez bizarre;

    Et non je n'ai aucune doc modem, hayes ou autre sous les yeux pour l'instant.

  2. #22
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut
    Pour vous repondre oui ma fonction ecrit reseau fonctionne parfaitement dedans j ecri du texte comme reseau: 15/31 et selon la valeur j ecri sur une autre ligne excellent ou mauvais bref. cVal1 et cVal 2 sont des test pour ecrire une valeur que je defini moi meme. Maintenant le probleme est que je recupere quelque du modem c'est sur je l affiche c'est sur mais bien que la correspondance ASCII et alphabet de l afficheur soit pas pareil (ASCII + 0x80) ce que j'affiche change chaque seconde pratiquement ce qui est bizar car je n est jamais le meme caractere.
    Sur mes ligne de code j'ai tout essayé et j'ai vraiment pété un cable c'est pourquoi tu trouvais des choses bizar lol.

    Donc voila

  3. #23
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    je ne sais pas si j'ai bien compris mais d'apres ce que tu dis tu envoies une commande tu recois un premier message puis tes caracteres changent a peu pres toutes les secondes sans raison vu que tu n'as pas relancé d'autre commande derriere ????

  4. #24
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut
    non en fait si tu veu j'entre le programme que l'on a vu c'est a dire j'envoie AT puis je reception la donné dans le registre. Ensuite quand je relance le programme plusieur fois par exemple donc avec toujours la meme commande les caracteres change. J'ai peut une dizaine de caracteres qui reviennent sans cesse . Donc je que je trouvais bizard c'est que le modem devrai repondre toujours la meme chose meme si il y a une erreur mais la je recupere diferent caractere a chaque lancement de programme.

    Je pense que cela peut venir de la calibration enfin je ne sais pas trop. Deja je cherche la reponse type d'un modem.

  5. #25
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut
    voila de la documentation du modem que j utilise siemens m35i:


    1.3 Conventions and abbreviations

    Throughout the document, the GSM engines are referred to as ME (Mobile Equipment), MS (Mobile
    Station), TA (Terminal Adapter), DCE (Data Communication Equipment) or facsimile DCE (FAX modem,
    FAX board).
    To control your GSM engine you can simply send AT Commands via its serial interface. The controlling
    device at the other end of the serial line is referred to as TE (Terminal Equipment), DTE (Data
    Terminal Equipment) or plainly “the application” (probably running on an embedded system).
    All abbreviations and acronyms used throughout this document are based on the GSM specifications.
    For definitions please refer to TR 100 350 V7.0.0 (1999-08), (GSM 01.04, version 7.0.0 release 1998).

    1.4 AT command syntax

    The "AT" or "at" prefix must be set at the beginning of each command line. To terminate a command
    line enter <CR>.
    Commands are usually followed by a response that includes “<CR><LF><response><CR><LF>”.
    Throughout this document, only the responses are presented, <CR><LF> are omitted intentionally.
    Table 1: Types of AT commands and responses
    Test command AT+CXXX=? The mobile equipment returns the list of parameters and
    value ranges set with the corresponding Write command
    or by internal processes.
    Read command AT+CXXX? This command returns the currently set value of the parameter
    or parameters
    Write command AT+CXXX=<...> This command sets user-definable parameter values.
    Execution command AT+CXXX The execution command reads non-variable parameters
    affected by internal processes in the GSM engine.
    voila mon programme:

    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
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    #include <p18f2320.h>
    #include <i2c.h>
    #include "EcritReseau.h"
    #include <sw_i2c.h>
    #include <usart.h>
    #include <stdlib.h>
     
    void main (void)
    {	
       char cVal1=0x30+0x80, cVal2=0x35+0x80;
       char result;
       char inputstr[];
     
       OpenUSART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_SYNC_MASTER & USART_CONT_RX & USART_BRGH_HIGH, 25 );
       SPBRG=32;
       putrsUSART("AT<CR>");
    //   putcUSART('A');
    //   putcUSART('T');
    //   putcUSART('+');
    //   putcUSART('C');
    //   putcUSART('P');
    //   putcUSART('I');
    //   putcUSART('N');
    //   putcUSART('?');
    //   putcUSART('\r');
     
       while (!DataRdyUSART()) ; // attend premier octet
     
       result=getcUSART();        // recupere octet
       EcritReseau(cVal1,cVal2,result); // affiche
     
       while (!DataRdyUSART()) ; // attend deuxieme octet
     
       result=getcUSART();         // recupere octet
       EcritReseau(cVal1,cVal2,result); // affiche
     
       while (!DataRdyUSART()) ; // attend TROISIEME octet
     
       result=getcUSART();         // recupere octet
       EcritReseau(cVal1,cVal2,result); // affiche
     
       CloseUSART();
    }
     
    void EcritReseau(char cVal1,char cVal2, char result)
    {
       int i=0;
       TRISA = CONF_TRISA;
       TRISB = CONF_TRISB;
       TRISC = CONF_TRISC;
     
       OpenI2C(MASTER,SLEW_OFF);
       SSPADD=9;
     
       StartI2C();
       while ( SSPCON2bits.SEN );
     
       WriteI2C(SLAVE_ADRESS);
       IdleI2C();
     
       WriteI2C(CTRL2_BYTE);
       IdleI2C();
     
       WriteI2C(BACK_LCD);
     
       StopI2C();
       while ( SSPCON2bits.PEN );
     
       StartI2C();
       while ( SSPCON2bits.SEN );
     
       WriteI2C(SLAVE_ADRESS);
       IdleI2C();
     
       WriteI2C(CTRL0_BYTE);
       IdleI2C();
     
       WriteI2C(SELECT_LINES);
       IdleI2C();
     
       WriteI2C(DISPLAY_CURSOR_ON);
       IdleI2C();
     
       WriteI2C(SETS_MODE);
       IdleI2C();
     
       StopI2C();
       while ( SSPCON2bits.PEN );
     
       StartI2C();
       while ( SSPCON2bits.SEN );
     
       WriteI2C(SLAVE_ADRESS);
       IdleI2C();
     
       WriteI2C(CTRL1_BYTE);
       IdleI2C();
     
       WriteI2C(LETTRE_R);
       IdleI2C();
     
       WriteI2C(LETTRE_e);
       IdleI2C();
     
       WriteI2C(LETTRE_s);
       IdleI2C();
     
       WriteI2C(LETTRE_e);
       IdleI2C();
     
       WriteI2C(LETTRE_a);
       IdleI2C();
     
       WriteI2C(LETTRE_u);
       IdleI2C();
     
       WriteI2C(DOUBLE_POINTS);
       IdleI2C();
     
       WriteI2C(cVal1);
       IdleI2C();
     
       WriteI2C(cVal2);
       IdleI2C();
     
       WriteI2C(SLASH);
       IdleI2C();
     
       WriteI2C(CHIFFRE_3);
       IdleI2C();
     
       WriteI2C(CHIFFRE_1);
       IdleI2C();
     
       for(i=0;i<8;i++)
       {
          WriteI2C(BLANK);
          IdleI2C();
       }
     
       putsI2C(result);
       IdleI2C();
     
       if(cVal1>=0x32+0x80)
       {
          WriteI2C(LETTRE_E);
          IdleI2C();
     
          WriteI2C(LETTRE_x);
          IdleI2C();
     
          WriteI2C(LETTRE_c);
          IdleI2C();
     
          WriteI2C(LETTRE_e);
          IdleI2C();
     
          WriteI2C(LETTRE_l);
          IdleI2C();
     
          WriteI2C(LETTRE_l);
          IdleI2C();
     
          WriteI2C(LETTRE_e);
          IdleI2C();
     
          WriteI2C(LETTRE_n);
          IdleI2C();
     
          WriteI2C(LETTRE_t);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
       }
     
       if(cVal1>=0x31+0x80&&cVal1<0x32+0x80)
       {
          WriteI2C(LETTRE_B);
          IdleI2C();
     
          WriteI2C(LETTRE_o);
          IdleI2C();
     
          WriteI2C(LETTRE_n);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
       }
     
       if(cVal1<0x31+0x80)
       {
          WriteI2C(LETTRE_I);
          IdleI2C();
     
          WriteI2C(LETTRE_n);
          IdleI2C();
     
          WriteI2C(LETTRE_s);
          IdleI2C();
     
          WriteI2C(LETTRE_u);
          IdleI2C();
     
          WriteI2C(LETTRE_f);
          IdleI2C();
     
          WriteI2C(LETTRE_f);
          IdleI2C();
     
          WriteI2C(LETTRE_i);
          IdleI2C();
     
          WriteI2C(LETTRE_s);
          IdleI2C();
     
          WriteI2C(LETTRE_a);
          IdleI2C();
     
          WriteI2C(LETTRE_n);
          IdleI2C();
     
          WriteI2C(LETTRE_t);
          IdleI2C();
     
          WriteI2C(BLANK);
          IdleI2C();
       }	
     
       StopI2C();
       while ( SSPCON2bits.PEN );
     
       CloseI2C();
    }

  6. #26
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut
    Voila je voudrai relancer un peu mon sujet car j'ai toujours un probleme de communication avec mon modem. J'ai bien l'arrivée des trames au modem (commandes) mais jai rien en réponse. Je me demande donc ce qu'il faut ajouter peut etre avant le prefix AT. Pour cela j'ai donné la documentation technique du modem ci-dessus.

  7. #27
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par babsi51
    Voila je voudrai relancer un peu mon sujet car j'ai toujours un probleme de communication avec mon modem. J'ai bien l'arrivée des trames au modem (commandes) mais jai rien en réponse. Je me demande donc ce qu'il faut ajouter peut etre avant le prefix AT. Pour cela j'ai donné la documentation technique du modem ci-dessus.
    • Est-ce que la configuration du format asynchrone est correcte ?
    • Est-ce que tu émets bien un CR a la fin de la commande ?
    "
    Est-tu bien conscient que dans une documentation technique, <CR> signifie "le caractère Carriage Return" ?

    Quand je vois ceci :
    J'ai quelques doutes !

    Il faut écrire :
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #define EOL "\r"
     
       putrsUSART("AT" EOL);

  8. #28
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut
    Je suis tout a fait d'accord avec vous mais j'ai déjà essayé. La doc dit que le caractère est CR pour la fin de commande donc j'avais utilisé /r mais sans succès. La config est bonne le baud aussi,alors je ne sais plus où aller je vais vérifier l'ignition du modem si elle se fait se bien car je ne vois pas au niveau programmation ce qui cloche. Je ne sais pas si tu es d'accord avec moi mais a ce niveau la c'est surement matériel, NON?

    Merci pour la réponse

  9. #29
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par babsi51
    Je suis tout a fait d'accord avec vous mais j'ai déjà essayé. La doc dit que le caractère est CR pour la fin de commande donc j'avais utilisé /r mais sans succès.
    Bah, non, c'est pas '/r', mais '\r'... C'est pas pareil... Il faut suivre scrupuleusement les consignes...

  10. #30
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut
    oui oui je sais excuse moi mais je viens de passer sur mac et je viens de me dire ZUUUTT ou est le backslash encore excuse moi

  11. #31
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    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
    13
    14
    15
    16
     
    //alimentation du modem activÈe
     
    		TRISBbits.TRISB2=0;
     
    		LATBbits.LATB2=1;
     
                    //activation du modem
     
    		TRISCbits.TRISC5=0;  // en sortie
     
    		LATCbits.LATC5=0;   // a 0
     
    		Delay10KTCYx(1);	 //attente environ 100 ms
     
    		TRISCbits.TRISC5=1;  // en entrÈe
    Voila je pense savoir d'où viens le problème. Je dois activer l'alimentation ceci est OK. Mais je dois faire aussi une ignition. Pour cela je dois passer la patte 5 en sortie la mettre a 0 logique pendant 100 ms ensuite la repasser en entrée. Donc si tu peux me dire si cela est juste au niveau code car même si le type de commande est fausse je devrais avoir l'echo du modem or ici je n'ai rien. Donc peut être que cela provient de l'ignition qui est mal faite??

    ( désolé pour le code je ne connais pas les balises pour le faire correctement )

    [-mod- Il suffit de lire les règles du forum... Tout est expliqué]

  12. #32
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Par défaut
    Tu as peut-être oublié la bibliothèque usart.h ?

  13. #33
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut
    Non car sinon le projet n'aurait pas été compilé. Je l'aurais vu tout de suite. Je me demande si l'activation du modem se fait bien. Et si j'ai bien une attente de 100ms?

  14. #34
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par babsi51
    Non car sinon le projet n'aurait pas été compilé. Je l'aurais vu tout de suite. Je me demande si l'activation du modem se fait bien. Et si j'ai bien une attente de 100ms?
    Delay10KTCYx() n'étant pas une fonction standard, difficile de répondre à cette question...

  15. #35
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OpenUSART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_SYNC_MASTER & USART_CONT_RX & USART_BRGH_HIGH, 25 );
       SPBRG=32;
    Ici, tu détermines le fonctionnement de ton UART ou USART, je m'explique :
    Tu dis fonctionne en asynhrone "USART_ASYNCH_MODE" après tu dis fonctionne en synchrone en mode maitre "USART_SYNC_MASTER".
    Ensuite, tu écris "USART_BRGH_HIGH, 25); SPBRG=32;", tu as initialisé deux fois SPBRG avec et Pour t'aider regarde dans le PDF "Librairies" de la documentation fournit avec MCC18.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Utilisation de WCF pour communication inter processus
    Par bleuerouge dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 03/07/2015, 15h35
  2. Réponses: 4
    Dernier message: 21/08/2009, 11h48
  3. utiliser une cle commune pour 2 tables
    Par alexsolex dans le forum Langage SQL
    Réponses: 11
    Dernier message: 12/03/2009, 17h03
  4. Réponses: 1
    Dernier message: 01/07/2008, 13h33
  5. Réponses: 2
    Dernier message: 18/03/2008, 15h23

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