Club robotique de Sophia-Antipolis

Accueil > ... > Forum 2206

S’ouvrir au monde

6 décembre 2013, 10:47, par Julien H.

A ce jour, cela reste le seul article complet pour l’initialisation des registres d’un ATmega8. Certains codes récents sont pour ATmega168 (celui des Arduino) et les registres ne sont plus les mêmes.

Juste une précision pour ceux qui ne sont pas à 9600 bauds ou qui n’ont pas un quartz à 8 MHz. Notamment ceux qui utilisent l’oscillateur interne. Tout d’abord rassurez-vous : malgré les mauvaises langues qui disent que l’UART ne fonctionne pas sans quartz à 8 MHz, si ça fonctionne très bien.

Il existe dans libc une façon de faire calculer la valeur de UBRRH et UBRRL en donnant la fréquence d’horloge et la vitesse de transmission :

  1. #define F_CPU  1000000
  2. #define BAUD 9600
  3.  
  4. // ... le reste comme dans l'article
  5.  
  6. #include <util/setbaud.h>
  7.  
  8. void usart_init(void) {
  9. // ... le reste comme dans l'article sauf :
  10.     UBRRH = UBRRH_VALUE;
  11.     UBRRL = UBRRL_VALUE;
  12.  
  13. // et on rajoutera même le coefficient X2 :
  14.     UCSRA = (1 << U2X);
  15.  
  16. }

Télécharger

Voilà, en espérant que ça serve à d’autres.

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.