com ポート経由で attiny2313 をプログラミングします。 プログラミング Attiny2313

23.12.2023

Atmel AVR マイクロコントローラーは、数年前からアマチュア無線家の間で当然のことながら人気があります。 これらの MK の特別な機能は、パラレル モードとシリアル モードの両方で「ファームウェア」を書き込むことができることです。

ATtiny13ヒューズビット構成の復元

アマチュア無線の現場では、最も広く使用されているのはシリアル (SPI - シリアル ペリフェラル インターフェイス) プログラマで、これには多くの利点があります。通常、その回路はパラレル プログラマよりも単純です (極端な場合には、5 本の導体でも問題なく使用できることもあります)。および 2 つの抵抗器); プログラマー自身とさまざまなオペレーティング システムの制御プログラムの両方に多くのオプションがあります。 プログラマを接続するには、ほぼすべてのコンピュータ ポートを選択できます。LPT と COM の両方、および USB プログラマ用のスキームがあります。 さらに、このようなプログラマを使用すると、デバイスから MK を外すことなく MK を「フラッシュ」できます (ISP - In System Programmable)。

ただし、SPI プログラミング モードは依然として取り除かれています。 また、一部の完全な並列プログラミング機能は利用できません。 シーケンシャル プログラミングで最も一般的な問題は、この MK の特定のヒューズ セルがデフォルト値に対して変更されている場合に、MK でいかなるアクションも実行できないことです。この場合、チップは「ストライキを開始」し、動作しません。コンピュータと通信できなくなります。シリアル プログラマによる読み取りも「フラッシュ」も使用できなくなります。 そして、PonyProg プログラムは、たとえば、次のエラー メッセージを生成しますが、故障しているように見えます。「デバイスが見つからないか、不明なデバイス (-24)。ただし、最終回路では、この MK はまったく正常に動作します。

この「通信不能」の理由は、たとえば、RSTDISBL ビットを 0 に設定すること (AVR のヒューズ ビットの 0 は、このビットがプログラムされていることを意味します) である可能性があります。これにより、外部リセット入力がオフになり、オフになります。それを通常の I/O ラインに送ります。 外部リセットがないと、MK は SPI プログラミング モードに入ることができず、PC にアクセスできなくなります。 SPI プログラマにとって MCU が「見えない」もう 1 つの理由は、クロッキングの欠如です。クロック ジェネレータ (CKSEL0 ~ 3) を制御するヒューズ ビットは、MCU が内部クロック回路をオフにし、外部発振器 - クロックソースが必要です。 また、クロッキングがなければ、SPI プログラミングは不可能です。

さらに、ヒューズバイトの誤った「配線」は、不注意や無知だけが原因ではない可能性があります。「フラッシュ」中のハードウェア障害も、特に「5 本のワイヤ」というテーマのバリエーションの 1 つを介して「縫い付けられている」場合には、かなりの確率で発生します。 」 - したがって、「落ち込んだ」からです。MKが棚に横たわり、奇跡的な治癒を待っている状態で昏睡状態に陥ることから誰も安全ではありません(そして、インターネットを信じるなら、ほぼすべてのAVR愛好家がこれを経験していることになります-そして必ずしも初心者というわけではありません)。

このような問題が発生し、MK がコンピュータとの通信の確立を停止した場合、シリアル プログラマを使用して誤って設定されたヒューズ バイトを修正することはできなくなります。 ただし、特に古い SPI プログラマが十分に満足している場合は、いくつかの「昏睡状態」の MK を「治す」ためだけに、新しい並列プログラマ (特にデバッグ キット) を作成したり購入したりする必要はまったくありません。これには、Webサイトに図が掲載されている単純なデバイスを使用するのがより便利です

このデバイスはATtiny2313 MKを「扱う」ように設計されていますが、他のAVRモデル(TinyとMedaの両方)用に変換することもできます。ファームウェアの十分なコメントが付けられた「ソースコード」が添付されており、書き換えが可能です。現時点で救急車が必要なMKに関して。 このようなデバイスの動作の本質は、「患者」を並列プログラミング モードにし、ヒューズ セルの状態の変更を担当する「実際の」プログラマの信号をそのライン上でエミュレートすることです。 そしてヒューズセルのデフォルト値をこのMKに書き込みます。

このデバイスは、すべてのヒューズ バイトの工場出荷時の値(高、低、追加)を設定します。 さらに、プログラムとデータの「患者」の記憶も消去します。その結果、「クリーンな」マイクロ回路の状態が得られます。 同様のデバイスがアマチュア無線の文献やインターネット (Fuse Doctor、AVR Doctor、AVR Reanimator、AVR Aibolit などの名前で) ですでに説明されていますが、このデバイスには、操作をもう少し快適にするいくつかの機能があります。 まず、著者が知っているすべての設計では、「医師」と「患者」は実質的に「足から足まで」相互に接続されていました(図によれば、「医師」用の一部の端末を除いて)。と「患者」を接続しないでください)。

つまり、РВ0-РВ7 ラインは РВ0-РВ7 ラインに、ライン PD6 はライン PD6 に、などです。これは、回路をプリント方式で組み立てる場合、設置が大幅に複雑になります。多くのジャンパが必要になるか、二重にジャンパが必要になります。 -側面配線(ただし、著者の中には、単純に超小型回路を重ねて設置し、未接続の端子を側面に曲げて、その上に抵抗/導体をはんだ付けすることを提案する人もいます。私たちはよく知っています)。 ここでは、超小型回路が「横に並んで」「ジャック」に配置されているため、プリント基板のレイアウトが非常にシンプルになります。

図 2 に示す著者のバージョンでは、回路図をほぼ繰り返しており、3 つの小さなジャンパのみが含まれています。 ボードサイズ - 60x60 mm。 次に、一部のデバイスでは 2 つの電圧が必要でした。MK に電力を供給するために 5 V、プログラミング モードに入るために「患者」リセット ラインに 12 V です。 この回路に必要な電圧は 1 つだけで、かなり広い範囲で変化する可能性があります。重要なことは、電圧が少なくとも 12 V であることです。第三に、説明されているデバイスのほとんどは、「患者」の「ホット」交換を許可していません。複数の MK を連続して「修復」する必要があります。「点滅」するたびに電源を切り、「問題のある」MK を交換し、再度電源を入れるなどの操作が必要です。 このデバイスはすべての出力をログに設定します。

O 各「点滅」後、「コンベヤ」で微細回路を「治療」できます - 電源を接続し、「患者」を取り付け、「開始」ボタンを押し、HL1 で「治療」の結果を確認します。 、削除し、新しい「患者」を挿入し、「HL1 を確認しました、削除しました、挿入しました」などを押します。 しかも、これらすべてを電源を切らずに行うことができます(少なくともラジオ市場で「テント」を開きます!)。 第 4 に、そのようなデバイスでは、記録されたヒューズ ビットの検証や (「成功/失敗」タイプの) 「治療」の結果の表示がないことがよくあります。

この設計では検証が提供され、その結果を示すために 3 つの状態を持つことができる HL1 LED が使用されます。

  1. 連続点灯 – 「患者」プログラミングが完了しました
    成功した場合、読み取られたヒューズバイトは書き込まれたものと一致します。
    デバイスは次の「患者」を待っています。
  2. 2Hzの周波数で点滅 - エラー
    「患者」をプログラミングする:
    読み取られたヒューズバイトが書き込まれたものと一致しません。 「患者」がプログラミング モードに入っていないか、インストールされていないか、または障害があります (
    プログラムは「患者」の存在をチェックします。動作中のAVRは、並列プログラミングモードに入るときにBSV/RDYライン(ATtiny2313のピン3)にロジック1を設定します。 デバイスは次のメッセージを待っています
    "忍耐強い";
  3. オフ - プログラミングと検証のプロセスが進行中です。 健康な「患者」のプログラミングには 1 秒もかかりません。通常の状態では、この LED の状態は目立ちません。 LED が比較的長い間消灯状態にある場合は、障害のある「患者」が記録モードでスタックし、BSY を設定しないため、「点滅」プロセスがサイクルに入っている可能性があります。 /RDY 準備完了信号が「医師」によって期待されます。

すでに述べたように、このデバイスは非常に汎用的で、AVR シリーズのほぼすべての MK を「治療」するために使用できます。 この場合、ピンの数や位置が異なるさまざまなマイクロコントローラー用にデバイスのコピーを個別に作成する必要はまったくありません。必要に応じて、次の「問題のあるマイクロコントローラー」のピン配列用のアダプターを追加するだけで十分です。 」 1 つを選択し、それに応じて制御プログラムを書き換えます。 アダプタは DIP-20 ソケットで、その「脚」をデバイス ボード上の「患者」パネルに挿入します。 上から、そのようなソケット(超小型回路の出力の接点)まで、電力線と制御線が基板上の「患者」に近づく場所に導体がはんだ付け(または単に挿入)されます。

これらの導体のもう一方の端は、独自のデータシートで指定できる制御線の位置に従って、「処理」が必要な MK の下の 2 番目のソケットの端子にはんだ付けされます。 これは一種のコネクタであることが判明し、そのプラグ(単なる DIP-20 ソケット)がボード上の「患者」の DIP-20 ソケットに挿入され、新しい「患者」がそのソケットに挿入されます。 (別のソケット)。 プログラムに関しては、修正が必要になる可能性がありますので... AVR MCU のモデルが異なると、プログラミング モードへの移行とヒューズ バイトの変更の両方に異なるアクションが必要になることがよくあります。 さらに、ヒューズ バイト自体 (その数を含む) は MK モデルごとに異なります。詳細な情報は [L. 1、2、3]、または会社のドキュメントに記載されています。

そして、オリジナルのプログラムを理解しやすくするために、詳細なコメントを提供しました。 このデバイスは「医師」として、「患者」と同じ ATtiny2313 マイクロコントローラを使用します。これはソケットにも取り付けられているため、すべての「病気」のマイクロ回路を復元した後、取り外して他のプロジェクトで使用できます。 このデバイスで動作するには、「doctor」のすべてのヒューズ ビットが、デフォルトで (工場出荷時に) インストールされているものと同じである必要があります。 唯一のことは、より安定した動作 (特に不安定な電源電圧) のために、「doctor」で BOD システムを 2.7 V のレベルに設定して (BODLEVEL1 ヒューズ ビットを 0 に設定して) 有効にすることができるということです。

「ドクター」は外部クォーツを必要とせず、内蔵の RC 発振器で動作します。 DA1 (78L05) チップは、国産アナログ KR1157EN502 またはより強力な 7805 に置き換えることができますが、はるかに高価であり、この回路にはその電力は必要ありません。 ここでのトランジスタ VT1 はキー モードで動作し、KT315、2SC1815、2SC9014、2SC1749S などの任意の NPN 構造にすることができます。 ただし、一部のモデルでは、ボード レイアウトを変更する必要があります。 安全ダイオード VD1 は、少なくとも 150 mA の電流を流すものであれば何でも構いません。 その役割は、回路を偶発的な電力反転から保護することです。 回路内のすべての抵抗器は小型で、0.125 Wです。それらの値は、かなり広い範囲で示されている値と異なる場合があります。 LED HL1 - 任意のインジケーター。

最後に、ATtiny2313 MK の一部のコピーの動作の興味深い特徴について話したいと思います。 PonyProg2000 プログラムを使用して SPI プログラムされている場合 (おそらく、他のプログラムを含め、他の MK モデルも同じように動作します。ただし、著者には ATtiny2313 と PonyProg2000 の組み合わせ以外のものを実験する機会がまだありません)。 問題の本質は次のとおりです。マイクロコントローラーを読み書きしようとすると、PonyProg プログラムが「デバイスが見つからないか、不明なデバイス (-24)」というエラー メッセージを表示することがあります。これは、このマイクロコントローラーにヒューズ ビットがないにもかかわらずです。変更されています - さらに、マイクロ回路はまだ「フラッシュ」されていない新しいものである可能性もあります。 上記のデバイスを使用した「治療」は効果がありません。再度読み取り/書き込みを試みると、エラー メッセージが再び表示されます。

MK は故障しているようですが、理由はまったくありません。 ただし、このメッセージの「無視」ボタンをクリックすると、「Pony」は MK からの応答がないことを無視することになります。 それでもマイクロ回路の読み取り/書き込みを試行すると、この MK は通常どおり読み取りまたは「フラッシュ」されます。 このような強制的な「ファームウェア」の後、ほとんどの「死んだふり」MK はまったく正常に動作し、何の障害も発生しません (PC との接続を確立しようとするときに上記のメッセージが表示される場合を除く)。

明らかに、ここでのポイントは、MK の一部のインスタンスがプログラマの要求に応じて正しい確認を生成せず、その結果として PonyProg がそれらに欠陥があると結論付けるということです。 同時に、これらの MK は残りのプログラマ コマンドを正常に認識し、正しく実行します。 これは AVR MK の機能 (あるいはむしろ「病気」) である可能性が十分にあります (PonyProg にそのようなボタン「無視」が含まれているというだけではありません)。この記事の著者は 10 個中 3 個の MK を動作させました。このようにして、多くの場合、これはすぐにではなく、いくつかの「ファームウェア」の後に開始されます。

あるいは、人間の手にかかる静的な張力が原因かもしれません。 しかし、それはともかく、重要な設計 (点火装置、自動加熱、給水、警報システムなど) では、そのような「信頼を打ち破る」 MK を使用することは依然としてお勧めできません。 しかし、おもちゃ、クリスマスツリーのガーランド、ドアベル、その他の補助装置(上記©のようなもの)では、何の問題もなく、何年もの間、非常にうまく機能します。

ATTiny2313 マイクロコントローラーは、当時非常に成功を収めた古い AT90S2313 マイクロコントローラーの新シリーズとして復活したものです。 ATTiny2313 は、その祖先の改良版です。 しかし、彼はまた、かなり控えめな周辺環境も受け継いだ。 したがって、機能の点では、ATTiny2313 は控えめです。 マイクロコントローラーには、通常 (ATTiny2313) と電力低減型 (ATTiny2313) の 2 つのバージョンがあります。 V)。 マイクロコントローラーのクロック周波数を下げる (動作が遅くなる) ことで、消費電力が減少する代償を払う必要があります。

一般的な特性:

  • 高級言語でのプログラミング用に最適化された 120 個の命令。
  • 32 個の汎用レジスタ (私はこれが大好きです)。
  • ほぼすべての命令がジェネレーターの 1 クロック サイクルで実行されるため、パフォーマンスは 20 MIPS (1 秒あたり 2,000 万操作) に達します。
  • プログラム用の 2 キロバイトのフラッシュ メモリ。 フラッシュ メモリはコントローラ (自体) から直接プログラムできます。
  • 128 バイト EEPROM (不揮発性メモリ)。
  • 128 バイトの SRAM (ランダム アクセス メモリ)。

この周辺チップには何が搭載されているのでしょうか?

  • 8 ビット タイマー/カウンター 1 つ。
  • 16 ビット タイマー/カウンター 1 つ。
  • 4つのPWMチャネル。
  • アナログコンパレータ。
  • ウォッチドッグタイマー。
  • USIユニバーサルシリアルインターフェース。
  • USART (これはコンピュータ COM RS232)。

特別グッズ:

電力、周波数:

1.8 – 5.5V (ATTiny2313V の場合) 最大 10 MHz
2.7 – 5.5V (ATTiny2313 の場合) 最大 20 MHz
動作モードでは、1.8 V の電源と 1 MHz のマスターオシレータ周波数で 230 µA を消費します。 省エネモードでは、パワーダウン時の消費電力は1.8Vで1μA未満です

プログラミング

ATTiny2313 はなんとか別のリビジョンに耐え、レターを取得しました 最後に。 イノベーションの中で注目すべき点は次のとおりです。
— 外部からの中断がすべての脚に発生しました。
— 通常電源と低電圧電源の分離がなくなりました。 ATTiny2313A は 1.8 ~ 5.5V で給電できますが、4 MHz (1.8 V の場合) ~ 20 MHz の周波数制限に従うことのみが必要です。
— 消費電流は、通常モードと省エネモードの両方で、それぞれ 190 µA と 0.1 µA と大幅に削減されました。
さらに、最新の改訂の結果、ATTiny2313 は兄の ATTiny4313 (文字 A なし) を取得しました。 兄製品は ATTiny2313A に似ていますが、メモリが 2 倍になっています (4 kB フラッシュ、256 バイト EEPROM、256 バイト SRAM)。 これらの変更は、このマイクロコントローラーをサポートし続けるという Atmel の意図を示しています。

ATTiny2313A および ATTiny4313 の新しいバージョンは入手困難で価格がわかりにくいため、私のデバイスは ATTiny2313 の古いバージョンで開発されます。 しかし、新しいバージョンは古いバージョンと互換性があるため、理論的にはファームウェアは新しいマイクロコントローラーで動作するはずです。

結論:

ATTiny2313 シリーズのすべての AVR マイクロコントローラーと同様に、生産性が高く経済的です。 基板レイアウトやはんだ付けに便利なSOICケースを採用しています。 脚間の距離は比較的大きいです (隣接する脚の間にボード上にトレースを置くこともできます)。 簡単に学べる。 ロシア語の文学はたくさんあります。 前世代の AT90S2313 が非常に人気があったため、ネットワーク上で反復用に多くの興味深い回路が開発されました。 広く市販されています。 安価な。 マイクロコントローラーの学習を始めるには、ここが最適です。 欠点の中でも、今日ではかなり控えめな周辺機器に注目する価値があります。 欠点としては、SOIC ケースが少し大きいことです (すでに細かいことを言っていますが)。 メモリの量が少ないと、ATTiny2313 で大規模なプロジェクトを作成できません。 一般に、特別な周辺機器を必要としない小規模プロジェクトに適した高性能コントローラーです。 最高の可用性と低コストのため、私のデバイスでこれを広く使用する予定です。

ATtiny2313マイクロコントローラをプログラムするにはどうすればよいですか? したがって、ATtiny2313マイクロコントローラー、LPTポート(必ずアイロンのポートが必要です。USB-2-LPTは機能しません)、数本のワイヤー(長さは10cm以下)、そしてもちろんはんだごてがあります。 DB-25M (オス) コネクタを使用することをお勧めします。マイクロコントローラを接続すると便利ですが、使用しなくても問題ありません。 ワイヤーをマイクロコントローラーのピン 1、10、17、18、19、20 にはんだ付けします。 写真にあるようなものが得られます。


コネクタなしで実行したところ (マザーのみが利用可能でした...)、次のことが起こりました。


確かに、私の LPT ポートは、長さ 1.5 メートルのケーブルを使用してテーブルの上に配置されています。 ただし、ケーブルはシールドする必要があります。そうしないと、干渉が発生し、何も機能しなくなります。 このマイクロコントローラープログラミングデバイスの図は次のようになります。


正直に言うと、「正しい」プログラマを組み立てることをお勧めします。 そうすれば、それはより簡単になり、ポートは無傷になります。 STK200/300を使用しています。 次に、PonyProg2000 プログラムを使用します。 プログラムを開始すると、本物のポニーのように「鳴き声…」と鳴きます。 この音を再び聞かないようにするには、表示されるウィンドウの「サウンドを無効にする」チェックボックスをオンにします。 「OK」をクリックします。 プログラムを調整する必要があることを示すウィンドウが表示されます。 コンピューターには、遅いものから速いものまで、さまざまな種類があります。 「OK」をクリックします。 別のウィンドウがポップアップします。これは、インターフェイス (どのプログラマとどこに接続されているか) を設定する必要があることを示します。 したがって、メニューに移動します: [セットアップ] -> [キャリブレーション]。 表示されるウィンドウで次のようにします。


「はい」をクリックします。 数秒が経過すると、プログラムに「Calibration OK」と表示されます。 次に、メニューに移動します: [設定] -> [インターフェイス設定]。 表示されるウィンドウで、図のように設定します。


次に、メニューに移動します: [コマンド] -> [プログラム オプション]。 表示されるウィンドウで、図のように設定します。


すべてをプログラミングする準備が整いました!...つまり、一連のアクションは次のとおりです。


1. リストから「AVR micro」を選択します
2. 別のリストから「ATtiny2313」を選択します
3. ファームウェア ファイルをロードし ([ファイル] -> [デバイス ファイルを開く])、目的のファイル (例: 「rm-1_full.hex」) を選択します。
4. 「プログラムサイクルの起動」ボタンをクリックします。 プログラミングが完了すると、プログラムは「プログラムが成功しました」と表示します。
5. そして最後に、いわゆるヒューズをプログラムする必要があります。 これを行うには、「セキュリティと構成ビット」ボタンをクリックします。 表示されたウィンドウで「読み取り」をクリックし、ボックスにチェックを入れて「書き込み」をクリックします。

注意! 特定の構成ビットの意味がわからない場合は、そのビットには触れないでください。 これで、ATtiny2313 コントローラを使用する準備が整いました。 フォーラムでは、PonyProg2000 プログラムと追加の写真を含む元の記事をダウンロードできます。 Radio Circuit Web サイトの資料は Ansel73 によって提供されました。

LPTポートプログラマの概略図を図に示します。 バスドライバーとして、74AC 244 または 74HC244 (K1564AP5)、74LS244 (K555AP5) または 74ALS244 (K1533AP5) マイクロ回路を使用します。

LED VD1 はマイクロコントローラーの記録モードを示します。

LED VD2 - 読み取り、

LED VD3 - 回路への電源供給の存在。

この回路は、ISP コネクタから電源供給に必要な電圧を取得します。 プログラマブルデバイスから。 この回路は、STK200/300 プログラマ回路を再設計したもの (操作を容易にするために LED を追加) であるため、STK200/300 回路で動作するすべての PC プログラマ プログラムと互換性があります。 このプログラマを使用するには、次のプログラムを使用します。 CVAVR

図に示すように、プログラマはプリント基板上に作成し、LPT コネクタ ハウジングに配置できます。




プログラマと連携するには、LPT ポート拡張を使用すると便利です。これは、自分で簡単に作成できます (たとえば、プリンタ用の Centronix ケーブルから)。重要なのは、アース用の導体 (18- 25 コネクタ脚) または購入します。 プログラマとプログラマブル チップ間のケーブルは 20 ~ 30 cm を超えてはなりません。