Baud Rate et pourcentage d'erreur

Bonjour,

En lisant la DataSheet de l'Atmega328, je me suis posé cette question.
DataSheet = http://www.atmel.com/dyn/resources/prod_documents/doc8271.pdf

Pourquoi les concepteurs de l'Arduino font des Arduino avec un crystal de 16MHz ou 8MHz?
Avec un logiciel Arduino qui voit juste les baud rate de 300 a 115200?

Selon les pages 196 a 199 de la DataSheet les pourcentages d'erreur par apport au baud rate (2400 a 230400) sont dans les pire avec ces 2 crystals.

Et selon la DataSheet avec ces crystals 7.3728MHz, 11.0592MHz, 14.7456MHz et 18.4320MHz
l'Atmega328 a un pourcentage d'erreur de 0% jusqu'à un baud rate de 2400 a 230400.

Et selon la DataSheet avec les crystals 8MHz et 16MHz
l'Atmega328 a un pourcentage d'erreur de 0% pour des baud rate de 250000 a 1000000.

Voici un bon outil qui complète bien la DataSheet:
http://www.mcselec.com/index.php?option=com_content&task=view&id=165&Itemid=57

Merci de m'éclairer sur ce problème!

Bonjour demss,
C'est vrai le 8 et 16 mhz sont pas bon pour les valeurs classiques du série, mais c'était un choix classique de quartz et de version de micro-contrôleur (à l'époque du début d'Arduino).
En pratique ça pose rarement des problèmes, il y a une bonne tolérance sur les fréquences en série, évidemment il faut rester en dessous de 19K ou 128K pour les vitesses au dessus il faut un appairage entre les 2 équipements ( par exemple pour le 500K ).
Et aujourd'hui les interfaces usb - série ne sont pas forcément meilleur que ça ;o)

A+ Teiva

Bonjour Teiva! :smiley:

Oui le taux d'erreur est petit mais je trouve ça quand même bizarre.

pour les vitesses au dessus il faut un appairage entre les 2 équipements ( par exemple pour le 500K ).

Connais-tu un exemple pour faire un appairage entre 2 Arduino?

J'ai récemment découvert ce site qui fait tous les calcules pour le transfère de donné sur le bus UART (Sérial), pour un crystal ou un baud rate voulu.
http://www.wormfood.net/avrbaudcalc.php

Exemple: Si vous voulez utiliser un crystal 16MHz et avoir un taux d'erreur de 0%:
1: écriver 16 dans la case "Clock Freq, in Mhz"
2: cocher la case "Show table of all possible bit rates, for a given clock speed"
3: cliquer sur le bouton Make table

Ceci va vous donnez la liste des 256 baud rate possible avec un taux d'erreur de 0%.

Si vous utiliser un crystal 16 MHz et vous voulez avoir un Baud rate d'environ 19200 = un taux d'erreur de 0.2%
Il est mieux d'utiliser à la place un Baud rate de 20000 = un taux d'erreur de 0.0% (C'est un Baud rate plus prudent si vous voulez aucune erreur)

Mais ces baud rate ne sont pas sélectionnable dans Serial Monitor du logiciel arduino.
Pour lire ces baud rate vous devez Modifier le logiciel arduino ou utiliser un logiciel de programmation (Processing, c++, visual basic, c#) pour lire sur ce bus.