忍者ブログ
ちょっとは人のためになる事をしないとインターネットコミュニティーの皆様に申し訳がないかと思いながら、自分の備忘録ていどでしかなく、実際の所たいした情報も提供できないでいるブログ
[1] [2] [3] [4] [5]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

昔かったH8のライターボードについていた100Vむき出しの電源を流用して可変電圧電源を作りはじめた。構想としては、可変電圧の三端子レギュレーターをつけて、ケースにつっこむ。PICで作っるデジタル電圧計と組み合わせるだけの簡単なもの。

ケースの加工をしていたら電動ドリルドライバの電池が弱っているのがきになる。ニカドなのでいわゆるメモリー効果だろうとおもって、なぜか持っているバッテリー放電器(これまた秋月キット)で放電させてみた。6セル7.2Vのドリルドライバなので、終止電圧をを6Vに設定して放電開始するが一瞬で放電が終了してしまう。バッテリパックの電圧を計ってみたらすでに6V近辺まで落ちている。

これは電池の劣化かなとあきらめかけたが、6セルパックの接合部に電極をさしこんで個々の電圧をはかってみると、6このうち4つは1V以下だが2つは1.2Vのままだ。というわけで、差し込んだ電極から問題のセルだけ放電中。

I2C LCDドライバPICはほぼできてしまった。基板に実装したら完成だが、I2C接続用のケーブルがないので次回秋葉買い物後にもちこし。L型の1X4ピンヘッダに2550コネクタとする予定。


追記:
100mA吸い取る放電器が27mAしか流せません。
メモリー効果バリバリですね。
放電後の性能に期待
PR
RS-232Cをブレッドボードで使うためのモジュール。PICBridgeに書いてあるRS-232Cコンバーターはこれです。PICライター制作時の副産物。

データシートの回路図通りにADM3202を配線。両オスの基板コネクタピンでブレッドボードに実装できるようにした。
D-SUBコネクタをとめているネジは、敢えて長めにカットして飛び出させてある。長さはコネクタピンの黒い部分まで。つまり、ブレッドボードの基板面にちょうど接する長さ。
D-SUBコネクタが重くて、ピンだけじゃ安定が悪い。ネジを足がわりに使って支えにしています。



ダウンロード(pdf)
(修正) MCLRのプルアップ抵抗を省略するために _MCLRE_OFF をセット

I2CBridge の回路図



とはいっても、I2CBridgeはチップ単体動作のようなものなので回路というより接続I/Oピンの覚え書きですね。大部分は手持ちデバイスを接続してみましたってだけのもの。


PICアセンブラソース
PC/PIC間通信プロトコル仕様(pdf)
Windows ホストアプリケーション(zip/Windows HOST)

LCDをPICにつなごうと考えた。

H8のようなI/OがたくさんあるCPUなら良いがPICではきつい。4ビットモードを使っても信号線が7本。AKI-H8ではRWのラインを省略して6本で制御しているけど、それだとBUSYがとれないので、書き込みに十分すぎるほどのウェイトをいれてやらなければならず、表示がトロくなるので採用したくない。

とにかくアプリケーションを走らせるPICの信号線は消費したくないので「I2CでコントロールできるLCDディスプレイ」的なモジュールとすることにした。

I2Cスレーブを作ることになるのだが、I2Cスレーブをデバッグする方法がない。そこで「I2C LCDディスプレイ」に先立ってI2Cスレーブ評価用「I2C ブリッジ」を作った。「ブリッジ」というのは、PCをホスト・PICとRS-232Cで通信して、PICがPCからのコマンドに従いI2Cをコントロールするブリッジ的動作とするためだ。

このブリッジにはRS-232C入出力、I2C入出力(汎用3-STATE I/O)があればたりる。「8PIN USARTつきPIC」なんてあったら最適なのだが、そんなものはない。仕方ないので14pinのPIC16F688を採用。14pinあればオンボード書き込みPINを全部避けてアプリケーションを作れるのでとても楽。ちょっともったいないけどね。

PIC16F688、早いし高機能でちいさい。しかもやすい。気に入った。


完成したPICライターと実験用安PIC(PIC10F200)でなにかしてみる
10F200ってA/Dもついてないし・・・なにか使い道ないだろうか
さすが70円



FOSC/4の出力 1MHz をそのまんまチャージポンプで昇圧してみた
1MHzって結構高速なんでどうなるかとおもったけど、ちゃんと昇圧できた

ダイオードは 1S4 コンデンサーは 0.1μ
回路図略

プログラムはどうとでも。OSCCALのB0をONにしてFOSC4を出力するだけ
LEDを点滅させてあそんでるけどどうでもいいわな

PIC10F200, PIC16F87, PIC16F88, PIC16F648A に書き込み成功~

PIC16F818は壊れているっぽい。AKIプログラマーV4で一回かいただけなのになあ・・・
格納先

HKEY_CURRENT_USER\SOFTWARE\SetRegistryKeyの値\String Table AFX_IDS_APP_TITLEの値\lpszSection\lpszEntry=lpszValue

標準的なレジストリの使い方に従うとSetRegistryKeyはベンダー名を入れるべきってことになる
それにしてもPICは簡単に動く物が作れていい
これで飯くっている訳じゃないから気楽なのもいい
今回は、むしろPICよりPICを制御するWindows側のプログラム(これが本業)に手間がかかってる。
ソフトウェア的な負荷をWindows側に集中させた設計にしたってのもあるが。

下記のようなコンセプトのライターをH8とPICでプロトタイプ的なところまで作ってみた。H8はgccを使ってだいたい3K, PICでの実装はアセンブラで400ワード!!そこそこ大きなプログラムになるかと思って、PIC16F88とかPIC16F886とかを準備しておいたんだけど超オーバースペック状態(笑)

USART、ほかにI/O 8本使えて、プログラムメモリーは1Kもあればいいや。こんなPICをさがしてみようか。PIC16F688あたり、安いし小さいから許容範囲かもしれない(未精査)。


作成中のライターのコンセプト まとめ

1. 出来るだけ多くのPICに対応(できる柔軟性)
2. あたりまえだけど Lov Voltage / High Voltage 両対応
3. In Circuit 専用 ZIF等は使わない
4. ピンヘッダ・フラットケーブルでライターとターゲットを接続


1> PICに共通のCLOCK/DATAによるシリアル通信機能をもたせる。その他のロジックはPIC毎に違うのでライターにもたせない。書き込みロジックはWindows PCで制御する。

3> ターゲットの回路の付けはずしが面倒だった。In-Circuitながらも全PINをターゲットで使えるように考慮。

4> ピンヘッダは2X7(Low/High両対応、実行モードサポート=PCからの操作で書き込み<->実行を切り換える), 2X6(LowまたはHigh voltage固定、実行モードサポート)、1X4(回路側でIn-Circuit書き込みに考慮した設計)、1X5(1X4のLWP版)の数種類に対応。ライター側・フラットケーブルは全パターンで共通。

使いにくいのを改善する方法

メニューから Tools Options、Environment - Keyboard (英語版を使ってるので英語表記、日本語版はツール・オプションか?現物がないのでわからん)で Window.NextDocumentWindow に Ctrl+Tab を割り当て
この操作によりWindowNextDocumentWindowNavに割り当てられていた Ctrl+Tab が解除される。

同様に Window.PreviousDocumentWindow に Ctrl+Shift+Tab を割り当て
これにはまってた

英語でハングアップの情報を検索しても全然ヒットしなかった
日本語で検索したら一発
IME周り固有の問題かな

「地域と言語のオプション」-「言語」-「テキストサービスと入力言語」-「詳細」-「詳細設定」-「詳細なテキストサービスをオフにする」
PIC16F887 40pin PICが250円だった。とてもおとく。

どうも秋月では、秋月プログラマでかけない品種が安いようだ。
PIC16F818のサルベージもあるし、PIC16F887を買ってみた。ついでに書き込みプログラムの練習用にPIC10F200@70円も。

Programing Specification を見ていたらこんなかんじ

PIC16F818 5V単一電源または VIHH: VDD+3.5~13.5
PIC16F877 5V単一電源または VIHH: 10V~12V
PIC10F200 VIHH: 12.5~13.5

PIC10F200はVIHHの範囲が特殊?トラ技2008/05に出ていた三端子レギュレーターの電圧かさ上げ回路(ダイオードの順方向電圧でかさ上げ)をつかって12.62V出力を確認(7812に1N4148)。

ソフト的には5V単一電源にてPIC16F887のデバイスID読み出しまで成功。
DEVICE ID=2082 と読めたのでリビジョン2だそうです。
昔、プリンタの増設RAMで亀の子増設をしているのをみて、目から鱗だった。AKI H8 3048F 用に256K SRAM の二段がさね。変換基盤のPin1に子亀のCS#をつないでいます。1M SRAMを乗せると、このPinはNCになるので都合がいい。反対サイドにみえるUEW線の配線はランドはがれの補修^^;


CS信号が来てない
P8-4も出力ポートにしないとCS1がバスコントローラーで使われなかった
丸一日はまった。

256Kbit(32KByte) SRAM増設ソフト的なまとめ

P1DDR = 0xff;
P2DDR = 0xff;
P8DDR = 0xfe; // CS1/2/3/4有効。最低限増設したCSn信号のbitをon にすればよい。CS1はbit4(00010000)


配線を引き直したり色々やったあげく、たった1ビットのソフト的なミスでした。
秋月のプログラマで数回書き込んだら書き込めなくなってしまった
ライターを自作してみようとPIC16F818/819のFlash Memory Programming Specificationの翻訳メモ


シリアルプログラミング中、RB6はクロック入力ピンとして使われ、RB7はコマンド入力・データ入出力として使われる
コマンド入力はビットサイクルで行われる
各コマンドビットはクロックの立ち下がりでラッチされる。LSBが先に入力される。
RB7のデータは、クロックの立ち下がりに対して、最小セットアップタイム(tset1), ホールドタイム(thold1)が要求される。
データを伴うコマンドは最小ディレイ(tdly1)の1μsをコマンドとデータの間に持つように指定される。
このディレイの後、クロックは16サイクルする。最初はスタートビット(0)で最後はストップビット(0)となる。
データはLSBから転送される。

全てのコマンドとデータワードはLSBから転送される。
データはクロックの立ち上がりで送信され、立ち下がりでラッチされる。
コマンドの解析とデータピンの入出力切り替えのため、少なくとも1μs(tdy1)がコマンドとデータワード、次のコマンドとの間に必要である。

tset1 100ns(min)
thold1 100ns(min)
tdy1 1.0μs(min 2.0V~4.5V) 100ns(min 4.5V~5.5V)
秋月のRTCモジュールを外部クロックとして利用した回路。まあ、500円もするクロック源を外付けしたんだから正確に計時するわな。

ソフトは大幅変更
スイッチ押し下げやモード変更処理を見直した

http://blog.cnobi.jp/v1/blog/user/4deea9560fe0c796fe6fb39ec3499763/1207817229

ものづくりてきにはつまらない代物なので、試作だけで終了


忍者ブログ [PR]
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
フリーエリア
最新CM
[02/07 @naoshi65536]
[02/07 忍]
[09/18 とおりすがり]
[06/26 ilmare]
[03/16 とおりすがり]
最新TB
プロフィール
HN:
naoshi
性別:
男性
職業:
ソフトウェア技術者
趣味:
料理
自己紹介:
@naoshi65536 で連絡がつくはずです。
バーコード
ブログ内検索
カウンター
アクセス解析
FX NEWS

-外国為替-