Outils pour utilisateurs

Outils du site


issue130:tutoriel3

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue130:tutoriel3 [2018/03/02 19:10] d52frissue130:tutoriel3 [2018/03/05 15:16] (Version actuelle) andre_domenech
Ligne 3: Ligne 3:
 Many USB-to-serial adapters will work. Common chipsets are CH340, CP210x, FTDI, PL2303, but any other chipset will work as well. Importantly, they must provide voltages at 3V or 5V, and a Linux driver. It would also be useful if the USB-to-serial adapter is ‘breadboard friendly’, which means it has pins to connect to it, whether directly or through cables, to the breadboard. You could use an Arduino as a usb-serial adapter, see https://oscarliang.com/use-arduino-as-usb-serial-adapter-converter/ for more information.** Many USB-to-serial adapters will work. Common chipsets are CH340, CP210x, FTDI, PL2303, but any other chipset will work as well. Importantly, they must provide voltages at 3V or 5V, and a Linux driver. It would also be useful if the USB-to-serial adapter is ‘breadboard friendly’, which means it has pins to connect to it, whether directly or through cables, to the breadboard. You could use an Arduino as a usb-serial adapter, see https://oscarliang.com/use-arduino-as-usb-serial-adapter-converter/ for more information.**
  
-Dans le dernier numéro, je vous montrais comment fairer lavier la muminosité d'une LED avec un potentiomètre. Dans ce numéro, nous lirons les valeurs du potentiomètre en utilisant une conversion analogique/digitale (ADC), et enverront ces valeurs à une console série. Cette fois, nous avons besoin d'un matériel supplémentaire un adaptateur USB-vers-série (il est conseillé de ne pas utilisé le port série de votre ordinateur car des dommages peut affecter le microcontrôleur à cause de la tension élevée sur le port série de l'ordinateur).+Dans le dernier numéro, je vous montrais comment faire varier la luminosité d'une LED avec un potentiomètre. Dans ce numéro, nous lirons les valeurs du potentiomètre en utilisant une conversion analogique/digitale (ADC), et enverrons ces valeurs à une console série. Cette fois-ci, nous avons besoin d'un matériel supplémentaire un adaptateur USB-vers-série (il est conseillé de ne pas utiliser le port série de votre ordinateur car des dommages peuvent affecter le microcontrôleur à cause de la tension élevée sur le port série de l'ordinateur).
  
-Beaucoup d'adaptateurs USB-vers-série conviendront. les jeux de puces classiques sont les CH340, CP210x, FTDI, PL230, mais beaucoup d'autres fonctionneront aussi. Il est important qu'ils puissent fournir une tension de 3 V ou de 5 V et disposent d'un pilote pour Linux. Il serait bien ausi que l'adaptateur USB-vers-série soit fait pour une plaque d'essai, ce qui signifie qu'il doit avoir des picots pour les connexions, soit directement, soit avec des fils, à la plaque d'essai. Vous pouvez utiliser l'Arduino comme adaptateur USB-vers-série ; regardez https://oscarliang.com/use-arduino-as-usb-serial-adapter-converter/ pour plus d'information.+Beaucoup d'adaptateurs USB-vers-série conviendront. Les circuits classiques sont les CH340, CP210x, FTDI, PL2303, mais beaucoup d'autres fonctionneront aussi. Il est important qu'ils puissent fournir une tension de 3 V ou de 5 V et disposent d'un pilote pour Linux. Il serait bien aussi que l'adaptateur USB-vers-série soit fait pour une plaque d'essai, ce qui signifie qu'il doit avoir des picots pour les connexions à la plaque d'essai, soit directement, soit avec des fils. Vous pouvez utiliser l'Arduino comme adaptateur USB-vers-série ; regardez https://oscarliang.com/use-arduino-as-usb-serial-adapter-converter/ pour plus d'information.
  
 **Serial communication and hardware **Serial communication and hardware
Ligne 15: Ligne 15:
 Communication série et matériel Communication série et matériel
  
-Dans une communication série, les octets de données sont envoyés bit par bit dans une ligne dédiée de réception et de transmission. Voyez en fin d'article d'autres informations de base sur les communications série.+Dans une communication série, les octets de données sont envoyés bit par bit sur une ligne dédiée de réception et de transmission. Voyez en fin d'article d'autres informations de base sur les communications série.
  
-Pour le déroulement du programme, il est important par la suite si la communication est bloquante (le programme s'arrête jusqu'à ce toutes les données soient reçues ou émises) ou non bloquante (les données sont bufferisées et les programme n'a pas besoin de s'arrêter jusqu'à la bonne fin de réception ou d'émission des données ; ensuite, les données seront traitées). Certains microcontrôleurs disposent d'un émetteur-récepteur universel synchrone et asynchrone (USART - Universal Synchronous and Asynchronous Receiver-Transmitter). Le ATmega328p (celui de l'Arduino UNO R3), par exemple,a un USART sur PIN2 en réception et PIN3 en émission des données série.+Pour le déroulement du programme, il est important de savoir, pour la suitesi la communication est bloquante (le programme s'arrête jusqu'à ce toutes les données soient reçues ou émises) ou non bloquante (les données sont en mémoire tampon et le programme n'a pas besoin de s'arrêter jusqu'à la bonne fin de réception ou d'émission des données ; ensuite, les données seront traitées). Un émetteur-récepteur universel synchrone et asynchrone (USART - Universal Synchronous and Asynchronous Receiver-Transmitter) est implémenté sur certains microcontrôleurs. Le ATmega328p (celui de l'Arduino UNO R3), par exemple, a un USART sur PIN2 en réception et PIN3 en émission des données série.
  
 **Great Cow BASIC has a solution to get the hardware USART to work with a few lines of code. Additionally, Great Cow BASIC supports some functions to send and receive data in different data types. See the Great Cow BASIC help for more information, but, to use the USART in the ATmega328p, and send some data, you would start with the following lines. (In real life you would, of course, send more meaningful data): **Great Cow BASIC has a solution to get the hardware USART to work with a few lines of code. Additionally, Great Cow BASIC supports some functions to send and receive data in different data types. See the Great Cow BASIC help for more information, but, to use the USART in the ATmega328p, and send some data, you would start with the following lines. (In real life you would, of course, send more meaningful data):
Ligne 25: Ligne 25:
 An example of using the hardware USART in the ATmega328p is shown on the previous page.** An example of using the hardware USART in the ATmega328p is shown on the previous page.**
  
-Great Cow Basic a une solution pour faire fonctionner l'USART matériel avec quelques lignes de code. De plus, Great Cow BASIC dispose de fonctions pour envoyer et recevoir des données dans différents types de données. Voyez l'aide de Great Cow BASIC pour plus d'information, mais, pour utiliser l'USART du ATmega328p et envoyer quelques données, vous commencerez avec les quelques lignes qui suivent. (Dans la vraie vie, vous enverriez, bien sûr, des données plus significatives).+Great Cow BASIC a une solution pour faire fonctionner l'USART matériel avec quelques lignes de code. De plus, il dispose de fonctions pour envoyer et recevoir différents types de données. Voyez l'aide de Great Cow BASIC pour plus d'information, mais, pour utiliser l'USART du ATmega328p et envoyer quelques données, vous commenceriez avec les quelques lignes qui suivent. (Dans la vraie vie, vous enverriez, bien sûr, des données plus significatives).
  
 Paramétrer l'USART matériel pour des opérations série Paramétrer l'USART matériel pour des opérations série
Ligne 37: Ligne 37:
 Paramétrer des opérations série en utilisant le logiciel Paramétrer des opérations série en utilisant le logiciel
  
-Certains microcontrôleurs n'ont pas d'USART matériel, ce qui est le cas du ATtiny13a que j'utilise pour ces exemples. Une autre raison pourrait être le besoin d'une liaison série supplémentaire sans changer de microcontrôleur. De façon à recevoir et envoyer des données, la communication série peut aussi être réalisée par logiciel. Pour moi, ce serait un gros travail pour la programmer, mais, par chance, Great Cow BASIC a deux méthodes pour les communications série. Pour comparer, j'ai fourni un exemple de chaque, et observé les différences dans les deux méthodes. Great Cow BASIC a aussi deux méthodes pour les liaisons séries par logiciel et les deux sont présentées ci-dessous. Par la simplicité, je fournit les exemples pour l'envoi des valeurs par la liaisons série. Si vous voulez recevoir des données, poursuivez en ajoutant les quelques lignes de code manquantes.+Certains microcontrôleurs n'ont pas d'USART matériel, ce qui est le cas du ATtiny13a que j'utilise pour ces exemples. Une autre raison pourrait être le besoin d'une liaison série supplémentaire sans changer de microcontrôleur. De façon à recevoir et envoyer des données, la communication série peut aussi être réalisée par logiciel. Pour moi, la programmer serait un gros travail, mais, par chance, Great Cow BASIC a deux méthodes pour les communications série. Pour comparer, j'ai fourni un exemple de chaque, et observé les différences des deux méthodes. Great Cow BASIC a aussi deux méthodes pour les liaisons séries par logiciel et les deux sont présentées ci-dessous. Pour la simplicité, je fournis les exemples pour l'envoi des valeurs par la liaison série. Si vous voulez recevoir des données, poursuivez en ajoutant les quelques lignes de code manquantes.
  
 **Option 1 - ‘Legacy Software Serial Method’: **Option 1 - ‘Legacy Software Serial Method’:
Ligne 43: Ligne 43:
 This legacy method was implemented in 2007 - and is a popular method for software serial operations. This method (top right) can handle up to three different serial lines, with baud rates between 300 and 19,200.** This legacy method was implemented in 2007 - and is a popular method for software serial operations. This method (top right) can handle up to three different serial lines, with baud rates between 300 and 19,200.**
  
-Option 1 - « Méthode série par logiciel propriétaire »+Option 1 - « Méthode série par logiciel hérité »
  
-cette méthode propriétaire a été implémentée en 2007 et c'est une méthode populaire pour les opérations série par logiciel. Cette méthode (en haut à droite) peut gérer jusqu'à trois lignes séries différentes, avec des vitesse de transmission entre 300 et 19 200.+Cette méthode héritée a été implémentée en 2007et c'est une méthode populaire pour les opérations série par logiciel. Cette méthode (en haut à droite) peut gérer jusqu'à trois lignes séries différentes, avec des vitesses de transmission entre 300 et 19 200.
  
 **Option 2 - ‘Optimised Method’: **Option 2 - ‘Optimised Method’:
Ligne 55: Ligne 55:
 Option 2 - « Méthode optimisée » Option 2 - « Méthode optimisée »
  
-Cette méthode (en bas à droite) utilise une bibliothèque complémentaire pour Great Cow BASIC, de Frank Steinberg, et c'est un pilote logiciel série optimisé écrit en assembleur portable. « Assembleur portable » signifie que cette méthode optimise supporte les microcontrôleurs AVR et PIC. Cette méthode fournit une vitesse de transmission plus élevée (par ex., un AVR tournant à 1MHz peut gérer jusqu'à 28 800 bauds) et le programme généré est assez petit pour tenir dans le microcontrôleur tiny13a.+Cette méthode (en bas à droite) utilise une bibliothèque complémentaire pour Great Cow BASIC, de Frank Steinberg, et c'est un pilote logiciel série optimisé écrit en assembleur portable. « Assembleur portable » signifie que cette méthode optimisée supporte les microcontrôleurs AVR et PIC. Cette méthode fournit une vitesse de transmission plus élevée (par ex., un AVR tournant à 1 MHz peut gérer jusqu'à 28 800 bauds) et le programme généré est assez petit pour tenir dans le microcontrôleur tiny13a.
  
-Si vous comparez les exemples de code, gardez en tête que le ATMega328p sur l'Arduino vient avec un résonateur à 16 MHz ; aussi, l'horloge système est de 16 MHz. Le ATtiny13a vient avec un e horloge système intégrée de 9,6 MHz ; mais, par défaut, l'horloge est divisée ((lire : limitée) par 8 à un pauvre 1,2 MHz. Pour la changer, il est nécessaire de remplacer les fusibles, ce que je ne veux pas faire dans cette série d'articles je veux garder les choses simples.+Si vous comparez les exemples de code, gardez en tête que l'ATMega328p sur l'Arduino vient avec un résonateur de 16 MHz ; aussi, l'horloge système est de 16 MHz. Le ATtiny13a vient avec une horloge système intégrée de 9,6 MHz ; mais, par défaut, l'horloge est divisée ((lire : limitée) par 8 à un pauvre 1,2 MHz. Pour la changer, il est nécessaire de remplacer les fusibles, ce que je ne veux pas faire dans cette série d'articles je veux garder les choses simples.
  
 **Software prerequisites to work with the serial adapter **Software prerequisites to work with the serial adapter
Ligne 77: Ligne 77:
 Prérequis logiciels pour travailler avec un adaptateur série Prérequis logiciels pour travailler avec un adaptateur série
  
-Si vous ne disposez pas ni adaptateur série, ni logiciel pour un terminal série, sur votre ordinateur, voici quelques brèves explications pour faire fonctionner une communication série. Il y a de bonnes chances que votre ordinateur ait les pilotes nécessaires intégrés : +Si vous ne devez utiliser ni un adaptateur série, ni du logiciel pour terminal série, sur votre ordinateur, voici quelques brèves explications pour faire fonctionner une communication série. Il y a de bonnes chances que votre ordinateur ait les pilotes nécessaires intégrés : 
  
 Branchez votre adaptateur série au port USB et tapez : Branchez votre adaptateur série au port USB et tapez :
Ligne 87: Ligne 87:
 [...] usb 6-2: cp210x converter now attached to ttyUSB0 (...convertisseur cp210x maintenant branché sur ttyUSB0) [...] usb 6-2: cp210x converter now attached to ttyUSB0 (...convertisseur cp210x maintenant branché sur ttyUSB0)
  
-Maintenant vous savez que le jeu de puces de votre adaptateur est supporté (dans mon cas c'est un cp210x) qu'il est assigné à ttyUSB0. Ensuite, donnez à votre utilisateur Linux l'autorisation d'utiliser ce dispositif. Tapez :+Maintenant vous savez que le circuit de votre adaptateur est supporté (dans mon cas c'est un cp210x) et qu'il est assigné à ttyUSB0. Ensuite, donnez à votre utilisateur Linux l'autorisation d'utiliser ce dispositif. Tapez :
  
 sudo chmod 666 /dev/ttyUSB0 sudo chmod 666 /dev/ttyUSB0
Ligne 97: Ligne 97:
 Saisissez votre mot de passe de super-utilisateur, s'il vous est demandé Saisissez votre mot de passe de super-utilisateur, s'il vous est demandé
  
-Ensuite, si vous n'avez pas de terminal série installé, je suggère putty, car il facile à utiliser et facilement installé. Vous n'avez qu'à faire un sudo apt install putty. Ensuite, lancez putty et modifiez la ligne série pour /dev/ttyUSB0la vitesse de transmission suivant celle que vous avez choisie dans le programme du microcontrôleur (j'ai choisi 9 600 bauds pour les exemple). Assurez-vous que les autres paramètres de la ligne série sont corrects, descendez jusqu'à l'onglet des catégories et regardez l'entrée Serial (série). Assurez-vous que les paramètres des bits de données, de stop et de parité sont corrects. Le contrôle du flux entrant n'est pas important pour le moment laissez-le tel quel. Ensuite, cliquez sur « Open » et vous devriez voir les données attendues défilant dans le terminal.+Ensuite, si aucun terminal série n'est installé, je suggère putty, car il est facile à utiliser et facilement installé. Vous n'avez qu'à faire un sudo apt install putty. Ensuite, lancez putty et modifiez la ligne série pour /dev/ttyUSB0 et la vitesse de transmission pour celle que vous avez choisie dans le programme du microcontrôleur (j'ai choisi 9 600 bauds pour les exemples). Assurez-vous que les autres paramètres de la ligne série sont corrects, descendez jusqu'à l'onglet des catégories et regardez l'entrée Serial (série). Assurez-vous que les paramètres des bits de données, de stop et de parité sont corrects. Le contrôle du flux entrant n'est pas important pour le momentlaissez-le tel quel. Ensuite, cliquez sur « Open »et vous devriez voir les données attendues défilant dans le terminal.
  
 **Breadboard circuitry **Breadboard circuitry
Ligne 105: Ligne 105:
 Circuit de la plaque d'essai Circuit de la plaque d'essai
  
-Compilez le programme et flashez-le dans le ATtiny13a avec le programmeur matériel de votre choix. L'adaptateur USB-vers-série doit avoir du + 5 V ou + 3 V et la masse pour alimenter le microcontrôleur. Ensuite, reliez la ligne de réception de l'adaptateur au picot d'émission (PB1) du ATtiny13a. Reliez aussi le potar au + 5 V ou + 3 V et à la masse, et le curseur au picot ADC2 (PB4).+Compilez le programme et flashez-le dans le ATtiny13a avec le programmeur matériel de votre choix. Pour alimenter le microcontrôleur, l'adaptateur USB-vers-série doit avoir du + 5 V ou + 3 V et la masse. Ensuite, reliez la ligne de réception de l'adaptateur au picot d'émission (PB1) du ATtiny13a. Reliez aussi le potar au + 5 V ou + 3 V et à la masse, et le curseur au picot ADC2 (PB4).
  
 **Conclusion **Conclusion
Ligne 113: Ligne 113:
 Conclusion Conclusion
  
-Après quelques essais, il apparaît que la méthode série du logiciel propriétaire produit un programme trop gros - trop gros pour le ATtiny13a. Ma version de code présentée au-dessus se compile sur 1016 octets. Pourquoi est-ce un problème ? D'abord, il ne vous reste plus de place de programme pour autre chose. Ensuite, et c'est plus important, les affichages sur le terminal ne sont pas compréhensibles par l'homme car nous nous sommes limités à l'affichage des valeurs brutes. Je vous suggère, si vous utilisez la méthode propriétaire, d'utiliser un microcontrôleur qui a plus de mémoire flash, par ex., le ATtiny85.+Après quelques essais, il apparaît que la méthode série du logiciel hérité produit un programme trop gros - trop gros pour le ATtiny13a. Ma version de code présentée au-dessus se compile sur 1 016 octets. Pourquoi est-ce un problème ? D'abord, il ne vous reste plus de place de programme pour autre chose. Ensuite, et c'est plus important, les affichages sur le terminal ne sont pas compréhensibles par l'hommecar nous nous sommes limités à l'affichage des valeurs brutes. Je vous suggère, si vous utilisez la méthode héritée, d'utiliser un microcontrôleur qui a plus de mémoire flash, par ex., le ATtiny85.
  
 **But, all is not lost! Serial communication on the ATtiny13a is still feasible. The optimized serial software compiled to around 368 bytes and worked like a charm. With the optimised software, we have a working solution to get serial I/O to work; even with the small program memory device like the ATtiny13a!! **But, all is not lost! Serial communication on the ATtiny13a is still feasible. The optimized serial software compiled to around 368 bytes and worked like a charm. With the optimised software, we have a working solution to get serial I/O to work; even with the small program memory device like the ATtiny13a!!
Ligne 119: Ligne 119:
 Serial communications is an important method for exchanging data. Great Cow BASIC makes the configuration and use very simple. Serial communications is easy - it is useful for debugging and to communicate key messages to the users. It can also be used for inter-microcontroller communications, albeit there are better methods like I2C and SPI.** Serial communications is an important method for exchanging data. Great Cow BASIC makes the configuration and use very simple. Serial communications is easy - it is useful for debugging and to communicate key messages to the users. It can also be used for inter-microcontroller communications, albeit there are better methods like I2C and SPI.**
  
-Mais tout n'est pas perdu ! La communication série avec le ATtiny13a est toujours réalisable. Le logiciel série optimisé est compilé sur environ 360 octets et fonctionne à merveille. Avec le logiciel optimisé, nous avons une solution fonctionnelle pour faire marcher les entrées/sorties série ; même avec un dispositif comme le ATtiny13a et son petit espace mémoire de programme !+Mais tout n'est pas perdu ! La communication série avec le ATtiny13a est toujours réalisable. Le logiciel série optimisé est compilé sur environ 360 octets et fonctionne à merveille. Avec le logiciel optimisé, nous avons une solution fonctionnelle pour faire marcher les entrées/sorties série ; même avec un dispositif comme le ATtiny13a et son petit espace mémoire programme !
  
-Les communication série sont une importante méthode d'échange de données. Great Cow BASIC en rend très simple la configuration et l'utilisation. Les communications série sont faciles elles sont utiles pour déboguer et pour communiquer des messages clés aux utilisateurs. Elles peuvent aussi être utilisées pour les communications inter-contrôleurs, bien qu'il y ait de meilleures méthodes comme I2C et SPI.+Les communications série sont une importante méthode d'échange de données. Great Cow BASIC rend très simple leurs configuration et utilisation. Les communications série sont facileselles sont utiles pour déboguer et pour communiquer des messages clés aux utilisateurs. Elles peuvent aussi être utilisées pour les communications inter-contrôleurs, bien qu'il y ait de meilleures méthodes comme I2C et SPI.
  
 **GitHub Repo **GitHub Repo
Ligne 129: Ligne 129:
 Le dépôt Github Le dépôt Github
  
-Evan Venn (Anobium... mon mentor que je remercie pour ces articles) me suggérait d'ouvrir un dépôt Github pour le code source et, je doit l'admettre, c'était une bonne idée. Si vous voulez télécharger les sources plutôt que les copier/coller, vous pouvez maintenant le faire avec git ou un client SVN. Pour plus d'information, voyez https://github.com/Anobium/Great-Cow-BASIC-Demonstration-Sources/tree/master/Publication%20Solutions/Full%20Circl+Evan Venn (Anobium... mon mentor pour ce qui concerne ces articles) me suggérait d'ouvrir un dépôt Github pour le code source et, je dois l'admettre, c'était une bonne idée. Si vous voulez télécharger les sources plutôt que faire des copier/coller, vous pouvez maintenant le faire avec git ou un client SVN. Pour plus d'information, voyez https://github.com/Anobium/Great-Cow-BASIC-Demonstration-Sources/tree/master/Publication%20Solutions/Full%20Circle
  
 **References **References
Ligne 153: Ligne 153:
 Corrections Corrections
  
-Dans l'article précédent, une formule a été oublié, pour être complet :+Dans l'article précédent, une formule a été oubliée ; pour être complet :
  
  
Ligne 170: Ligne 170:
 par Michael Kennedy et Gord Campbell par Michael Kennedy et Gord Campbell
  
-Ces notes se concentrent sur quelques fonctionnalités principales des implémentations classiques du RS-232, mais quelques autres variantes sont aussi mentionnées. Elles ont pour but de compléter l'article du FCM n° 130 (etc) sur Great Cow BASIC, écrit par Boris.+Ces notes se concentrent sur quelques fonctionnalités principales des implémentations classiques du RS-232, mais quelques autres variantes sont aussi mentionnées. Elles ont pour but de compléter l'article du FCM n° 130 (etc.) sur Great Cow BASIC, écrit par Boris.
  
-« RS-232 » (Recommended Standard 232 - norme recommandée n° 232) est un système de communication populaire. À l'origine (1960), il était utilisé pour des connexions entre systèmes téléphone/terminal/télétype du bon vieux temps.+« RS-232 » (Recommended Standard 232 - norme recommandée n° 232) est un système de communication populaire. À l'origine (1960), il était utilisé pour des connexions entre systèmes téléphone/terminal/télétype désuets.
  
-Les implémentations les plus simples du RS-232 gèrent des communications bidirectionnelles entre uniquement deux appareils (disons, DEV-A et Dev-B). Le câblage n'a que trois fils : une masse, des implusions de données de Dev6a vers DEv-B, et des impulsions de données de Dev-B vers DEv-A. Le câble a normalement une longueur jusqu'à environ 15-20 mètres, mais ça peut aller jusqu'à quelques centaines de mètres, au maximum. Le matériel aux deux extrémités peuvent être des micro-ordinateurs, ou des puces RS-232 dédiées, relativement puissantes, ou juste des pilotes de lignes adaptés où toute l'implémentation est traitée par logiciel.+Les implémentations les plus simples du RS-232 gèrent des communications bidirectionnelles entre uniquement deux appareils (disons, DEV-A et Dev-B). Le câblage n'a que trois fils : une masse, des impulsions de données de Dev-A vers Dev-B, et des impulsions de données de Dev-B vers Dev-A. Le câble a normalement une longueur jusqu'à environ 15-20 mètres, mais ça peut aller jusqu'à quelques centaines de mètres, au maximum. Les matériels aux deux extrémités peuvent être des micro-ordinateurs, ou des puces RS-232 dédiées, relativement puissantes, ou juste des pilotes de ligne adaptésoù toute l'implémentation est traitée par logiciel.
  
 **The speed of the data-pulses must normally be set, in advance, on both devices, and must be based on how quickly both devices can transmit and receive the pulses, on the cable length and quality, the overall electrical environment, etc. Typically, it might be set at 300 baud, 1,200 baud, 2,400, 4,800, 9,600, 14,400, 19,200, or maybe even up to 115,200 baud and beyond. A “baud” refers to the width of each “bit/pulse” on the cable, so 4,800 baud is 4,800 bits per second. **The speed of the data-pulses must normally be set, in advance, on both devices, and must be based on how quickly both devices can transmit and receive the pulses, on the cable length and quality, the overall electrical environment, etc. Typically, it might be set at 300 baud, 1,200 baud, 2,400, 4,800, 9,600, 14,400, 19,200, or maybe even up to 115,200 baud and beyond. A “baud” refers to the width of each “bit/pulse” on the cable, so 4,800 baud is 4,800 bits per second.
Ligne 185: Ligne 185:
 • Dev-A sends one, or one-and-half, or two, “Stop”-bits.** • Dev-A sends one, or one-and-half, or two, “Stop”-bits.**
  
-La vitesse des impulsions de données doivent être pré-positionnée sur les deux dispositifs et doit être basée sur la vélocité de ces deux appareils pour émettre et recevoir des impulsions, sur la longueur et la qualité du câble, l'environnement électrique, etc. Typiquement, elle peut être réglée à 300 bauds, 1,200 bauds, 2,400, 4,800, 9,600, 14,400, 19,200, or peut-être même jusqu'à 115,200 bauds et au-delà.  Un « baud » fait référence à la largeur de chaque « bit/impulsion » sur le câble ; ainsi, 4800 bauds correspondent à 4800 bits par seconde.+La vitesse des impulsions de données doit être pré-positionnée sur les deux dispositifs et doit être basée sur la vélocité de ces deux appareils pour émettre et recevoir des impulsions, sur la longueur et la qualité du câble, l'environnement électrique, etc. Typiquement, elle peut être réglée à 300 bauds, 1 200 bauds, 2 400, 4 800, 9 600, 14 400, 19 200, ou peut-être même jusqu'à 115 200 bauds et au-delà.  Un « baud » fait référence à la largeur de chaque « bit/impulsion » sur le câble ; ainsi, 4 800 bauds correspondent à 4 800 bits par seconde.
  
 Pour envoyer un seul octet de DEv-A vers Dev-B : Pour envoyer un seul octet de DEv-A vers Dev-B :
 • Dev-B doit être prêt à accepter l'octet (évidemment !) • Dev-B doit être prêt à accepter l'octet (évidemment !)
 • Dev-A émet une impulsion d'« avertissement », appelé Start-bit (bit de début), pour réveiller Dev-B ! • Dev-A émet une impulsion d'« avertissement », appelé Start-bit (bit de début), pour réveiller Dev-B !
-• Ensuite, Dev-A envoyer les bits de l'octet. Généralement8, mais quelques fois aussi peu que cinq peut être adapté +• Ensuite, Dev-A émet les bits de l'octet. Généralement 8, mais parfois aussi peu que cinq sont adéquats. 
-• Dev-A doit envoyer un seul Parity bit (bit de parité - pair, impair, aucun)+• Dev-A peut envoyer un unique Parity bit (bit de parité - pair, impair, aucun).
 • Dev-A envoie un, ou un et demi, ou deux, Stop-bits (bits d'arrêt). • Dev-A envoie un, ou un et demi, ou deux, Stop-bits (bits d'arrêt).
  
Ligne 200: Ligne 200:
 SIMPLEX/DUPLEX: Where data pulses are allowed on only one of the two data-wires at any one time, this is defined as Half-Duplex. If Dev-A may send data to Dev-B, and Dev-B may send data to Dev-A, at the same time, this is Full-Duplex. There’s also a “Simplex” approach, where only one device does all the sending, and the other all the receiving - with just a single “data”-wire, for example, a wireservice sending stories to a newsroom.** SIMPLEX/DUPLEX: Where data pulses are allowed on only one of the two data-wires at any one time, this is defined as Half-Duplex. If Dev-A may send data to Dev-B, and Dev-B may send data to Dev-A, at the same time, this is Full-Duplex. There’s also a “Simplex” approach, where only one device does all the sending, and the other all the receiving - with just a single “data”-wire, for example, a wireservice sending stories to a newsroom.**
  
-Ainsi, typiquement, un simple octet peut correspondre au tranfert de 10-12 bits/implusions. Et dans ce cas, une vitesse de 4800 bauds permettra un transfert maximum d'environ 400-480 octets par seconde  - en supposant qu'il n'pas de temps perdu entre chaque  « octet » ce qui ne sera jamais atteint en réalité !+Ainsi, typiquement, un simple octet peut correspondre au tranfert de 10-12 bits/implusions. Et dans ce cas, une vitesse de 4 800 bauds permettra un transfert maximum d'environ 400-480 octets par seconde  - en supposant qu'il n'ait pas de temps perdu entre chaque « octet » ce qui ne sera jamais atteint en réalité !
  
-UART : l'approche du dessus est qualifiée de « Asynchrone », car il peut exister un temps indéterminé entre les octets. Les dispositifs sont appelés UART (Universal Asynchronous Receiver and Transmitter - Émetteur/récepteur asynchrone universel).+UART : l'approche ci-dessus est qualifiée d'« Asynchrone », car il peut exister un temps indéterminé entre les octets. Les dispositifs sont appelés UART (Universal Asynchronous Receiver and Transmitter - Émetteur/récepteur asynchrone universel).
  
-SIMPLEX/DUPLEX : quand les impulsions de données ne sont autorisées que sur un seul des deux fils de données à tout moment, ceci est appelé Half-Duplex. Si Dev-A peut envoyer des données à  Dev-B, et Dev-B à Dev-A, en même temps, c'est du Full-Duplex. Il a aussi l'approche « Simplex », où un seul des dispositifs réalise tous les envois, et l'autre toutes les réceptions avec un seul fil de données, par exemple, un service par câble envoyant des articles à une rédaction de journal.+SIMPLEX/DUPLEX : quand les impulsions de données ne sont autorisées que sur un seul des deux fils de données à tout moment, ceci définit le Half-Duplex. Si Dev-A peut envoyer des données à  Dev-B, et Dev-B à Dev-A, en même temps, c'est du Full-Duplex. Il a aussi l'approche « Simplex », où un seul des dispositifs réalise tous les envois, et l'autretoutes les réceptions avec un seul fil de données, par exemple, un service par câble envoyant des articles à une rédaction de journal.
  
 **Further, less common, variations on RS-232... **Further, less common, variations on RS-232...
Ligne 212: Ligne 212:
 Additional Control wires: In some implementations, extra wires are used ([D]CD Carrier Detect, RTS Request to Send, CTS Clear to Send, DTR Data Terminal Ready, DSR Data Set Ready, RI Ring Indicator, RTR Ready To Receive, etc), which are used by each device to tell the other device that they are Busy, Ready, Unavailable, etc. Often called “Handshaking” or “Flow-Control” signals.** Additional Control wires: In some implementations, extra wires are used ([D]CD Carrier Detect, RTS Request to Send, CTS Clear to Send, DTR Data Terminal Ready, DSR Data Set Ready, RI Ring Indicator, RTR Ready To Receive, etc), which are used by each device to tell the other device that they are Busy, Ready, Unavailable, etc. Often called “Handshaking” or “Flow-Control” signals.**
  
-D'autres variantes, moins courantes, du RS-232 ...+D'autres variantes, moins courantes, du RS-232
  
-USART : deux fils peuvent être utilisés pour envoyer les bits de données de Dev-A à Dev-B et deux autres pour les bits de données Dev-B vers Dev-A. Le second fil de chaque paire contient des impulsions d'horloge qui correspondent aux bits de données du premier fil. Ensuite, les bits supplémentaires de début et de fin n'sont pas nécessaires à chaque octet et il n'est pas nécessaire de bloquer les deux dispositifs sur une même vitesse car les impulsions d'horloge détermine la largeur des impulsions de données. Cette approche permet des vitesses de communications légèrement plus élevées et de meilleure qualité. Les dispositifs aux deux bouts sont appelés USART (Universal Synchronous and Asynchronous Receiver and Transmitter - Émetteur/récepteur synchrone et asynchrone universel) ; ils peuvent gérer les deux protocoles.+USART : deux fils peuvent être utilisés pour envoyer les bits de données de Dev-A à Dev-B et deux autres pour les bits de données Dev-B vers Dev-A. Le second fil de chaque paire contient des impulsions d'horlogequi correspondent aux bits de données du premier fil. Ensuite, les bits supplémentaires de début et de fin ne sont pas nécessaires à chaque octet et il n'est sans doute pas nécessaire de bloquer les deux dispositifs sur une même vitessecar les impulsions d'horloge déterminent la largeur des impulsions de données. Cette approche permet des vitesses de communication légèrement plus élevées et de meilleure qualité. Les dispositifs aux deux bouts sont appelés USART (Universal Synchronous and Asynchronous Receiver and Transmitter - Émetteur/récepteur synchrone et asynchrone universel) ; ils peuvent gérer les deux protocoles.
  
-Fils de contrôle additionnels : Dans certaines implémentations, des fils supplémentaires sont utilisés ([D]CD Carrier Detect, RTS Request to Send, CTS Clear to Send, DTR Data Terminal Ready, DSR Data Set Ready, RI Ring Indicator, RTR Ready To Receive, etc), sont se sert chaque dispositif pour dire à l'autre qu'il est Busy, Ready, Unavailable, etc. (Occupé, Prêt, Indisponible). Ils sont souvent appelés signaux de « Handshaking » (accord manuel) or “Flow-Control” (contrôle de flux).+Fils de contrôle additionnels : dans certaines implémentations, des fils supplémentaires sont utilisés ([D]CD Carrier Detect, RTS Request to Send, CTS Clear to Send, DTR Data Terminal Ready, DSR Data Set Ready, RI Ring Indicator, RTR Ready To Receive, etc.), dont se sert chaque dispositif pour dire à l'autre qu'il est Busy, Ready, Unavailable, etc. (Occupé, Prêt, Indisponible). Ils sont souvent appelés signaux de « Handshaking » (accord manuel) ou de « Flow-Control » (contrôle de flux).
  
 **RS-422, Longer cables: Slightly different devices and cabling arrangements can be adopted where longer cable runs, and/or higher speeds, are needed. The cable contains two wires for each of the data-pulses runs, and two more wires for each of the clock-pulses - like standard twisted-pair LAN cables. **RS-422, Longer cables: Slightly different devices and cabling arrangements can be adopted where longer cable runs, and/or higher speeds, are needed. The cable contains two wires for each of the data-pulses runs, and two more wires for each of the clock-pulses - like standard twisted-pair LAN cables.
Ligne 224: Ligne 224:
 Error Handling!: If you’re writing “serial” software, and/or taming serial hardware, for private educational or entertainment purposes, then you probably won’t be over-worried if a few errors arise now-and-then. For example, if you’re sending data, serially, to a display, or controlling a few LEDs, etc, you might chose to not bother if the device is present or not, or powered on, or fully “reset” after a power-on, or ready to send/receive serial data, or that its serial configuration matches ours, or that it’s faulty, or has a hundred other issues....** Error Handling!: If you’re writing “serial” software, and/or taming serial hardware, for private educational or entertainment purposes, then you probably won’t be over-worried if a few errors arise now-and-then. For example, if you’re sending data, serially, to a display, or controlling a few LEDs, etc, you might chose to not bother if the device is present or not, or powered on, or fully “reset” after a power-on, or ready to send/receive serial data, or that its serial configuration matches ours, or that it’s faulty, or has a hundred other issues....**
  
-RS-422, des câbles lus longs : des dispositifs et une arrangement du câblage légèrement différents peuvent être adoptés où de plus grandes distances de câblage et/ou des plus grandes vitessessont nécessaires. Le câble contient deux fils pour chaque liaison d'impulsions de données et deux câbles supplémentaires pou chacune des impulsions d'horloge comme les câbles normaux des réseaux locaux, à paires torsadées.+RS-422, des câbles plus longs : des dispositifs et un arrangement du câblage légèrement différents peuvent être adoptés là où de plus grandes distances de câblage et/ou de plus grandes vitesses sont nécessaires. Le câble contient deux fils pour chaque liaison d'impulsions de données et deux câbles supplémentaires pour chacune des impulsions d'horlogecomme les câbles normaux des réseaux locaux, à paires torsadées.
  
-RS-485, des dispositifs multiples : Différents CI peuvent être déployés là où, par exemple, plus de deux dispositifs (voire 10, 20, 30...) peuvent partager le(s) même(s) câble(s) et où, par exemple, ils dialoguent tous avec un dispositif « serveur/maître ». +RS-485, des dispositifs multiples : différents CI peuvent être déployés là où, par exemple, plus de deux dispositifs (voire 10, 20, 30...) peuvent partager le(s) même(s) câble(s) et où, par exemple, ils dialoguent tous avec un dispositif « serveur/maître ». 
  
-Erreur de gestion ! : Si vous écrivez logiciel « série » et/ou apprivoisez un matériel série, pour des besoins éducatifs ou ludiques, vous n'êtes probablement pas très inquiet si quelques erreurs apparaissent de temps en temps. Par exemple, si vous envoyez des donnéespar liaison sérieà un afficheur, ou pilotez quelques LED , etc, vous pouvez choisir de ne pas vous préoccuper si le dispositif est présent ou pas, ou allumé, ou complètement «reseté » après la mise sous tension, ou prêt pour une émission/réception série de données, ou que sa configuration série correspond à la votre, s'il est en défaut, ou si il a une centaine d'autre problèmes ...+Gestion des erreurs ! : Si vous écrivez du logiciel « série » et/ou apprivoisez un matériel série, pour des besoins éducatifs ou ludiques, vous n'êtes probablement pas très inquiet si quelques erreurs apparaissent de temps en temps. Par exemple, si vous envoyez des données par liaison série à un afficheur, ou pilotez quelques LED , etc., vous pouvez choisir de ne pas vous préoccuper de savoir si le dispositif est présent ou pas, ou allumé, ou complètement « reseté » après la mise sous tension, ou prêt pour une émission/réception série de données, ou que sa configuration série correspond à la vôtre, s'il est défectueux, ou s'il a une centaine d'autres problèmes...
  
 **However, if your RS-232 app is used in an MRI/CAT-scanner, and it’s controlling doses of radiation, positions of motors, etc, and you’re the patient, then you’ll definitely have to handle all of the above conditions! Then, you’ll probably have to use some of the additional hand-shaking signals/wires that I mentioned above, and you’ll probably have to introduce a whole “protocol” and timings to control all your comms. Eg, when a sender/transmitter wishes to send some data to a receiver, then, minimally: **However, if your RS-232 app is used in an MRI/CAT-scanner, and it’s controlling doses of radiation, positions of motors, etc, and you’re the patient, then you’ll definitely have to handle all of the above conditions! Then, you’ll probably have to use some of the additional hand-shaking signals/wires that I mentioned above, and you’ll probably have to introduce a whole “protocol” and timings to control all your comms. Eg, when a sender/transmitter wishes to send some data to a receiver, then, minimally:
Ligne 238: Ligne 238:
 • Dev-A: Excellent – thank you, over-and-out.** • Dev-A: Excellent – thank you, over-and-out.**
  
-Cependant, si votre appli RS-232 est utilisée dans un scanner à résonance magnétique nucléaire ou à tomographie, et qu'il contrôle les doses de radiation, les positions et les moteurs, etc. et que vous êtes le malade, alors vous devez réellement gérer toutes les conditions ci-dessus ! Ensuite, vous devrez probablement utiliser certains signaux/câbles d'accord ("hand-shaking") dont j'ai parlé plus haut et vous devrez probablement définir un « protocole » complet et des séquence temporelles pour maîtriser toutes vos communications. par ex., quand un émetteur/transmetteur souhaite envoyer des données à un récepteur, alors, au minimum : +Cependant, si votre appli RS-232 est utilisée dans un scanner à résonance magnétique nucléaire ou un tomographe, et qu'il contrôle les doses de radiation, les positions et les moteurs, etc.et que vous êtes le malade, alors vous devrez réellement gérer toutes les conditions ci-dessus ! Ensuite, vous devrez probablement utiliser certains signaux/câbles d'accord ("hand-shaking") dont j'ai parlé plus haut et vous devrez probablement définir un « protocole » complet et des séquences temporelles pour maîtriser toutes vos communications. Par ex., quand un émetteur/transmetteur souhaite envoyer des données à un récepteur, alors, au minimum : 
-• Les deux dispositifs devront utiliser les fils de contrôle pour assurer que les deux sont prêts et volontaires pour communiquer.+• Les deux dispositifs devront utiliser les fils de contrôle pour s'assurer que les deux sont prêts et disposés à  communiquer.
 • Dev-A dit : « Hello, je veux vous envoyer une alerte/lecture... Êtes-vous prêt, et pouvez vous recevoir maintenant ? » • Dev-A dit : « Hello, je veux vous envoyer une alerte/lecture... Êtes-vous prêt, et pouvez vous recevoir maintenant ? »
 • Dev-B : « Oui, envoyez-le. » • Dev-B : « Oui, envoyez-le. »
Ligne 257: Ligne 257:
 À toutes les étapes précédentes : À toutes les étapes précédentes :
 • L'émetteur du paquet doit avoir des limiteurs de temps (timeout) enclenchés, pour vérifier si les transmissions se seraient bloquées... • L'émetteur du paquet doit avoir des limiteurs de temps (timeout) enclenchés, pour vérifier si les transmissions se seraient bloquées...
-• Le récepteur devrait avoir des timeouts en route, pour s'assurer que le paquet est arrivé dans les temps et complètement...+• Le récepteur devrait avoir des timeouts qui tournent, pour s'assurer que le paquet est arrivé dans les temps et complètement...
 • Toutes les lignes de handshaking devraient être vérifiées continuellement, aux deux bouts, pour s'assurer que personne n'a coupé le câble ou l'alimentation... • Toutes les lignes de handshaking devraient être vérifiées continuellement, aux deux bouts, pour s'assurer que personne n'a coupé le câble ou l'alimentation...
 • Si des erreurs mineures se produisent, des renvois devraient être tentés probablement, automatiquement, pendant un moment... • Si des erreurs mineures se produisent, des renvois devraient être tentés probablement, automatiquement, pendant un moment...
 • La gestion des erreurs majeures/catastrophiques devrait être conçue, implémentée et testée. • La gestion des erreurs majeures/catastrophiques devrait être conçue, implémentée et testée.
  
-Ainsi, pour sonner l'alerte, ou allumer une lampe de danger, ou faire tourner un certain moteur pas-à-pas, un simple « Print... » devrait re remplacé par un fonction « LED-On() de 500 lignes ! :-)+Ainsi, pour sonner l'alerte, ou allumer une lampe de danger, ou faire tourner un certain moteur pas-à-pas, un simple « Print... » devrait être remplacé par une fonction « LED-On() » de 500 lignes ! ;-)
  
 **Finally: For lots of good, general, details, see: https://en.wikipedia.org/wiki/RS-232. And do check all the other 18,000,000 websites  ;-) **Finally: For lots of good, general, details, see: https://en.wikipedia.org/wiki/RS-232. And do check all the other 18,000,000 websites  ;-)
Ligne 273: Ligne 273:
  
  
-Au final pour de nombreux et bons détails généraux, voyez : https://en.wikipedia.org/wiki/RS-232. Et jetez un œil aussi  aux 18 000 000 autres sites Web :-)+Pour terminer voyez de nombreux et bons détails généraux sur : https://fr.wikipedia.org/wiki/RS-232. Et jetez un œil aussi aux 18 000 000 d'autres sites Web ;-)
  
-Si vous implémentez des communications RS-232 sur un dispositif particulier (UART, uP, CPU, etc), alors regardez les détails des datasheets des constructeurs des matériels. Normalement, les dispositifs fonctionnent exactement comme les spécifs. Cependant, si vous contraignez les dispositifs, ou si vous écrivez des pilotes de bas niveau, etc, vous pourriez observer parfois des résultats « inexplicables ». Quand on contraint les dispositifs, certains défauts désagréables peuvent apparaître ; aussi, vous devrez pratiquer quelques recherches sur le Web où, heureusement, d'autres gens auront posté des explications et des suggestions.+Si vous implémentez des communications RS-232 sur un dispositif particulier (UART, uP, CPU, etc), alors regardez les détails des datasheets des constructeurs des matériels. Normalement, les dispositifs fonctionnent exactement comme les spécifs. Cependant, si vous contraignez les dispositifs, ou si vous écrivez des pilotes de bas niveau, etc., vous pourriez observer parfois des résultats « inexplicables ». Quand on contraint les dispositifs, certains défauts désagréables peuvent apparaître ; aussi, vous devrez pratiquer quelques recherches sur le Web où - on peut l'espérer - d'autres gens auront posté des explications et des suggestions.
  
 Bonne chance ! Bonne chance !
  
-Michael Kennedy and Gord Campbell +Michael Kennedy et Gord Campbell 
issue130/tutoriel3.1520014203.txt.gz · Dernière modification : 2018/03/02 19:10 de d52fr