Communication série RS232

Documents pareils
Transmissions série et parallèle

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Master d'informatique 1ère année Réseaux et protocoles. Couche physique

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Sélection du contrôleur

PIC EVAL Dev Board PIC18F97J60

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Programmation d un contrôleur via une liaison téléphonique Note d application

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

ProCod. Manuel d utilisation. Software de programmation pour codeurs absolus TWK modèles CRF et DAF CRF DF 08 / 10

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Licence Sciences et Technologies Examen janvier 2010

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TP, première séquence d exercices.

Premiers Pas en Programmation Objet : les Classes et les Objets

Câblage des réseaux WAN.

Transmission de données. A) Principaux éléments intervenant dans la transmission

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

COMMANDER la puissance par MODULATION COMMUNIQUER

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

ALERT NOTICE D UTILISATION DU DRIVER SIA

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Education Delivery Intelligent Tool

Université de La Rochelle. Réseaux TD n 6

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Connexion sur REDLION G-308 avec le modem GSM GDW-11 pour envoi de SMS

CLIP. (Calling Line Identification Presentation) Appareil autonome affichant le numéro appelant

2 Raccordement d une imprimante, d un terminal ou d un ordinateur au DULCOMARIN

MICROSENS. Module Bridge Ethernet / Fast Ethernet. fiber optic solutions. Description. Construction

Suivant les windows, le signal pour indiquer l imprimante par défaut est un petit rond noir ou vers avec un V à l intérieur.

Tp 1 correction. Structures de données (IF2)

Téléphone de Secours Memcom

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Plan du cours. Historique du langage Nouveautés de Java 7

Utilisation d objets : String et ArrayList

Leçon 1 : Les principaux composants d un ordinateur

2. DIFFÉRENTS TYPES DE RÉSEAUX

TER Licence 3 Electronique des Télécoms Transmission GSM

Spécifications Techniques d Interface

UE 503 L3 MIAGE. Initiation Réseau et Programmation Web La couche physique. A. Belaïd

Projet Active Object

Architecture des ordinateurs

Structure fonctionnelle d un SGBD

SCL LOGICIEL DE CONTROL

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Ordinateurs, Structure et Applications

TP5 VOIP résidentiel étendu Page 1 sur 7 Lp Ampere CLAVAUD

Programme Compte bancaire (code)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Algorithmique des Systèmes Répartis Protocoles de Communications

Année Transmission des données. Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.

ICOM DATA DATA FAX PHOTO PHONIE

COMMUNICATION PC/MINITEL

Cisco Certified Network Associate Version 4

ANALYSE TRAMEs LIAISON SERIE

CONVERTISSEUR RS 232/485 NOTICE

Tuto pour connecter une source RVB RGB à un moniteur Commodore / Amiga

Description d'une liaison

NanoSense. Protocole Modbus de la sonde Particules P4000. (Version 01F)

Logiciels E.Set, E.View et E.View+

Notions fondamentales du langage C# Version 1.0

TD3: tableaux avancées, première classe et chaînes

ANNEXE 5 (1 page) MIC2920x

Ressource Site EURIDIS

Version beta. Station Météo 12/11/2012. Réalisation d un Station Météo avec Webserver composée de capteurs Grove et d un module Wifi Flyport.

COMMUTEL PRO VM3 INTERFACE GSM VOIX POUR EMULATION DE LIGNE RTC ET TRANSMETTEUR DE SMS D ALERTES ET TECHNIQUES.

CONFIGURATION ET UTILISATION

Qualité du logiciel: Méthodes de test

ACTIVITÉ DE PROGRAMMATION

1. PRESENTATION DU PROJET

ALERT NOTICE D UTILISATION DU DRIVER VOCALYS. (Cesa 200 bauds / Contact-ID)

Projet de programmation (IK3) : TP n 1 Correction

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Télécommunications. Plan

TP Contraintes - Triggers

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

PocketNet SNMP/Modbus

Réalisation d un réseau de capteurs de température sans fil basé sur le protocole ZigBee

TYXAL. Annexe pour la télésurveillance et l'accès PC par modem pour les transmetteurs des gammes TYXAL et TYDOM

SoMachine. Solution logicielle pour votre architecture Machine Atelier de découverte. SoMachine

Chapitre 2. Classes et objets

Guide d installation et d utilisation

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

TP3 : Manipulation et implantation de systèmes de fichiers 1

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Conventions d écriture et outils de mise au point

Génie Logiciel avec Ada. 4 février 2013

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation en Java IUT GEII (MC-II1) 1

/ / / Système de distribution audio A44/A88 Logiciel PC

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Transmission d informations sur le réseau électrique

LOGIcIEL WZP. QUICKSTART-logiciel-WZP-6004V1.2

Algorithmique et Programmation, IMA

TP1 : Initiation à Java et Eclipse

DIALOGUE RS4S232 AVEC TELESURVEILLANCE ET SUPERVISEURS

Systèmes de transmission

Transcription:

DUT informatique, TP info embarquée n 3, année 2015 P. Kauffmann MODULE INFORMATIQUE EMBARQUEE Communication série RS232 1. Présentation De nombreux systèmes embarqués communiquent avec l extérieur via une liaison filaire, radio ou infrarouge. Beaucoup de ces interfaces de communication utilisent la liaison série asynchrone RS232 pour se connecter au microcontrôleur. Dans ce TP de 2 h, nous allons mettre en place une application embarquée qui génère un signal périodique qu elle communique via un port série RS232 directement au PC du poste de travail qui fournira une IHM graphique déportée capable d'afficher sous forme de courbe l évolution temporelle du signal en fonction du temps. 2. Objectif(s) opérationnel(s) Devenir capable d écrire un pilote de périphérique RS232, 3. Organisation matérielle Le TP sera réalisé par un groupe de deux étudiants. Le TP fera l'objet d un rapport écrit contenant les réponses aux questions et le code des fonctions demandées, rendu en fin de séance sur papier. 4. Documentation et matériel nécessaire Les documentations nécessaires pour la réalisation de ce TP sont : polycopié de cours sur les microcontrôleurs, notes de cours personnelles, documentation électronique de la famille RX62, les schémas de la plateforme cible. Le matériel nécessaire pour la réalisation de ce TP est : un ordinateur compatible PC avec la chaîne de développement RX62, un système RX62N avec carte prototypage rapide. 5. Présentation des interfaces de communication

5.1. Rappels sur la liaison série RS232 La liaison série RS232 est un protocole de communication datant des années 1950 largement utilisé durant toutes les périodes de l'informatique et qui reste essentiel de nos jours comme interface pour les systèmes de communication plus évolués. Il a été conçu au départ pour relier un ETTD (Elément Terminal de Traitement de Données), c'est à dire un ordinateur, imprimante, console, etc. à un ETCD (Elément Terminal de Communication de Données), c'est-à-dire un modem. Nous allons utiliser cette liaison pour connecter notre système embarqué à base de RX62N qui se comporte comme un ETCD au PC du poste de travail qui se comporte comme un ETTD et qui nous servira d IHM. Dans une liaison série asynchrone il faut choisir plusieurs paramètres et faire des choix identiques pour les deux entités connectées ensembles. Les choix à faire sont : la vitesse de transmission en Bauds : 110,, 9600,, 115200, ou plus (sous condition), la parité (paire, impaire ou sans), le nombre de bits de données par caractère (5 à 8), le nombre minimal de bits d arrêt (1, 1,5 ou 2), le mode de contrôle de flux (hard, soft ou absent). En ce qui nous concerne, nous allons communiquer sans contrôle de flux et sans parité, en 8 bits avec 1 bit d arrêt au moins et à 115200 Bauds (vitesse maximale sur les PC). 6. Le SCI (Serial communication Interface) du RX62N en mode asynchrone (RS232) 6.1. Principe général Le RX62N dispose de six ports série nommés SCI pouvant fonctionner dans divers modes synchrones et asynchrones. Nous allons utiliser le SCI6 qui dispose d une prise DB9 en face latérale gauche de la carte de prototypage. N. B. : pour fonctionner correctement, il faut passer par un petit adaptateur DB9 qui permute des broches car le brochage d origine n est pas standard. Nous allons connecter la DB9 de la carte de prototypage sur l adaptateur USB/série du PC via un câble série. Cet adaptateur est relié par un pilote de périphérique au port série COM1 du PC (connecteur 9 broches situé à l arrière des machines de la salle de TP). On peut distinguer plusieurs méthodes de gestion du port série : mode alternat, c est-à-dire une direction après l autre (impossibilité de recevoir lorsqu on émet), mode «full duplex», émission et réception simultané. Réception au moins sous interruption.

La seconde méthode est plus performante, mais nécessite plus de code car la bibliothèque RPDL ne fournit pas de code pour fonctionner en mode «full duplex». Pour exploiter le port série on va réaliser une classe sci minimaliste qui ne sait gérer qu un port série (le numéro 6) et offre un service minimal avec un seul constructeur sci(uint8_t priority, uint32_t speed) qui initialise le port série et une seule méthode void scitrans(uint8_t * string) qui met dans le registre d émission du port série le premier caractère de la chaîne de caractères à émettre avec l instruction SCI6.TDR = m_scitx6message[0];. Pour exploiter le port série en «full duplex» sous interruption il faut aussi deux fonctions scisend() et scireceive() qui ne peuvent pas être des méthodes car ce sont des fonctions d interruption. Leur code est présenté sous cette forme aux paragraphes 6.3 et 6.4. Toutefois, il est parfaitement possible d utiliser des méthodes de même nom ; les fonctions d interruption se contentant alors d appeler ces méthodes. Cette manière de faire très générale doit être privilégiée. Elles ont besoin d avoir accès aux attributs publics suivants de la classe : // for reception volatile uint8_t m_scirxmessage[128]; volatile bool m_scirxfree; // for transmission volatile uint8_t m_scitxmessage[64]; volatile bool m_scitxfree; scisend() émet sous interruption tous les caractères excepté le premier ; les caractères étant prélevés dans le tampon d émission m_scitxmessage[].scireceive() reçoit tous les caractères sous interruption, les place dans le tampon m_scirxmessage[] et désactive le fanion m_scitxfree pour indiquer la fin de l opération. 6.2. Initialisation Pour initialiser la liaison série de SCI6 dans le microcontrôleur on pourra utiliser le canevas ci-après en ajoutant les valeurs numériques manquantes. sci::sci(uint8_t priority, uint32_t speed) /* Declare error flag */ bool err = true; /* select A pins for SCI 6 */ err &= R_SCI_Set(xx); /* Configure SCI6 in asynchronous, 8N1 mode */ err &= R_SCI_Create(xx); // define priority of SCI6 interrupts IPR(SCI6, ) = priority; // activate transmission interrupt IEN(SCI6,TXI6) = xx; // activate reception interrupt IEN(SCI6,RXI6) = xx; // enable full duplex communication under interrupt SCI6.SCR.BYTE = 0xF0; // SCI6 is free at this time

m_scirxfree = m_scitxfree = xx; /* Halt in while loop when RPDL errors detected */ while(!err); 6.3. Fonctions d émission La méthode d émission du premier caractère placée dans le fichier de classe sci.cpp aura un code semblable à celui donné ci-après : void sci::scitrans(uint8_t * string) // string memorization strcpy((char *)m_scitxmessage, (char *)string); // say SCI occupied m_scitxfree = false; // transmit first character SCI6.TDR = m_scitxmessage[0]; La fonction d interruption, placée également dans le fichier de classe sci.cpp gérant l émission du second au dernier caractère, dont le canevas à compléter est donné ci-après, assurera l émission sans gestion de flux. Elle utilise l objet sci6 de la classe sci instancié statiquement. void scisend(void) static uint8_t messbyte = xx; characters // number of transmitted if(messbyte>62) messbyte = xx; // avoid overflow if (sci6.m_scitxmessage[messbyte] == xx) // last character? messbyte = xx; sci6.m_scitxfree = true; else SCI6.TDR = sci6.m_scitxmessage[messbyte++]; N. B. : la variable messbyte compte les caractères et le fanion sci6.m_scitx6free permet de déterminer si le port série est libre ou occupé (occupé à false). 6.4. Fonction de réception La fonction d interruption, placée dans le fichier de classe sci.cpp gérant la réception, dont le canevas à compléter est donné ci-après, assurera la réception sans gestion de flux. Cette fonction inutilisée dans l immédiat sera indispensable pour les TP suivants lorsque la communication deviendra bidirectionnelle.

void scireceive(void) static uint8_t messbyte = xx; if(messbyte>126) messbyte = xx; sci6.m_scirxmessage[messbyte++] = SCI6.RDR; if (sci6.m_scirxmessage[messbyte - 1] == '\n') transmission sci6.m_scirxmessage[messbyte-2] = '\0'; string messbyte = xx; sci6.m_scirxfree = false; data // avoid overflow // receive // end of // add end of // presence of new N. B. : la variable messbyte compte les caractères et le fanion sci6.m_scirxfree permet de déterminer si le port série est libre ou occupé (occupé à false). 6.5. Gestion des exceptions La communication série est susceptible de générer des exceptions. Ces exceptions déclenchent des interruptions. Ceci nous oblige à rajouter dans le code de gestion du port série les deux fonctions d interruption ci-après : void scisendend() sci6.m_scitxfree = true; // inhibit end of transmission interrupt SCI6.SCR.BIT.TEIE = 0; void scireceiveerror() // clear parity error SCI6.SSR.BIT.PER = 0; // clear framing error SCI6.SSR.BIT.FER = 0; // clear overrun error SCI6.SSR.BIT.ORER = 0; 7. Gestion du port série coté PC Une application adaptée est nécessaire pour visualiser sous forme de courbe les données envoyées au PC via la liaison série. On pourra utilisera l émulateur de terminal Teraterm placé sur toutes les machines de la salle de TP pour vérifier sous forme de texte le bon fonctionnement des données transmises. Cet émulateur devra toutefois être d abord configuré pour fonctionner correctement :

Connexion série port COM1, Setup -> serial port -> Baud rate 115200, Data 8 bit, Parity none, Stop 1 bit, Flow control none. Setup -> terminal -> Receive CR, Transmit CR+LF. 8. Manipulations 8.1. Dispositif embarqué communiquant On se propose d utiliser le lien RS232 de la maquette vers le PC pour afficher la courbe d une grandeur mesurée par le RX62N. Comme, pour le moment, on n a pas de capteur installé sur le système embarqué, on simule le signal de mesure par un signal qui évolue temporellement périodiquement en dent de scie, signal généré par une méthode ajoutée à la classe tps nommée void tps::dentscie(). La méthode tps::dentscie()incrémente l attribut m_dent (valeur initiale nulle) de 10 unités à chaque appel, et remet sa valeur à 0 à chaque fois qu elle atteint 400. Elle est exécutée 5 fois par seconde et l attribut m_dent est transmis sur le port série pour générer le signal désiré à la même fréquence. L application embarquée sur le RX62N aura les caractéristiques suivantes : La communication par le port série se fera en mode asynchrone à la vitesse de 115200 Bauds, 8 bits, sans contrôle de flux. La mesure obtenue par une méthode «get» sera transmise 5 fois par seconde en même temps qu elle sera affichée sur l afficheur LCD embarqué (affichage lorsqu on se trouve à la gestion de la ligne 5 de l afficheur et émission sans affichage lorsqu on se trouve à la gestion de la ligne 6 de l afficheur). Chaque mesure émise sur le port série se présentera sous la forme d'une chaîne de caractères ASCII représentant un entier, terminé par un saut de ligne et respectant la forme suivante : 50\r\n. Réalisez le travail suivant : Partez su squelette fourni «TP3serie». Complétez les fichiers sci.h et sci.cpp de façon à obtenir une classe sci complète. Ajoutez dans l application «TP3serie» l instanciation statique en sci6 de la classe sci (priorité 2 et vitesse par défaut 115200 Bauds). Ajoutez dans le code d affichage à la sixième ligne le code de transmission de l attribut «m_dent». Testez le fonctionnement avec l émulateur de terminal TeraTerm et éventuellement le script tcl fourni. Montrez le fonctionnement de votre application à l'enseignant d'encadrement. Si vous avez le temps, ajoutez à la septième ligne le message fixe «RECEPTION» et sur la suivante l affichage des chaînes de caractères émanant du port série.