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

Arduino Discussion :

Gestion d'un modem série


Sujet :

Arduino

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Gestion d'un modem série
    Bonjour,
    Je me bats depuis un certain temps avec un modem Olitec V92 que je veux piloter par un nano pour répondre sur ligne PTT et envoyer des informations domotiques.
    Tout fonctionnait au poil mais souvent le modem semblait passer en réponse automatique mais ne prenait pas la ligne.
    J'ai décidé de tester la seule fonction d'échange série et ai écrit une tâche de commande du modem qui envoie une commande AT et attend la réponse. Il semble que certains octets ne sont pas reçus correctement. Est-ce habituel de ne pouvoir gérer une liaison serie en 9600 bauds sans perdre d'octets? J'ai tout tenté, utilisation de l'Uart pour deboguer la liaison en softserial vers le modem et aussi permutation des deux liaisons en me disant que l'Uart elle ne perdrait pas d'octets mais en vain.
    En general lorsque j'utilise l'exemple de softwareserial cela se passe mieux mais pas totalement. En revanche, lorsque je pilote le modem par un PC via liaison série et hyperterm, tout est conforme.
    Auriez vous sous la main un code tout fait pour gérer un modem sans perte de données sur une liaison Uart ou softserial?
    Merci de votre aide.
    PS: code softwareserial qui marchouille mais non conforme à mes souhaits (il permet d'envoyer une commande au modem et de lire la réponse mais à partir du programme hyperterm du PC ce qui n'est pas le but...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (mySerial.available ()) Serial.write (mySerial.read ());
    If (Serial.available ()) mySerial.write (Serial.read ());

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Ton modem se pilote via une interface série à la norme RS232, est-ce que le port série de ton nano est à la norme RS232 ?
    Sans connaitre le produit, je pense qu'il doit plutôt être à la norme TTL, voire LowTTL. Si c'est le cas c'est normal que ça marche pas, il faut un adaptateur à base de circuit type max232 ou de génération plus récente.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci sevyc. J'ai en effet intercalé un rs232 pour attaquer le modem que je peux aiguiller soit vers rx0/tx0 soit vers un port serie soft style pin2/pin3 en rx/tx.

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    est-ce que les paramètres de la liaison série, vitesse, parité, stop sont identiques des 2 cotés ?

    Comme à priori tu est sur une liaison 3 fils, il faut aussi que les protocoles d’échanges ne soient pas activés, ou alors que ce soient des protocoles software (XON/XOFF par exemple)
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Oui les parametres sont bien réglés sinon je pense que je ne recevrais rien d'intelligible. Par exemple au lieu de recevoir 003 lorsque je demande la valeur du registre 0 (ATs0?) Je ne reçois que 0. Je pensais à un problème de vitesse de processeur mais tout de même ne pas arriver à suivre un protocle à 9600 bauds!

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    ça pourrait être un problème de bits de stop. Si ton nano est configuré avec 2 stops, alors que le modem avec 1 seul, le modem peut commencer à envoyer le second octet alors que le nano est toujours dans la partie stop, du coup il loupe la synchro du start et ce qu'il reçoit (voie) ne correspond plus à rien.

    Autre piste niveau code, je ne sais pas comment fonctionne l'uart niveau nano, mais peut-être qu'après avoir reçu le premier octet tu fais un traitement un peu long qui fait que tu n'es pas assez tôt à nouveau à l'écoute pour recevoir le second octet.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Ok j'essaie la piste des stop bits.
    Question timing, a priori la connexion sur laquelle est cablé mon Rx est la pin 2 dotée de la fonction change interrupt. Le read software doit gérer la lecture en interruption. Merci, à suivre ; j'aurai du pain sur la planche pour demain

  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Si tu veux modifier les paramètres de la liaison série de l'Arduino c'est ici :
    https://www.arduino.cc/en/Serial/Begin

    à ma connaissance les Arduino ne gèrent pas le xon/xoff, il faut activer rts et cts et désactiver dsr et dtr.

  9. #9
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Citation Envoyé par Auteur Voir le message
    à ma connaissance les Arduino ne gèrent pas le xon/xoff, il faut activer rts et cts et désactiver dsr et dtr.
    ou gérer le buffer et donc le XON/XOFF manuellement
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  10. #10
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Le diagnostic que je fais c'est que le module rs232/ttl est defaillant :je nai jamais les mêmes octets lus en echo des ordres envoyés au modem. Parfois j'ai la chaîne complète mais souvent il manque des caractères, parfois encore, les caractères sont transformés, je dois essayer avec un autre module. J'enrage car mon système de domotique est en cours de conception depuis un ou deux ans et je suis bloqué par un problème élémentaire comme celui la! Je vous tiens informés.
    Merci en tout cas de votre sollicitude.

Discussions similaires

  1. [WD12E] gestion des numéros des série d'un graphe
    Par biloux911 dans le forum WinDev
    Réponses: 6
    Dernier message: 09/11/2010, 15h26
  2. gestion de la liaison série avec VBA
    Par riquet90 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 11/08/2008, 17h30
  3. gestion de plusieurs ports série
    Par kouedic dans le forum Windows
    Réponses: 1
    Dernier message: 15/02/2008, 09h10
  4. gestion de plusieurs ports série
    Par kouedic dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 15/02/2008, 08h58
  5. Réponses: 4
    Dernier message: 30/03/2007, 16h27

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