AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Version obsolète

Description détaillée

Ce module permet de gérer la communication sur une liaison série asynchrone à l'aide du coupleur USART.

Avertissement
Ce module est osbsolète, il est conservé pour compatibilité avec les versions précédente. Les nouveaux projets doivent utiliser le module tc_module.
Graphe de collaboration de Version obsolète:

Fonctions

int iSerialGetChar (void)
 Reçoit un caractère sur la liaison série. Plus de détails...
 
int iSerialPutChar (char c)
 Envoie un caractère sur la liaison série. Plus de détails...
 
uint16_t usIosToFlags (const xSerialIos *ios)
 
uint16_t usSerialGetFlags (void)
 Renvoie les drapeaux de configuration de l'uart.
 
uint16_t usSerialHit (void)
 Renvoie le nombre de caractères reçus.
 
void vSerialEnable (uint16_t usFlags)
 Modifie l'accès en lecture et/ou écriture.
 
void vSerialFlush (void)
 Vide les tampons de transmission et de réception.
 
void vSerialInit (uint16_t usBaud, uint16_t usFlags)
 Initialise l'SERIAL. Plus de détails...
 
void vSerialPutString (const char *pcString)
 Envoie une chaîne caractères sur la liaison série. Plus de détails...
 
void vSerialSetFlags (uint16_t usFlags)
 Modifie les drapeaux de configuration de l'uart.
 
bool xSerialReady (void)
 

Macros

#define EBADBAUD   (-2)
 Erreur de baudrate.
 
#define SERIAL_1STP   0x0000
 
#define SERIAL_2STP   0x0008
 
#define SERIAL_5BIT   0x0000
 
#define SERIAL_6BIT   0x0002
 
#define SERIAL_7BIT   0x0004
 
#define SERIAL_8BIT   0x0006
 
#define SERIAL_9BIT   0x8006
 
#define SERIAL_BAUD_X1(usBaud)   (AVRIO_CPU_FREQ / (1600UL * usBaud) - 1)
 Calcule la valeur du registre BAUD à partir de la vitesse. Plus de détails...
 
#define SERIAL_BAUD_X2(usBaud)   (AVRIO_CPU_FREQ / (800UL * usBaud) - 1)
 Calcule la valeur du registre BAUD à partir de la vitesse. Plus de détails...
 
#define SERIAL_DEFAULT   (SERIAL_8BIT + SERIAL_1STP + SERIAL_NONE + SERIAL_NOECHO)
 Configuration par défaut de la liaison série pour vSerialInit()
 
#define SERIAL_ECHO   0x0001
 
#define SERIAL_EVEN   0x0020
 
#define SERIAL_NOBLOCK   0x0100
 
#define SERIAL_NOECHO   0x0000
 
#define SERIAL_NONE   0x0000
 
#define SERIAL_ODD   0x0030
 
#define SERIAL_RD   0x0080
 
#define SERIAL_RTSCTS   0x0200
 
#define SERIAL_RW   0x00C0
 
#define SERIAL_WR   0x0040
 
#define SERIAL_XONXOFF   0x0400
 

Énumérations

enum  eSerialError { eSerialRxParityError = 0x01, eSerialRxFormatError = 0x02, eSerialRxOverflowError = 0x04, eSerialTxOverflowError = 0x08 }
 Codes d'erreur. Plus de détails...
 

Variables

int iSerialError
 Numéro de la dernière erreur. Plus de détails...
 
FILE xSerialPort
 Descripteur de fichier de l'uart permettant son utilisation avec les fonctions de la libc. Plus de détails...
 

Documentation des macros

#define SERIAL_1STP   0x0000

1 bit de stop (Défaut)

Définition à la ligne 50 du fichier serial.h.

#define SERIAL_2STP   0x0008

2 bits de stop

Définition à la ligne 49 du fichier serial.h.

#define SERIAL_5BIT   0x0000

5 bits de données

Définition à la ligne 44 du fichier serial.h.

#define SERIAL_6BIT   0x0002

6 bits de données

Définition à la ligne 45 du fichier serial.h.

#define SERIAL_7BIT   0x0004

7 bits de données

Définition à la ligne 46 du fichier serial.h.

#define SERIAL_8BIT   0x0006

8 bits de données (Défaut)

Définition à la ligne 47 du fichier serial.h.

#define SERIAL_9BIT   0x8006

9 bits de données

Définition à la ligne 48 du fichier serial.h.

#define SERIAL_BAUD_X1 (   usBaud)    (AVRIO_CPU_FREQ / (1600UL * usBaud) - 1)

Calcule la valeur du registre BAUD à partir de la vitesse.

Il s'agit de la formule par défaut sans division de la fréquence (U2X=0) @ param usBaud Vitesse de transmission en KBd (96 = 9600 Bd)

Exemples:
avrx/message/demo_avrx_message.c.

Définition à la ligne 82 du fichier serial.h.

#define SERIAL_BAUD_X2 (   usBaud)    (AVRIO_CPU_FREQ / (800UL * usBaud) - 1)

Calcule la valeur du registre BAUD à partir de la vitesse.

Il s'agit de la formule avec division de la fréquence par 2 (U2X=1) @ param usBaud Vitesse de transmission en KBd (96 = 9600 Bd)

Définition à la ligne 91 du fichier serial.h.

#define SERIAL_ECHO   0x0001

Tout caractère reçu est renvoyé en écho

Définition à la ligne 43 du fichier serial.h.

#define SERIAL_EVEN   0x0020

Parité paire

Définition à la ligne 52 du fichier serial.h.

#define SERIAL_NOBLOCK   0x0100

Lecture non-bloquante

Définition à la ligne 57 du fichier serial.h.

#define SERIAL_NOECHO   0x0000

Pas d'écho (Défaut)

Définition à la ligne 42 du fichier serial.h.

#define SERIAL_NONE   0x0000

Pas de parité (Défaut)

Définition à la ligne 51 du fichier serial.h.

#define SERIAL_ODD   0x0030

Parité impaire

Définition à la ligne 53 du fichier serial.h.

#define SERIAL_RD   0x0080

Validation en réception

Définition à la ligne 55 du fichier serial.h.

#define SERIAL_RTSCTS   0x0200

Contrôle de flux matériel

Définition à la ligne 58 du fichier serial.h.

#define SERIAL_RW   0x00C0

Validation en transmission et réception

Exemples:
battery/demo_battery.c, et idwarf/terminal/hub/terminal_hub.c.

Définition à la ligne 56 du fichier serial.h.

#define SERIAL_WR   0x0040

Validation en transmission

Exemples:
idwarf/tutorial/hub/tutorial_hub.c.

Définition à la ligne 54 du fichier serial.h.

#define SERIAL_XONXOFF   0x0400

Contrôle de flux logiciel (réservé)

Définition à la ligne 59 du fichier serial.h.

Documentation du type de l'énumération

Codes d'erreur.

Valeurs énumérées
eSerialRxParityError 

Erreur de parité

eSerialRxFormatError 

Erreur de format

eSerialRxOverflowError 

Débordement de la pile de réception

eSerialTxOverflowError 

Débordement de la pile de transmission

Définition à la ligne 105 du fichier serial.h.

105  {
106  eSerialRxParityError = 0x01,
107  eSerialRxFormatError = 0x02,
108  eSerialRxOverflowError = 0x04,
109  eSerialTxOverflowError = 0x08,
110 } eSerialError;
eSerialError
Codes d'erreur.
Definition: serial.h:105

Documentation des fonctions

int iSerialGetChar ( void  )

Reçoit un caractère sur la liaison série.

Renvoie
le caractère ou EOF
int iSerialPutChar ( char  c)

Envoie un caractère sur la liaison série.

Paramètres
ccaractère
Renvoie
le caractère écrit ou EOF (dans le cas d'une version non-bloquante)
uint16_t usIosToFlags ( const xSerialIos ios)

Convertion d'une structure xSerialIos en flags

void vSerialInit ( uint16_t  usBaud,
uint16_t  usFlags 
)

Initialise l'SERIAL.

Paramètres
usBaudvitesse de transmission en centaines de bauds (usBaud = 96 pour 9600 bds par exemple)
ucFlagsdrapeaux de configuration
Exemples:
battery/demo_battery.c, idwarf/terminal/hub/terminal_hub.c, idwarf/tutorial/hub/tutorial_hub.c, sys/memory/eefile/demo_eefile.c, et sys/memory/eeprom/demo_eeprom.c.
void vSerialPutString ( const char *  pcString)

Envoie une chaîne caractères sur la liaison série.

Dans le cas où l'implémentation utilise un buffer de transmission, cette fonction est plus performante qu'un appel au fonction de stdio de avr-libc car elle va copier les caractères par paquet et non octet par octet.

Paramètres
pcStringchaîne caractères
bool xSerialReady ( void  )

Renvoie l'état de l'uart (true si la transmission est terminée, false sinon)

Documentation des variables

int iSerialError

Numéro de la dernière erreur.

0 = pas d'erreur

FILE xSerialPort

Descripteur de fichier de l'uart permettant son utilisation avec les fonctions de la libc.

Pour utiliser l'uart comme entrée et sortie par défaut, on mettra au début du main() :

1 int main(void) {
2  vSerialInit (96, SERIAL_DEFAULT);
3  stdout = &xSerialPort;
4  stdin = &xSerialPort;
5 ...

On pourra dans le cas contraire passer &xSerialPort au fonction fprintf, fscanf :

1 int choix;
2 ...
3 fprintf (&xSerialPort, "Choix ? ");
4 fscanf (&xSerialPort, "%d", &choix);
5 ...
Exemples:
battery/demo_battery.c, idwarf/terminal/hub/terminal_hub.c, sys/memory/eefile/demo_eefile.c, et sys/memory/eeprom/demo_eeprom.c.