余白 Copyright © 2010-2016 てきーらサンドム


■■■■ 電子工作(その2) ■■■■

 電子工作関係の雑多なトピックスが集まったページです。将来的には部品の基礎知識や回路設計の学習ができるページを目指しています。

最近の更新以前の更新
2016/12/05 [TI CC2650マイコンとCCS(code composer studio)IDE(備忘録)] 更新。
2016/11/13 [TI CC2650マイコンとCCS(code composer studio)IDE(備忘録)]新規追加。
2016/10/30 [78K0マイコンの思い出話]リンク先全面修正(IE11以上必須)
2016/08/15 [コラム(じょぉだん編)]に”差異的禍”を追加。
2016/08/15 [コラム(まじめ編)]に”人の話を聞け!、関係ない部分もだ!”を追加。
2016/08/10 [パーツショップ,電子部品通販会社] ”鈴商”を更新。
2016/08/09 [パーツショップ,電子部品通販会社]に”aitendo”を追加。
2016/05/22 [コラム]に”設計依存数値を仕様化する場合、根拠書いてよ!”を追加。
2015/07/02 [コラム]に”眠らない頭、倒れない体、折れない心”を追加。
2014/10/14 [アトメル(Atmel)AVRマイコンとGCC等(備忘録)]を微更新。
2014/09/28 [アトメル(Atmel)AVRマイコンとGCC等(備忘録)]を更新。
2013/11/16 [78K0マイコンの思い出話](雑談)秋月でuPD78P083やっぱ売り切れか

  〜〜〜 目次 〜〜〜

 


●要求仕様書の書き方(組込み制御ソフト用) 2013/8/6 更新

 制御ソフトを外注したいが、何をかけば良いか、どのように書けば良いか、どこまで書けば十分か、が分からない方に贈ります。
 対象デバイスはMCU(マイクロコントローラ)です。

【要求仕様書の目的を理解すること】
目的を理解してないとトラブルや手戻りの多い仕様書になってしまいます。
 
【外注先の業態を知り、己の業態を知らば百戦危うからず】
組み込み制御ソフトの外注先は、
 多くはハードの知識やシステムの知識を持っていて、ある程度粗い仕様でも受けてくれます。
しかし、どこまで書けば受けられるかは、外注先によって千差万別です。だから、どこまで書けばよいかの一般解はなく、最低限の仕様書をたたき台として、見積依頼時に相手に何を書く必要があるかをよく聞いておく必要があります。
 
【基本的書き方】 2013/7/31 更新
良い仕様書とは、目的とする項目や変更箇所を瞬時に探せて、見つけた内容を瞬時に理解できるものです。
地味ですが、下記のような心がけだけでもずいぶんとそれに近づきます。
  
【基本的構成】 2013/7/31 更新
仕様書表紙、改訂履歴、目次ページ、の次に下記本文を記載します。
ただし最近は、ドキュメント検索性の向上のため、タイトルだけの表紙を無しくして1ページ目で概要が分かるようにしている会社が増えています。会社に規定や慣例があればそれに従います。
 
【1.概要】 2013/7/31 更新
この要求仕様書を正しく理解するための参照資料、定義、解説等を記載します。
必要に応じて、開発ツールの種類や言語など、作業条件を記載します(本来は作業仕様書/指示書に書くべきだが1つにまとめる場合)。
 
【1.1 適用】
 この仕様書がどの製品/機種に適用されるものであるか、開発済みの類似製品との主たる違いは何かを記載します。
 特に既存類似品(他社品でも可)がある場合は、現物を見せて仕様のイメージをより正確に伝えられるので、できるだけイメージに近いものを引き合いに出します。
【1.2 関連文書】
 参照すべき情報が載った図面・仕様書等や、仕様を理解する上で知っておいた方が良い情報が記載された参考書・解説書等があれば記載します。
【1.3 システム構成図】
 システムの全体構成や機能概要を直感的に理解などできる図を記載します。このシステムを理解するのに必要な参照資料が無い場合は、必要に応じて細かい解説を追記します。
 解説をどこまで書けば良いか悩む人がいるかも知れませんが、仕様(要求事項)の記載よりも優先順序が低いと認識すべきです。確かに正しい理解を得るために詳細な解説がある方が望ましいですが、大抵は時間や工数の制約を受けるので割り切る必要があります。
【1.4 用語の定義、表記規則】
 この仕様書で用いる独特の用語の定義や、表記方法を記載します。
 普通名詞的な用語(例えば”夜”)に対して特殊な定義(例えば深夜電力料金時間帯と定義)をするのは、誤解を招きやすいので避けます。ただし、営業・品管・社長までもが”夜”と言えば”深夜電力料金時間帯”と認識できる会社の場合は、特殊用語として定義した方がかえって良いですが、誤解がないように””や「」でくくるなどの工夫をするのが良いでしょう。
【1.5 その他(作業条件、等)】
 作業条件はプログラム仕様そのものではありませんが、外注先への要求事項の一つです。内容が少なく、別文書として発行するのが面倒になることが多いため、一緒に書いてしまうことが良くあります。必ず書くように規定している会社も見たことがあります。
 ・日程(支給、承認、中間納品、立会等)
 ・作業の進め方(仕様確認や変更の手順、支給品の提供方法、レビュー方法、など)
 ・開発環境(ツール、言語)
 ・ドキュメントやソースの記述形式に関する要求事項
 
【2.入出力仕様】 2013/8/6 大幅更新
 マイコン(MCU)に何が接続されて、それらがどのような入出力信号であるかを記載します。
 マイコンの端子から見た電気的信号を直接記述すると、プログラマに理解できても上司や関係者が理解できなくなるので、
  @操作(押す)、反応(光る、文字表示、音がでる)、物理量(距離、温度、圧力)、通信パケットを入出力信号と規定し、
  Aそれらと、直接端子から見た電気信号(”H”/”L”、電圧レベル、パルス波形)との対比を記載し、
  Bマイコンのどのポート(端子)へ接続するか割り付けます。
 電気的信号やポート名が現れるのは極力入出力仕様の中だけに留めて、動作仕様では操作、反応、物理量、等で動作を規定します。
 
【3.動作仕様(あるいは機能仕様、制御仕様)】
後日
**

 


●アトメル(Atmel)AVRマイコンとGCC等(備忘録) 2014/10/14 微更新

 1998年ごろにPICよりAVRのアーキティクチャがいいと判断,以来AVRマイコンを時々使っています。当時は開発環境も大差なかったのですが,今では日本語のサポートに差がついているので,初心者に勧めるのは躊躇します。(あるでぃーのは別として)
 さらにAtmelStudioのCコンパイラ(avr-gcc)は移植性が悪い書き方をしなければならない場合があり(ROM領域に変数を割り当てる場合や文字列リテラルを使う場合)、C言語でプログラム開発する場合はAVRは避けたほうが良いかもしれません。アセンブラでの開発ならAVRの方が断然良いと思いますがね。ま、私は書き込みツールに投資してるし、コンパイラの出力をアセンブル・リストで確認しないと気がすまないので、まだしばらくAVRを使い続けると思います。
 ともかく陥りやすい点をメモしておきます。

【入力ポートはPINA,PINB,・・・】
 AVR初心者が必ずと言っていいほど陥るのが入力端子の読み込み間違い。AVRはポートの入力と出力のアドレスが分かれていて,出力はPORTA,PORTB, ・・・に設定し,入力はPINA,PINB,・・・から読みます。
【割り込みフラグは”1”を書き込んでクリア】
 ついつい”0”を書き込んでしまいがち。
【A/D変換結果は,ADCL→ADCHの順に読む】
 逆にするとレジスタがロックされて更新されず,最初の変換結果が常に読み出されるようになります。
【アトメルスタジオ(AtmelStudio)は日本語フォルダ不可(Ver6.0)】
 プロジェクトを日本語フォルダ内に作ると,ビルドは出来ますがデバッグが出来ません(.elfが見つけられない)。
【アトメルスタジオ(AtmelStudio)のビルドでメモリチェック間違い(Ver6.0)】
 EEPROMのサイズ(EEMEM属性で指定したC言語変数のサイズ)がRAMに配置されるdataセクションのサイズに加算されます。加算結果がRAMサイズを超えていると,実際にはRAMが空いているにもかかわらずエラーが出てビルドが失敗します。
【アトメルスタジオ(AtmelStudio)のビルド。コンパイル・オプションに注意】 2012/9/9 微更新
 charをunsigned charと見なすというオプションがデフォルト設定されています。負数に関する記述をしてもオブジェクトが正常に出ません(.lssファイルで確認)。一般的なgccオプションをWeb検索で調べて,makeファイルの設定がそうなっていると確認しました。→「Project」→「○○○properties」→「Toolchain」→「AVR/GNU Compoler」→「General」→ここにcharをunsignedと見なすというチェックボックスがあり,デフォルトでチェックされています。
 また最適化のオプションもなんらかのレベルで設定されており, ループ内に不変の変数があるとループ外に追いだされたりします。割り込みで変更する変数はきちんとvolatileを付ける必要があります。
 ともかく日本語のまとまったフリー情報が少なく,一般的なgccやWinAVRの資料を拾い読みしたり,何か不信な動作をしたら.lss(アセンブル・リスト)を確認しているありさま。
【アトメルスタジオ(AtmelStudio)のテキスト・エディタは変換中の日本語フォントが崩れる(Ver6.0)】 2014/9/28 更新
 確定したらちゃんと日本語で表示されますが,選択候補とか選べないので, 外部のテキスト・エディタで書いて貼り付けしています。日本語FEPとしてVJE使っているせいかもしれません(MSIME未確認)。昔使っていたAVRスタジオ4では,そんな現象は出ませんでした。起動も遅いし,やっぱ6にしたのは失敗だったかも?
 6.2(β)とMicrosoftIMEの組合せでは、そのような現象は出ていません。
【アトメルスタジオ(AtmelStudio)でdebugWIRE(1-Wire)をISPに戻す方法(Ver6.0)】 2012/11/4 追加
 「Debug」→「Disable debugWIRE and close」で戻せます。再度debugWIREにするには,AVRDRAGONを外してターゲットの電源を入れ直し,AVRDRAGONつなげば「Start debugging and break」でdebugWIREになります。
【avr-gcc用記述の移植性の悪さ】 2014/10/14 微更新
 avr-gccでは、ROM上に定義した変数を読み出すのに専用の関数を記述する必要があります。ルネサスRL78用コンパイラやPIC用XC8コンパイラだとそんな必要はありません。avr-gccでは文字列リテラル(文字列定数)のテーブルにいたっては、二次元配列で直接記述することができず、個々の文字列リテラルを定義して、さらにそこへのポインタをROMに格納する記述が必要です。ストリング系関数やprintf関数内で文字列リテラルを使う場合も、関数名に_Pが付いた専用関数を使う必要があります。
 PIC用XC8コンパイラはコンパイラががんばって(内部的には専用のROMアクセスルーチン組み込んで)普通の変数と同じ書き方ができます。RL78とかはハーバード・アーキテクチャ(ROMとRAMのアドレス空間が完全分離したハードウエア構造)と言いながら実はROM領域もRAMと同じアドレス空間内で読めるので、元々苦も無く普通の変数と同じ書き方ができるコンパイラが作れています。
 avr-gccががんばれない理由は、結局は大元のgccの構造を変えられないからということのようです。だったらgccじゃなくてXC8のように専用コンパイラ作れよと言いたくなります。ま、モータ制御のように文字列リテラルを使わないアプリケーションでは、それほど大きな移植障害は無いので、不満に思っている人は少ないのかもしれませんが(私は不満だ)。

(1)数値のROM格納と読み出し
  ヘッダーpgmspace.hをインクルードし、変数定義にconst修飾およびPROGMEM修飾を付加する。読み出し関数は型に応じてpgm_read_byte,pgm_read_word,pgm_read_dword,pgm_read_float,pgm_read_ptrを使う。ただし、64Kバイトを超えるROM領域の読み出しには、関数名に_farを付加する。
 (例)
  #include <avr/pgmspace.h>
  :
  const char data[10] PROGMEM ={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  :
  i = pgm_read_byte(&(data[j]));
 
(2)文字列リテラル・テーブルのROM格納と文字列操作関数
  ヘッダーpgmspace.hをインクルードし、個々の文字列リテラル定義にconst修飾およびPROGMEM修飾を付加する。文字列リテラル・テーブルは、個々に定義した文字列リテラルへのポインタ配列として定義する。ポインタの型としてPGM_Pを使用する。文字列リテラル(へのポインタ)を引数とする文字列操作関数は、標準の関数名に_Pを付ける。ただし64Kバイト超のROM領域に配置されている場合は_PFを付ける。
 (例)
   #include <avr/pgmspace.h>
  :
  const char s1[ ] PROGMEM = "ABCD";
  const char s2[ ] PROGMEM = "JKLM";
  const char s3[ ] PROGMEM = "UVWX";
  const PGM_P table[ ] PROGMEM = { s1, s2, s3};
  :
  strcpy_P(buffer, table[i]);
  strcat_P(buffer, "PQRS");
 
【スタートアップ・ルーチン】 2014/9/28 追加
 C言語用のスタートアップ・ルーチンは自動で組み込まれます。したがってユーザーはmain関数から記述すればよいです。ただし、ポートの初期設定などをmain関数の起動前に実行しておきたい場合は、初期化セクション(.init0〜.init9)の中のユーザー定義用セクション(.init1,3,5,7,8)に記述します。.init0〜9セクションの役割と推奨用途は次の通り。
.init0:リセット後、最初に実行するセクション。(実体は特にないような?)
.init1:ユーザー定義用。アセンブラ記述用。ポートやクロック系統の設定に適する。
.init2:自動組み込み。レジスタr1のクリアと、スタックポインタの設定。どちらもC言語記述の前に必須の処理。
.init3:ユーザー定義用。C言語記述可能。ポートやクロック系統の設定に適する。★変数の初期化がされてないので注意。
.init4:自動組み込み。初期値付き静的変数領域(.dataセクション)に初期値をコピー、初期値無し静的変数領域(.bssセクション)を0クリア。
.init5:ユーザー定義用。C言語記述可能(制約無し)。
.init6:自動組み込み(?)。Cでは使用しない。C++用で使用する。
.init7〜8:ユーザー定義用。C言語記述可能(制約無し)。main関数実行前に処理したいことがあれば、.init8に記述すれば良い。
.init9:自動組み込み。main関数の呼び出し。

初期化セクションのC言語記述方法
  ヘッダーio.hをインクルードし、プロトタイプ宣言でセクション指定のアトリビュートを付ける。関数記述で最後のreturnは不要(各初期化セクションは関数呼び出しではなく、中身を直接実行できるように並べているため)。
 (例)
   #include <avr/io.h>
  :
  void Init_init3(void) __attribute__ ((naked)) __attribute__ ((section (".init3")));
  :
  void Init_init3(void){
    PORTB = 0xff;
    DDRB = 0xff;
  }
 
【Cコンパイラ(avr-gcc)で使用されるレジスタ】 2014/9/28 追加
 C言語から呼び出す関数をアセンブラで書く場合は、以下の点を注意します。
■r18-r27,r30-r31:アセンブラ関数内では保護不要(呼び出し側で保護している)。一部のレジスタに引数が格納される場合があるが、自由に使用でき、復元の必要もない。戻り値の必要な関数の場合は、最終的に一部のレジスタを戻り値の格納に使用する。
■r0-r17,r28-r29:アセンブラ関数内で保護が必要。使用しないかリターン前に元の値に復元する。なおr1には0が格納されており、定数0の代わりに使用できる(アセンブラではゼロ格納レジスタをしばしば重宝する。しかしr1は乗算命令を使うと書き換えられてしまうため、r2あたりに格納して欲しかった)。
■関数の引数:r24-25,22-21,・・・8-9の順に使用する。charは偶数側に配置し,奇数側は空ける。奇数バイト数の構造体の場合も奇数側はあける。レジスタで渡しきれないものはスタックで渡す。fprintfなどで使う引数リストはスタックで渡す。
■戻り値:charはintに拡張し、unsigned charはunsigned intに拡張してr24-25に格納、2バイト変数はr24-25に格納、4バイトまでの変数はr22-25に格納、8バイトまでの変数はr18-25に格納。
 

 


●TI CC2650マイコンとCCS(code composer studio)IDE(備忘録)

 TIのマイコンは日本語資料が揃ってないので避けたいというか、ずっと避けていたのですが、ついに避けきれずにつかまってしまいました。
 嘆いていてもしょうがないので、はまった点をぽつぽつメモしていきます。CCSのバージョンは6.2です。

【ソースファイル位置の修正方法】 2016/12/5 追加
×やってはいけない方法(皆がはまる罠): 左側のProect Exploer欄で、サブフォルダをクリックするとソースやヘッダのファイル名が表示されます。その中のどれかを選択して右クリックのプロパティを表示すると、LocationのところにEditボタンが表示されますが、そこで修正してはいけません。そこでの変更はプロジェクト情報へ反映されないため不整合が出て後々悩むことになります。
○正しい修正方法: プロジェクト名を選択して、右クリックし、プロパティを開きます。一番上に表示されている「Resouce」の下位階層を開くと(+記号あるいは》記号をクリックして開くと)、「Linked Resouces」が表示されるので、それをクリックし、さらに右側に開いた画面の上の「Linked Resouces」タブを開きます。これで開いた画面で修正したいファイルを選択してEditボタンを押し、修正します。修正後、okボタンを押しますが、この時点で表示されるLinked Resouces画面では修正されてないように見えます。あせらずokを押して再度この画面を開くと、ちゃんと修正されているのが確認できます。この方法で修正すればサブフォルダ下のファイル情報にも自動的に反映されます。
【プロジェクト位置移動時の注意】 2016/12/5 追加
@cleanしないとオブジェクトに以前の位置情報が残ってしまいます。「Project」→「Clean」で対象プロジェクトを選択し、「□Start a build immediately」のチェックを外してokボタンを押します。
A「Linked Resouces」画面を開いて(【ソースファイル位置の修正方法】参照)、Locationの起点が"ORG_PROJ_DIR"のものは"SRC_EX"などを起点とした情報へ変更しておく方が良いでしょう。細かい状況は忘れましたが、プロジェクト位置移動に伴って"ORG_PROJ_DIR"より下の記述が勝手に書き換えられて、移動後にソースファイル位置修正が必要になりました。
【関数ヘルプ、説明書】 2016/12/5 追加
@PIN, UART, ADなどのペリフェラルドライバについては、下記htmlを直接開いたほうが早いし、見やすいです。
  C:\ti\tirtos_cc13xx_cc26xx_2_20_01_08\products\tidrivers_cc13xx_cc26xx_2_20_01_10\docs\tidriversAPIs.html
 またサンプルソースが下記フォルダの下にあります。
  C:\ti\tirtos_cc13xx_cc26xx_2_20_01_08\examples\ti\CC2650DK_7ID
AセマフォやクロックなどのOS機能は、ccsのヘルプから開いて探します。
  「Help」→「Help Contents」→「TI-RTOS for ...」→「Kernel Runtime API ...」→「ti」→「sysbios」
  ここで、左側のツリーの「sysbios」の下位階層表示(+記号または》記号)を押し、さらにその中の「knl」の下位階層表示を行うと、Clock、 Queue、Semaphoreなどの項目が表示されます。
【日本語の情報は・・・】
 悲しいほど見つかりません。TIの日本語フォーラム(E2Eコミュニティ)も多少参考になりますが、他に情報が豊富な場所をご存知の方教えてください。
【CCSで日本語コメントをつける場合の注意】
 E2EのMSP430フォーラムにも簡単に書いてありますが、//コメントの最後の文字の2バイト目が\(0x5C)だと行継続と判断されて、次の1行がコメントアウトされてしまいます。いろいろ調べて見るとCCS以外では、|(0x7c)などもだめなケースがあるようです。下記の4文字ならどのツールでも安全かつコメントの最後の文字として違和感がないでしょう。まあテンキーにある”.”が一番使いやすい気がします。
 。、.,
【CCSライセンス、デバッガ】
 デバッガとしてXDS100または開発キットCC2650DK(のSmartRF06ボード)上のXDS100v3を使う場合、FREEライセンス(デフォルト選択)で良いです。XDS200だったらどうなるか調べようとしてTIの該当ページをクリックしたら、リンク切れていました(2016年11現在)。
 FREEライセンス選択されていてもライセンス管理画面によってライセンス種別を変更することが可能らしいです。
 SmartRF06ボードからはJTAGピンヘッダも出ているので、単独でXDS100の代わりとしてFREEライセンスで使い続けることも可能らしいです。
【サンプル・ソフトのプロジェクト流用】
 インポートプロジェクトで、□Copy projects into workspaceにチェックをつけてもソース本体はコピーされません。したがって、オリジナルソースはバックアップしておいた方が良いです(マニュアルにも記載あります)。
 ソースを自分の好みの場所におきたいのであればプロジェクト立ち上げ後に入れ替えするか、以下のプロジェクトファイルで、
  ¥ti¥simplelink¥ble_sdk_xxx¥examples¥cc2650¥所望のサンプル¥ccs¥app¥.project
<locationURI>SRC_EX/の下のソースファイル位置を変更すればよいです。(ただし.projectに直接記載無く、includeで呼ばれるものは結局別途場所の入れ替えが必要)。
【サンプルのビルド、デバッグ】
 1.プロジェクト・インポートすると、xxx_appとxxx_stuckの2つのプロジェクト・フォルダーが生成されるはずです。
 2.xxx_stackをクリックして(Activeと表示される)、「Project」→「Build All」
 3.xxx_appをクリックして(Activeと表示される)、「Project」→「Build All」、
 4.xxx_stackをクリックして(Activeと表示される)、「Run」→「Debug」。ここでデバッグ画面が表示されるが、あせらずじっくり待つ。ポップアップ・ウインドウが2回ほど開いてダウンロードの進行が表示される。終わったら(エントリーが無いとかのメッセージがでてたような?)、「Run」→「Terminate」。これ以外の操作を行うとNG。
 5.xxx_appをクリックして(Activeと表示される)、「Run」→「Debug」。ここでデバッグ画面が表示されるので、あせらずじっくり待つ。ポップアップ・ウインドウが2回ほど開いてダウンロードの進行が表示される。終わったら(main関数に入った直後で停止しているような画面になるはず)、「Run」→「Resume」。これでサンプルプログラムが動作します。
 6.プログラムを走行したまま編集画面に戻るには、画面右上「CCS Edit」をクリックすればよいです。デバッグ画面にするには「CCS Debug」をクリックします。デバッグを終了するには、「Run」→「Terminate」。ただしボードは動き続けます。
 7.プログラム修正は、通常_app側しか修正しないはず。修正したら、上記3.および5.のみ実行すればよいです。
【BToolのマニュアル】
 BLEスタックをインストールするとBToolというホスト側のツールも一緒にインストールされます。しかしマニュアルはいっしょにインストールされないです。CC2541 ミニ開発キットの「CC2540 and CC2541 Mini Development Kit User's Guide」に操作方法が記載されています(別途ダウンロード必要)。
 SmartRF06ボードでBToolを使うには、host_testサンプル・プロジェクトをビルドして書き込めば動くはずです。
 通常の使用方法:
 @[Discover/connectタブページ] 上の方のscanボタン押して、scan終了したら下の方のEstablishでコネクトする(複数デバイス見つかった場合は選択必要)。
 A[Read/Writeタブページ] 「Read Characteristic value/Discriptor」でハンドル番号(0x0001〜)を入力して「Read」ボタンを押せば読めるます。Discriptorをテキストで見たければ「ASCII」ラジオボタンを選択します。
 B値を書き込みたい場合は、下のほうの画面でハンドルと値を入力して「Write」ボタンを押せばよいです。書き込み可能で、正常に書ければSUCCESSが表示されます。
【BLEスタックのインストール】
 ダウンロード画面で複数のバージョンが表示されますので、自分が使うチップに対応したバージョンを選択します(今回はCC2650用を選択)。
 これのインストールで、BLEスタック、TI-RTOS、XDCデバッグツール、BToolがインストールされます。
 WindowsUpdateを長らく怠ったマシンではインストールが途中で止まりました。WindowsUpdate実施後に再度インストールして問題なかったです。
【CCSのインストール】 
 インストール対象の選択画面で、CC26xxDevice support と TI ARM Compikerの2つしか選択しませんでしたが、けっこう時間がかかります。ネット環境に依存しているのかもしれません。
【CC2650EM-7ID(CC2650DK同梱)の技適認証】
 取れてないようです(2016/11現在)。したがってデバッグは、電波暗室内で行うか、CC2650EM-71D上にSMAコネクタパターンがあるので、そこにコネクタを付けて、ケーブル接続で行う必要があります。

 


●78K0マイコンの思い出話

 最近はRL78を使うようになったので、78K0は本当に思い出ぐらいの話題しか有りません。まぁ,裏技っぽい情報とか落とし穴とか思い出して書いておきますね。

【(雑談)秋月でuPD78P083まだ売っていた】 2013/11/16 更新
 以前(2010年11月ごろ),秋月電子通商で古い78K0を投げ売りしていました(uPD78P083CU特価品)。その後しばらく消えて2013年10月ごろ一度広告が復活したのですが、また消えていました。ROM24K,42ピン(シュリンクDIP)で,12個300円。1個当り25円。ワンタイムなので書き換え出来ませんが、仲間内で同じような物をつくるときなんか良さそうです。
【フリー・ツールの32K制限】 2010/12/24 更新
 バンクは使えないと書いてありますが,バンク0とバンク1の各先頭8KBは使えるようです。従って,32K+8K+8Kの48KBまでフリー・ツールでオブジェクトが作れるようです。実際私は,アセンブラで関数やデータを格納して使用したことがあります。C言語でバンクを使ったことは無いので,もしC言語で使えなかったら悪しからず。
 2010年11月に久しぶりにツール(コンパイラ/アセンブラ)がバージョンアップしてますね。この版でも48KBまで使えるかは未確認です。
【割り込みの永久ロック】
 うる覚えですが,アセンブラで,LOOP:  BF TMIF00, $LOOP と書くと割り込みが立たなくなってハングアップ(永久ループ)するはずです。C言語で while(!TMIF00); と書くのはokです(上記を回避するコードが出ます)。
【SET1/CLR1 sfr.bit 命令のクロック数が合わない】
 sfrのアドレスがFF00h〜FF20hの範囲の場合は,実行クロック数が8では無く6になります。アセンブラがそのアドレス範囲を saddr.bit と見なすためです。クロック数をきっちり数えて波形を出力するような用途の場合は,この点に注意します。どうしても8でなければ困る場合は(そんなの無いと思うけど^^;),直接3バイトのオブジェクトを挿入します(C言語なら#pragma opc,アセンブラならDB疑似命令で)。
【資料室】マニュアル,ツールなどへのリンク
最新資料についてはメーカのサイトで確認願います。 (注)下記のPDF表示は「PDFダウンロード画面へのリンク」の意味です。IE11以上でないと当該ページが出ません

  〜〜〜 デバイスのマニュアル類 〜〜〜

  〜〜〜 ツールのマニュアル類 〜〜〜

  〜〜〜 関連ページへのリンク 〜〜〜

 


●夏休みの電子工作(ラジオ,) (町田,川崎,横浜にあるサトー電気で買える部品を使用)

TS04As.JPG (32077 バイト)(1)AMラジオ(高1,トランスレス・スピーカ式)     2010.7.31
  電子工作マガジンの2010 SUMMER号に2石レフレックス・ラジオの回路が載っていますが,トランス式なんですよね。低周波トランスは意外とお高いので,それを二個も使うのは勘弁してってことで,アンプをICに変えた物を作ってみました。それと,秋葉原まではちょっと遠いので,手近なパーツ屋さん(サトー電気)で揃う部品でまとめてみました。

製作結果:
 アンテナなしだとボリューム最大でやっと聞こえる程度でした(家の中で使用)。アンテナとして30cm程度のリード線を付けると結構良く受かります。リード線を2mにするとガンガン入る感じです。高域ノイズがちょっと多いです。やっぱ検波部がいい加減でしたかね。電源は3V〜9Vくらいで動きます。RF感度は電圧低い方が良いみたいです。
  回路図CADファイル(D2CAD

RADIO_A.GIF (13071 バイト)

部品リスト(2010.7.31時点でサトー電気にありました)

記号 値,型番 備考
ANT1 電線(30cm以上が望ましい) 使用場所での電波の状況で長さを決めてください。長いほど良いです。
L1 SL-55GT (ストレートラジオ用アンテナコイル, 330μH) 端子5は使いませんが,切ったりしないでください。巻きつけるなり,なんなり適当に処置します。間違ってSL-55GX(スーパーヘテロダイン用)を買わないように注意します。
L2 4mH (縦型TR用チョークコイル)  
C1 270pF単連ポリバリコン (ストレートラジオ用) 別売のダイヤルと取付けネジも購入した方が良いでしょう。
Q1 2SC1815 (トランジスタ) 2SC1815-Y,-GRどちらでも良いでしょう。私は手持ちの2SC945を使いました。
D1 1N60 (ゲルマダイオード)  
U1 LM386N-1 or NJM386D (アンプIC)  
C2,C3,C6 0.022 (セラミック・コンデンサ円板型)  
C8 0.047 (セラミック・コンデンサ円板型)  
C5, C7 10/25V (電解コンデンサ縦型) 耐圧の高いもの(35V品, 50V品)でも良いです。
C4, C9 47/25V (電解コンデンサ縦型) 耐圧の高いもの(35V品, 50V品)でも良いです。
C10 220/25V (電解コンデンサ縦型) 耐圧の高いもの(35V品)でも良いです。
R6 10 (1/4W 炭素皮膜抵抗)  
R4 220 (1/4W 炭素皮膜抵抗)  
R3 1k (1/4W 炭素皮膜抵抗)  
R2, R5 22k (1/4W 炭素皮膜抵抗)  
R1 47k (1/4W 炭素皮膜抵抗)  
VR1 5kΩ(Aカーブ) 写真はツマミとセットで安く売っていた18φ一般ボリューム(10kBカーブ)です。
SP1 8Ωスピーカ (0.5W以上)  
SW1 プッシュSWまたはトグルSW 展示する場合,スイッチを押している間だけONになるプッシュSWの方が良いかもしれません。
B1 電池4.5V〜9V 展示するなら乾電池3本(4.5V)当たりが適当でしょう。

 


●パーツ・ボックス

(1)抵抗の常備品
 私のお勧めは,E3系列(1.0, 2.2, 4.7)です。マイコン系の回路ならE3系列でほとんどカバーできるし,E12が欲しければ,E3系列2本だけで作れます。もちろん,めったに工作しない人ならE1系列(系列というのか?^^;)でokです。
E12系列 E3系列 2本での作り方 (+は直列, //は並列) E1系列 4本以内での作り方
1.0 1.0 1.0
1.2 1.22 (1.0 + 0.22) 1.20 (1.0 + 0.1 + 0.1)
1.5 1.50 (2.2 // 4.7) または 1.47 (1.0 + 0.47) 1.50 (1.0 + (1.0 // 1.0) )
1.8 1.80 (2.2 // 10) 1.67 ( (1.0 + 1.0) // 10)
2.2 2.2 2.00 (1.0 + 1.0)
2.7 2.67 (2.2 + 0.47) 2.50 (10 // 10 // 10 // 10)
3.3 3.20 (2.2 + 1.0) または 3.20 (4.7 // 10) 3.33 (10 // 10 // 10)
3.9 3.87 (4.7 // 22) 4.00 (1.0 + 1.0 + 1.0 + 1.0)
4.7 4.7 5.00 (10 // 10)
5.6 5.70 (4.7 + 1.0) 6.00 ( (10 // 10) + 1.0)
6.8 6.90 (4.7 + 2.2) または 6.88 (10 // 22) 6.67 (10 // (10 + 10) )
8.2 8.25 (10 // 47) 8.33 (10 // 100 // 100)

 100kΩを越える抵抗はデジタル系ではあまり使わないかも。タイマーIC(NE555)で使う,発振用帰還抵抗で使う,とか。
 定格電力は,1kΩ以下は1/4W推奨,2.2kΩ以上は1/6Wでもokです(電源15V以下の場合)。
 100Ω以下では1/4Wでも足りなくなる場合がありますが,値段の高い1/2W以上を買うより1/4Wを数本組合せたほうが良いでしょう。

●パーツ・ショップ,電子部品通販会社

鈴商2016/8/10 更新
 店舗は昨年閉鎖されていますが通販はやっています。事前に何を買いたいか連絡すれば直販もしてくれます。ただし事務所(というより倉庫)はaitendoよりさらに若干遠いです。しかもエレベータ無しの地下室です。地上から地下室へのドアを開けたとき真っ暗なのでびくびくしましたが、入ると自動で電灯がつきました。地下室のドアを開けると、おっさんばっかり3人が地下室の倉庫で作業していました。愛想は良い方です。
 今回は軸が細くて(φ3.5)長いスイッチが急遽必要になったので直接行きました。秋月に置いてあるのはφ5のカバーで延長するタイプで、今回の目的には合わなかったので。まぁ、こんな特別なことでも無い限り直接行くことはもう無いと思います。
aitendo2016/8/9 追加
 店員が若い女子ばかりと聞いていましたが、本当でしたね。平日の夕方、お客さんは数人なのに女店員さんは3〜4人ぐらい。大雑把にはどこに何があるかは把握しているようで、コネクタ売り場へ案内してもらいました。さすがに型番を聞いてぴたりと棚を指すところまではいってなく、一緒に探しました。言葉は若干たどたどしいところがあって、都内ではコンビニやファストフードで珍しく無い近国出身の方のようでした。
 今回は秋月、千石に無いものがあったので行きましたが、いつも御茶ノ水駅で降りて部品を買いに行くので、そこからだとやっぱちょっと遠いです。最初はちょっともやもや感を期待したのですが、まぁ、結局コンビニのレジのおねーさんと変わりないので、行く機会はそんなにないでしょう・・・、たぶん。
デジキー2010/12/24 更新
 多めに買うものがある時はここですね。品種多くて値段もリーズナブル。海外からの発送ですが到着まで数日と早いです。購入額7500円未満だと送料2000円かかるので,小口の買い物には適しません。
 ようやく78K0,V850の在庫品が徐々に増えてきました。2010/12/24時点ではまだ78K0Rは非在庫です(MINICUBE2付きボードならある)。
 MINICUBE2(QB-MINI2)は最安値(2010.11.28時点で¥8,109英語版)だったのですが,現在在庫ぎれで,値段も¥9,336に上がっています。さらにQB-MINI2に78K0R/KG3-LあるいはV850ES/JG3-Lのボードが付いたキットも若干値段が上がっています(¥11,472→¥11,900)。でも英語が苦にならない人にはお勧めかも。
チップワンストップ】 2010/12/14 更新
 1〜2個とか少量買うときに割高な気がしますが,他で探しても見つからないものがあったりして頼りになります。wolfson製音声コーデック WM8510 もここで買えます。
秋月電子通商
 部品探すときは,やっぱ最初はここ見ることが多いですね。ここに無くて他を探すこともしばしば。
千石電商
 一番のお気に入りは,ACアダプタのプラグ変換ケーブル(WK-J2)です。安いACアダプタ(φ2.1プラグ品)をEIAJ#2(統一極性,電圧区分2)の機器で使えます。通販のページに掲載されてないですが,たぶん問い合わせれば通販してくれると思います。
サトー電気
 近場にあるので重宝します。拙宅からだと町田店が近いです。川崎,横浜にもあります。昔の品種もあるので,古いエレクトロニクス工作資料を見て作る場合も役立ちます。新しいものだと思って買ったら,製造年月が20年以上前の新品(未使用品と言った方が良いのか(^^; )で,驚くことがあるかも(最近1度経験しました)。
共立電子産業
 他にない部品があるので最近見るようになりました。圧着端子は豊富ですね。
RSコンポーネンツ
 78K0RとかV850ESの在庫あるので,ここは外せません。翌日到着,送料460円。MINICUBE2(QB-MINI2)も扱っています。
若松通商
 以前はそこそこ買ってました。ブラックゲート(超高性能電界コンデンサ)の在庫品がまだあります。年中無休で20:30まで営業ですので,いざというときに助かります。駅からはちょっと遠いかも。
マルツ電波
 MINICUBE2(QB-MINI2)を扱っています。近年トラ技と連動して目立つようになりましたよね。まだ行ったことないですが,秋葉原店は20時まで営業しているようです。

 


●マイコンのポート電流増強

主にLED駆動の場合の増強方法を解説します。

(0)ポートを束ねる
 ポートのオン/オフでLED駆動している場合は,ポートを数本使うことで駆動電流を増やせる場合があります。

LED_DRV0.GIF (7600 バイト)

 出力能力の異なるポートを束ねる場合はややこしいので,ここでは同一種類のポートを束ねる計算例を示します。
  計算式: 抵抗値 = ( VDD - LED順電圧 - VOL ) / LED順電流
 ここでVOLは,”ポート当たりの電流 = LED順電流/束ねるポート本数”におけるマイコンのVOLを出力特性図から求めた値です。
 出力特性図はデータシートに記載されている場合もありますが,メーカによっては別資料になっています。

 流す電流は,データシートの”1ポート当たりの絶対最大定格”および”ポート合計の絶対最大定格”を越えないようにします。絶対最大定格を越えると瞬時に破壊される可能性が高くなるので厳守します。

 なお一部のマイコンでは絶対最大定格の他に”動作保証電流”が決められています。動作保証電流は,「これを越えてもポートは壊れないけど誤動作する可能性がある」と言うタイプと,「これを越えてもポートは瞬時に壊れないけど寿命がかなり縮まる」と言うタイプがあります。誤動作の場合は単に該当ポートだけでなく,最悪マイコン全体が暴走する可能性も含みます。(専門的に言うと,前者はマイコン内のVDDが下がったりGNDが上ったりしてロジック・レベルが規格割れを起こすもので,後者はエレクトロマイグレーションという腐食現象の進行が通常よりかなり加速されるというものです)。データシート上では前者か後者かは判断不能です。まぁ,趣味で使う場合は,この規格を守るかどうかは各自で判断(もしくは実験)すれば良いでしょう。

(1)エミッタ・フォロワ(コレクタ接地)駆動
 トランジスタ1個を外付けして電流を増やす場合,私はエミッタ・フォロワ形式を良く使います。
 ・メリット : 抵抗が1本で済む。高速。
 ・デメリット: コレクタ損失がやや大きい。VDD=3.3V以下では使えない。VF(LED順電圧)が高いLEDには使えない。
計算式: 抵抗値(VDD5Vの場合の概算式) = (4.2V − LED順電圧) / LED順電流
計算例: LED順電圧2.2V,LED順電流20mAなら抵抗は100Ω

LED_DRV1.GIF (9869 バイト)

VOH:マイコンのハイレベル出力電圧。CMOS出力ポートならVDD-0.1V程度で計算(Ioがおおむね1mA程度時)。
VBE:0.7V程度で計算。
VCE:0.8V程度で計算。これに電流を掛けた値がコレクタ損失。
マイコンの出力電流は,LED順電流/トランジスタのhFE。hFEは概算として100,安全を見る場合は50程度で計算。

(2)エミッタ接地駆動
 トランジスタ(バイポーラ)1個を外付けする場合のオーソドックスな回路です。
 ・メリット:エミッタ・フォロワより損失が少ない。マイコンのVDDより高い電源や負電源をLED電源として使える(VFが高いLEDを駆動できる)。
 ・デメリット:抵抗が2〜3本必要。高速PWM駆動する場合はスピードアップ・コンデンサが必要。

LED_DRV2.GIF (9061 バイト)

・コンデンサはLEDのOFF期間が短い場合(おおむね10μs以下)に必要です(トランジスタ特性とR2に依存)。コンデンサ容量は10〜100pF程度。通常の用途ではここまでOFF期間を短くする必要性は無いので,ほとんどの場合コンデンサは不要です。
・マイコンの出力ポートがCMOSであれば,R3は省略可能です。あればターンオフ時間を多少速く出来ますが,コンデンサほどの効果はありません。
・VCCはマイコンの動作電圧(ここではVDD)より高くすることが可能です。VEEはグランドより低くする(負電圧にする)ことが可能です。

・R1 = (VCC - VCE(sat) - LED順電圧) / LED順電流 ・・・ アクティブ’H’駆動
 R1 = ((VDD - VEE) - VCE(sat) - LED順電圧) / LED順電流 ・・・ アクティブ’L’駆動
ここで,VCE(sat)は,0.1V〜0.5V程度で計算します。LED順電流が100mA以下でベース電流2mA程度なら0.1V計算で良いでしょう。コレクタ電流を上げていくとVCE(sat)はだんだん高くなり,VCE(sat)を下げるためにはより多くのベース電流が必要になります。

・R2 = (VOH - 0.7) / (ベース電流 + 0.7 / R3) ・・・ アクティブ’H’駆動
 R2 = (VOL - 0.7) / (ベース電流 + 0.7 / R3) ・・・ アクティブ’L’駆動
 VOH, VOLは流す電流に応じてマイコンのポート特性表から求めます。例えばR3省略でベース電流1mAとし,電流1mA時のVOHが4VならばR2 = 3.3kΩになります。

(3)ソース接地駆動
 MOS FET1個を外付けする場合の回路です。
 ・メリット:マイコンの駆動電流が小さい。同一パッケージのバイポーラ・トランジスタより電流を大きく取れる。マイコンのVDDより高い電源や負電源をLED電源として使える(VFが高いLEDを駆動できる)。
 ・デメリット:小口で買える低電圧駆動品種が少ない。抵抗が2本必要。

LED_DRV3.GIF (11642 バイト)

・2SK2961, 2SJ537はサトー電気で売っています(2010年初夏調べ)。パッケージがTO92なのでホビー用にちょうど手ごろと思います。5V電源のマイコンでは問題なく大電流駆動が可能です。3.3V電源マイコンで駆動するとオン抵抗が高くなるため電流はあまり流せません。
・R3はマイコンの出力ポートがリセット期間中ハイインピーダンスになるなら必須です。バイポーラと違ってR3が無いとリーク電流や浮遊電荷でオン(LEDが点灯)してしまう可能性があります。R3の値は10k〜100kΩ程度で良いでしょう。

・R1 = (VCC - LED順電圧) / LED順電流 - Ron ・・・ アクティブ’H’駆動
 R1 = ((VDD - VEE) - LED順電圧) / LED順電流 - Ron ・・・ アクティブ’L’駆動
 ここで,RonはMOS FETのオン抵抗です。2SK2961の場合,Vgs4Vで0.26Ω(typ.)と低いですが,Vgsが3V以下になると抵抗値が急激に上り, Vgs2Vではワーストケースで10kΩ程度まで上ります。


●コラム(雑談室)

まぁ,適当に読み流してください。

〜〜〜〜〜〜〜 まじめ編 〜〜〜〜〜〜〜

【人の話を聞け!、関係ない部分もだ!】  2016/8/15 追加
 人の話を聞けと言うと、しばしば「聞いてますよ」と答えが返ってきます。これこそコミュニケーションギャップの最たる例ですね。話し手は聞いてもらいたいポイントを聞いてと言っているのに、聞き手は自分に興味ある部分とか関係ある部分だけ聞いて、他は聞き流していることがしばしばあります。
 よくありがちなのが、奥さんの近所の噂話を適当に聞き流していると「あんた、聞いてるの?」と怒られることがあります。夫婦の会話なら良い(?)ですが、お客さんや上司から「こいつ聞いてないな」と思われたら心証悪いし、時として不毛だと思って聞き流していた話の一部に必要なことが混じっていて、後で「言ったじゃないか」と怒られたりすることも。
 ともかくコミュニケーションギャップが生じてるなと感じたら、関係ないところ、くどくど何度も言っているところ、をしっかり聞きましょうよ。 
【設計依存数値を仕様化する場合、根拠書いてよ!】  2016/5/22 追加
 PS/2キーボードを設計しようと思って資料を漁って見ました。まぁ一通り見つかったのですが、その中に気になる仕様がありました。
   「タイプマティック(キーリピート)の繰り返し回数設定値[回/秒]:30、26.7、24、21.8、・・・」
 どう見ても設計依存の数値を仕様化したものですね。他の人の工作Webページを見ると、これに合わせようと苦労した跡がありました。かわいそうに^^; どうせ制御周期の関係だろうとあたりをつけたところ、あっさりと240Hz(4.167ms周期)をベースにした数値であると計算できました。26.7回/秒は、240/9つまり240Hzで9周期なので、正確には26.666...回/秒ですね。
 ちゃんと根拠書いてくれれば誰も苦労せずに設計できるだろうにと思います。まぁ互換品を作るために仕様書を公開したわけではないから、そこまで親切にする義理はないのでしょうが、一般ユーザーでも、なんで小数点つきの数値で仕様を決めたの?って疑問に思いますよね。240/9と書いてくれれば皆納得するのに^^;
 
【眠らない頭、倒れない体、折れない心】  2015/7/2 追加
 高度成長期には残業200時間のエンジニアも珍しくないと言われていました。かくいう私も200時間こそ行かなかったものの100時間越えはしばしばありました。給与と残業手当てが同じ、つまり2人分給料をもらっている感じでしたね。
 今の世にも残業200時間はあるようですが、名ばかり管理職で手当が付かないとか、そもそも支払う気がないブラック企業とかあって、質的にはかなり違う状況です。まぁ、そこまでいかなくても、不況というか、家電系や半導体系の製造業がどんどん萎んでいくという状況では、低賃金で長時間労働もやむなしというあきらめもあるようです。
 冒頭の「眠らない頭、倒れない体、折れない心」は、そういった企業で働く人から聞いた「エンジニアに必要な素養」だそうで、いやはや悲壮感ただよってますね。過労死にならないようにお気をつけて。
 
【公用文は「,と。」を用いる】  2012/2/20 追加
 意外と知られてないですが,横書きの公用文の句読点は「,と。」を用い,縦書きは「、と。」を用いることになっています(Wikiの「公用文」参照)。義務教育で使う教科書,JIS規格書,などもこれに従っているようです。しかし全省庁がこれに従っているわけでは無く,公用文以外では少数派かもしれません。特にパソコンで文章作成することがあたり前になった今日では,「日本語入力FEPの設定を横書きと縦書きで変えるのは煩わしい」との理由で「、」設定のままにする場合が多いと思います。わたしゃ縦書き文書はめったに書かないので「,」設定にしています。
 一部の企業では公用文に準じる規則を定めている場合があり,例えば旧NECエレクトロニクスのマニュアル類は「,と。」を使っています。一方で日立・三菱系は「、と。」を使っており,ルネサス・エレクトロニクス統合でどうなるかと思ってましたが,今のところ統一はされてないようです。従って,RL78やCubeSuite+のマニュアルは「,と。」,RXのマニュアルは「、と。」が使われています。
 CQ出版のように「,と.」という英文派も結構見かけます。結局,そんなんどっちでも気にならないって事ですかね。ただたまに「,を使うのはおかしい」と言う人がいるので,恥をかかぬようご注意を。
【100点エンジニアと−50点エンジニア,同じ能力でも差が150点】  2011/7/12 追加
 知識・経験が豊富なベテラン・エンジニアでも,周囲から100点評価される人と−50点評価される人がいます。
事例1:
 「この回路を設計できますか?」
 「えっ? 私はその回路のエキスパートですよ」
 YesかNoかで聞かれている質問の答えを言ってない時点で0点,エキスパートだと自慢しているように聞こえるので−50点です。
 これを頭で分かっていても,(俺の能力をちゃんと評価してくれてないのか)と言う想いが強いとついつい口に出てしまいます。そこをぐっと抑えてシンプルに「Yes」と答えて100点を取るのが良いでしょう。

事例2:
 「他社が半額の製品を出してきた。まず全部品の推定原価一覧を作成して,次にコストダウン対策を考えてください」
  と言って1枚の基板を渡されたら,一番高そうなLSIの捺印が明らかにカスタム捺印だった。
 「対策考えるなら,このLSIを開封してチップサイズとか仕様を調べるのが先ですね。抵抗とか全部調べる意味ないですよ」
 なまじ知識・経験が豊富だと,一足飛びに結論づけてしまいたくなります。しかしこんな言い方では評価が低くなっても仕方ありません。この場合,2番目の作業である”対策”に関する作業を先にすべきと聞こえた時点で0点,1番目の作業を頭から否定した時点で−50点です。
 数百個で数十円にしかならないチップ抵抗を数えるのは馬鹿げているように思うかもしれません。しかし会社としては,きちんとした裏付け資料としてそれが必要になることもあります。従って意味が有る/無しを軽率に判断しないことです。もちろん与えられた時間で全部調べきれないと言うことであれば,”時間が足りないのでチップ抵抗は除外して良いですか?”と言えば良いのです。それなら−50点を免れます。
 開封作業についても,”LSIの原価をより正確に推定するのに開封が必要で,時間がかかりますが良いですか”とか”開封委託費用がかかりますがよいですか”と言えばokです。最初に求められている答えをより正確に出すための提案&質問なので100点です。

教訓:
 返事は,シンプルに直球で返す。
 提案は,今求められている結果を改善できる内容であること。
【十字接続を多用する電子回路業界人】  2011/6/4 追加
 電子回路屋として常識だと思っていることが通じない回路屋さんに出会いました。十字接続を気にせず多用する,電源・GNDもすべて配線として線を引く,信号をジャンプタグとかジャンプコネクタなどの記号で飛ばさない,だからどんなに規模が大きくても1枚の図面で書く。こんな回路図を見たら「素人か?」と疑ってしまいますが,サービス・マニュアル(地域の電気店含む販売店向けの修理・保守用マニュアル)では,こんな書き方が常識のようです。
 早い話が,その回路図を読む人は電気屋のおっさん達なのです。実体配線に近い書き方が望ましいのでしょう。基板単位で枠で囲ってコネクタと基板間ケーブルもきちんと分かるように書くようです。
 そういう世界で育った人は,一般書籍やトラ技などに出てくる回路図はきっと非常識だと感じているのでしょう。まぁ電気制御盤屋さんの書く図面に比べればささいな違いです。あちらは逆に図面と実際の配線がシロ−トではすぐに対応が付かないでしょう。ケーブルが洪水のごとくあふれる現物と,どっからケーブルなのか分からない図面の間で立ち往生してしまいます。
 とにかく,また一つ勉強になりました。
【カソードは”K”・・・基板屋には通じず】  2011/6/4 追加
 ダイオードに限らず,サイリスタ(SCR),真空管でもカソード(Cathode)の端子(電極)記号は,Kです。これを知らない電子回路屋は恥をかくことになります。
 しかし,これが基板屋(アートワーク屋)さんには通じないことが多いのです。英語の頭文字のCを端子記号として抽出ネットリストを吐き出してきて,回路のネットリストと相違が出てしまうことがしばしば。先日は,古くからある大手メーカで標準として使っているフットプリント・ライブラリまで,そうなっていることが判明して愕然としました。
 まぁ,考えてみればアートワーク屋さんは,メカ屋さんなんですよね。電気の単位でなく全てがmmの世界。カソードがKだと知らなくてもしょうがないですね。最近は「50Ωのインピーダンス・コントロール」と言う頼み方も出来ますが,だから回路が分かっているなどと思ってはいけません。先日の案件でも,πマッチから先,内層を全て抜いたアンテナパターンまでも指示と異なる50Ω用の線幅で引いてくれました。GND層との層間距離で線幅が決まるという基本的な知識も無いようですね。
【結果を出せる正しき努力方法を身に付けるべし】  2011/2/20 追加
【ノウハウを得たかったら手を動かすべし。頭にあらず】  2011/2/7 追加
 時々,「**のノウハウがなくてできない」という言い方を聞きます。**の部分はマイコンだったり,高周波回路だったり,要は自分の知らない領域のことです。こう言うことを聞くと私は「じゃぁ,さっさと身に付ければ?」と言います。
 中には怠慢してちょっと調べれば分かることをノウハウと言う人もいますが,たしかに調べて分からないノウハウという技術はあります。ノウハウは本を読んで得られるものではありません。本を読んで身に付くのは知識です。たとえ「ノウハウ本」を読んでも知識が身に付くだけでノウハウは身に付きません。
 ノウハウを身に付けるには,ハードでもソフトでも,手を動かして動く物を作ることです。知識はいわばバーチャルな世界での理論,ノウハウは現実世界で実際に起きる現象の理解,と考えてもよいでしょう。
 ただし,実際に起きる現象は,ある条件の時に起きる限定的なものだったり,ある角度から見た側面しか見えないこともあります。従って1度動いたから喜んで終わりというのではなく,色々と手を加え続けて動かして見るのです。
 そうやって地道に手を動かして体で覚えたノウハウは,言葉や数式で表せないかもしれません。自分の中の独特な世界観の中だけでしか存在できないかもしれません。しかしそのノウハウに基づく結果は現実世界で動く物として出せるのです。
 とにかく考えて悩むより,動かして現実を見ましょう。
【2と3を使わない】  2011/1/15 追加
 抵抗値で2kΩ,3kΩは,E24系列にありますが,E12系列以下にはありません。切りがよいので使いたくなるのですが,本当に使う価値があるのか,今一度考えた方が良いです。
 まず設計仕様として2倍の反転増幅器をオペアンプで作ろうとすると,20kΩとかが必要になりますが,元々抵抗値には誤差があるので,±5%なら倍率は1.8〜2.2倍の範囲でバラツキます。きっちり2倍で無くて良ければ22KΩを使って2.2倍の仕様にするのが良いでしょう。
 R−2Rラダー回路のように,きっちり2倍の抵抗を使いたい場合は,同じ抵抗を2本使って実現します。同一ロットの抵抗は相対バラツキが小さいことが期待できるので,ロットの違う2倍の抵抗を使うより高い精度を期待できます。
 実際に手持ちの炭素皮膜抵抗22kΩ(±5%規格品)でメーカの違う2種類20本づつを実測したところ,1つは平均−0.46%(最小−0.95%,最大0%)で,もう一つは+0.26%(最小−0.41%,最大+0.73%)でした。おそらく両社とも製造ライン自体は±1%品対応と思われます。同一ロットなら±5%規格品でもmax/minは1%程度が期待できそうです。(逆に言うと±1%品を買っても相対バラツキは±5%品と同じレベルかな?)
【リード・ライト・メモリは頭が頭痛で痛い】
 最近はあまり見かけなくなりましたが,一時期RAMのことをリード・ライト・メモリ(RWM)と言ってた人がいました。シロ−トが言う分には笑って済まされるのですが,某偉い先生が辞典にまで載せたからややこしい。
 メモリって,本来リードもライトも出来る物を指すんですよね。だからリード・ライト・メモリは,「頭が頭痛で痛い」って言うようなもんで,恥ずかしい用語です。えっ,じゃあROM(リード・オンリ・メモリ)っておかしくないの?と思われるかも知れませんが,これは本来持つべき特性・概念を拡張する用語だから良いのです。一方RAMの方はメモリの中の分類を示す用語です。
 人間に例えると,男/女は性別による分類,日本人/アメリカ人は国籍による分類ということで,あくまで通常の人間の範疇での分類です。RAM(ランダム・アクセス・メモリ)というのはアクセス方法の分類で,シーケンシャル・アクセス・メモリとかとの対比を示す用語なんですよ。一方ROMは,通常の人間とは違うという事を示した透明人間とか狼男のような用語です。EPROM(イレ−サブル・プログラマブル・リードオンリ・メモリ)に至っては三重に特殊化されているという恐るべき用語ですね。
【ビット表記D7-D0のMSBは数字が大きい方か?】
 これも最近はマイコン全盛で当たり前になりつつありますが,昔のA/Dコンバータでは0がMSBで,数字の大きい方がLSBというものが多くありました(今も在るのかな?)。マイコンの方は整数の世界だから,ビット数が増えれば数値範囲が大きくなります。ビット表記のサフィックスは2の指数を表しています。
 一方,A/Dコンバータの世界は分解能,つまり逆数の世界です。ビット数が多くなるほど細かいところまで測定できるようになるのです。もともとはビット表記のサフィックスは,2のマイナスの指数を表していたので,0が一番大きな数値となってMSBになっていたのです。今のA/Dコンバータ(単品)では0をLSBにしているものが多いと思いますが,昔との混乱を避けるために親切なカタログではどっちがMSB/LSBかを明記してあります。「なーんでこんな分かりきったことを書いてるんだろう」なんて言う人がいたら教えてあげてね。
【声なき声を聴け】
 私は,ハードウエアでもソフトウエアでも,バージョンアップなどで仕様変更するときに非常に気を遣っている点があります。それが「声なき声を聴け」です。人は不満があると声に出しますが,満足している事は当たり前に感じて案外声に出しません。だから改善点をヒアリングしたりリサーチすると,不満な点は集まりますが,そのまま維持して欲しい機能やインタフェースについてはなかなか出てきません。
 このような調査結果だけを重視して,大多数が維持を望んでる点まで変更してしまうと,今まで気に入って使ってくれていた多数のユーザを失う結果になりかねません。
 じゃ具体的にどうするかということですが,まずは調査時に”この機能は削除して良いか”って確認を十分にすることと,不明なら変更はせずに機能追加,変更オプション追加で従来互換性をできるだけ維持するのが良いでしょう。そんなことすると肥大化する一方だと思うかもしれませんが,ICの高集積化やメモリの大容量化でコスト増はほとんどカバーできます。使い続けてもらう方の恩恵がはるかに大きいです。(まぁ肥大化しすぎるとダウンサイジングの波が押し寄せますが)

 

〜〜〜〜〜〜〜 じょぉだんですよぉ編 〜〜〜〜〜〜〜

【差異的禍】  2016/8/15 追加
 的外れによって生じる禍のこと。以下の例がある。
(1)最適化というと美しい響きがあるが、実際には「ある条件が成立する場合のみ効率が良い」手法であって、大抵の場合はその条件が成立しない。前提条件に差異があって効率が落ちるという禍。
(2)「御社に最適なソリューションを提供します」というベンダーの常套句に騙されて導入したものの、自社の実態と差異のあるシステムによって混乱をきたすという禍。
(3)他社との差別化とは、他社より魅力的な特徴を持たせるという意味だが、単に差異を設けることが目的化し、結局売れない商品になってしまう禍。
【タルタル・コンデンサ】  2011/4/21 追加
 タンタル・コンデンサは故障モードがショートであるため電源屋さんには嫌われている。一部にヒューズ内蔵のものもあるが,根本的に改善した物がタルタル・コンデンサである。故障時はどろっと融けてオープンとなる。特にMOS FETのソース側に接続するタルタル・ソース接続で効果が大きい。
【ヒローチャート】
 通常のフローチャートは,物事の流れが直感的にすぐ理解できるので,理解に必要な労力が少ないという意味で不労チャートとも呼ばれる。一方,飛び先や分岐の条件が複雑怪奇で,動作を追っかけると疲労してしまうものをヒローチャートと言う。
【コーティング】
 一般的にはメッキや皮膜付け,塗装などを意味するが,ソフトウエア開発においてはソース先頭の著作権表示だけコーディングして,中身として外注に作らせたものやWebで拾ってきたものを付けることを言う。
【オモシロスコープ】
 波形を見るオシロスコープに対して,八卦を見るものがオモシロスコープである。真実が映らず,期待する幻影だけが表示されるため,気分だけはよくなる。
【トグロスイッチ】
 二つの状態を切り替えるトグルスイッチに対して,複数の状態をうだうだと切り替えるのがトグロスイッチである。アルコール洗浄しないと動作せず,どの状態に切り替わるかとか,切り替えのタイミングが予測がつかない。最近のIT世代のエンジニアはググルスイッチの方を好む。
【もなか指向】
 商品を企画する時,たいていはロー・エンド(最低)指向,ハイ・エンド(最高)指向,その中間のミドル・レンジ指向の3つを考えるのであるが,人によってはミドル・エンド(最中)を指向する。これはもなか指向といい,一般的には失笑を買うので注意されたい。
【育ちの良いエンジニア】
 昔は育ちの良いお嬢様は,箸より重い物は持たなかったそうである。同様に育ちの良いエンジニアは「半田ごてより重い物は持ったことがない」と言っていたものである。最近の育ちの良いエンジニアは,半田ごてすら持たずに,マウスを持つにとどまっている。図面を引いたら小人さんが工作してくれると思っているらしい。

 


以前の更新
2013/10/02 [78K0マイコンの思い出話]評価版ツールのプロダクトIDに関して追記。
2013/10/02 [78K0マイコンの思い出話](雑談)秋月でuPD78P083まだ売っていた
2013/08/06 [要求仕様書の書き方(組込み制御ソフト用)]を更新
2013/07/31 [要求仕様書の書き方(組込み制御ソフト用)]を更新
2013/07/28 [要求仕様書の書き方(組込み制御ソフト用)]を新規作成
2012/12/03 [78K0マイコンの思い出話]デバイスファイルのリンク先変更
2012/11/04 [アトメル(Atmel)AVRマイコンとGCC等(備忘録)]を更新。
2012/09/09 [アトメル(Atmel)AVRマイコンとGCC等(備忘録)]を微更新。
2012/08/13 [アトメル(Atmel)AVRマイコンとGCC等(備忘録)]を更新。
2012/08/01 [アトメル(Atmel)AVRマイコンとGCC等(備忘録)]を追加。
2012/04/02 リンク修正完了(ルネサス旧URL閉鎖対応)。
2012/03/11 [78K0マイコンの思い出話]にツールニュースおよびLED照明・蛍光灯関係へのリンクを追加
2012/02/20 「コラム」”公用文は「,と。」を用いる”を追加。
2012/01/22 リンク修正(ルネサス・ホームページ・リニューアル対応)。
2012/01/08 「回路図CAD」を独立したページに分離。
2011/12/03 「回路図CAD」部品ファイル更新 (短足クリスタルなど追加)。
2011/10/01 「回路図CAD」"tips"に若干追加。
2011/09/04 「回路図CAD」部品ファイル更新 (バリスタ,各種小型シンボル追加)。
2011/08/13 「回路図CAD」部品ファイル更新 (ヒューズ,フォトカプラ,デジトラ,EEPRO,ミニロジック追加)。
2011/07/12 「コラム」”100点エンジニアと−50点エンジニア,同じ能力でも差が150点”を追加。
2011/06/26 「回路図CAD」部品ファイル更新 (ブリッジ, SCR, TRIAC, IGBT追加)。
2011/06/04 「コラム」”カソードは”K”・・・基板屋には通じず”を追加。”十字接続を多用する電子回路業界人”を追加。
・・・・略・・・・
2010/12/27 ページ・フォーマットを変更。
・・・・略・・・・
2010/01/06 ページ新規作成