Was kann der ATtiny nicht, was der Arduino kann?

12

Inspiriert von diesem Youtube-Video von Make Magazine möchte ich für die meisten meiner Projekte die ATtiny-Chips anstelle des Arduino verwenden. Der Videoautor warnt, dass einige Arduino-Funktionen auf den ATtinys nicht funktionieren. Gibt es eine vollständige Liste dessen, was unterstützt wird und was nicht?

DudeOnRock
quelle
1
Nach dem, was ich gelesen habe (was zugegebenermaßen nicht sehr viel ist), haben nicht alle ATtinys genug Flash für den Arduino-Bootloader. Sie können wahrscheinlich immer noch über Arduino kompilieren und über AVRdude separat hochladen.
Ignacio Vazquez-Abrams
1
Es geht hier nicht um den Bootloader (Sie können einen externen Programmierer verwenden), aber einige Bibliotheken kompilieren einfach nicht mit funktionierendem Code (ich habe sogar verstanden, dass nicht alle Fehler auslösen). Nach meinem besten Wissen gibt es keine Liste, welche Funktionen funktionieren und welche nicht, aber es tut nicht weh, zu verstehen, wie die Hardware direkt programmiert wird, da die meisten Arduino-Funktionen mit einem erheblichen Mehraufwand verbunden sind. Sie müssen nicht mögen Funktionen wie pinMode();und digitalWrite();auf einem ATtiny, genau richtig , um die entsprechenden Register DDRx, PORTxdirekt. Viele ähnliche Funktionen können gefunden werden.
jippie
1
Für die überwiegende Mehrheit der Arduino-Projekte, die ich gesehen habe, wären ATtiny-Chips sehr leistungsfähig. In den meisten Fällen würden Sie über SPI anstelle des Bootloaders programmieren und Code in C oder Assembly schreiben, anstatt das typische Kopieren und Einfügen von Arduino aus Tutorials.
Kurt E. Clothier
@ Kurt tatsächlich gibt es Ports der meisten Arduino-Laufzeitbibliotheken und sogar Software-USB - aber diese haben natürlich Overhead.
Chris Stratton
1
@ ChrisStratton Guter Punkt. Ich stelle mir nur vor, dass jemand, der den Unterschied zwischen einem bloßen ATtiny oder sogar einem ATmega-Chip und einem Arduino-Board nicht kennt, keine Ahnung hat, was das überhaupt bedeutet (Ports, Laufzeit-Debugging, Software-USB usw.), also ich bezweifle, dass sie sie jemals brauchen würden. Wenn ja, dann müssen sie wirklich ein bisschen mehr darüber lernen, was sie tun, damit sie in der Lage sind, einfache Probleme zu lösen, wenn sie angetroffen werden. Andererseits denke ich, dass dies die Denkweise aller Anti-Arduino-Leute wie ich ist.
Kurt E. Clothier

Antworten:

10

Update: Um die Frage besser beantworten zu können, kann ATTiny's alles tun, was keine Hardware benötigt. Dazu gehören der serielle Hardwareanschluss, Hardware i2c oder mehrere Interrupts. Da dies in den Arduino-Bibliotheken verborgen ist, funktionieren Dinge wie die Wire-Bibliothek (Hardware i2c) nicht, es sei denn, Sie wissen genau, wie sie funktionieren oder wie die eigentlichen Bibliotheksdateien gelesen werden.

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

Zum Beispiel hat ein ATTINY84 1 Interrupt, keinen Hardware-UART (seriell oder i2c) und eine kleine Handvoll GPIO-Pins, weniger Programmplatz und viel weniger RAM, wird aber in einem 14-Pin-Paket geliefert.

Ein ATMEGA328 hat 2 Interrupts, 1 Hardware-UART, mehr RAM, mehr Programmspeicher und mehr GPIO. Das ist großartig, wenn Sie es wirklich brauchen.

Darüber hinaus haben die meisten ATTinys keine Hardware-Multiplikation, sodass ein Compiler in der Software Multiplikationen durchführen müsste, die nicht zur Basis 2 gehören.

Schließlich verlassen sich Arduinos auf einen Bootloader anstelle von SPI-Programmierung, sodass Sie einen ATTiny mit mindestens 4 bis 8 KB Flash benötigen, damit sie mit dem Arduino-Bootloader arbeiten können.

ATTiny44 / 45/84/45/2313 sind als Mikro-Arduinos beliebt. Sie haben etwa ein Viertel oder ein Achtel des RAMs und des Flashs eines ATMega328, den der offizielle Arduino Uno verwendet.

Es gibt viele ATTiny's, daher kann keine einzige Aussage über sie alle gemacht werden.

Siehe auch hier: http://hlt.media.mit.edu/?p=1695

Passant
quelle
5

Die meisten Geräte verfügen nicht über ein Hardware-USART-Modul, sodass Sie nicht über eine serielle Schnittstelle mit ihnen kommunizieren können. Für einige Geräte gibt es anstelle von dedizierten I2C- und SPI-Hardware-Peripheriegeräten ein vereinfachtes USI-Peripheriegerät, für das Sie ein wenig Klebercode schreiben müssen, um die SPI- oder I2C-Kommunikation zu implementieren. Einige Attinys haben kein ADC.

Im Allgemeinen müssen Sie bei der Auswahl von Einstellungen für Ihr Projekt vorsichtiger vorgehen, da in Arduinos atmega328 in der Regel nicht alle Funktionen zur Verfügung stehen. Zum Beispiel hat attiny2313 einen UART, aber keinen ADC, attiny44 hat einen ADC, aber keinen UART usw.

Überprüfen Sie einfach die Atmel-Mikrocontroller-Auswahltabelle und ein Datenblatt am Anfang.

miceuz
quelle
1
Fehlender Hardware-UART! = Kann nicht über serielle Schnittstelle kommunizieren.
Chris Stratton
@ ChrisStratton wahr, Sie können es von
Emulieren
1

Ein trivialer, wenn relevanter Punkt, der über die bereits geposteten hervorragenden Antworten hinausgeht:

Die meisten Arduino-Boards, außer dem Pro Mini / Pro Micro und vielleicht seltenen anderen, enthalten neben dem Haupt-Mikrocontroller entweder einen zweiten AVR oder einen anderen USB-Schnittstellenteil. Dies ermöglicht nicht nur das Programmieren des Arduino von einem Computer aus, sondern auch das Debuggen von seriellen Terminals zur Laufzeit. Über dieselbe USB-Verbindung wird auch der Arduino mit Strom versorgt.

Während offensichtlich die Leistungsanforderung des ATTiny in Ihrem Design berücksichtigt wurde, kann das Debuggen von Code zur Laufzeit mithilfe von Terminalsoftware sehr praktisch sein.

Anindo Ghosh
quelle
1
Einige Attiny Boards lösen dieses Problem mit Software USB.
Chris Stratton