ArduinoでできることはATtinyでできないことは何ですか?


12

このMake Magazine youtubeビデオに触発されて、ほとんどのプロジェクトでArduinoの代わりにATtinyチップを使用したいと思います。ビデオ作成者は、Arduinoの一部の機能がATtinysで動作しないことを警告しています。サポートされているものとサポートされていないものの完全なリストはありますか?


1
私が読んだことから(確かにそれほどではありませんが)、すべてのATtinysがArduinoブートローダーに十分なフラッシュを持っているわけではありません。ただし、おそらくArduino経由でコンパイルし、AVRdude経由で個別にアップロードできます。
イグナシオバスケス-エイブラムス

1
ここではブートローダーに関するものではありません(外部プログラマーを使用できます)が、一部のライブラリーは正常に動作するコードにコンパイルされません(すべてがエラーをスローするわけではないことも理解しました)。私の知る限りでは、どの機能が動作し、どの機能が動作しないかのリストはありませんが、ほとんどのArduino機能にはかなりのオーバーヘッドが伴うため、ハードウェアを直接プログラムする方法を理解することを学ぶのに害はありません。あなたは、関数のように望んでいなければなりませんpinMode();し、digitalWrite();ちょうど適切なレジスタに、ATtinyにDDRxPORTx直接。多くの同様の機能を見つけることができます。
ジッピー

1
私が見たArduinoプロジェクトの大部分にとって、ATtinyチップは十分な能力があるでしょう。ほとんどの場合、ブートローダーの代わりにSPIを使用してプログラミングし、チュートリアルの典型的なArduinoのコピーアンドペーストの代わりにCまたはアセンブリでコードを記述します。
カートE.クロシエ

@Kurtには、実際には多くのArduinoランタイムライブラリ、さらにはソフトウェアUSBのポートがありますが、もちろんこれらにはオーバーヘッドがあります。
クリスストラットン

1
@ChrisStratton良い点。ベアATtinyまたはATmegaチップとArduinoボードの違いを知らない人は、それが何を意味するのかわからない(ポート、ランタイムデバッグ、ソフトウェアUSBなど)ので、それらを使用する必要があることを疑います。もしそうなら、彼らは実際に彼らが何をしているかについてもう少し学ぶ必要があるので、彼らは遭遇したときに簡単な問題を解決することができます。繰り返しになりますが、それは私のようなすべての反アルドゥイノの人々の一種の考え方だと思います。
カートE.クロシエ

回答:


10

更新:質問によく答えるために、ATTinyは、ATTinyにないハードウェアを必要としない、ハードウェアシリアルポート、ハードウェアi2c、または複数の割り込みなど、何でもできます。これはArduinoライブラリに隠されているため、それらがどのように機能するか、実際のライブラリファイルを読み取る方法を十分に理解していない限り、Wireライブラリ(ハードウェアi2c)などは機能しません。

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

たとえば、ATTINY84には割り込みが1つあり、ハードウェアUART(シリアルまたはi2c)がなく、少数のGPIOピンがあり、プログラムスペースが少なく、RAMが少ないですが、14ピンパッケージで提供されます。

ATMEGA328には2つの割り込み、1つのハードウェアUART、より多くのRAM、より多くのプログラムスペース、およびより多くのGPIOがあります。これは本当に必要な場合に最適です。

さらに、ほとんどのATTinyにはハードウェア乗算がないため、コンパイラはソフトウェアで非ベース2乗算を実行する必要があります。

最後に、Arduinosはspiプログラミングの代わりにブートローダーに依存しているため、Arduinoブートローダーで動作するには少なくとも4〜8kbのフラッシュを備えたATTinyが必要です。

ATTiny44 / 45/84/45/2313はマイクロArduinoとして人気があります。彼らは、公式のArduino Unoが使用するATMega328のラムとフラッシュの約4分の1または8分の1を持っています。

ATTinyは多数あるため、それらすべてについて単一のステートメントを述べることはできません。

こちらもご覧ください:http : //hlt.media.mit.edu/?p=1695


5

ほとんどの機器にはハードウェアUSARTモジュールがないため、シリアル経由で通信することはできません。専用のI2CおよびSPIハードウェアペリフェラルの代わりに、SPIまたはI2C通信を実装するために少しのグルーコードを記述する必要がある単純化されたUSIペリフェラルがあります。一部のattinysにはADCがありません。

一般に、プロジェクトの属性を選択するときは、Arduinoのatmega328で利用できる機能がすべて揃っていない傾向があるため、より注意する必要があります。たとえば、attiny2313にはUARTがありますがADCはありません。attiny44にはADCがありますが、UARTはありません。

Atmelマイクロコントローラー選択表と最初のデータシートを確認してください。


1
ハードウェアUARTの欠如!=はシリアル経由で通信できません。
クリスストラットン

真@ChrisStratton、あなたは少しUSIを経由してエミュレートのそれを強打することができます
miceuz

1

すでに投稿された優れた答えに加えて、重要なポイントがあります:

Pro Mini / Pro Microを除くほとんどのArduinoボードには、メインのマイクロコントローラーの他に、2番目のAVRまたは他のUSBインターフェイスパーツが含まれています。これにより、コンピューターからArduinoをプログラミングできるだけでなく、ランタイムシリアルターミナルのデバッグも可能になります。同じUSB接続もArduinoに電力を供給します。

ATTinyの電力要件は設計で明らかにされていますが、ターミナルソフトウェアを使用して実行時にコードをデバッグすることは非常に便利です。


1
一部のattinyボードは、ソフトウェアUSBでその問題を解決します。
クリスストラットン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.