PIC マイクロコントローラー用のシンプルな JDM プログラマー - マイクロコントローラー プログラマー - マイクロコントローラー デバイス回路。 受動コンポーネント上の PIC 用の最も単純な JDM プログラマ プログラマ接続時のポートとプロトコルの設定

ある日、pic16f628a 用の簡単な LC メーターを組み立てることにしました。当然、何かでフラッシュする必要がありました。 以前は物理 COM ポートを備えたコンピューターを持っていましたが、現在は USB と pci-lpt-2com ボードのみを持っています。 まず、単純な JDM プログラマを組み立てましたが、結局のところ、このプログラマは、pci-lpt-com ボードや USB-COM アダプタ (RS-232 信号の低電圧) のいずれとも動作しませんでした。 それから急いでUSB picプログラマを探しましたが、結局のところ、高価なpic18f2550/4550の使用にすべてが制限されており、当然私はそれを持っていませんでした。ピーク時に何もすることはめったにありません(私は av を好みます。はい、それらをフラッシュすることは問題ではありません、それらははるかに安価であり、それらでプログラムを書くのが簡単であるように思えます)。 EXTRA-PIC プログラマとそのさまざまな亜種に関する多くの記事の 1 つをインターネット上で長時間掘り下げた後、著者の 1 人は、extrapic はあらゆる COM ポート、さらには USB-COM アダプタでも動作すると書きました。

このプログラマの回路は、max232 ロジック レベル コンバータを使用しています。

USB アダプタを使用する場合、USB から RS232 ポートの TTL 信号を取り出すことができれば、USB を usart TTL、TTL から RS232、RS232 を 2 回 TTL レベルに変換するのは非常に愚かなことだと思いました。 usartコンバータチップ。

それで私はそうしました。 私は、max232 の代わりに CH340G チップ (8 つの COM ポート信号をすべて備えている) を使用して接続しました。 そして、これが起こったのです。

私の回路にはジャンパjp1がありますが、これは余分なピークにありません。TX出力がTTLレベルでどのように動作するか分からなかったため、これを取り付けました。そのため、残りの空きNANDで反転できるようにしました。要素であり、結局のところ、TX ピンには論理 1 が存在するのは正しかったので、オンになったとき VPP ピンには 12 ボルトがありますが、プログラミング中には何も起こりません (ただし、ソフトウェアで TX を反転することはできます)。 。

基板を組み立てた後はテストです。 そしてここで最大の失望が起こりました。 プログラマーは (ic-prog プログラムで) すぐに特定され、作業を開始しましたが、非常にゆっくりでした。 原則的には予想通りです。 次に、COM ポート設定で最大速度 (128 キロボー) を設定し、見つかったすべての JDM プログラムのテストを開始しました。 結果として、PicPgm が最も速いことが判明しました。 私の pic16f628a は完全にフラッシュされ (hex、eeprom、config)、さらに約 4 ~ 6 分間検証されました (読み取りは書き込みよりも時間がかかります)。 IcProg も動作しますが、速度が遅くなります。 プログラミングエラーはありませんでした。 また、eeprom 24c08 をフラッシュしようとしましたが、結果は同じで、すべてが縫いますが、非常に遅いです。

結論: プログラマーは非常にシンプルで、高価な部品は含まれておらず (CH340 - 0.3 ~ 0.5 ドル、k1533la3 はラジオのジャンクでよく見つかります)、どのコンピュータ、ラップトップでも動作します (Windows 8/10 上のタブレットも使用できます)。 )。 短所: 非常に遅いです。 また、VPP 信号用の外部電源も必要です。 その結果、ピークが頻繁に点滅しない場合、必要なポートを備えた古いコンピューターを手元に持っていない人にとって、これは繰り返しやすく安価なオプションであると私には思えました。

完成したデバイスの写真は次のとおりです。

歌にあるように、「私は彼をありのままから作った」。 部品のセットは SMD と DIP の両方で非常に多様です。

この回路をあえて繰り返す人にとって、USB-UART コンバーターとしてはほぼすべてのもの (ft232、pl2303、cp2101 など) が適しています。k1533la3 の代わりに k555、k155 シリーズや外国のアナログでも適していると思います。 74als00 では、タイプ k1533ln1 の論理 NOT 要素でも動作する可能性があります。 私は独自のプリント基板を取り付けていますが、利用可能な要素に合わせて誰でもそこに配線を引き直すことができます。

放射性元素のリスト

指定 タイプ 宗派 注記私のメモ帳
IC1 チップCH340G1 メモ帳へ
IC2 チップK1533LA31 メモ帳へ
VR1 リニアレギュレータ

LM7812

1 メモ帳へ
VR2 リニアレギュレータ

LM7805

1 メモ帳へ
VT1 バイポーラトランジスタ

KT502E

1 メモ帳へ
VT2 バイポーラトランジスタ

KT3102E

1 メモ帳へ
VD1-VD3 整流ダイオード

1N4148

2 メモ帳へ
C1、C2、C5-C7 コンデンサ100nF5 メモ帳へ
C3、C4 コンデンサ22pF2 メモ帳へ
HL1~HL4 発光ダイオードどれでも4 メモ帳へ
R1、R3、R4 抵抗器

1キロオーム

3

提案されたプログラマは、雑誌「Radio」2004 年第 2 号の出版物「Programming modern PIC16, PIC12 on PonyProg」に基づいています。 これは、自宅で PIC チップをフラッシュするために使用した最初のプログラマーです。 このプログラマは JDM プログラマの簡易バージョンで、元の回路には MAX232 マイクロ回路の形で RS-232 から TTL へのコンバータがあり、より汎用的ですが、「膝の上で」組み立てることはできません。 この回路には能動部品がまったくなく、希少部品も含まれておらず、非常に単純であるため、プリント基板を使用せずに組み立てることができます。

米。 1: プログラマの概略図。

回路動作説明
プログラマ回路を図に示します。 1. CLK (クロック)、DATA (情報)、Upp (プログラミング電圧) 回路内の抵抗は、電流の流れを制限する役割を果たします。 PIC コントローラーは内蔵ツェナー ダイオードによって故障から保護されているため、TTL ロジックと RS-232 ロジックの間にはある程度の互換性があります。 提示された回路にはダイオード VD1、VD2 が含まれており、ピン 5 に対して COM ポートから正の電圧を「取り出し」、それをコントローラに電力を供給します。これにより、場合によっては追加の電源を取り除くことができます。

セットアップ中
実際には、このプログラマが最初の試行で調整なしで動作するとは限りません。なぜなら... この回路の動作は、COM ポートのパラメータに大きく依存します。 ただし、私の場合、XP の 2 つのマザーボード Gigabyte 8IPE1000 と WinFast では、すべてがすぐに機能しました。 壊れた、より複雑なプログラマ回路を扱うのが面倒な場合は、これを組み立ててみてください。 影響を与える可能性のある事項は次のとおりです。

マットが新しいほど。 これらのポートはとうの昔に廃止されているため、開発者はこれらのポートにあまり注意を払いません。 USB-COM アダプターを購入することでこの問題を解決できますが、やはり購入したデバイスが適切でない可能性があります。 必要なパラメータは次のとおりです。可変電圧は、コネクタの 5 番目のピンに対して少なくとも -10V ~ +10V (log. 0 および 1) 変化する必要があります。 供給される電流は、少なくとも、2.7 kOhm の抵抗が 5 番目の接点とテスト対象の接点の間に接続されている場合に、電圧が 10 V を下回らないようなものでなければなりません (私自身はそのようなボードを見たことがありません)。 また、ポートはコントローラからの電圧を正確に判定する必要があります。0V に近いが 2V 以下の電圧レベルでは 0 と判定され、したがって 2V を超える電圧レベルでは 1 と判定されます。

ソフトウェアが原因で問題が発生する場合もあります。
これは特に LINUX OS に当てはまります。なぜなら... wine、VirtualBox などのエミュレータが存在するため、ポートが正しく動作しない可能性があり、これらには多くの機能が必要です。 これらの問題については、別の記事で詳しく触れます。

これらの機能を理解した上で、設定を始めましょう。
このためには、ICProg 1.05D プログラムを使用することが非常に望ましいです。
プログラム メニューでは、まず設定で適切な設定を選択する必要があります。 ポート (COM1.COM2) で、JDM プログラマを選択します。 次に、「設定」メニューの「ハードウェアチェック」ウィンドウを開きます。 このメニューでは、ボックスを 1 つずつチェックし、電圧計を使用して接続されたコネクタの接点の電圧を測定する必要があります。 電圧パラメータが標準に対応していない場合、残念ながら、これが動作不能の原因である可能性があり、RS-232 TTLコンバータを使用して回路を組み立てる必要があります。 すべてのボックスをチェックしたら、約 5V の電源電圧がツェナー ダイオードで生成されていることを確認する必要があります。 電圧が正常で、取り付けエラーがない場合は、すべてが機能するはずです。 コントローラーをソケットに差し込み、ファームウェアを開いてプログラムします。 「データの反転出力」などのチェックボックスを有効にする必要はありません (すべてチェックが外されています)。 また、コントローラの一部のバッチには非標準のパラメータが含まれている可能性があり、それらをフラッシュすることはできないことを忘れないでください。そのような場合、このプログラマでは、次の方法で電源電圧を 5V から 3 ~ 4V に下げることしか試みることができません。それに応じて接続します。 ツェナー ダイオード、LVP (低電圧プログラミング) モードの誤ったアクティブ化についてコントローラを確認し、それを防止する方法については、特定の種類のコントローラについてインターネットで読むことができます。 おそらく、問題のあるコントローラのプログラミング電圧を上げることは、追加の電源から電力供給されるエミッタ共通の増幅段を導入して回路を複雑にすることによってのみ可能です。

次に、デバイスの電源の問題について詳しく説明します。 プログラマーは、Linux 上の ICProg プログラムとコンソール picprog でテストされました。追加の電源を接続すると、JDM をサポートするものであればどれでも動作するはずです (電源は 1 kOhm の抵抗を介してツェナー ダイオードに接続されます。この場合、抵抗付きのダイオードは使用できます)。完全に除外されます)。 実際のところ、個々のソフトウェアのプログラマー制御アルゴリズムは異なり、ICProg プログラムが最も気取らないものです。 Windows OS では、このプログラムが未使用のピン 2 で必要な電源電圧を上昇させることがわかりました。これは、別のマット上の Linux のエミュレータでも同じプログラムです。 ボードはこれを行うことができなくなりましたが、プログラミング電圧から電力を得ることで解決策が見つかりました。 一般に、このプログラマは追加の電源なしで ICProg とともに使用できると思います。 他のソフトウェアではこれを保証することはほとんどできません。たとえば、電源が入っていない Ubuntu リポジトリの「ネイティブ」 picprog は単にプログラマを検出せず、「JDM ハードウェアが見つかりません」というメッセージを表示します。 おそらく、プログラミング電圧を印加せずにデータを受信したか、それが速すぎてフィルター コンデンサを充電する時間がまだないかのどちらかです。

基本的なプログラマとして、オリジナルの設計を使用して、NTV プログラマと呼ばれる JDM 互換プログラマを組み立てることをお勧めします。 以下は、NTV プログラマの図です (DB9 ソケットを使用しています。プラグと混同しないでください)。

プログラマーはこのスキームに従って組み立てられ、コントローラー (およびその他の多くのコントローラー) を繰り返し正確に点滅させたので、初心者のアマチュア無線家が繰り返し使用することをお勧めできます。

このプログラマーはラップトップに接続すると機能しません。理由は... モバイル システムの RS-232 インターフェイス (COM ポート) の信号レベルは過小評価されています。 また、ハードウェアがポート上の電流を節約する最近の PC では動作しない可能性があります。 ですから、私を責めないで、手元にあるすべてのコンピューターでそれを収集してテストしてください。

構造的には、プログラマ ボードは DB-9 コネクタの接点の間に挿入され、プリント回路基板の接点パッドにはんだ付けされています。 以下はボードの図面と組み立てられたプログラマの写真です。



情報を完成させるために、8 ピン パッケージのマイクロコントローラー用に私が組み立てた同様のプログラマーがもう 1 つあると言っておきましょう ( と )。 プログラマーはこれらのマイクロコントローラーでもうまく機能します。 以下は基板の図面と写真です。

多くのアマチュア無線家にとって、マイクロコントローラー上で好みの回路を素早く組み立てることは問題ではありません。 しかし、マイクロコントローラーを使い始める多くの人は、それをどのようにプログラムするかという問題に直面します。 最も単純なプログラマ オプションの 1 つは、JDM プログラマです。

プログラマー ProgCode v 1.0

このプログラムはWindowsXP上で動作します。 コンピュータの COM ポートを介して、ミドル ファミリ (PIC16Fxxx) の PIC コントローラをプログラミングできるようにします。 設定で選択されたポートにプログラマがない場合、プログラマ接続インジケータ (ウィンドウの右上隅) が赤になります。 プログラマが接続されている場合、プログラムはそれを検出し、右上隅のインジケータが図 1 に示す形式になります。

プログラムウィンドウの左側にはコントロールパネルがあります。 このパネルは、ツールバーのボタンをクリックするか、ウィンドウの左端をクリックすることによって最小化できます (これは、プログラム ウィンドウが全画面表示に最大化されている場合に便利です)。

図 (ProgCode v1.0 プログラムのスクリーンショット)


HEX ファイルがプログラムにロードされている場合は、最初に、ロードされたファームウェアが設計されている MK をコントローラのリストで選択することをお勧めします。 これを行わないと、リストで選択したメモリより大きいメモリを備えたマイクロコントローラ用に設計されたファイルが切り取られ、プログラムの一部が失われます。ファイルをロードするためのこのオプションを使用すると、警告が表示されます。

これが起こらない場合は、ファイルをプログラムにロードした後に目的のコントローラを選択できます。

SFR ファイル形式

ProgCode プログラマは、独自のファイル形式での作業をサポートしています。 これらのファイルには拡張子 .SFR が付いており、マイクロコントローラ向けのプログラムに関する追加情報を保存できます。 このファイルには、マイクロコントローラーのタイプに関する情報が保存されます。 これにより、SFR ファイルをロードするときに設定で MK タイプを事前に選択する必要がなくなります。

プログラマ接続時のポートとプロトコルの設定

プログラムをインストールすると、デフォルトで、プログラマがこのページに示されている JDM 回路を操作するために必要なすべての設定が設定されます。
この回路では信号が整合トランジスタによって反転されるため、上記の回路の信号反転は OutData 出力にのみ必要です。 他のすべてのピンでは、反転は無効になります。



パルス遅延は 0 に設定できます。その調整は、フラッシュできない「特に難しい」コントローラー インスタンスのために提供されます。 同じことが録音一時停止許容量にも当てはまります。デフォルトではゼロです。 これらの設定を増やすと、コントローラーのプログラミング時間が大幅に増加します。

マイクロコントローラーに書き込まれるすべての内容の正確性とソース ファイルへの準拠性を「オンザフライ」でチェックする必要がある場合は、「書き込み時のチェック」チェックボックスをオンにする必要があります。 このボックスのチェックを外すと、実際にエラーが存在する場合でも、チェックはまったく実行されず、エラー メッセージも表示されません。
ポート速度を選択します。速度は任意です。 JDM プログラマにとって、このパラメータは意味を持ちません。

WindowsXP は、COM ポートを介して送信される情報のバッファリングを使用します。 これらはいわゆる FIFO バッファです。 JDM 経由でプログラミングする際のエラーを回避するには、このメカニズムを無効にする必要があります。 これは Windows デバイス マネージャーで実行できます。

コントロール パネルに移動し、次の操作を行います。
管理 - コンピュータ管理 - デバイスマネージャー

次に、JDM プログラマが接続しているポート (COM1 など) を選択し、プロパティを確認し、ポート パラメータ タブを確認します。 そして、「FIFOバッファを使用する」ボックスのチェックを外します。

図 - JDM プログラマと連携するための COM ポートのセットアップ



この後、コンピュータを再起動します。


ローカル プロジェクト エクスプローラー

このプログラムは、コントローラーを直接プログラミングすることに加えて、ローカル コンピューターのフォルダーとインターネット上の両方にある MK 上のプロジェクトに便利なブラウザーを提供します。 これは使いやすさを考慮して行われました。 多くの場合、必要なプロジェクトは別のフォルダーに配置されており、プロジェクトを表示するために適切なディレクトリに移動するのに時間を費やす必要があります。 ここでは、必要なフォルダーをフォルダーのリストに簡単に追加し、マウスを 2 回または 3 回クリックするだけでプロジェクトを表示できます。

ブラウザパネルでそれをダブルクリックすると、プログラム自体で任意のファイルが開きます。これは、画像、HTML ファイル、doc、rtf、djvu (プラグインがインストールされている)、pdf、txt、asm に適用されます。 コンピュータにインストールされている外部プログラムを使用して、ブラウザでダブルクリックしてファイルを開くこともできます。 これを行うには、目的のファイル タイプの拡張子を [ファイルの関連付け] リストに入力する必要があります。 開くプログラムへのパスを指定しない場合、Windows はデフォルトでプログラム内でファイルを開きます (これは、常に明確に開かれていないアーカイブを開く場合に便利です)。 開くプログラムへのパスがリストで指定されている場合、ファイルは指定されたプログラムで開きます。 この方法でSPL、LAY、DSNなどのファイルを表示すると便利です。

図 (ProgCode v1.0 プログラム ブラウザのスクリーンショット)



ファイルの関連付け設定ウィンドウは次のようになります。




インターネットプロジェクトブラウザ

インターネット上のプロジェクト ブラウザは、ローカル プロジェクト ブラウザと同様に、数回クリックするだけでインターネット上の目的のサイトにすばやくアクセスし、プロジェクトを表示し、必要に応じてすぐに MK でプログラムをフラッシュすることができます。



インターネット上でプロジェクトをレビューするときに、プロジェクト ページに SFR 拡張子 (これは ProgCode プログラムのファイル形式です) を持つファイルへのリンクがある場合、それをクリックすると、そのようなファイルは新しいファイルで開きます「プログラム」タブをクリックすると、すぐにマイクロコントローラーにフラッシュする準備が整います。
リンクのリストは「編集」ボタンを使用して編集できます。 これにより、リンクのリストを編集するためのウィンドウが開きます。





チッププログラミングプロセスの説明

最新の IC のほとんどには、I2C または同様のプロトコルを使用してプログラムされたフラッシュ メモリが含まれています。
書き換え可能なメモリは、PIC、AVR、その他のコントローラ、24Cxx などのメモリ チップ、類似のもの、MMC や SD などのさまざまなメモリ カード、USB コネクタを介してコンピュータに接続される通常の USB フラッシュ カードにあります。

マイコンのフラッシュメモリに情報を書き込むことを考えてみましょう写真16 F 628 A

DATAとCLOCKの2行があります 、それを通じて伝達されます情報。 ライン時計 クロックパルスを供給する役割を果たし、ラインはデータ 情報を発信すること。

1 ビットの情報をマイクロコントローラーに転送するには、データ ライン (DATA) で 0 または 1 (ビットの値に応じて) を設定し、クロック ラインで電圧降下 (1 から 0 への遷移) を生成する必要があります (時計)。
コントローラーには 1 ビットでは不十分です。 この 6 ビット メッセージをコマンドとして認識するために、さらに 5 回待ちます。 コントローラーはコマンドを非常に好みます。コマンドは 6 ビットで構成されなければなりません。これが PIC 16 の性質です。
PICが理解できるコマンドの一覧と意味は以下の通りです。 コマンドはそれほど多くありません - このコントローラーの語彙は少ないですが、完全に愚かだとは思わないでください - コマンドの少ないデバイスもあります

"LoadConfiguration" 000000 - 構成をロード中

"LoadDataForDataMemory" - 000011 - データをデータ メモリ (EEPROM) にロード中
"IncrementAddress" 000110 - PC MK のアドレスを増加します。
"ReadDataFromProgramMemory" 000100 - プログラム メモリからのデータの読み取り
"ReadDataFromDataMemory" 000101 - データ メモリ (EEPROM) からのデータの読み取り
"BeginProgrammingOnlyCycle" 011000 - プログラミング サイクルの開始
"BulkEraseProgramMemory" 001001 - プログラム メモリの完全消去
"BulkEraseDataMemory" 001011 - データ メモリ (EEPROM) の完全消去

コントローラーはこれらのコマンドにさまざまな方法で反応します。 さまざまな方法で、コマンドを発行した後、彼との会話を続ける必要があります。
本格的なプログラミング プロセスを開始するには、コントローラの MCLR ピンに 12 ボルトの電圧を印加してから、それに電源電圧を印加する必要もあります。 この一連の電圧供給には意味がある。 電源投入後、PIC が内部 RC 発振器から動作するように設定されている場合、独自のプログラムの実行を開始する可能性がありますが、失敗は避けられないため、プログラミング時には許可されません。
MCLR に 12 ボルトを事前に供給しておくことで、このような事態を回避できます。
コマンド後にMKプログラムのフラッシュメモリに情報を書き込む場合

"LoadDataForProgramMemory" 000010 - データをプログラム メモリにロードしています

データ自体をコントローラーに送信する必要があります - 16 ビット、
これは次のようになります:

「0xxxxxxxxxxxxxx 0」

このワードのバツ印はデータそのものであり、エッジのゼロはフレームとして送信されます - これは PIC 16 の標準です。ワードには 14 ビットのみの有効ビットがあります。このシリーズのコントローラには 14 ビットのコマンドがあります表現形式。
データワードの送信が完了すると、PIC は次のコマンドを待ちます。
私たちの目標は MK のプログラム メモリにワードを書き込むことなので、次のコマンドは次のコマンドにする必要があります。

"BeginEraseProgrammingCycle" 001000 - プログラミング サイクルの開始

それを受信したコントローラーは、記録プロセスを完了するために必要な 6 ミリ秒間、外界から切断されます。

マイクロコントローラーのピンの信号は、特別なプログラム、つまりプログラマーを使用してコンピューターによって生成されます。 COM、LPT、または USB ポートを信号送信に使用できます。 PonyProg、IsProg、WinPic800 などのプログラムは、JDM プログラマと連携して動作します。


JDMプログラマ回路

非常に単純なプログラマ回路を図に示します。 この回路は電圧供給シーケンスの制御を実装していませんが、非常にシンプルであり、最小限の部品を使用してこのような回路を非常に早く組み立てることができます。
図(JDMプログラマ回路)


プログラマをコンピュータに接続する際の疑問の 1 つは、選択的な分離をどのように確保するかということです。 回路に異常が発生した場合の COM ポートの損傷を避けるため。 一部の設計では、選択的な絶縁と信号レベルのマッチングを提供する MAX232 IC を使用します。 この方式では、バッテリ電源を使用することで、問題はより簡単に解決されます。 コンピュータからの信号レベルは、ツェナー ダイオード VD1、VD2、および VD3 によって制限されます。 JDM プログラマ回路はシンプルであるにもかかわらず、ほとんどのタイプの PIC マイクロコントローラのプログラムに使用できます。

ピン COM6(DSR) と COM7(RTS) の間のジャンパは、プログラマがコンピュータに接続されていることをプログラムが判断できるように設計されています。

プログラマ出力の特定の MK への接続は、MK のタイプによって異なります。 多くの場合、特定のタイプのコントローラー用に設計された複数のパネルがプログラマー ボードに取り付けられます。

この表は、プログラミング中のいくつかのタイプの MK の脚の目的を示しています。

PIC16F84 および PIC16F84A MCU は、プログラミングを目的とした同じピン配置を備えています。



PIC16Fxxx シリーズのマイクロコントローラーのピンの割り当ては、ケースのタイプに応じて、ほとんどの場合標準ですが、これに疑問がある場合は、MK の特定のインスタンスのデータシートを確認するのが最も確実です。 ドキュメントの一部はロシアの Web サイトで入手できます。 http://microchip.ru データシートおよびその他のドキュメントの完全なコレクションは、PIC マイクロコントローラー メーカーの Web サイトにあります。 http://microchip.com

プロジェクトインデックス

このプログラムを使用すると、インデックス ページに直接移動し、数回クリックするだけで目的のプロジェクトの説明を表示し、すぐにプログラムをコントローラにフラッシュできます。



選択したファームウェアでコントローラーをフラッシュする必要がある場合は、SFR ファイル (例: Timer_a.sfr) をクリックします。
プログラムはファイルをサーバーから新しいタブにダウンロードします。



この後、残っているのは、MK をプログラマ ソケットに挿入し (まだ完了していない場合)、[すべて書き込み] ボタンをクリックすることだけです。
番組はMKで録画されています。 この後、コントローラーがデバイスボードに挿入され、デバイスが動作できる状態になります。
トピックの続き:
ソリューション

VKontakteへの登録は簡単ですが、高齢の私の同僚の多くはそれが難しいと考えています。 今すぐ VKontakte に無料で登録する方法を紹介します。