Étape 2: Restrictions de la plate-forme
L’Arduino Uno (ATMega328P ou non « P ») et sa Limitation inhérente
L’Arduino est amusants, mais ils sont en mode natif simples dans la mesure où la puissance de calcul. Votre ordinateur est probablement un ordinateur 64 bits, ce qui signifie que vous pouvez effectuer arithmétique sur des nombres binaires 64 bits de long. L’ONU a seulement 8 bits soit un huitième de la largeur de bande plus un écart de fréquence importante (~ 2Ghz à 16mhz) et sans oublier les cœurs et bla bla bla...
Ce qui signifie, qu’utilise un Uno est mathématiquement dans une situation désavantageuse. Manipulation simple port de led et petits moteurs sont assez bonnes pour cette fin, mais les algorithmes qui veulent croquer un tas de chiffres tout en maintenant le bon moment est assez difficile d’obtenir une vitesse et une précision suffisante.
Beaucoup de l’examen Voici les limites spécifiques à l’Arduino Uno et je suis leur analyse comme un exercice de principes d’ingénierie. En tant qu’ingénieur futur (je suis encore au Collège, yahoo), j’ai eu à analyser tous les aspects du problème. Dans mon cas, j’avais déjà compris que 8 bits n’est pas suffisant alors j’ai acheté un Arduino Due donc je peux rester dans la précision natif 32 bits d’un type de données entier (par la poste sur la route). À l’aide d’un outil mathématique tels que Matlab, j’ai été en mesure de trancher cette question avant j’ai même codé sur l’Arduino Uno. Vous pouvez voir des images des tests que j’ai fait sur quelques formes d’onde à l’étape suivante. Mais, j’ai continué sur l’approche de 8 bits pour *** et rire.
Limite de 8 bits
À partir de 0 à 255 sorte de suce. Surtout quand vous faites un opérateur mathématique qui doit rester dans cette limite. Si la précision de votre réelle pour ce genre d’opération tombe réellement de 8 bits à 7 bits afin d’ajouter et de rester dans cette fenêtre de nombres binaires.
Si il n’est pas évident pour vous, c’est trop plein. Dépassement de capacité se produit dans un appareil électronique lorsque vous essayez d’effectuer une opération mathématique qui sort des limites des limites. Ainsi, par exemple, soustrayant -128 128 vous donne (128 + 128) = 256. Boom... algorithme mathématique cassé.
Les types de données codées au-dessus de 8 Bits
Ajouter deux nombres de 8 bits prend un cycle d’instruction en mode natif, tout en ajoutant un entier de 16 bits aura pris pas moins de trois cycles d’enseignement. Cela peut ne pas sembler comme beaucoup comme un cycle est l’inverse de la fréquence de cristal (16Mhz ^ -1) qui représente environ 63ns. Ici se trouve le problème avec la multiplication des cycles d’instruction par 3 ; Au minimum, lorsque vous devez faire des 400 soustractions, 400 ajouts (dans un type de données plus grande jusqu'à 800 cycles de l’enseignement), puis une division (qui prend 200 + instruction cycles) qui est juste une itération d’environ 200 plusieurs itérations... votre vitesse d’horloge relativement lent devient très évident pour vous.
ADC 10 bits de précision
L’ADC sur un Uno a 10 bits de précision, mais compte tenu de la restriction précédente de 7 ou 8 bits, vous savez que vous ne pouvez pas utiliser tout cela ; Ce sera juste une perte de puissance de calcul à utiliser toute la largeur. En outre, à l’aide de analogRead() est juste une dépense inutile de temps. Regarder la manipulation directe de port !