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
issue130:tutoriel3 [2018/03/03 15:16] auntieeissue130: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 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 utilisé 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).+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 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. 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.
Ligne 17: Ligne 17:
 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. 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 de savoir pour 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 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.+Pour le déroulement du programme, il est important de savoirpour 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 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).+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 45: Ligne 45:
 Option 1 - « Méthode série par logiciel hérité » Option 1 - « Méthode série par logiciel hérité »
  
-Cette méthode héritée 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 vitesses 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 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 à 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 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.+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 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 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 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 113: Ligne 113:
 Conclusion Conclusion
  
-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 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 héritée, 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'homme, car 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 121: Ligne 121:
 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 ! 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 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 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 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 174: Ligne 174:
 « 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. « 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 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é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 191: Ligne 191:
 • 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 émet les bits de l'octet. Généralement 8, mais parfois aussi peu que cinq sont adéquats. • Ensuite, Dev-A émet les bits de l'octet. Généralement 8, mais parfois aussi peu que cinq sont adéquats.
-• Dev-A peut envoyer un unique 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 4 800 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 ci-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 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'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'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.
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 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 vitesse car 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.+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.), 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). 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).
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 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'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 ». 
  
-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éespar 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 votre, s'il est défectueux, ou s'il a une centaine d'autres 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 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 :+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 s'assurer que les deux sont prêts et disposés à  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 ? »
Ligne 273: Ligne 273:
  
  
-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 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ùon peut l'espérerd'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.1520086569.txt.gz · Dernière modification : 2018/03/03 15:16 de auntiee