Chapitre 9 - Liaison Serie RS232

October 21, 2017 | Author: the.diable.tristre | Category: Physical Layer Protocols, Manufactured Goods, Computer Networking, Digital Electronics, Data
Share Embed Donate


Short Description

Liaison Serie RS232...

Description

Systèmes à microprocesseurs

La liaison série RS232 Utilisation de l'EUSART

1

Généralités ●

Transmissions série et parallèle 



La communication entre 2 systèmes peut se faire soit de manière parallèle, soit de manière série. La communication série est très importante dans le domaine de la télécommunication et plus généralement dans le transfert d’informations. 2

Généralités ●

Transmissions série et parallèle 

Contrairement au bus parallèle où plusieurs bits sont transmis simultanément, dans les bus série, les bits sont envoyés les uns à la suite des autres.

3

Généralités ●

Intérêts d'une liaison série Moins de cablage (- de cuivre donc - cher) – Pas de perturbation entre pistes ● Débits plus élevés ● Distances de communication plus importantes –

4

Transmissions séries ●

Au minimum, 2 fils sont nécessaires 

1 fil de données



1 fil de référence (masse)



D'autres fils peuvent être rajoutés.



Deux critères permettent de définir une liaison série : 



L’interface (ou support) physique de communication (câble, connexions) Le format de transfert des données de communication (protocole) 

2 types : synchrone ou asynchrone 5

Transmissions séries asynchrones ●



Les transmissions séries synchrones (transmission d'un signal d'horloge) seront vues au S3 (I2C). Les communications asynchrones sont définies par plusieurs paramètres : 

Les niveaux de tensions



La vitesse de transmission (Baud Rate en anglais)



Le format des données



Le mode de fonctionnement

Full-Duplex ou Half-Duplex Les interfaces physiques de communication peuvent être divers : 





Fils de cuivre, fibre optique, hertzien, ...

6

Transmissions séries asynchrones ●

Protocoles les plus courants : 

Norme RS232 Utilisée notamment pour la communication avec un PC (ports COM)  Également utilisée dans de nombreux modules électroniques spécifiques (modules Zigbee, …) Norme RS485 





Utilisée dans les applications où les perturbations sont importantes  On en trouve sur les Automates Programmables Industriels ... 7

Principe de transmission ●

Dans une communication série RS232, les bits sont envoyés les uns à la suite des autres sur la ligne en commençant par le bit de poids faible. La transmission s’appuie donc sur le principe des registres à décalage. 



Liaison série asynchrone : pas d'horloge transmise 



La transmission se fait octet par octet. Nécessité de rajouter un bit de ”START” ('0' logique) avant l'octet à transmettre, et un bit de ”STOP” ('1' logique) après l'octet à transmettre.

La norme RS232 prévoit également la possibilité de rajouter un autre bit juste avant le bit de STOP : 

Bit de parité ou un 2ème bit de STOP 8

Principe de transmission ●

Au total, cela nous fait donc 10 ou 11 bits qui sont transmis au registre à décalage qui assure la transmission en commençant par le bit de poids faible.

9

Configuration de la liaison ●

On dispose de registres de contrôle et d’état.



Le(s) registre(s) de contrôle permet(tent) de : 

Fixer le format de transmission (7, 8 ou 9 bits)



Fixer le facteur de division de l’horloge (Baud Rate)



Fixer le test de parité



Fixer le nombre de bits STOP



Préciser le fonctionnement en interruption

10

Configuration de la liaison ●

Le(s) registre(s) d'état(s) permet(tent) de savoir : 

Si une transmission est en cours



Si une réception est terminée



L’état des lignes de contrôle



L’état des interruptions

11

Principe de la réception asynchrone ●

Pas d'horloge transmise entre les 2 équipements → les fréquences d'horloge de l'émetteur et du récepteur doivent être identiques



Pour indiquer au récepteur le début d'une transmission, il faut lui envoyer un signal : 

C'est le rôle du bit de START



La ligne au repos est à l'état logique '1'



Le bit de START est donc logiquement à '0'

12

Principe de la réception asynchrone ●







Le récepteur attend le premier front descendant de la ligne de données pour se synchroniser. Après une demi-période d’horloge, il vient tester le bit. L’intérêt est de pouvoir savoir s’il s’agit d’un vrai bit de START (si le signal est toujours à ‘0’) ou alors si on a eu du bruit sur la ligne qui aurait provoqué un faux bit de START (si le bit est remonté à‘1’). Ensuite, on échantillonne le nombre de bits de données (défini dans la configuration de la liaison série) à chaque période d’horloge. Enfin, on teste le ou les bits STOP 



Si le bit est à ‘1’, on a bien un bit STOP. Si le bit est à ‘0’, on a un mauvais bit STOP. On parle d’une erreur d’encadrement (framing error).

13

Principe de la réception asynchrone ●

Chronogramme type

14

Exemple de transmission ●

On souhaite envoyer l'octet 0x32 (qui est le code ASCII du caractère '2'), sur 8 bits, sans parité avec 1 bit STOP. 

0x32 = (0011 0010)2

15

Lignes de contrôle ●



Ce sont les signaux additionnels aux lignes de données qui permettent de contrôler la communication. Différents signaux peuvent être échangés.

16

Lignes de contrôle ●

Ces signaux peuvent être groupés de la manière suivante : 



Des signaux de transmission de données 

TXD (transmit data) : Données dans un sens



RXD (receive data) : Données dans l'autre sens

Des signaux de contrôle de flux de transmission 

RTS (request to send) : Demande à émettre



CTS (clear to send) : Prêt à recevoir





Ces signaux peuvent être utiles pour gérer l'échange du flux de données. Notamment, il permet d'indiquer si l'équipement destinataire est prêt à recevoir.

Des références de potentiels (masse)

17

Vitesse de transmission des données ●

Les deux équipements doivent être configurés avec la même vitesse (baud rate).



Elle est exprimée est bits / seconde



Ces vitesses sont normalisées : 

1200 bauds (ou bits/seconde)



2400 bauds



4800 bauds



9600 bauds



19200 bauds



38400 bauds



57600 bauds



115200 bauds

18

Contrôle de flux ●



Le rôle du contrôle de flux est de permettre d'éviter de perdre des informations pendant la transmission. Différents types de contrôle de flux : 

Contrôle de flux matériel



Contrôle de flux logiciel

19

Contrôle de flux Contrôle de flux matériel :







Il est possible de contrôler le flux de données entre deux équipements par deux lignes de « handshake » (poignée de main en français). Ces lignes sont RTS et CTS. Le principe de fonctionnement est le suivant : ●







L'émetteur informe le récepteur qu'il est prêt à envoyer une donnée en agissant sur RTS et en le mettant à l'état bas. Le récepteur informe l'émetteur qu'il est prêt à recevoir en mettant le signal CTS à l'état bas. La transmission devient effective.

Cette technique permet d'éviter d'envoyer des données quand le récepteur n'est pas prêt et donc permet d'éviter la perte d'information.

20

Contrôle de flux Contrôle de flux logiciel :





Il est également possible de contrôler la transmission à l'aide de deux codes ASCII « XON » et « XOFF » : ●



XOFF (code ASCII 17) : demande l'arrêt de la transmission XON (code ASCII 19) : demande le départ d'une transmission

21

Parité ●



Le mot transmis peut être suivi ou non d'un bit de parité qui sert à détecter les erreurs éventuelles de transmission. Il existe deux types de parités :  

Parité paire Parité impaire

22

Parité paire ●



Le bit ajouté à la donnée est positionné de telle façon que le nombre des états « 1 » soit paire sur l'ensemble donné + bit de parité. Exemple : 

soit la donnée 11001011 contenant 5 états «1» 

le bit de parité paire est positionné à « 1 », ramenant ainsi le nombre de « 1 » à 6.

23

Parité impaire ●



Le bit ajouté à la donnée est positionné de telle façon que le nombre des états « 1 » soit impaire sur l'ensemble donné + bit de parité. Exemple : 

soit la donnée 11001011 contenant 5 états «1» 

le bit de parité impaire est positionné à « 0 », laissant ainsi un nombre de « 1 » impaire.

24

Bilan ●

Pour que 2 équipements puissent échanger des données, il faut qu'ils soient configurés pour que : 

La vitesse de communication (baud rate) soit le même des deux côtés.



Le nombre de bits de données soit identique



Le nombre de bits STOP soit identique



Le type de contrôle de flux choisit soit le même



La parité soit la même 25

Interfaces physiques ●

Il existe différentes interfaces physiques pour la liaison série, dont les normes : 





RS232 : Interface de liaison série présente sur les PCs (ports COM). RS422 : Interface mieux immunisée vis à vis du bruit. RS485 : Identique à la RS422 mais développée pour pouvoir connecter plus de deux appareils sur le même bus.

26

Interfaces physiques ●

Le choix d'une interface dépend : 

de la vitesse de transmission souhaitée



de la longueur du câble





du nombre d'équipements que l'on souhaite connecter de l'immunité vis à vis des parasites

27

Interface RS232 ●

Niveaux de tension 



Les 0-5V (voire moins) que l'on trouve généralement en sortie des microcontrôleurs est insuffisant pour transmettre les informations loin. En effet, sous l'effet de l'impédance de la ligne (inductances et capacités parasites), le signal est atténué.

28

Interface RS232 ●

Niveaux de tension 







Afin de pouvoir envoyer les signaux plus loin, la liaison série RS232 transmet les informations sous des niveaux de tension plus élevés. Un niveau logique bas (0V) sera transmis à l'aide d'une tension de +10V. Un niveau logique haut (5V) sera transmis à l'aide d'une tension de -10V. Il y a donc INVERSION DES NIVEAUX LOGIQUE et ADAPTATION à +10V ET-10V 29

Interface RS232 ●

Niveaux de tension 

Chronogrammes

30

Composant externe (MAX 232) ●

Cet adaptation est très classiquement réalisée par le composant MAX 232 :

31

Composant externe (MAX 232) ●





Ce composant est capable de générer à partir d'une alimentation Vcc de 5V, les tensions +10V et -10V. Avec une telle tension, il est possible de communiquer avec une liaison série RS232 à 9600 bauds jusqu'à 10m. Plus la distance sera grande, moins la vitesse de transmission sera rapide car les atténuations et les déformations des signaux seront plus importantes. 32

Composant externe (MAX 232) ●

La carte PICDEM2+ utilisée en TP intègre déjà ce composant :

33

Connecteur ●



La connexion se fait aujourd'hui généralement sur des connecteurs DB9. Le schéma de connexion est donné ci-dessous :

34

Évolution ●





Depuis quelques années, les ordinateurs neufs ne sont plus pourvus par défaut de ports COM RS232. Il existe maintenant des cables USB permettant de continuer à utiliser des liaisons séries RS232. Ces cables intègrent un circuit intégré permettant de gérer le protocole USB d'un coté et la liaison RS232 de l'autre (puces FTDI)

35

Évolution ●



Il existe par ailleurs des circuits permettant de passer à une liaison USB vers une liaison série à niveaux logiques TTL (0V - 5V) ou 0V – 3,3V Cela permet de s'interfacer en USB directement avec un micro-contrôleur, sans passer par un étage +10V/-10V.

36

Mise en oeuvre de la liaison série avec le PIC 16F887 ●

Le périphérique interne qui gère la liaison série asynchrone s'appelle ”EUSART” : 



Enhanced Universal Synchronous Asynchronous Receiver Transmitter

Ce périphérique repose sur des registres à décalages qui permettront d'envoyer et de recevoir les données. Ils sont au nombre de deux (un pour l'émission, l'autre pour la réception), ce qui autorise théoriquement le PIC à envoyer et recevoir des données simultanément.

37

Mise en oeuvre de la liaison série avec le PIC 16F887 ●







Il est nécessaire de configurer la vitesse de transmission, le nombre de bits de données, la parité ou le deuxième bit STOP s'il y a lieu. Il faudra donc mettre la bonne valeur dans les registres de configuration de l'EUSART. Il nous permettra également de savoir si une transmission est en cours, si elle s'est passée convenablement ou bien s'il y a eu une erreur. Ce sera le rôle du registre d'état. Enfin, nous aurons des registres pour écrire les données à envoyer ou lire les données reçues. 38

Mise en oeuvre de la liaison série avec le PIC 16F887 ●

Ce périphérique dispose également de deux pattes de connexion qui permettront d'envoyer un message (RC6) ou bien de le recevoir (RC7). La configuration de ces pins se fait de la manière indiquée ci-dessous : Setting the SPEN bit of the RCSTA register enables the EUSART and automatically configures the TX/CK I/O pin as an output. If the TX/CK pin is shared with an analog peripheral the analog I/O function must be disabled by clearing the corresponding ANSEL bit. Setting the SPEN bit of the RCSTA register enables the EUSART and automatically configures the RX/DT I/O pin as an input. If the RX/DT pin is shared with an analog peripheral the analog I/O function must be disabled by clearing the corresponding ANSEL bit. 39

Mise en oeuvre de la liaison série avec le PIC 16F887 ●

Si l'on souhaite se connecter sur un PC, il faudra penser à utiliser un composant (par exemple un MAX 232) pour générer un signal entre -10V et +10V.

40

Mise en oeuvre de la liaison série avec le PIC 16F887 ●

Sur le kit PICDEM2+ :

41

Fonctionnement en transmission ●

La figure 12-1 nous indique le fonctionnement de l'EUSART en transmission :

42

Fonctionnement en transmission ●

Le module d'envoi est basé sur un registre à décalage (TSR Register = « Transmit Shift Register »). On charge la valeur à transmettre sur 8 bits à l’aide du registre TXREG

43

Fonctionnement en transmission ●



L'écriture de TXREG dans TSR met à '1' le drapeau TXIF. Celui-ci est capable de générer une interruption si le bit TXIE est à '1'. Le registre à décalage ajoute tout seul le bit de START et de STOP. Le fait que le drapeau TXIF passe à '1' n’indique pas que la donnée a été transmise, mais uniquement le fait que vous avez mis une donnée dans le registre TXREG.

44

Fonctionnement en transmission ●

Le drapeau « TRMT » indique quand le registre à décalage est vide. C'est à dire quand le mot est complètement envoyé. Il est ainsi bien plus utile de tester le bit TRMT que le bit TXIF.

45

Fonctionnement en transmission ●

La figure 12-3, nous donne les chronogrammes des bits TRMT et TXIF :

46

Fonctionnement en transmission ●



Pour envoyer les données, il faut configurer l'horloge de transmission. Ceci se fait à l'aide du registre SPBRG (composé de 2 registres de 8 bits SPBRGH:SPBRG) qui divise la fréquence de l'horloge interne pour obtenir la bonne vitesse de transmission. La validation de cette horloge se fait par TXEN. L'horloge est la même pour les modules d'envoi et de réception.

47

Fonctionnement en transmission ●





Les bits sérialisés sont envoyés vers la patte de sortie RC6/TX. Cette patte à la double fonction de servir de patte d'E/S standard ou de servir comme sortie d'envoi de la liaison série. La configuration entre ces deux modes de fonctionnement se fait grâce au bit SPEN. Lorsque le bit SPEN est égal à '1', les pattes RC6/TX et RC7/RX sont respectivement configurés automatiquement en sortie et en entrée.

48

Fonctionnement en transmission ●

Il est possible d'envoyer un 9ème bit avant le bit de STOP (par exemple une parité ou un deuxième bit STOP). Il faut alors valider TX9 et inscrire la donnée du 9ème bit dans TX9D avant de procéder à une émission.

49

Fonctionnement en réception ●

La figure 12-2 nous indique le fonctionnement de l’EUSART en réception. Le module de réception est relativement similaire au module d'émission. Il est basé sur un registre à décalage de 11 bits (un START, 8 données, un 9ème bit et un STOP).

50

Fonctionnement en réception ●



Tout comme le module d'émission, il dispose de l'horloge (SPBRGH:SPBRG) :

Il scrute en permanence le signal qui arrive sur la patte RC7/RX. Il faut donc là aussi indiquer que cette patte sert à la liaison série grâce à SPEN. 51

Fonctionnement en réception ●

La réception ne sera validée que lorsque le bit CREN sera correctement configuré.

52

Fonctionnement en réception ●







Une fois le mot reçu correctement, le PIC stocke les 8 bits de données reçus dans le registre RCREG. Si on lui a validé un 9ème bit en réception à l'aide de RX9, il stockera sa valeur dans RX9D. En outre, la réception d'une donnée valide le bit RCIF. On peut alors générer une interruption si le bit RCIE est à '1'. Le module de réception peut en outre générer des erreurs si la transmission s'est mal passée. Il possède notamment les bits OERR (Overrun error) et FERR (Framing error). 53

Fonctionnement en réception

54

Fonctionnement en réception ●

Chronogrammes

55

Les registres associés à la transmission

56

Les registres associés à la réception

57

Les registres ●

Les registres TXREG et RCREG 





Vous placerez le mot à transmettre dans le registre TXREG. Lorsqu'un mot sera reçu, vous pourrez le lire dans le registre RCREG.

Les registres INTCON, PIR1 et PIE1 

Ces registres sont utilisés pour gérer la liaison RS 232 en interruption

58

Les registres ●

Le registre PIR1 

Ce registre contient les deux flags (drapeaux) permettant de :  





Détecter qu’un mot a été reçu : bit RCIF Détecter qu’un mot a été placé dans le registre de transmission : bit TXIF .

Remarque : il existe un autre « flag » pour la transmission : TRMT .

Le registre PIE1 

Ce registre contient les deux bits permettant d'autoriser les interruptions en transmission (TXIE) et en réception (RCIE)

59

Les registres ●

Les registres SPBRGH:SPBRG, le bit BRGH (du registre TXSTA) et le bit BRG16 (du registre BAUDCTL) 

Les registres SPBRGH et SPBRG permettent de configurer, avec le bit BRGH et le bit BRG16, la vitesse de transmission de la liaison série.

60

Les registres ●

Par exemple, pour une transmission à 9600bauds, avec un microcontrôleur cadencé à 4MHz, nous obtenons (SYNC doit forcément être égal à 0): 

BRG16 = 0 et BRGH = 0



X = fosc /(baud rate * 64) -1 X = 4000000 / (9600* 64) -1= 5,51



X forcément entier → X = 6



Baud rate réel = Fosc / (64( X+1)) soit 8928,59



L’erreur est donc de 6,99 % (calcul : (9600-8929)/9600)). 61

Les registres ●

Par exemple, pour une transmission à 9600bauds, avec un microcontrôleur cadencé à 4MHz, nous obtenons (SYNC doit forcément être égal à 0): 

BRG16 = 0 et BRGH = 1



X = fosc /(baud rate * 16) -1 X = 4000000 / (9600* 16) -1= 25,041



X forcément entier → X = 25



Baud rate réel = Fosc / (16( X+1)) soit 9615,38



L’erreur est donc de 0,16 % (calcul : (9600-9615)/9600)). 62

Les registres ●





On choisira la valeur afin de minimiser l'erreur commise sur la transmission. Des tableaux (pages 168 et 169 de la doc) permettent de trouver rapidement les valeurs à mettre dans SPBRGH:SPBRG et BRGH en fonction : 

de la valeur du débit de transmission



de la fréquence du quartz du PIC



de la valeur du bit BRGH



de la valeur du bit BRG16

Remarque : la plupart du temps, il sera suffisant de travailler avec un registre SPBRG sur 8 bits (BRG16 = 0 et utilisation de SPBRG uniquement). En effet, la nécessité de travailler sur 16 bits s'impose uniquement pour obtenir de faibles vitesses de transmission avec un quartz de fréquence élevée.

63

64

65

Les registres de contrôle et d'état



Il nous reste plusieurs choses à configurer : 

Choix du type de transmission Asynchrone ou synchrone. 

Le bit SYNC du registre TXSTA permet de choisir le type de fonctionnement:  



'1' : mode synchrone '0' : mode asynchrone

Pour une communication de type RS232 nous prendrons le mode asynchrone.

66

Les registres de contrôle et d'état 

Validation des lignes RC6 et RC7 comme broches d’entrée / sortie associées à L’EUSART : bit SPEN du registre RCSTA   



'1' : port série validé '0' : port série invalidé Remarque : le fait de configurer ce bit à 1, place automatiquement la ligne de transmission en sortie et la ligne de réception en entrée.

Sélection du baud rate pour le mode asynchrone (Permet de fixer la vitesse de transmission en lien avec le registre SPBRG). Bit BRGH du registre TXSTA  

'1' : mode High Speed '0' : mode Low Speed 67

Les registres de contrôle et d'état 

Bits de marche/arrêt : La réception est validée en plaçant un '1' dans le bit CREN du registre RCSTA .  La transmission est validée en plaçant un '1' dans le bit TXEN du registre TXSTA . Transmission de 8 bits ou de 9 bits : 









Le bit TX9 du registre TXSTA permet de valider une transmission de 8 bits ou de 9 bits  '1' : transmission de 9 bits.  '0' : transmission de 8 bits. En mode 9 bits, il faut placer le 9ème bit dans le bit TX9D du registre TXSTA. En mode 8 bits, le bit TX9D peut prendre n’importe quelle valeur.

68

Les registres de contrôle et d'état 

Réception de 8 bits ou de 9 bits. Le bit RX9 du registre RCSTA permet de valider une réception de 8bits ou de 9 bits  '1' : réception de 9 bits  '0' : réception de 8 bits  En mode 9 bits, le 9ème bit sera lu dans le bit RX9D du registre RCSTA.  En mode 8 bits, le bit RX9D ne sera pas utilisé. Configuration de la réception. 







ADDEN : Fonctionne en mode asynchrone avec 9 bits  '1' : autorisation de la détection d'adresse  '0' : invalidation de la détection d'adresse Dans la plupart du temps nous travaillerons dans un mode 8 bits, donc sans détection d’adresse.

69

Les registres de contrôle et d'état 

Les bits d’état : L’EUSART propose 3 bits d’état : 

TRMT : État du registre à décalage d'envoi '1' : Registre à décalage vide  '0' : Registre à décalage plein FERR : Drapeau de détection d'erreur d'encadrement (Framing Error) 



'1' : Erreur d'encadrement  '0' : Pas d'erreur OERR : Drapeau de détection d'Overrun Error 



 

'1' : Erreur d'Overrun '0' : pas d'erreur



On n'utilisera pas le bit SENDB du registre TXSTA (on le laissera à '0').



Deux bits sont inutilisés pour une transmission asynchrone. 

Il s’agit du bit 5 du registre RCSTA et du bit 7 du registre TXSTA

70

Exemple de configuration ●

On souhaite par exemple configurer la liaison série pour une transmission de : 

8 bits de données



2 bits STOP



sans parité



vitesse de transmission :19200 bauds.



La fréquence du quartz du PIC est de 4 MHz.

71

Exemple de configuration ●

Solution : 

Registre SPBRG 







On va donc fixer le bit BRGH et la valeur de SPBRG. Le tableau 18-3 pour BRGH='0', nous donne un SPBRG de 2 et une erreur de 8,51%. Le tableau 18-3 pour BRGH='1', nous donne un SPBRG de 12 et une erreur de 0,16%. C'est cette dernière valeur que nous allons conserver.

→ bit BRGH= 1 et registre SPBRG = 12 72

Exemple de configuration ●

Solution : 

Registre TXSTA 

CSRC : '0' sans importance car on est en mode asynchrone



TX9 : '1' transmission de 9 bits (le 9ème bit sera un bit de STOP)



TXEN : '1' Autorisation de la transmission



SYNC : '0' Mode de fonctionnement asynchrone



SENDB : '0'



BRGH : '1' voir ci-dessus



TRMT : '0' c'est un bit en lecture seule, donc sans importance !



TX9D : '1' le neuvième bit sert de bit de STOP → Soit TXSTA = 0x65 73

Exemple de configuration ●

Solution : 

Registre RCSTA 

SPEN : '1' validation de l'affectation au port série de RC6 et RC7



RX9 : '1' réception de 9 bits



SREN : '0' Sans importance pour le mode asynchrone



CREN : '1' Validation de la réception



ADDEN : '0' invalidation de la détection d'adresse



FERR : '0' c'est un bit en lecture seule, donc sans importance !



OERR : '0' c'est un bit en lecture seule, donc sans importance !



RX9D : '0' c'est un bit en lecture seule, donc sans importance ! → Soit RCSTA = 0xD0



Et registre BAUDCTL = 0x00

74

Exemple d'un programme en C ●



Exemple d'un programme qui va envoyer le caractère 'A' (code ASCII 0x41) avec les caractéristiques suivantes : 

8 bits de données



2 bits STOP



sans parité



vitesse de transmission :19200 bauds



La fréquence du PIC est de 4 MHz

L'analyse structurée du programme peut se présenter comme suit : 

INITIALISER LA LIAISON SERIE



ENVOYER LE CARACTERE 'A'



ATTENDRE LA FIN DE LA TRANSMISSION

75

Exemple d'un programme en C (transmission) void init_serie (void); // fonction d'initialisation de la liaison série void main ( void ) { init_serie(); // Initialisation de la liaison série TXREG=0x41; // Envoi du caractère 'A' sur la liaison série while (TRMT==0); // Attente de la fin de la transmission while(1); } void init_serie (void) // 19200 bauds, 8 bits de données, 2 bits de STOP, sans parité { SPBRG=12; // configuration de la vitesse de transmission TXSTA=0x65; // configuration de la transmission RCSTA=0xD0; // configuration de la réception BAUDCTL = 0x00 ; // configuration du registre de contrôle de vitesse de transmission } 76

Exemple d'un programme en C (réception) void init_serie (void); // fonction d'initialisation de la liaison série void main ( void ) { uns8 recu; // Variable qui sert à stocker le dernier octet reçu sur la liaison série init_serie(); // Initialisation de la liaison série while(1) { while(RCIF==0); // attente de la réception d'un caractère … recu=RCREG; // on lit le caractère reçu et on le stocke dans recu …. } } void init_serie (void) // 19200 bauds, 8 bits de données, 2 bits de STOP, sans parité { SPBRG=12; // configuration de la vitesse de transmission TXSTA=0x65; // configuration de la transmission RCSTA=0xD0; // configuration de la réception BAUDCTL = 0x00 ; // configuration du registre de contrôle de vitesse de transmission }

77

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF