現在、Github ディスカッション セクションが設けられています。問題が明らかにコアの欠陥である場合、私は議論に追いつくことよりも問題を優先するため、問題を作成すると修正にかかる時間が短縮されます。
これにより、2.6.x に存在する多くのバグが修正されます。
2.6.x では、シリアルのフラッシュ フットプリントが大幅に改善され、機能が追加され、ワイヤはデータを破損することなくスレーブをスリープから復帰させることができます。その他にも、変更ログを参照してください。
arduino.cc からダウンロードした Arduino IDE のバージョンのみを使用し、Linux パッケージ マネージャーからは決して使用しないでください。多くの場合、パッケージ マネージャーには Arduino IDE が含まれていますが、それは変更されています。これは、彼らが Arduino や組み込み開発全般について何も知らないにもかかわらず、ましてやそれをうまく変更するために知っておくべきことなど何も知らないにもかかわらずです。これらのバージョンは、こうした賢明でない変更によって引き起こされる、微妙ではあるものの深刻な問題で有名です。このコアはそのようなバージョンで動作することは期待できません。このため、パッケージ マネージャーから提供される IDE のバージョンを修正するための変更は行われません。
これは Arduino クライアントのバグです。
IDE バージョン 1.8.13 から 2.x では、新たな重大な欠陥が発生しました。ただし、IDE バージョン 1.8.2 以前には、致命的な未修正の欠陥があります。ようやく IDE の動作バージョンがリリースされたと思います。最新バージョンではコアを正しくインストールできると思います。
megaTinyCore 2.6.0 より前は、arduino フォルダーにコアを手動でインストールすると、megaTinyCore を手動でインストールすると、このバグにより IDE の V1.8.14 がクラッシュします。 1.8.14 以降のユーザーは、megaTinyCore のバージョン 2.6.0 を使用する必要があります。
私はAliExpressで電化製品をよく購入します。これは、中国企業が製造し、ほとんどがジェネリック製品を扱う優れた市場です。これには、他の方法で西側諸国の個人が入手できないコンポーネントが多数含まれます (たとえば、最小注文はリールなどです - 見つけることができれば)中国の無名のチップ メーカーと提携しているコンポーネント ベンダー)。特に歴史的な半導体不足のさなか、欧米の大手メーカーの最新半導体製品ラインにとっては最適な場所ではない。最新の AVR デバイスは、これらのチャネルを通じて入手できる場合でも、偽物または欠陥品であると頻繁に報告されています(ATtiny412 が 416 であると認識し、リセット時に電源が正しく実行されない可能性があります)。さらに言えば、 AliExpress で AVR マイクロコントローラーを購入することはおそらくないでしょう...Arduino Nano クローンなどの組み立てられたボードは、サードパーティの LGT8 チップを搭載したものを避け、ATmega168p を搭載したものに注意すれば通常動作します。 '328p の代わりに - しかし、ベアチップとして販売されている偽のマイクロコントローラの報告がたくさんあります (偽の ATtiny85 については聞いたことがあります)。実際、ATtiny13 は偽造されるのは最新の AVR だけではないと述べています。これらの偽のチップがどこから来たのかについては多くの興味深い理論がありますが、Microchip はこの問題について完全に沈黙を保っています。
このドキュメントは、(お気に入りのテキスト エディターでマークダウン ファイルを開くのではなく) オンラインで表示するのが最適です。そのため、リンクをクリックでき、インライン イメージが表示されます。また、おそらく最も重要なのは、表が正しく表示される場合があるためです。繰り返しますが、この [ドキュメントは github にあります](https://github.com/SpenceKonde/megaTinyCore](https://github.com/SpenceKonde/megaTinyCore)
古いバージョンでは、[ツール] -> [プログラマ] メニューでプログラマが適切に処理されず、インストールされているコアの数が増えると UX が急速に低下します。それらは適切ではありません。 1.8.14 以降の最新バージョン (1.8.17、1.8.18、および 1.8.19 を含む) では、platform.txt を適切に解析できないため、「パニック: メジャー バージョンが見つかりません」エラーが生成される場合があります。 2.6.0 以降、リリースの直前に platform.txt を手動で変更しているため、これはそれほど問題ではありません
megaTinyCore がボード マネージャーを通じてインストールされると、必要なバージョンのツールチェーンが自動的にインストールされます。 0/1/2 シリーズのすべてのパーツは、追加の手順なしでサポートされます。 2.2.7 までは、2020 年 6 月時点で最新の ATpack を備えた Arduino7 バージョンの avr-gcc (gcc 7.3.0 および avrlibc 3.6.1) を使用していました。2.2.7 からは、ツールチェーンの Azduino ビルドを使用し始めました。新しくサポートされたすべてのパーツの ATpack が更新されました。 2.2.7 では Azduino3 を使用し、2.3.0 以降では Azduino4 を使用し、2.6.0 以降では Azduino5 を使用します (ただし、両方をインストールすると HDD スペースが 4 分の 1 GB 節約され、ダウンロード帯域幅が 40 MB 節約されること以外は何のメリットもありません) megaTinyCore と DxCore はボード マネージャーを通じて提供されます。
手動インストールはより複雑です - 特に 2 シリーズのサポートが必要な場合。詳細については、インストール ガイドを参照してください。
tinyAVR 0シリーズ、1シリーズ、そして今回の2シリーズ用のArduinoコア。これらのパーツは、「クラシック」 tinyAVR パーツ (ATTinyCore でサポートされている) と比較してアーキテクチャが改善されており、ペリフェラルが改善され、特定の命令の実行時間が改善されています (これらは、高度な AVR Dx シリーズに関しても同様です)。公式 Nano Every や Uno Wifi Rev. 2 で使用されている ATmega4809 などの megaAVR 0 シリーズ チップ (Arduino チームはそれらを実現するために最善を尽くしましたが) ATtiny シリーズに典型的な低コストの小型パッケージ。これらの部品はすべて、少なくとも 1 つのハードウェア UART、SPI および TWI インターフェイス (ATtiny85 のような USI ガベージはありません)、強力なイベント システム、構成可能なカスタム ロジック、少なくとも 1 つのオンチップ アナログ コンパレータを備えています。 、驚くほど正確な内部発振器、1 シリーズの場合は実際の DAC 出力チャンネル、2 シリーズの場合は豪華な差動 ADC です。
さらに、tinyAVR 0/1/2 シリーズの部品は安価です - 最上位部品である 3226 と 3227 は、32k のフラッシュと 3k の SRAM (Uno/Nano/ProMini で使用される ATmega328p の 2k SRAM) を搭載して動作します。数量で 1 米ドル強 - 多くの 8K クラシック AVR ATtiny パーツよりも少ない (「AVR 命令セット、PIC で)」 価格")。これらの部品はすべて、外部水晶なしで 16 MHz または 20 MHz (4.5 ~ 5.5 V) で動作するように定格されており、内部発振器は UART 通信に十分な精度を備えています。
これらは、従来の ATtiny パーツのような従来の ISP ではなく、UPDI プログラミングを使用します。詳細については、以下を参照してください。 UPDI プログラマの入手は簡単です。jtag2updi を使用して、クラシックな 328p ベースの Arduino をプログラマとして使用できます。または、より安価なハードウェアでより良い結果を得るには、付属の SerialUPDI を使用して任意のUSB シリアル アダプタと抵抗 (できればダイオード) を使用できます。ツールを使用するか、Microchip プログラマ (開発ボード上の mEDBG/nEDBG/EDBG ベースのプログラマ、Atmel-ICE またはSNAP)、またはそれらの 1 つをエミュレートする UPDI プログラミング ツール (私の知る限り、すべてのツールがサポートしています。avrdude がサポートしていて私のコアがサポートしていないものがあれば、問題を開いて私に知らせてください!)。
これらのパーツでは、シリアル ブートローダー Optiboot_x (従来の Arduino Uno ブートローダーと同じコードベースに基づいていますが、大幅に変更されています) がサポートされています (0/1 シリーズのサポートは現在有効で、2 シリーズは 5 月の第 1 週までにサポートされる予定です) ; 新しい部品の調整は簡単です)、従来のシリアル ポート経由でプログラムできるようになります。これと関連するオプションの詳細については、以下の「Optiboot」セクションを参照してください。ブートローダーのインストールには UPDI プログラマーが必要です。私が Tindie で販売している組み立て済みブレークアウト ボードは、事前にブートロードされた状態で入手できます (オンデマンドでブートロードされます)。そうは言っても、 0/1 シリーズ パーツや 14 ピン 2 シリーズ パーツでは、通常の自動リセット回路で使用できるハードウェア リセット ピンがないため、Optiboot のユーザー エクスペリエンスは少し残念です。シリアル ポートが開いたときにブートローダーに自動的にリセットされます。 UPDI プログラミングを完全に無効にするか (初期ブートローディング後にヒューズ設定またはブートローダーを変更する必要がある場合は HV プログラマが必要)、UPDI を有効のままにするか、電源投入後 8 秒以内にアップロードを開始する必要があります。 20 ピンおよび 24 ピンの 2 シリーズ パーツは「代替リセット ピン」をサポートしており、従来の Arduino のように動作できるようになります。
UPDI プログラミング インターフェイスは、プログラミング (およびデバッグ -ユニバーサルプログラミングおよびデバッグインターフェイス) 用の単線インターフェイスであり、tinyAVR 0/1/2 シリーズおよび他のすべての最新の AVR マイクロコントローラーで使用されます。 。 Microchip から専用の UPDI プログラマをいつでも購入できますが、Microchip の (恐ろしく複雑な) IDE ではなく Arduino IDE を使用する場合には、これはお勧めできません。マイクロチップ社の公式プログラマー向けに Linux に関する問題が広く報告されています。 UPDI プログラマを作成するには、非常に低コストの代替アプローチが 2 つあります。どちらも、Arduino コミュニティは公式プログラマよりも経験が豊富です。
megaTinyCore が存在する前は、pyupdi というツールがありました。これは、抵抗を 1 つ追加して変更したシリアル アダプターを使用して、UPDI を備えたマイクロコントローラーにアップロードするための単純な Python プログラムです。しかし、pyupdi は Arduino IDE からすぐに使用できないため、これは選択肢にはありませんでした。 2.2.0 の時点で、megaTinyCore には移植可能な Python 実装が導入されており、これにより多くの扉が開かれます。当初、私たちは pyupdi を適応させることを計画していましたが、作者とマイクロチップ社の従業員数人の強い要望により、この機能を pymcuprog に基づいて作成しました。pymcuprog は、同じシリアル ポート アップロードを含む「より堅牢な」ツールで開発され、「マイクロチップ社によって保守されている」ものです。ただし、パフォーマンスの最適化は行われません。手動でインストールする場合、このアップロード方法を使用するには、オペレーティング システムに適切な Python パッケージを追加する必要があります (システム Python インストールだけでは十分ではなく、また必須でもありません)。
配線の詳細については、 SerialUPDI のドキュメントを参照してください。
2.3.2 では、パフォーマンスが大幅に向上し、抵抗の代わりにダイオードを使用した配線方式の信頼性が証明されており、jtag2updi ファームウェアの脆弱性を考慮して、これが推奨されるプログラミング方法となっています。このバージョンの時点で、プログラミング速度は 20 倍も向上し、jtag2updi で可能であった速度をはるかに超えています (jtag2updi 経由のプログラミングは、「SLOW」速度オプション 57600 での SerialUPDI 経由のプログラミングとほぼ同等の速度です)ボー; 通常の 230400 ボーのバージョンは、SLOW バージョンまたは jtag2updi よりも約 3 倍高速にプログラムしますが、「TURBO」オプション ( 460800 ボーで、アップロード速度が通常よりも約 50% 向上します。TURBO 速度バージョンは、4.5v 以上で動作するデバイスでのみ使用してください。これは、UPDI クロックをより高速に実行する必要があるためです (これも期待されていません)。すべてのシリアル アダプタと互換性を持たせるため - これはパフォーマンス向上のための意図的なトレードオフです) ですが、32kB のスケッチのアップロードと検証を 4 秒で行うことができます。
3 つの設計が反復されています。両方がシリアル ポートであるデュアル ポート シリアル アダプタ、1 つのポートが常に UPDI であるデュアル ポート シリアル アダプタ、およびモードを選択するスイッチを備えたシングル ポート、およびオプションのアドオン ボードです。モデム制御線のステータスを示す LED。
これらにより、SMT JST-XH コネクタまたは Dupont コネクタのいずれかを使用できるようになります。いずれの場合も、シリアル用に 6 ピン (マークされた FTDI ピン配列) と (UPDI 用に) 3 ピンを備えています。
これら 3 つすべては 3.3 または Vusb (公称 5V) を供給することができ、あるいは Vusb と 3V3 の両方を電源から切断することができ、ターゲット デバイスには 5.5V > Vdd > 1.8V で電力が供給されることが期待されます。この場合に使用される論理レベルは、印加される電圧になります。デュアル シリアル デバイスでは、VccIO 電源レールが共有されることに注意してください。両方が同じ電圧で動作しているか、同じデバイスであるか、アダプターがそれらに電力を供給するように設定されており、電源が切断されている必要があります。
アダプターのモデルとオペレーティング システムに応じて、異なるタイミング設定が必要であることが判明しています。ただし、ほとんどのアダプタを使用する Linux/Mac で 230400 ボーでも失敗しないように設定する必要があるため、Windows でははるかに大きな時間ペナルティが課せられます。Windows では、OS のシリアル処理が十分に遅いため、遅延する必要はありません...
ここで言う「書き込み遅延」とは、ページ消去書き込みコマンドの実行を完了できるようにするためのものです。これにはゼロ以外の時間がかかります。アダプターによっては、USB 遅延と暗黙的な 2 バイトまたは 3 バイトのバッファー (USART に似ており、おそらく内部で 1 つとして実装されます。ハードウェア バッファーの深さが 2 バイトしかないため、到着した 3 番目のバイトは行き場がありません) が影響する場合があります。明示的な遅延なしで動作できるようにするには十分です。または、途中で失敗し、「Error with st」が報告される場合があります。アダプターの遅延タイムアウトが速くなり、OS のシリアル処理が速くなるほど、これが問題となる可能性が高くなります。 prog.py を手動で実行する場合、これは-wd
コマンド ライン パラメーターによって制御されます。 2.5.6 の時点では、この書き込み遅延は実際に要求された時間 (ミリ秒単位) に近くなりました。以前は、必要なのは 1 で十分な場合に数ミリ秒の粒度でした。その結果、課せられるペナルティは、特にウィンドウズ。
選択ガイド:
460800+ ボーでは、仕様を維持するにはターゲットが 4.5V+ で動作している必要があります (実際には、おそらくそれほど高い値である必要はありませんが、16 MHz で安定するのに十分な高い電圧である必要があります。 230400 ボーを超えるすべての速度でインターフェイス クロックを最大値に設定します。ただし、一部のアダプターはこの手順を行わなくても 460800 で動作する場合があります (これ自体が奇妙です)。 460800 ボーは 460800 ボーですよね?)、ほとんどはそうではなく、SerialUPDI にはアダプターが何であるかを判断する方法がありません。
CH340 ベースのアダプターは、ほとんどのプラットフォームで十分な遅延を実現し、書き込み遅延に頼ることなく、ほぼ常に任意の速度で動作します。すべてのオプションは書き込み遅延を使用しなくても機能します。
ほとんどすべてのアダプターは、書き込み遅延を使用せずに Windows 上で 230.4k で動作します。シリアル アダプタとして機能するようにプログラムされた一部のネイティブ USB マイクロコントローラ (例: SAMD11C) など、まれにそうではないものもあります。
CH340 ベースのアダプターを除き、プラットフォームに関係なく、書き込み遅延なしで 460.8k 以上で動作するアダプターはほとんどありません。
Windows では、多くのアダプター (実際にサポートしているはずのアダプターであっても) が 921600 ボーへの切り替えに失敗します。理由はわかりません。症状としては、試行中に数秒間停止し、その後 115200 ボーでアップロードが行われるというものです。奇妙なことに、これまで私が成功したのは CH340 だけです。
Windows で書き込み遅延がある場合の 460,800 ボーは、多くの場合、書き込み遅延がない場合の 230,400 ボーよりも遅くなります。 Linux/Mac では同じことが当てはまらず、ページ サイズが小さいほど、書き込み遅延によるパフォーマンスへの影響が大きくなります。
他のオプションが機能しない場合、または Vcc = < 2.7V でプログラミングする場合は、57600 ボーを使用する必要があります。
460800 ボーは、書き込み遅延が有効になっていない限り、TX と RX 間のショットキー ダイオードの両端に 10k の抵抗が配置されている一部のアダプタでは書き込み遅延なしで動作しますが、それなしでは動作しません。いや、私にもどうしてそうなるのか理解できません!
上記からわかるように、この情報は主に経験に基づくものです。動作を予測する方法はまだわかっていません。
FTDI アダプター (FT232、FT2232、FT4232 など) は、eBay/AliExpress で約 2 ドルで入手できる偽物も含め、Windows ではデフォルトで 16 ミリ秒という耐え難いほど長い遅延時間になります。待機しなければならないレイテンシ遅延期間の数を制限するためにどれだけの長さを行ったとしても、2.2 秒のアップロードは 15 秒以上に延長されます。許容可能なアップロード速度を得るには、これを変更する必要があります。
コントロールパネル、デバイスマネージャーを開きます。
ポートの拡張 (COM および LPT)
ポートを右クリックしてプロパティを選択します
「ポート設定」タブをクリックします
「詳細...」をクリックして詳細設定ウィンドウを開きます。
[BM オプション] セクションで、[レイテンシ タイマー] メニューを見つけます。おそらく 16 に設定されています。これを 1 に変更します。
[OK] をクリックして詳細オプション ウィンドウを終了し、もう一度クリックしてプロパティを終了します。デバイス マネージャーがハードウェアのリストを更新していることがわかります。
アップロードが大幅に高速化されるはずです。
1 つは古典的な AVR Uno/Nano/Pro Mini から作成できます。安価な Nano クローンが通常の選択であり、十分に安価であるため、接続してそのままにしておくことができます。このプロセスに関する詳細なドキュメントは提供されなくなりました。 jtag2updi は非推奨になりました。まだ使用している場合は、[ツール] -> [プログラマー] メニューから jtag2updi を選択する必要があります。これは以前は推奨されたオプションでした。 jtag2updi の永続的なバグと、ほとんどメンテナンスされていない 'avrdude' ツール (特に、これを使用して作成されたすべての UPDI アップロードに偽のエラー メッセージを挿入する) への依存のため、これは推奨されなくなりました。
どうやら、Arduino は最新の avrdude の 32 ビット バージョンをパッケージ化していないようです。私は arduino18 (最新) のコピーである新しいツール定義を定義しましたが、32 ビット Linux では代わりにバージョン 17 を取り込む点が異なります。これは、そのプラットフォームで利用可能な最高のものであるためです。 arduino17 バージョンは、一部の Microchip プログラミング ツールでのアップロードを正しくサポートしていません。
これは現在、最近のいくつかのリリースでのみ使用されており、avrdude not available for this platform エラーを修正する必要があります。
tinyAVR 2シリーズ
ATtiny3227,1627,827,427
ATtiny3226,1626,826,426
ATtiny3224,1624,824,424
tinyAVR 1シリーズ
ATtiny3217,1617,817,417
ATtiny3216,1616,816,416
ATtiny1614,814,414,214
ATtiny412,212
tinyAVR 0シリーズ
ATtiny1607,807
ATtiny1606,806,406
ATtiny1604,804,404,204
ATtiny402,202
「AVR##XX##」(X は文字、# は数字)のような名前のもの - それらには私の DxCore が必要です
すべての古典的な (2016 年以前の) tinyAVR パーツ - これらはほぼすべて、他のコア ATTinyCore の 1 つでサポートされています。
ATtiny 25/45/85、24/44/84、261/461/861、48/88、2 つの小さいものと 1 つ (奇妙な 43 と 4313/2313)、2.0.0 では 26 と最後のもの- 4 つ (現代の AVR に向けた実験のヒントを示しています)、ATtiny 441/841、1634、828、さらに奇妙な 26 です。
その他AVR パーツ ファミリのリストと、それらが動作する Arduino コアについては、このドキュメントを参照してください。ほとんどすべてのものに、通常は私か MCUdude によるサポートを提供するコアがあります。
すべての最新の AVR をカバーするこのドキュメントを参照してください
特徴 | 0シリーズ | 1シリーズ | 1+シリーズ | 2シリーズ |
---|---|---|---|---|
フラッシュ | 2k-16k | 2k-8k | 16k/32k | 4k-32k |
ピンカウント | 8-24 | 8-24 | 14-24 | 14-24 |
SRAM | 128b-1k | 128b-512b | 2k | 512b-3k |
TCD | いいえ | はい | はい | いいえ |
TCB | 1 | 1 | 2 | 2 |
ADC | 1x10ビット | 1x10ビット | 2x10ビット | 1x12ビット PGA付き |
VREFピン | いいえ | いいえ | はい | はい |
交流 | 1 | 1 | 3 | 1 |
イベント * | 3ちゃん | 6ちゃん | 6ちゃん | 6ちゃん |
CCL ** | 2LUT | 2LUT | 2LUT | 4LUT |
*
2 シリーズ tinyAVR (および Tiny 以外の最新のすべての AVR) を除くイベント チャネルは、(システム クロックに対して) 同期と非同期の 2 つのタイプに細分されます。すべてのジェネレーターが同期チャネルで使用できるわけではありません。また、一部のイベント ユーザーは同期チャネルのみを使用でき、チャネル リストの一貫性は低くなり、より多くのものが使用されます。この狂気は最初の機会で放棄されました - メガ0でさえその区別を取り除きました。
**
2 シリーズおよび非小型パーツのみが、CCL 状態に基づいて割り込みを起動できます。
すべてのパーツには、ほとんどのピン (PORTA および PORTB 0 ~ 1、および 4 ~ 5 のすべてのピン) で使用可能なアナログ入力があります。 1-series+ の 2 番目の ADC は、PORTC のピンを入力としても使用できます (これらの使用方法については、アナログ リファレンスを参照してください)。
これらは予算のオプションです。これらはサポートされていますが、推奨されません。これらは、tinyAVR 1 シリーズが 16k で得られる「ブースト」は決して得られず、どの構成でも 2 番目の TCB がなく、TCD がなく、イベント チャネルが 3 つしかなく、いずれも RTC イベント出力を伝送できません。これらのパーツには 1 シリーズと同様に 2 つの CCL LUT があり、14、20、24 ピン構成で最大 16k のフラッシュ (8 ピン パーツの場合は 4k のみ) と最大 1k の SRAM が利用可能です。
これらには、0 シリーズと同様に、2k、4k、または 8k のフラッシュと 128、256、または 512b の RAM が搭載されています。 TCD はありますが、2 番目の ADC、トリプル AC 構成、または 2 番目の TCB はありません。
16k になると、突然 1 シリーズのパーツがはるかに面白くなります。より大きなフラッシュには、より大きなチップに適した周辺機器が豊富にあり、16k であっても 32k であっても、すべて 2k の SRAM を搭載しています。 2 番目の ADC 全体は、AVR 間で独自です。それは、AVR Dx シリーズで洗練された形で現れた多くの機能のテスト場だったようです。この価格設定には、16k 1 シリーズの非常に優れた周辺機器が考慮されていないようです。
上の表からわかるように、2 シリーズはアップグレードというよりはほとんどサイドグレードです。はるかに優れた ADC を備え、イベント システムと CCL は「正常」で、より多くの RAM を搭載し、14 ピン パーツには 32k のフラッシュが搭載されています (3214 が計画されていたようですが、その後キャンセルされました。削除される前にしばらくATPACK内に留まります)
正しい選択がまだ明らかでない場合に、どのシリーズを使用する必要があるかを簡単にまとめました。
「megaavr」ハードウェアパッケージの公式Arduinoボード定義では、megaAVR 0シリーズ部品の新しいアーキテクチャ(tinyAVR 0シリーズおよび1シリーズで使用されているものとほぼ同じ)が「megaavr」と呼ばれることを暗示しています。 「――それは正式な用語ではありません。マイクロチップ社は、古いスタイルの周辺機器を搭載しているか最新の周辺機器を搭載しているかに関係なく、あらゆる「ATmega」部品を指すために「megaAVR」という用語を使用しています。あるファミリーまたは別のファミリーのすべての AVR 部品を指す公式の用語はなく、マイクロチップ社の従業員は、社内にそのような用語があることさえ否定しました。各セットの部品には相互に多くの共通点があり、もう一方のセットにはほとんど共通点がなく、どちらかを指す言葉を誰も考え出さない状態で、どうやって 2 セットの部品を製造できるのかわかりません。
このドキュメントでは、2.0.2 より前の Arduino 規約を使用していましたが、それから 1 年以上が経過したにもかかわらず、私は今でもそれらを megaAVR と呼んでいる箇所を見つけ続けています。問題を見つけた場合は、github の問題を使用して報告してください。 avr
およびmegaavr
用語は依然として内部で使用されていることに注意してください (たとえば、ライブラリ内で、特定のライブラリと互換性がある部分をマークしたり、実行対象に基づいてファイルの異なるバージョンを分離したりするために)。これは継続します。Arduino チームが Uno WiFi Rev. 2 および Nano Every のコアで始めたものとの互換性のために、これに固執する必要があります。
いずれにせよ、この 2 つのグループを指すには何らかの単語が必要ですが、Microchip はその単語を提供していません。公式用語がないため、私は 2016 年以前の AVR デバイス (PORTx、DDRx などのピン用レジスタを備えた) を「クラシック AVR 」、Arduino が megaavr と呼ぶデバイスを「モダン AVR 」と呼んできました。また、I/O モジュールが従来の AVR にほぼ似ているものの、命令セットのバージョンが著しく劣り、一般的なフラッシュ サイズが 1k 以下である部品もいくつか存在します。これらは AVR の AVRrc (縮小コア) バリアントを使用しますが、ほとんどの古典的な AVR は AVRe または AVRe+ を使用し、最新の AVR は AVRxt を使用します。 AVRrc パーツはこのコアではサポートされていません。残念ながら、これらの非常に残念なパーツについて説明する必要があるため、私はこれらのパーツを「 Reduced Core AVR 」パーツと呼びます。これが正式名です。もっとカラフルなフレーズを。どのデザインでもReduced Core AVR を使用しないことをお勧めします。時代遅れというわけではなく、ただひどいだけです。すべての新しい設計には、「最新の AVR 」 (新しいペリフェラルとAVRxt命令セットを備えたもの) - Ex シリーズ、Dx シリーズ、tinyAVR 0/1/2、または mega0 のいずれかを使用することをお勧めします。
新しい tinyAVR 2 シリーズのデータシート - データシートは 16k 部品のみを「カバー」していますが、同じピン数の部品間に機能の違いがないことを明確に述べています (つまり、 16k/32k 1 シリーズ)、ピン数が異なるパーツ間でのみ、ピン数によってのみ指定されます (つまり、24 ピン パーツの機能は 14 ピン パーツにもあります)。ただし、14 ピンのものには必要なピンがなく、ピンがないと使用できないものは除きます)。 14、20、および 24 ピンの部品はすべて、4k、8k、16k、および 32k フラッシュとともにリストされています。これらのフラッシュ サイズのオプションには、それぞれ 512、1024、2048、および 3072 バイトの SRAM (つまり、4k および 8k パーツには 2 倍の SRAM があります)、4/8k パーツには 128 バイトの EEPROM が搭載され、大きいものには 256 バイトの EEPROM が搭載されます。 14 ピンの部品には SOIC と TSSOP があり、20 ピンの部品には (ワイド) SOIC、SSOP があります。 1616 のようなちょっとした QFN (今回はパッケージに 32,000 個の部品も入っていましたが、入手できて幸運でした。どこでも入荷待ちです - 1 つも獲得できませんでした) と同じ VQFN の 24 ピンです。 3217。
TWI、SPI、USART0、AC0 は、NVMCTRL と同様に変更されません (ブートローダーに必要な変更は、2 番目の USART のサポートにのみ関連していました)。クロックオプションは変更されません。 TCB0 と TCB1 は Dx シリーズのバージョンにアップグレードされました。クロック オフ イベント オプション、カスケード、OVF と CAPT 用の個別の INTCTRL ビット (素晴らしい追加ですが、コア自体には関係ありません)、すべてのパーツに両方の TCB があります。 2 つと 1 つではなく、4 つの CCL LUT と 2 つのシーケンサーを取得し、CCL を使用する他の部分と同様に (tinyAVR 0/1 シリーズとは異なり) 割り込みを起動できます。最もエキサイティングな機能の 1 つは、予想通り、2 番目の USART を備えていることです (聞こえるノイズは ATtiny841 と隅ですすり泣く ATtiny1634 です)。 PORTMUX レジスタには、他の最新の AVR と同じ名前が付けられていますが、各 TCA WO チャネルのピンに対する個別の制御は失われませんでした。 EVSYS は、tinyAVR-0/1 シリーズ以外のパーツと同じように動作するようになりました (これは歓迎すべき変更です - 0/1 シリーズは奇数 1 シリーズであり、EVSYS の動作の一部が異なっていました) )。 1 シリーズの TCD0、AC1/2、DAC0、および ADC1 の機能はなくなりました。代わりに、ADC0 ははるかに派手で、ほとんど認識できませんが、実際の差動 ADC を搭載した、買収以降にリリースされた最初の新しい AVR です。 (この貧弱な '841 の嘆きの声をまた待ってください。これも素晴らしい差動オプションを備えた信じられないほど豪華な ADC を備えていますが、新しいものと並んで完全に時代遅れに見えます)...私がこれまでに投稿したさまざまなトピックに関する投稿の量から判断すると、どうやら、差動 ADC はほとんどの希望リストの上位にないような気がしますが、主要なチップの顧客リストの上位にはあったので、それが私たちが得ているものです。そして、Dx シリーズの ADC の代わりに、適切な差動 ADC を入手する時期が近づきました。そしてそれは本当に本当にファンシーです。以下を参照してください。
megaTinyCore は、analogRead() 実装と、オーバーサンプリングと PGA を使用するためのより強力な関数を提供します (以下のアナログ機能のセクションを参照)。
ああ、もう 1 つ...UPDI ピン構成には古いオプション (UPDI、I/O、またはリセット) と、新しいオプション (PA0 の UPDI、PB4 のハードウェア RESET ピン) があります。 Optiboot は、少なくとも PB4 を搭載したパーツ、つまり 14 ピン パーツでは最終的に実行可能で快適なオプションになります。これは、(私の Tindie ストアの売上から推測すると)最も人気のある種類でもあります。
3シリーズも出ると思いますか?違います。 DD と EA は明らかに彼らを追いかけてきて、tinyAVR 領域の周囲で戦略的位置を占めています。 megaAVR 0シリーズ以降、megaAVRのようにブランドが消滅するのも時間の問題だと思います。これは必ずしも悪いことではありません。Dx および EA シリーズのすべての部品は、ピンのマッピングと動作が非常に似ており、これは非常に優れています。小さなものは体系的ではありませんが、ピンをより多くの周辺機器に分配します。指針は「周辺機器を取り残さない」だったそうです。すべてが固定マスタープランに従っている Dx および EA シリーズのピン マッピングと対比してください。パーツには特定のピンがある場合とない場合があり、ない場合はその機能が利用できません。どちらの広いグループにも、神聖なピン配置に「例外」を設けようと考えているエンジニアを鞭で打つのが仕事であるプロダクト マネージャーがいると思います (なぜなら、これらの例外は必然的に増殖し、目隠しされたダーツボードのピン割り当てが最終的に起こるのはそのためです)クラシック tinyAVR 上)
tinyAVR のピンの番号付けは奇妙で、これは Microchip のせいです。ポート内のピンの番号付けが奇妙です。PA0 が UPDI で通常は使用できないことを除いて、順番に始まり、その後、PORTB のピンには逆の順序で番号が付けられます。次に、PORTC を押すと、PORTA と同じ反時計回りの番号に戻ります。 休ませてください!伝統的に最初のピンにはピン 0 を使用し、最後の番号はチップのプログラムを困難にするヒューズを設定しないと使用できないピンにすることになっているためです。 Arduino コードの不文律を破ることなく、A0 から始めて反時計回りに番号を付けることができればよかったと思います。ピンのマッピングに関して私の決定が間違っていたと主張する人もいるかもしれません。おそらくピン 0 として PA0 (ヒューズがセットされていなければ使用できません。この場合、チップのプログラムは困難です) から始めて、反時計回りにピンに番号を付けるべきだったのでしょう。しかし、PORTB ピンに逆の番号を付けない限り、すべてのポートが正常に配置されている場合に実行できるようなトリックは実行できません。すべてのピンに順番に番号が付けられるという期待を取り除くことができれば (そして PIN_Pxn 表記のみを使用すれば)、大幅な節約が実現できる可能性があります。
私は、2 ~ 4 年後には AVR DA、DB、DD が登場すると予測しています。 DU (USB のもの)、EA、および D/E/F シリーズ パーツはピン数 8 (または少なくとも 14) まで、および 128k フラッシュと新しい ADC を備えた 64 ピン パーツです。他にATtinyのブランドは何もありません。おそらく残された最大の疑問は、彼らがATmega2560を、合計100ピン(おそらくそのうち80~88ピンはI/O)と最大256kのフラッシュオプションを備えた最新のAVRに置き換えるつもりかどうかだ。これには 3 つの問題が発生します。まず、56 個の I/O ピンを超えると VPORT レジスタがもう残っていないことです。下位 I/O スペースは 28 個の VPORT と 4 個の GPIOR でいっぱいです。追加の 4 つのポートはどのように処理されるのでしょうか? (2560 では、これらはアクセスがより遅く、シングル サイクル アクセスを持たない単なる 2 番目のクラスのポートでした。これについて、およびここの付録 A で使用できるオペコードがどれほど少ないかという実現可能性についていくつか考えています。そして 2 番目に、違反します。フラッシュの 128k バリアでは、17 ビット プログラム カウンタに移動する必要があります。すべてのジャンプには余分なサイクルがかかり、すべてのリターンには余分なサイクルがかかります。保持して、この「256kのフラッシュのd x部分には32kのRAMがあります。今ではProgmemがDXでどのように機能するかを思い出してください。さらに、マッピングされたフラッシュの場合は、SFRのスペースを残しません。これは同じアドレススペースにあります。
私は、レギュレーター、UPDIヘッダー、シリアルヘッダー、ティンディーショップ、および裸のボードでブレイクアウトボードを販売しています。私の店からの購入は、コアのさらなる開発をサポートするのに役立ち、Arduinoでこれらのエキサイティングな新しい部品を使用して始めるのに最適な方法です。現在、ATTINY1624ボードが利用可能ですが、20ピンと24ピンの部品は、Alt-Reset PINでAutoureSetを有効にするために、新しく改訂されたPCB設計がボードハウスから戻ってくるまで、組み立てられたボードとして販売されません。また、14ピンのボードリビジョンもあります - それは主に化粧品であると考えました。最後のいくつかのバッチで読みやすさが悪化したように見えたため、黄色のはんだマスクが行かなければなりません。また、新しいボードは、現在の0.7 "間隔ではなく、ピンの列間の0.6インチの間隔を標準化するため、たとえば、機械加工されたピンヘッダーをそれらに入れて、幅の広いソケットに接続するか、その行間隔に最適化されたプロトタイピングボードでそれらを使用します。組み立てられた0シリーズボードは中止されており、売り切れになっても補充されません。 32kの部品が利用可能になったら、16kの2シリーズ部品でも同じことが起こります。
2シリーズとEAシリーズのADCは、現代のAVR時代にAVRでリリースされた最高のADCです。これら2つに加えて。最も近い比較は、一流の機能を備えた微分ADC(T841、Mega2560、および(驚くべきことに)T861が最強の競合他社である)を獲得した古典的なAVRです。古典的なAVR時代にいくつかの部品が自慢した部分と200倍の利益は能力がありませんが、増幅されているのは単なるノイズであることは決して明確ではありませんでした(微分ADCでの私の明らかに限られた経験を考えると私は「おそらくそれのほとんどであり、ハードウェアをデザインさせてくれたら、間違いなくそのほとんどが、アナログを知りません!」と言います。この新しいADCは確かに非常に能力があり、真の微分能力(DAやDBシリーズが持っていたのとは異なります)であり、これは他の現代のAVRで利用可能なものよりも頭と肩を上昇させます。プログラム可能なゲインアンプは新しい機能であり、人々がそれから抜け出すことができるアナログ測定の偉業のようなものがまだわからない。確かに有望なようです。 PGAを1倍のゲインで使用すること、PGAを使用していないこと、およびそうすることの利点と短所の違いを理解することは特に興味深いでしょう。 (Microchipは、一般的なケースでタスクに適切なADC構成を選択する方法を議論するドキュメントによって十分に保存されます。私はMicrochipと私が話した人にこの懸念を提起し、それが優先度が高いことを示しました。状況は大幅に改善されましたが、ドキュメントグループは、これが不幸なことです。
オーバーサンプリングとデシメーションの目的のために1024サンプルの蓄積を追加することは歓迎すべき追加ですが、オフセットエラーの大きさと関連性を過小評価するリスクもあります。 (1024個のサンプル(すべてのオフセットエラーがある)を使用してから、合計をデシメートして17ビットADC測定を生成すると、エラーが最低カップルのビットに限定されると想像できます。たとえば、1回の測定で5 LSBがあり、1024個のサンプルを蓄積してデカイートすると、160のオフセットエラーがあり、それを見るのは非常に簡単で、それがノイズではないと思うことが非常に簡単です。
新しいADCを備えた最初のフルサイズ(非タイニー)チップは、最大64Kフラッシュの28-48ピンパッケージで利用できます。 2シリーズからEAシリーズに何かが変更される場合、通常の推測がありました。答えは、混乱するノブの1つが削除され、蓄積された測定のための自動サインチョッピングがあるように見えます(
タイプDタイマーは、デフォルトのPWMピン設定の20/24ピン1シリーズパーツのPWMにのみ使用されます。小さい部分では、PWMピンの総数を増やすことはできません。 WOCおよびWODピンのみ(それぞれPC0およびPC1)は、それらにTCA駆動のPWMをまだ持っていません。そのため、analogwrite()は、スプリットモード(16ビットPWMなど)をオフにするか、タイプDタイマー(周波数の調整など)を使用して強化することで有効になる機能をサポートしていないため、さらに悪いことになります。 1つではなく、2種類のタイマーからPWMをオンとオフにするためのルーチンを保存するための追加スペースが必要です。これは、より小さなフラッシュパーツでは無視できません。 600バイトのオーダーです。 DigitalWrite()の場合は150、AnalogWrite()の場合は450がTCD PWMピンで呼び出された場合。これらの関数で使用されているピンには、TCD PWMピンが含まれていないため、オプティマイザーはこれらの機能のその部分を最適化できるはずです。注Optimizerはそれらを独立して考慮します。つまり、DigitalWrite()には、PWMにTCDを使用するPINで使用される場合、そのピンにAnalogWrite()を呼び出すかどうかにかかわらず、TCD PWMをオフにするコードが含まれます。
他のほぼすべてのAVRとは異なり(おそらく3つの例を考えることができ、そのうちの1つだけが「ボーナス」ではなく「ボーナス」です)、家族内のパーツのフラッシュサイズに基づいて追加の「ボーナス」機能があります。 16Kおよび32Kバージョンにはいくつかの追加機能があります(価格設定には考慮されていないようにも見えません) - それらはすべて16Kまたは32Kであろうと、3つのアナログコンパレータ(ウィンドウモードを含む2kのRAMがあります。オプション)、2番目の - 必死に必要な - タイプBタイマー - そして、2番目のADCが最も奇妙で、チャネルが対応するピンのみが異なります!
これらの部分では、クラシックAVRとは異なり、フラッシュはメモリの残りの部分と同じアドレス空間にマッピングされます。これは、Flashから直接読み取るためにpgm_read_*_near()
が必要ではないことを意味します。このため、コンパイラはconst
と宣言された変数をProgmemに自動的に配置し、適切にアクセスします。それらをProgmemとして明示的に宣言する必要はありません。これには引用された文字列リテラルが含まれるため、F()マクロも必要ありませんが、一部のサードパーティライブラリとの互換性を維持するためには、F()は依然として引数Progmemを宣言します。
ただし、変数Progmemを明示的に宣言する場合は、 pgm_read
関数を使用して読み取る必要があることに注意してください。変数がメモリマッピングフラッシュを備えたパーツのプログラムと宣言されると、ポインターはオフセットです(アドレスは、アドレススペースの開始ではなく、フラッシュの開始に関連しています)。この同じオフセットはpgm_read_*_near()
マクロを使用する場合に適用されます。 Progmemを宣言し、 pgm_read_*_near
でアクセスすることは、正常に機能しますが、より遅く、少量のフラッシュを無駄にします(変数constを宣言するだけでは)。同じことは、2.1.0以降で一定の文字列を備えたF()マクロについても当てはまります(2.1.0の前の期間、 F()
何もしませんでしたが、それはサードパーティの図書館に問題を引き起こしました)。著者は、問題はライブラリではなくコアにあることを主張し、私の選択は、より少ない効率を受け入れるか、ユーザーが一般的なライブラリへのアクセスを拒否することでした)。 F()
マクロを使用することは、いくつかのサードパーティライブラリとの互換性に必要な場合があります( F()
を強制した特定のケースは、そのようなものではありませんでした - 実際に私たちは私が知っているものを、 f() - as-noopコードで、結果として数枚のフラッシュを少なくしました)。
自動車バージョンも機能するはずです。これらの部品の16 MHz由来のクロック速度を常に選択する必要があります。 20 MHzの操作をサポートしておらず、調整されたクロックオプションは使用しないでください。
今、私たちはこれがすべてメガティニコールによってどのようにさらされているかについて話すことができます。最良の結果を得るためにピンを参照する方法の問題から始めてから、さまざまなサブシステムの詳細を記載したドキュメントへの一連のリンクで終了する前に、コア機能、メニューオプションに進みます。
特に標準以外のハードウェアで、Analogread()とDigitalRead()のピンを参照する方法の単純な問題は、Arduinoユーザーの間で永続的な混乱の原因となっています。私の意見では、責任の多くは、ピンがどのように言及されるかについてのArduinoチーム(および彼らの前の配線の著者)が下した決定にかかっているということです。 「アナログピン」としての一部のピンの指定により、人々はこれらのピンをデジタル操作に使用できないと考えるようになります(「アナログ入力を備えたピン」と考えられています。ピンが伝統的に変更されてきたという事実は、さらに水を泥だらけにしています。非標準のクラシックAVRパーツの場合、問題は、長年にわたって「UNOのように」または他の目的のために、長年にわたってさまざまな著者によって作成された複数の互換性のない「ピンマッピング」によってさらに悪化します(Attinycoreは特定ですこのように混乱して、一部の部品には3つのまったく異なるピンマッピングがあり、少なくとも1つのケースでは、代替マッピングの1つは悪魔に触発された純粋な悪の作品であり、アナログピンをデジタルに変換するために追加のルックアップテーブルにほかならない必要があります。ピン)。
このコアは、Arduino Pin Numbersを割り当てるために簡単なスキームを使用します。ピンは、VCCに最も近いI/Oピンからピン0に近づき、反時計回りに進み、(ほとんど)非使用可能なupdiピンをスキップします。次に、updiピンは最後のピン番号に割り当てられます(上記のように、GPIOとして設定されていなくても、updiピン(アナログとデジタルの両方の読み取り作業)を読み取ることができます)。これを最後のリゾートとしてお勧めします。Addiピンには、GPIOピンとして設定されていない場合は常にプルアップが有効になっています。
PINのアイデンティティに関するすべての混乱を防ぎ、あいまいさを排除するために、PIN_PXN表記を使用して、印刷されたピンの異なる数字または名前を持つ開発ボードを使用していない限り、ピンを参照することをお勧めします。これにより、コードの他の同様のハードウェアへの移植性が最大化され、関連するデータシートで使用されているピンの情報を簡単に検索できるようになります。
これは、ピンを参照する推奨される方法です#defines
フォームPIN_Pxn
の提供も提供されます。ここで、 x
はa、b、またはc、 n
は数0-7-です(以下に説明するpin_anと混同しないでください)。これらは、問題のピンのデジタルピン番号に解決するだけです。別のコードパスなどを通過しません。ただし、ほとんどの周辺機器と同様に、特定のピンにリンクされている周辺機器と製品ライン全体で機能する特定のユーティリティがあります。ドキュメント内のいくつかのデモコードがこれを活用しています。直接港の操作も可能です。実際、いくつかの強力な追加オプションが利用可能です。直接操作を参照してください。
PIN_Pxn
Pxn
ではなく、 PIN_xn
ではなく - それらは異なることを意味します!
単一の番号を使用して、ドキュメントで、またはコード内でピンを参照する場合、それは常に「Arduino Pin番号」です。これらは、ピンアウトチャートのオレンジ(アナグラード()が可能なピンの場合)と青(ピン用)で表示されるピン番号です。ピンを参照する他のすべての方法は、対応するArduino PIN番号に#定義されています。
コアはまた、 An
PIN_An
定数を提供します(ここで、 n
は0から11の数値です)。公式コアと同様に、 PIN_An
、アナログチャネルnと共有されるピンのデジタルピン番号として定義されます。これらはADC0チャネル番号を参照しています。この命名システムは、多くの古典的なAVRコアで使用されていたものに似ていますが、ここでは、対応するArduino PIN番号として#Defiedが定義されています。デジタルピンでアナログチャネル番号を取得する必要がある場合は、 digitalPinToAnalogInput(pin)
Macroを使用しますが、高度なADCライブラリを書いている場合にのみ必要です。
これらの部品(まあ、少なくとも1/2シリーズ - 0シリーズは予算のオプションとして意図されていましたが、予算の縮小に失敗し、数セントしか安いです)そして強力な周辺機器。トップエンドのものは、古典的なMegaavrパーツと同等またはそれ以上のものです - 小さな価格で。私の他のコアと同様に、メガティニコールの設計の指針の原則の1つは、サポートされている部品が潜在能力を最大限に発揮できるようにすることです。この(非常に大きな)セクションでは、これらの部品の特徴と、それらがメガティニコールによってどのように露出されるか、およびコア自体の特徴をカバーしています。この(非常に大きな)セクションは、各機能領域をカバーしようとします。チップ機能を使用して問題がある場合は、使用している機能を見つけてみてください!
20 MHz内部(4.5V -5.5V- 5Vシステムの典型)
16 MHz内部(4.5V -5.5V- 5Vシステムの典型)
10 MHz内部(2.7V -5.5V- 3.3Vシステムの典型)
8 MHz内部(2.7V -5.5V- 3.3Vシステムの典型)
5 MHz内部(1.8V-5.5V)
4 MHz内部(1.8V-5.5V)
2 MHz内部(1.8V-5.5V、テストが不十分)
1 MHz内部(1.8V-5.5V、テストが不十分)
20 MHz外部クロック(4.5V-5.5V、テストが不十分)
16 MHz外部クロック(4.5V-5.5V、テストが不十分)
12 MHz外部クロック(2.7V-5.5V、テストが不十分)
10 MHz外部クロック(2.7V-5.5V、テストが不十分)
8 MHz外部クロック(2.7V-5.5V、テストが不十分)
6 MHz内部(チューニング、テストされていない)
5 MHz内部(チューニング、テストが不十分)
4 MHz内部(チューニング、テストが不十分)
2 MHz内部(チューニング、テストが不十分)
1 MHz内部(チューニング、テストが不十分))
7 MHz内部(マゾヒストのために調整された、テストされていない)
8 MHz内部(チューニング、テストが不十分)
10 MHz内部(チューニング、テストが不十分)
12 MHz内部(チューニング、テストされていない)
14 MHz内部(マゾヒストのために、テストされていない)
16 MHz内部(チューニング)
20 MHz内部(チューニング)
24 MHz内部(チューニング、オーバークロック、テストが不十分)
25 MHz内部(チューニング、オーバークロック、テストが不十分)
30 MHz内部(チューニング、オーバークロック、テスト不良)-0/1シリーズでは、「20MHz」OSCCFGヒューズ設定が必要です。 2シリーズ部品は、「16 MHz」が選択されて30に達する場合とできない場合があります。
32 MHz内部(チューニング、オーバークロック、テストが不十分)-2シリーズのみ、非常に楽観的なオーバークロックは不安定です。
24 MHz外部クロック(オーバークロック、テストが不十分)
25 MHz外部クロック(オーバークロック、テストが不十分)
30 MHz外部クロック(オーバークロック、テストが不十分)
32 MHz外部クロック(オーバークロック、テストが不十分)
オーバークロックされた部品の電圧または温度の範囲について主張することはありません - 私たちが主張するのは、5Vで特定のスケッチを実行して、室温でその速度で作業したチップの少なくとも1つだけです。走行距離は異なると予想されますが、一般的にF仕様とnまたはu仕様の部分よりも優れていると予想されます。
重要 - 調整されたオプションを選択する前に、チューニングについて読んでください!
これらのクロック速度の詳細については、クロックリファレンスをご覧ください
表示されている電圧は、メーカーの仕様で動作することが保証されているものです(。動作温度範囲の境界を押し込めない限り、これらの部品は通常はるかに良くなります(通常、2シリーズは32 MHzおよび5V @室温で機能します。 /1シリーズも同様に、電源が安定した5.0〜5.5Vである場合、通常32 MHzで外部クロックで動作します。
SketchがUpdiを介してアップロードされたときにOSCCFG
ヒューズを設定するためのアクションは必要ありません。 OptiBootを介してアップロードすると、ヒューズを変更できないため、ブートローダーが燃やされたときに選択されたものは何でも使用されています。
すべての内部オシレータークロック速度オプションは、「調整」オプションが選択されていない限り、工場出荷時のデフォルトキャリブレーションを使用します。この場合、チューニングリファレンスに記載されているようにキャリブレーションが調整されます。これを使用して、20 MHzで融合したOptiBootチップで16 MHz操作を取得し、その逆も同様です。
メーカーの速度グレードの詳細については、速度グレードのリファレンスを参照してください。これらは、動作することが保証されている電圧とクロック速度であることに注意してください。これらの部品は、何らかの説明の予期しないグリッチが人や財産に危険をもたらす可能性のあるアプリケーションでの使用に適していることを目的としています(車、産業機器、飛行機、原子炉 - 部品が誤動作した場合に人々が死ぬ可能性のある場所)とi反対の理由で、同様の信頼性要件がある軍事申請も信じています。典型的な趣味のユーザーは、安定性の問題の可能性についてはるかにリラックスしており、クラッシュは迷惑に過ぎず、拡張された温度範囲部品の極端な部分は私たちが必要とするものをはるかに超えています。ボードに防水コーティングがあると仮定すると、熱的に、Nグレードの部品は、沸騰したお湯のポットの速度グレードごとに機能できるはずです。そして、それはN-Specだけです。 F-Specは125に適している必要があります!
拡張された温度部品がより良くオーバークロックし、理にかなっていることが確立されています。 125Cで20 MHzで実行されるように仕様がある部品は、室温で32 MHzで32 MHzで走る可能性が高いと予想されます。
バージョン2.4.0の時点で、「公式マイクロチップボード」オプションを提供するようになりました。これは、 LED_BUILTIN
A7の代わりにそのボードにLEDを持つピンであると定義する以外に特別なことは何もしません。マクロPIN_BUTTON_BUILTIN
を定義し、ユーザーボタンを使用してピンとして定義し、NONで「アップロード」します。 -optibootバージョンは常にオンボードプログラマ/デバッガーを使用します。ツール - >プログラマは、「バーンブートローダー」と「プログラマーを使用してアップロード」にのみ使用されます。 attiny416 Xplained nanoの場合、シリアルポートに代替ピンを使用するブートローダーのバージョンも選択します。 - シリアルピンのデフォルトスワッピングをサポートする機能は、Flashの使用量も削減することを願って、PINSWAPメカニズムの根底にある機械の他のいくつかの変更と並んで、将来のアップデートになります。
上記のように、これらは32ビットLinuxプラットフォームでは正しく機能しない場合があります。これは私のコントロールを超えています。私はAvrdude Binaries AMDを構築していません。私もその仕事をしていません。私はすでに多すぎます。
blink()
Xplained MiniとXplained Proでより多くのフラッシュを取得するのはなぜですか?どちらも同じattiny817を持っています!どうすれば違うことができますか?
Xplained Miniで使用されるPIN_PB4
:PC0ではなくPIN_PC0
使用するように変更すると、Blinkがより多くのフラッシュを取ると同じ理由で、Xplained Proが使用するPB4はPWM PINです。それがDigitalWrite()が使用されている唯一のピンであるため、コンパイラはそのピンのDigitalWrite()に必要なものではないものを最適化できます。 。 DigitalWrite()が両方のデバイスでPWMをサポートするピンでも使用されている場合(フラッシュ使用結果が高くなる)、DigitalWrite()がDigitalWriteFast()に置き換えられている場合、DigitalWrite()がFlashを使用する場合に使用されます(ただし、Flashが少なくなります。 pwmを出力するピンでそれを呼び出します)。
updiプログラマがコードのアップロードに使用される場合はいつでも、「安全に」設定できるすべてのヒューズ(HVプログラマーにアクセスできない場合は、ボードをブリックするリスク、またはボードをブリックする)、およびこれがあります。内蔵構成オプションが設定されます。したがって、記載されている場合を除き、動作は常に選択されたツールメニューと一致します。要約すると、これらは次のように処理されます。
WDTCFG will not be changed - it is not configured by megaTinyCore except to reset it to the factory default when doing "burn bootloader".
BODCFG will not be changed - not safe, you could set the BOD level to 4.3 on a 3.3v system, and then it would need to get > 4.3v applied to reprogram it. If it is on the same circuit board as parts that would be damaged, this is a difficult situation to recover from.
OSCCFG will be set
TCD0CFG will not be changed - it is not configured by megaTinyCore except to reset it to the factory default when doing "burn bootloader".
SYSCFG0 will not be changed - not safe
SYSCFG1 will be set
APPEND will not be changed - it is not configured by megaTinyCore. There is insufficient demand to justify the development effort.to make use of this as DxCore does
BOOTEND will be set
LOCKBIT will not be changed - it is not configured by megaTinyCore; supporting the lockbits presents several additional complications, and commercial users with need of this facility are unlikely to be using the Arduino IDE to program production units.
BODCFG
安全ではありません。これをボードよりも高い電圧に設定し、より高い動作電圧が供給されるまでボードを「レンガ」する可能性があるためです。これらの電圧に耐えられないデバイスと同じPCBにはんだ付けされている場合、これは特に厄介です。
SYSCFG0
は安全ではありません。これはRSTPINCFG
住んでいる場所です。これを変更すると、HV UPDIプログラミングを除いてボードをプログラムできなくなり、誰もがHV UPDIプログラマーを持っているわけではありません。将来的には、プログラマーとして選択できるHV uddi機能を保証するプログラマー(つまり、HVプログラマーでのみ動作するツール - >プログラマーオプションを作成することが可能になります)を使用すると、使用すると自動的に設定されます。そのプログラマー。
その結果、2.2.0以降では、UPDIを使用してアップロードするときに16-MHz由来と20 MHz由来の速度を切り替えるために「ブートローダーを燃やす」必要はもうありません。
このコアは常にリンク時間の最適化を使用してフラッシュの使用量を削減します - TinyAvr 0/1/2シリーズ部品をサポートするコンパイラのすべてのバージョンもLTOをサポートしているため、Attinycoreで行われたように、オプションにする必要はありません。これは、導入されたとき、通常は5〜20%の順序でCodesizeの大幅な改善でした!
これらの部品にはすべて多数のアナログ入力があります-DAとDBシリーズには最大22のアナログ入力がありますが、DDシリーズにはHFクリスタルの駆動に使用されないすべてのピンにアナログ入力があります(ただし、PORTCのピンはMVIOがオフになった場合にのみサポートされます)。通常のAVRのようにanalogRead()
で読むことができ、デフォルトで10ビット解像度になります。 analogReadResolution()
を使用して12ビット全体に変更し、強化されたアナグラード関数を使用して、自動的にサンプリングされたデシメートされた読み取り値を高解像度にし、微分測定を行うことができます。 1.024、2.048、4.096、および2.5Vには4つの内部電圧参照があり、さらに外部参照電圧(もちろんVDD)のサポートがあります。 ADCの測定値は、古典的なAVRよりも3倍速く撮影され、測定しているものが低インピーダンスである場合、その速度は再び2倍になります。これは、アナログリファレンスで詳しく説明されています。
DXシリーズ部品には10ビットDACがあり、実際のアナログ電圧を生成できます(これは低電流を提供し、電圧参照または制御電圧としてのみ使用できることに注意してください。