Emission d'un octet― On lit le registre SCISR1 et on vérifie que le bit TDRE est à '1'. ― On écrit alors la donnée à transmettre dans le registre SCIDRL (comme on envoie un octet de données, il n'est pas indispensable d'écrire dans le registre SCIDRH). ― Si le registre à décalage est vide (donc si le bit TC est à '1'), le contenu du registre de données est immédiatement transmis au registre à décalage. Le bit TC passe alors immédiatement à '0' et le bit TDRE passe alors à '1'. Si le registre à décalage est en cours d'utilisation, les données restent stockées dans le registre de données (SCIDRL) jusqu'à ce que le registre à décalage ait transmis la trame de données, c'est à dire lorsque le module de transmission a atteint 9/16 du bit de STOP. Alors, le contenu du registre de données est copié au registre à décalage et le bit TDRE est mis à '1'. L'envoi d'un autre octet se fait alors en répétant les étapes précédentes. Interruption en émissionL’utilisation des interruptions de
transmission est valable uniquement lorsqu’il y a
plusieurs octets à envoyer à la suite. L’émission se
fera en envoyant les octets uns à uns. Pour automatiser
l’envoi des octets les uns après les autres, on peut
activer l’interruption TIE. L’interruption TCIE présente
peu d’intérêt puisqu’elle indique que la transmission
est terminée. Ces interruptions ne doivent jamais être
activées dès le début car en l’absence de transmission,
elles se déclenchent et restent actives tant que le
buffer d’émission reste vide. Remarques concernant l'émission Si le contrôle de parité est activé (PE = '1'), alors le bit de poids fort est systématiquement substitué par un bit de parité, cela veut dire que mode 8 bits (M = '0') seul les 7 bits de poids faible sont des bits de données et le bit de poids fort (le 8ème) est remplacé par un bit de parité. En mode 9 bits (M = '1') le bit T8 du registre SCIDRH n'est pas pris en compte et le module va automatiquement lui substituer un bit de parité. Lorsque le module de transmission n'a plus de données à émettre (TC = '1'), la sortie TXD est maintenue à l'état '1' (Idle). Par contre si le module de transmission est désactivé (TE = '0'), la sortie TXD n'est plus contrôlée par le bloc SCI. Si au cours d'une transmission, le bit TE passe à '0' (désactivation du module de transmission), le passage en mode désactivé sera réalisé après la transmission du bit de STOP du message en cours dans le registre à décalage. Si des données étaient présentes dans les registres de données au moment où le module de transmission est passé en mode désactivé, elles sont définitivement perdues. Pour transmettre un code Idle
entre deux trames, il convient d'utiliser la
méthode suivante :
|