Qu'est-ce que l'Attiny ne peut pas faire avec l'Arduino?

12

Inspiré par cette vidéo youtube de Make Magazine , j'aimerais utiliser les puces ATtiny au lieu de l'Arduino pour la plupart de mes projets. L'auteur de la vidéo avertit que certaines fonctions Arduino ne fonctionneront pas sur les ATtinys. Existe-t-il une liste complète de ce qui est et n'est pas pris en charge?

DudeOnRock
la source
1
D'après ce que j'ai lu (ce qui n'est certes pas beaucoup), tous les ATtinys n'ont pas assez de flash pour le chargeur de démarrage Arduino. Vous pouvez probablement toujours compiler via Arduino et télécharger via AVRdude séparément cependant.
Ignacio Vazquez-Abrams
1
Il ne s'agit pas du chargeur de démarrage ici (vous pouvez utiliser un programmeur externe), mais certaines bibliothèques ne compilent tout simplement pas en code de travail (j'ai même compris que toutes ne génèreraient pas d'erreurs non plus). À ma connaissance, il n'y a pas de liste des fonctions qui fonctionnent et de celles qui ne fonctionnent pas, mais cela ne fait pas de mal d'apprendre à programmer le matériel directement de toute façon, car la plupart des fonctions Arduino sont assez lourdes. Vous ne devez pas vouloir des fonctions comme pinMode();et digitalWrite();sur un ATtiny, juste à droite des registres appropriés DDRx, PORTxdirectement. De nombreuses fonctions similaires peuvent être trouvées.
jippie
1
Pour la grande majorité des projets Arduino que j'ai vus, les puces ATtiny seraient largement capables. Pour la plupart, vous programmez via SPI au lieu du chargeur de démarrage et écrivez du code en C ou Assembly au lieu du copier-coller Arduino typique des didacticiels.
Kurt E. Clothier
@Kurt en fait, il existe des ports de la plupart des bibliothèques d'exécution Arduino, et même des logiciels USB - mais bien sûr, ils ont des frais généraux.
Chris Stratton
1
@ChrisStratton Bon point. J'imagine juste que quelqu'un qui ne connaît pas la différence entre une puce ATtiny nue ou même une puce ATmega et une carte Arduino n'a aucune idée de ce que cela signifie même (ports, débogage à l'exécution, logiciel USB, etc.), donc je doute qu'ils auraient besoin de les utiliser. Si c'est le cas, alors ils ont vraiment besoin d'en savoir un peu plus sur ce qu'ils font afin d'être capables de résoudre des problèmes simples au fur et à mesure qu'ils sont rencontrés. Là encore, je suppose que c'est un peu l'état d'esprit de tous les anti-arduino comme moi.
Kurt E. Clothier

Réponses:

10

Mise à jour: Pour mieux répondre à la question, les ATTiny peuvent faire tout ce qui ne nécessite pas de matériel, les ATTiny sont manquants, y compris le port série matériel, le matériel i2c ou plusieurs interruptions. Comme cela est caché dans les bibliothèques Arduino, à moins que vous ne compreniez bien comment elles fonctionnent ou lisent les fichiers de bibliothèque réels, des choses comme la bibliothèque Wire (matériel i2c) ne fonctionneront pas.

Sur http://forum.arduino.cc/index.php/topic,5582.0.html :

Par exemple, un ATTINY84 a 1 interruption, pas de matériel UART (série ou i2c) et une petite poignée de broches GPIO, moins d'espace de programme et beaucoup moins de RAM, mais est livré dans un boîtier à 14 broches.

Un ATMEGA328 a 2 interruptions, 1 matériel UART, plus de RAM, plus d'espace de programme et plus de GPIO, ce qui est génial si vous en avez vraiment besoin.

De plus, la plupart des ATTiny n'ont pas de multiplication matérielle, donc un compilateur devrait faire une multiplication non base 2 dans le logiciel.

Enfin, les Arduinos s'appuient sur un chargeur de démarrage au lieu de la programmation spi, vous avez donc besoin d'un ATTiny avec au moins 4 ~ 8 Ko de flash pour qu'ils fonctionnent avec le chargeur de démarrage Arduino.

ATTiny44 / 45/84/45/2313 sont populaires comme micro-Arduinos. Ils ont environ un quatrième ou huitième de la RAM et du flash d'un ATMega328 que l'Arduino Uno officiel utilise.

Il existe de nombreux ATTiny, donc aucune déclaration ne peut être dite à leur sujet.

Voir également ici: http://hlt.media.mit.edu/?p=1695

Passant
la source
5

La plupart des attinys n'ont pas de module USART matériel, vous ne pourrez donc pas communiquer avec eux via le port série. Pour certains attinys au lieu de périphériques matériels dédiés I2C et SPI, il existe un périphérique USI simplifié pour lequel vous devez écrire un peu de code de colle pour implémenter la communication SPI ou I2C. Certains attinys n'ont pas d'ADC.

En général, vous devez être plus prudent lorsque vous choisissez attiny pour votre projet, car ceux-ci ont tendance à ne pas avoir un ensemble complet de fonctionnalités disponibles dans atmega328 d'Arduino. Par exemple, attiny2313 a un UART mais n'a pas d'ADC, attiny44 a un ADC, mais n'a pas d'UART, etc.

Consultez simplement le tableau de sélection du microcontrôleur Atmel et une fiche technique au début.

miceuz
la source
1
Absence d'un UART matériel! = Ne pourra pas communiquer via série.
Chris Stratton
@ChrisStratton true, vous pouvez le mordre en émulant via USI
miceuz
1

Un point trivial si pertinent, en plus des excellentes réponses déjà publiées:

La plupart des cartes Arduino, sans compter le Pro Mini / Pro Micro et peut-être d'autres rares, contiennent en plus du microcontrôleur principal, soit un deuxième AVR ou une autre partie d'interface USB. Cela permet non seulement la programmation de l'Arduino à partir d'un ordinateur, mais également le débogage du terminal série au moment de l'exécution. La même connexion USB alimente également l'Arduino.

Bien que la puissance requise par ATTiny ait été prise en compte dans votre conception, le débogage du code lors de l'exécution à l'aide d'un logiciel de terminal peut être très pratique.

Anindo Ghosh
la source
1
Certaines cartes attiny résolvent ce problème avec le logiciel USB.
Chris Stratton