Outils pour utilisateurs

Outils du site


robotics:computing:communication_serie_atmega

Différences

Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue comparative

robotics:computing:communication_serie_atmega [2010/04/14 16:22]
ldo
robotics:computing:communication_serie_atmega [2012/09/20 10:52] (Version actuelle)
Ligne 5: Ligne 5:
 Dans une transmission synchrone, on transmet l'​information et l'​horloge qui synchronise la transmission. Ce mode de transmission est plus rapide car il n'est pas nécessaire d'​ajouter des bits de contrôle à l'​information. Cependant, il est plus couteux car il faut réserver 2 lignes (information + horloge) Dans une transmission synchrone, on transmet l'​information et l'​horloge qui synchronise la transmission. Ce mode de transmission est plus rapide car il n'est pas nécessaire d'​ajouter des bits de contrôle à l'​information. Cependant, il est plus couteux car il faut réserver 2 lignes (information + horloge)
 ==== Transmission asynchrone ==== ==== Transmission asynchrone ====
-Dans une transmission asynchrone, on ne transmet pas d'​horloge au recepteur. Cela implique que l'emetteur ​et le recepteur ​doivent avoir la meme configuration (vitesse de transmission et longueur de l'​information). ​Il est également nécessaire d'ajouter des bits de contrôle ​à l'​information. Ce mode est plus lent (car la taille de l'​information est réduite) ​mais plus efficace pour les longues distances.+Dans une transmission asynchrone, on ne transmet pas d'​horloge au récepteur. Cela implique que l'émetteur ​et le récepteur ​doivent avoir la même configuration (vitesse de transmission et longueur de l'​information). ​L'information doit être envoyée en petit paquet (9 bits maximum) et doit être accompagnée de bits de contrôle. Ce mode est donc plus lent mais plus efficace pour les longues distances.
 BIT START - 5 à 9 BIT INFORMATION - BIT PARITE - 1 ou 2 BIT STOP BIT START - 5 à 9 BIT INFORMATION - BIT PARITE - 1 ou 2 BIT STOP
 +
 ====== Implementation ====== ====== Implementation ======
 ===== Registre USART ===== ===== Registre USART =====
Ligne 35: Ligne 36:
   * UCPOL : ce bit détermine la olarite de l'​horloge (non utilsé en mode asynchrone)   * UCPOL : ce bit détermine la olarite de l'​horloge (non utilsé en mode asynchrone)
 UBRRH-UBRRL : ces registres contiennent la vitesse de communication (BAUD = Fosc/​(16*(UBRR+1)) ) UBRRH-UBRRL : ces registres contiennent la vitesse de communication (BAUD = Fosc/​(16*(UBRR+1)) )
-==== Utilisation ====+===== Utilisation ​=====
 Nous allons utiliser une communication asynchrone 9600 bauds avec 8 bits de données, 1 bit de STOP et une parité paire. Nous allons utiliser une communication asynchrone 9600 bauds avec 8 bits de données, 1 bit de STOP et une parité paire.
 Le premier exemple est très simple, envoi et reception d'une donnée. Le premier exemple est très simple, envoi et reception d'une donnée.
Ligne 61: Ligne 62:
  // set baud rate : 9600 bps  // set baud rate : 9600 bps
  UBRR0H = 0;  UBRR0H = 0;
- UBRR0L = 129;//103; // @16MHz+ UBRR0L = 129;
  // enable receiver and transmiter  // enable receiver and transmiter
  UCSR0B = (1 << RXEN0) | (1 << TXEN0);  UCSR0B = (1 << RXEN0) | (1 << TXEN0);
Ligne 141: Ligne 142:
  receiveChar = UDR0;  receiveChar = UDR0;
  }  }
-} 
- 
-void portInitialise(void) 
-{ 
- /* configuration des ports : '​1'​ pour sortie */ 
- DDRB = (1 << PORTB0); /* PB0 en sortie */ 
- PORTB = 0x00; /* PORTB a 0 */ 
 } }
  
Ligne 154: Ligne 148:
  // set baud rate : 9600 bps  // set baud rate : 9600 bps
  UBRR0H = 0;  UBRR0H = 0;
- UBRR0L = 129;//103; // @16MHz+ UBRR0L = 129;
  // enable receiver and transmiter and RX complete interrupt  // enable receiver and transmiter and RX complete interrupt
  UCSR0B = (1 << RXCIE0) | (1 << RXEN0) | (1 << TXEN0);  UCSR0B = (1 << RXCIE0) | (1 << RXEN0) | (1 << TXEN0);
Ligne 174: Ligne 168:
 int main(void) int main(void)
 { {
- portInitialise();​ 
  usartInitialise();​  usartInitialise();​
  SREG = (1 << SREG_I); /* The Global Interrupt Enable bit must be set for the interrupts to be enabled */  SREG = (1 << SREG_I); /* The Global Interrupt Enable bit must be set for the interrupts to be enabled */
robotics/computing/communication_serie_atmega.1271254944.txt.gz · Dernière modification: 2012/09/20 10:52 (modification externe)