余白 Copyright © 2010-2019,2023,2024 てきーらサンドム


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

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

最近の更新以前の更新
2024/10/23 [KiCadの使い方(備忘録)] の2.に寸法線の入れ方を追記。
2023/11/06 [KiCadの使い方(備忘録)] にネットリスト更新時の選択項目を追記。
2023/10/20 [KiCadの使い方(備忘録)]にマウントデータ出力方法を追記。
2023/10/19 [KiCadの使い方(備忘録)]にビア打ちを追記。
2023/10/17 [KiCadの使い方(備忘録)]を追加。

  〜〜〜 目次 〜〜〜

 


●KiCadの使い方(備忘録) 2024/10/23 更新

 Version 5.1.12-1でPWB設計する場合の備忘録です。最小線幅6mils, 0.5ptQFP対応を念頭に置いてます。
 なお回路図は他のCADで書いて, D2CADtoKiCadで変換するものとします。

【1.インストールからフットプリント・ライブラリ登録まで】
@kicad-5.1.12_1-x86_64.exeを実行すると、標準的にはC:\Program Files\KiCadにインストールされるはずです。
AKiCad.exeを起動し、フットプリント・エディタのアイコン押すか、「ツール」→「PCBフットプリント編集」を選択します。
BKiCadライブラリを登録します(最初に自動的に出てきたはずです。とりあえずライブラリ全部をグローバル登録。ただし時間がかかります)
 その他に追加でダウンロードしたライブラリを登録するには、「ファイル」→「ライブラリ追加」で、拡張子.prettyのフォルダを選択します。
 
【2.プロジェクト作成から設計ルール入力、外形入力、取付穴配置、寸法線まで】
@kicad.exeを起動し、メニューの「ファイル」→「新規」→「プロジェクト」で新たにプロジェクトを作成します。
A「PCBレイアウトエディタ」アイコンを押すか、メニューの「ツール」→「PCBを編集」を選択してPCBエディタ(PCBnew)を開きます。
B「基板セットアップ」アイコンを押すか、メニューの「ファイル」→「基板セットアップ」を選択します。
 a. 左のツリーの「レイヤー」を選択し、「カスタムレイヤーセット」のプルダウンメニューから層数、実装面に応じて適したものを選びます。
 b. 左のツリーの「デザインルール」→「ネットクラス」を選択し、Defaultのクリアランス=0.2、配線幅=0.16、ビアサイズ=0.6、ビアドリル=0.3に設定します。ここの設定が後で行うDRCでルールとして使われます。
   クロストーク対策でクリアランスを0.2より大きくすると0.5ptQFP(パッド幅0.3)でDRCエラーが出ます。しかしあえてクリアランス=0.24(0.5ptQFP電源線0.26の場合)とかで配線しておいて、最後にQFPパッドだけエラーが出る状態でクリアランスを0.2に変更してエラーがすべて消えるのを確認するのでも良いでしょう。
   クロストークを気にしないから(低速信号だけだから)配線密度を高くしたいという人は、0.3175mm(12.5mil)グリッドで配線できるようにクリアランス=0.1524〜0.1651、配線幅=0.1524とします。
   0.5pt以上のグリッド配線で、クロストークは一応気にするけど、斜線並走は少ないから0.5pt斜線を許容する場合は、クリアランス=0.19とします(0.5/√2 - 0.16 = 0.194)。
   ただし、べた領域と信号線の間隔は0.2032以上必要なので、最終チェックの時に念のためクリアランスを0.2032に設定してDRCをかけて、べたと配線間に指摘箇所が無いか確認します。
 c. 左のツリーの「デザインルール」→「配線とビア」を選択し、電源用の太線や大きめのビアを設定します。上述bの「ネットクラス」は例えばGNDに対して1つのルールしか登録できないので結局最小値しか登録できません。引き回し状況により線幅を随時変更する場合はこちらで登録したほうが良いです。なお後述のべた領域作成でクリアランス0.508がデフォルトなので0.7mm以上の電源用配線もクリアランス0.508を前提に線幅を決めています(安全規格上は0.508mmギャップで25Vまでとなるようです。これより電圧が高い場合は間隔をさらに広げる必要があります。なおべた作成の画面は設定値を覚えてくれないので0.508を毎回変更するのが面倒です)。
  以下線幅の設定例です。
  0.26:0.5ptQFPの電源端子の引き出し用。パッドサイズ0.3なので、0.3まで増やしても問題ない気がします(それ以上はクリアランス0.2が守れない)。
  0.45:1.27pt45度斜線用。ピッチは0.898 (= 1.27/√2) なので、0.39(クリアランス0.508)〜0.5(〃0.398)の範囲で決めてよいと思います。アナログ信号の配線にも適しています。
  0.75:1.27pt平行線用(1.27 - 0.508 = 0.762)。0.7〜0.76範囲で決めてよいと思います。
  1.25:DIPなどのICの電源ピンへの接続。2.54pt45度斜線の上限は1.288 (= 2.54/√2 - 0.508) なので、1.0〜1.28の範囲で適当に決めてよいと思います。
  1.60:(暫定値)。φ1.8ランドよりちょっと小さい線用(適当)。
  2.00:2.54pt平行線用(2.54 - 0.508 = 2.032)。300mil幅DIPに2本の電源線通す場合にも使用します。
  3.00:5.08pt45度斜線用(5.08/√2 - 0.508 = 3.084)。
  4.80:300mil幅DIP(φ1.8ランド)に1本の電源線通す場合用(7.62 - 1.8 - 0.508x2 = 4.804)。
  なお線を何本も並べて太くする方法もあります。この場合、メニューの「設定」→「設定」→「PCBnew」の中の「古い配線を自動削除」のチェックを外しておかないと最初に引いた線が消えることがあります。
  電源用ビアとしては例えばビア径1.6/穴径0.8を追加します。ジャンパ抵抗で補強したり、ビアを半田で埋めて補強したりできます。
 d 上部アイコンの下に表示されている「グリッド XXXmm(YYYmils)」のプルダウンから「ユーザーグリッドを編集」 を選択し、0.3175(12.5mils)を追加します。2.54pt系の部品(C,R類)が2.54ptで並べられない(DRCでオーバーコート重なりエラーが出た)ときに、ちょっとずらすのに使用します。また0.635ptの45度斜線はL/S=1:1.8とやや隙間が狭いので0.3175pt分ずらして隙間を確保するのにも使えます(後述の配線方法参照)。
C外形の引き方
 a. 右のレイヤーマネージャの層表示の中からEdge.Cutsを選択するか、上部アイコン列のレイヤープルダウンからEdge.Cutsを選択します。
 b. 上部アイコンの下に表示されている「グリッド XXXmm(YYYmils)」のプルダウンから1mmなどの粗いグリッドを選んで、原点位置(x=0, y=0)を探し表示しておきます(画面下に表示されるカーソル座標を参照して)。
 c. 右の「図形ラインを追加」アイコンを押すか、「配置」→「線」を選択します。
 d. 原点位置から外形を引きます(四角形の場合)。カーソル座標が画面下に表示されるので、それを見て引けばよいでしょう。
 外形は後からでも変更可能です。既存線を選択して削除し、新しい線を引くだけです。なお、パターン図を図面枠なしで印刷する場合は原点(0,0)から基板外形を書いても問題ありませんが、図枠(画面にうっすらと表示されている)付で表示するには原点をずらすか図枠をずらす必要があります(方法は不詳です)。原点ずらさずに図枠の中に外形を書くこともできますが、画面下に表示される座標にオフセットがかかるので配置とか面倒になる可能性があります
D取付穴配置
 a. 右の「フットプリントを追加」アイコンを押すか、メニューの「配置」→「フットプリント」を選択します。
 b. 適当に画面をクリックするとライブラリ一覧が表示されます。登録ライブラリが多い場合は最初に時間がかかる場合があります。
 c. 「MountingHole」の中から配置したい穴を選んで配置します(例:MountingHole_3.2mm_M3を配置)。
E寸法線
 a.右の「寸法線を追加」アイコンを押すか、メニューの「配置」→「寸法線」を選択します。
 b.基板内の寸法の起点となる位置と終点位置をクリックすると寸法線が現れるので、基板外の見やすい位置へ移動します。
   垂直の寸法を入れる場合、下を起点として上を終点とすれば数字が下から上へ読める方向になります(寸法の一般的書き方)。上を起点とすると文字の方向が逆になります。
   なお、寸法線はDwgs.Userというレイヤーに入力されます。起点・終点をクリックした時点で自動的にこのレイヤーに切替わるはずですが、もし切替わってなければ(その場合寸法線が現れない)手動で切り替えます。
 
【3.ネットリスト読み込みから配置、配線(ビア含む)まで】
@D2CADtoKiCadを使って、プロジェクト内にネットリストを生成します。これは基板設計途中で回路図変更を反映させる場合も同じです。
A上部の「ネットリストをロード」アイコンを押すか、メニューの「ツール」→「ネットリストをロード」を選択します。
B初回はネットリストファイルが選択されてないので選択します。2回目からは自動で当該ファイルを読込みます。
 2回目以降は「リファレンスでフットプリントを再関連付け」のラジオボタンを選択します。特に部品や配線の追加/削除を行って自動生成ネット名が変更になった場合は必須です。
Cエラーが表示されてなければ「基板を更新」ボタンを押します。
 該当するライブラリが無い場合や、ライブラリがあってもネットリストのピン名とライブラリのピン名が不一致の場合など、エラーがある場合はネットリストもしくはライブラリを作り直してネットリストのロードを再実行します。
D初回は全部品、2回目以降は追加部品が選択された状態になるので、基板の外側に仮配置します(対象が1個だけならそのまま基板内の所定場所に配置しても良いです)。
E仮置きした部品を順次基板内に配置します。特に位置指定のない2.54pt部品はまずは2.54ptグリッドもしくは1.27ptグリッドでざっくり配置し、全体の配置を見て調整するのが良いでしょう。0.5ptQFPは、電極が0.5ptグリッドに載るように配置します(たぶん0.25ptグリッドで移動させないと載らない)。
F配線は幅の広い電源系から行いますが、信号配線が混みそうで配置変更が出そうなところは先に配線して配置を確定させるのが良いでしょう。
 まず上部アイコン下の線幅指定のプルダウンリストから該当する電源線幅を選択し、右の「配線」アイコンを押すか、メニューの「配線」→「単線」を選択し、配線します。
 ただし、後述のべた塗りでサーマルリリーフにしたいランドやパッドは、わざと未配線で残すか、あるいは0.16の信号線で配線しておきます。
 複数の電源系がある場合(デジタル電源/アナログ電源とか電圧種別とか)は、ある程度電源領域を切り分けられるようにしておきます(例えばデジタルGNDとアナログGNDが入り組まないように)。
 デジタル信号線の配線は80mA(rms)以下なら0.16で問題ないでしょう(18μm銅箔でも)。
 クロストークが気になる並走線、特に斜線の並走部はスペース確保に注意します。0.5pt配線の場合、少なくともその1/2ピッチ屈折点をずらして斜線部のピッチを確保します(図参照)。 

ELKICAD001.gif (16648 バイト)

 0.635ptの場合は、45度斜線間が0.45ptとなり、線幅0.16に対してスペースは1.8倍となります。2倍は欲しいところですが、じゃ1.8倍はダメなのと言われると微妙です。まぁ基板スペースに余裕があれば上記のようにずらして、余裕なければ許容してみると言う感じでしょうか。0.5ptの斜線間0.354ptでも製造上は問題ないのですが、線幅0.16に対してスペースは1.2倍となり高速の信号の場合はクロストークが気になります。でも斜線部の並走長が長くないなら許容しても良いような気もしています。
 またKiCadは自動的に最小クリアランスをとってグリッドから外れたところを配線をすることがあります。配線がデコボコしたりスペースが不均等になる原因になるため、オングリッドになるように引き回しに注意します。
Gビア打ち
 配線中にビアを打つ場合は右クリックの「貫通ビアを配置」を選択します。配線済みの部分に打つとビアができた後に配線終了になります。配線を伸ばした場所に打つと配線層が表裏入れ替わって配線を継続できます。ビア径を変更する場合は、あらかじめ上部のビア選択プルダウンメニューで選んでおきます。
 ビア径0.6だと0.5pt並走線上には配置できません(隙間が0.12しかなく製造NG)。0.635ptまたは0.75pt(0.25x3)に載せ替えてからビアを打ちます。
 配線後やべた塗り後にビアを追加するには、右の「ビアを追加」アイコンを押すか、メニューの「配置」→「ビア」を選択して対象信号の線あるいはべた領域に打ちます。導体外などネット名の無い部分に打つとネット名無しのビアができ、そのままではネット名のある信号との配線ができなくなります。無名のビアにネット名を引き当てるには、ビアを選択して右クリック「プロパティ」を開き、「ネット」のプルダウンリストから該当するネット名を選択します。
 
【4.DRCとべた塗り、シルク編集】
@べた塗り前に1回DRCを行います。上部の「デザインルールチェックを実行」アイコン(てんとう虫)を押すか、メニューの「検査」→「デザインルールチェッカー」を押します。
 最小線幅0.16、最小ビアサイズ0.6を指定します。「配線のエラーを全てリポート」にチェックを付けて「DRCを実行」を押します。「問題/マーカー(0)」かつ「未配線アイテム(0)」なら問題ありません。
 この時点ですでにべた領域設定(ゾーン設定)がされている場合、「DRC実行前にすべてのゾーンを塗りつぶす」と「塗りつぶした導体の・・・」もチェックしておけば、べた塗りが実施された上でべたも含めて検査されます。
Aべた塗りを電源やGNDに対して行います。
  a. まず右の「塗りつぶしゾーンの追加」アイコンを押すか、メニューの「配置」→「ゾーン」を選択します。
  b. 領域の開始点をクリックするとプロパティが表示されるので、対象の層を選択し(デフォルトは事前に選択していた層にチェックが付いています)、対象のネット名を選択します。
  c. クリアランス(0.508)と最小幅(0.254)を変更可能ですが、変更した値を覚えてくれないので、差し支えなければそのままにして置くのが面倒無くて良いです。パッド接続欄の指定もデフォルトのサーマルリリーフで良いでしょう。
  d. 「OK」を押し、対象領域の外形を書いていきます。もし片面に付き1種類のネットしかべた塗りしないのであれば、基板外形線に沿って四角を書くだけで済みます。複数(電源とGNDとか、デジタルGNDとアナログGNDなど)の領域を設定する場合は、それぞれの領域が重ならないように外形を書きます。重ねてしまった場合はショートします(信号線とはショートしませんが、塗りつぶし領域はネット名が異なっても繋がってしまいます)。書き終わると(始点まで戻ってくると)塗りつぶしが実行されます。
   ただし、ゾーンの外形線で囲んだ中に指定したネット名の端子が存在しない場合は塗りつぶしが実行されません。またサーマルリリーフはゾーン設定で塗りつぶした領域に対して行うので、たとえば電源線で全周を囲んだランドには行いません。
  e. ゾーンの削除や変更を行う場合は、まずメニューの「編集」→「全ゾーンの塗りつぶしを削除」を選択します。この時点で塗りつぶしは消えますが、ゾーン設定は残ったままです。この状態で、ゾーンの外形線を選択して削除キーを押すか、右クリックメニューの「削除」を選択するとゾーン設定が削除されます。削除ではなく、形状の修正であれば、ゾーン外形線をつかんで移動したり、ゾーンの頂点(■表示)をつかんで変形させることができます。多分変形させたりするより、削除して書き直したほうが楽だと思います。ゾーンの塗りつぶしが削除されているけどゾーン設定が残っている状態で、新たにゾーン設定すると二つのゾーンが重なって思わぬトラブルの原因になるので、メニューの「編集」→「全ゾーンを塗りつぶし」を選択して塗りつぶされないことを確認してから新たなゾーン設定を行うようにします。
  f. ゾーンは変更しないが、部品や信号線の位置変更を行う場合は、メニューの「編集」→「全ゾーンの塗りつぶしを削除」を選択して塗りつぶしが削除されている状態で、部品移動や配線変更を行います。その後、DRCを実行するかメニューの「編集」→「全ゾーンを塗りつぶし」を選択すれば塗りつぶしが実行されます。
B最終的なDRCで「問題/マーカー(0)」かつ「未配線アイテム(0)」になれば導体層に問題ありません。目に見えないような微小な配線や導体が残ってエラーになる場合があり、その場合は範囲選択などで該当箇所を削除してから本来の配線やべた塗りを再度行います。
Cシルクの移動・編集を行います。 
 a. 右のレイヤー表示からF.SilkSを選択するか、上部アイコン列のレイヤープルダウンからF.SilkSを選択します。
 b. シルクの移動や追加を行います。配線層を非表示にした方が作業しやすいですが、ビア被りを見落としやすいので注意が必要です。ガーバー出力してドリルとシルクの状態をガーバーピュアで表示して作業するという手もあります。
   コネクタ実装後に1ピン表示がわかりにくくなるものは、△マークを付けておきます。0.5ptグリッドで幅1mm、高さ1mmのサイズで良いでしょう。

【5.ガーバー、ドリル、マウントデータ出力、印刷】
@ガーバー、ドリル出力
  a. 上部の「プロット」アイコンを押すか、メニューの「ファイル」→「プロット」を選択します。
  b. オプション設定を行ってから「製造ファイル出力」を押します。メタルマスクを作らない場合はF.Paste, B.Pasteは必要ありませんが、チェックが付いたままでも問題ありません。
  c. 「ドリルファイルを生成」を押し、オプション設定を行ってから「ドリルファイルを生成」を押します。
 Fusion(Seed)向けオプション設定例:

ガーバー設定 ドリル設定

Aマウントデータ出力
  a. メニューの「ファイル」→「各種製造用ファイル出力」→「フットプリントと位置情報のファイル」を選択します。
  b. 出力先およびフォーマット等を選択します(実装屋さんから要望聞くのが良いでしょう)。
  c. 「座標ファイルを生成」を押せばファイルができます。対象となる部品は、部品のプロパティ(部品選択して右クリックメニューで「プロパティ」を選択)の右下に表示される「基板製造用の属性」で「表面実装」となっているものだけです。自動実装非対応のSMD品や自動実装可能なリード部品があればあらかじめ変更しておきます。
B印刷
  a. まずプロジェクトの保存を行います。2回目の「用紙設定」でKiCadが落ちてしまう(何のメッセージもなく消えてしまう)確率が高いようです。
  b. 上部の「基板を印刷」アイコンを押すか、メニューの「ファイル」→「印刷」を選択します。
  c. 横向き印刷がデフォルトです。縦向きに印刷にする場合は「用紙設定」で変更します。変更は1回だけにします。2回目の変更でKiCadが落ちる確率が高いです。
  d. 層別のパターン図を印刷する場合は、必要な層を選択の上、「レイヤー毎に1ページ」をチェックし、「印刷」を押します。
    表側の実装図画が必要な場合はF.SilkS, F.Mask, Edge.Cutsの3つだけ選択し、「シングルページに全レイヤー」にチェックして「印刷」を押します。
    裏側の実装図画が必要な場合はB.SilkS, B.Mask, Edge.Cutsの3つだけ選択し、「ミラーして印刷」と「シングルページに全レイヤー」にチェックして「印刷」を押します。
 

●要求仕様書の書き方(組込み制御ソフト用) 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に格納。
 

 


●マイクロチップ(Microchip)MPLAB X IDE(備忘録)

 ★注:以下は以前PICを使った時の内容です。SAMマイコンでX IDEを使う場合については、SAMマイコンのページを参照ください。
 長いものには巻かれろ、ということでXIDEはじめました。旧AtmelのAVRのサポートも開始されているようで、長く付き合えそうな感じです。

【ウオッチが同名のstatic変数を区別できない】 2018/11/4 追加
 static属性の同名の変数(今回はcountと言う名称)を2つのCソースで定義していますが、デバッガでウオッチすると片方しか見えませんでした。cソース上で右クリックしても同じです。
 他のデバッガでは今まで試したことが無かったので、X IDE特有の問題なのか、一般的によくある話しなのかは不明です。
 ウオッチができないだけで、オブジェクト自体はそれぞれのstatic変数が別々の領域に確保され、問題なく動作しているようです。
 とりあえず表示されない方の変数名を変更して対処しましたが、もしかしたらどこかの設定で区別できるようになるんでしょうかね。
 
【PICkit4でデバッグがスタートしない】 2018/10/23 追加
 いよいよデバッグ開始です。PICkit4をターゲットに接続して、おそるおそるデバッグ・アイコンを押してみると、なんと次のメッセージが出て中断してしまいました。
「The configuration is set for the target board to supply its own power but no voltage has been detected on VDD. Please ensure you have your target powered up and try again. Connection Failed.」
 つまりターゲット基板の電源が入ってないということです。そんなはずは無いと再確認しましたが、チップにもPICkit4へのコネクタにもちゃんと給電されていました。何か特別な手順とか設定が必要かなと、PICkit4のクイックスタートガイドを見ましたが詳しい説明がありません。PICkit4はまだ詳細な日本語ガイドが無いようなので、しょうがなくPICkit3の日本語ガイドを開いたら・・・、あぁぁ1番ピンはこっちだと丁寧に書いてある・・・。
 はぁぁ、PICkit4のクイックスタートガイドにコネクタのピン配置と製品写真が並べて掲載されていて、てっきりその写真の向きと表のピン順序が合致していると思い込んでいました。よく見ると”さりげなく”1番ピンを意味する三角マークが下側に表示されていました。PICkit3のガイドのように丁寧に書いてあればすぐ気が付いたのでしょうが1時間も悩んでしまいました。
 ともかく、PICkit4をひっくり返して接続し、無事デバッグを開始できました。いやはやマイコン歴40年以上でこんな間違いをしでかすとは・・・、って言うか最近ぼけが進行してきたのかもしれせんね。
  
【日本語コメントをつける場合の注意】 2018/9/16 追加
 TIのCCSでやったちょんぼをまたやっちまいました。
 海外製ツールでシフトJISを選択した場合、//コメントの最後の文字の2バイト目が\(0x5C)だと行継続と判断されて、次の1行がコメントアウトされてしまいます。例えば、"可能"の能の字。/**/形式なら問題ありませんが、//使う場合は最後に常に”.”(。、.,どれでも可)を付けるくせをつけないといけないようです。
 どうせ現在は文字列内で2バイト文字コードを使えないのでシフトJIS以外を選択するという手もありますが、将来使えるようになることを期待して・・・。
  

 


●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を数本組合せたほうが良いでしょう。

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

電即納(つまみの探し方)2017/1/8 追加
 電即納ではボリュームやスイッチのつまみも扱っています。型番がわかっている場合は、電即納のページの「その他」カテゴリから探せます。
特定のボリュームやスイッチに適合するものを探す場合は、ボリューム、スイッチの型番一覧の右端に「オプション」欄があるので、”つまみ”をクリックすれば該当するつまみが表示されます。オプション欄が無かったり、オプションの内容が”−”の場合は該当するものがありません。
鈴商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時間はあるようですが、名ばかり管理職で手当が付かないとか、そもそも支払う気がないブラック企業とかあって、質的にはかなり違う状況です。まぁ、そこまでいかなくても、不況というか、家電系や半導体系の製造業がどんどん萎んでいくという状況では、低賃金で長時間労働もやむなしというあきらめもあるようです。
 冒頭の「眠らない頭、倒れない体、折れない心」は、そういった企業で働く人から聞いた「エンジニアに必要な素養」だそうで、いやはや悲壮感ただよってますね。過労死にならないようにお気をつけて。
 
【公用文は「,と。」を用いる→改訂】  2021/4/3 更新
 ついに横書きの公用文で「、」が使える時代が来ました。はぁ?と思われる人も多いかもしれませんが、今まで横書き公用文の読点には「,」を用いることになっていたのですよ。今後は原則「、」になります。「,」も使ってよいですが一つの文書内ではどちらかに統一する必要があります。ま、私のWebページは公用文じゃないので今更統一はしませんけどね。詳しくは2021年3月12日付の『新しい「公用文作成の要領」にむけて(報告)』文化審議会国語分科会発行を参照ください。
【過去記事】
 意外と知られてないですが,横書きの公用文の句読点は「,と。」を用い,縦書きは「、と。」を用いることになっています(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の高集積化やメモリの大容量化でコスト増はほとんどカバーできます。使い続けてもらう方の恩恵がはるかに大きいです。(まぁ肥大化しすぎるとダウンサイジングの波が押し寄せますが)

 

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

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

 


●Backlog(積み残し)

【CPU周辺機能の超高級化】  2019/8/13 積み込み
 モータのベクトル制御機能とか、通信のプロトコル内蔵とか、周辺がどんどん高級化。でもそれによってチップ価格が高価になったんでは意味なし。こうゆう高価格をもたらす周辺機能はペリフェラーリと呼ぶべきか。
【RH850チップ消去するな】  2018/4/7 積み込み
 RFP(ルネサスフラッシュプログラマ)のマニュアルの隅っこにRH850はチップ消去するな的なことが書かれています。そんなこと書くよりチップ消去を禁止して欲しい。CPU指定しているんだから、そのCPUでどんなことしちゃいけ無いの分かるよね。
【H8コンパイラ。もちろんメンテされてない】  2018/4/7 積み込み
 今時RXじゃなくてH8SXで新規基板開発をするのはダメでしょうね。HEWでプロジェクト生成したらiodefine.hのポートN定義に不具合(DDR,DRレジスタ定義抜け)がありました。どうやら放置されているようですね。いやツールだけならいいけどチップ供給がほんとに続くんですかね。
【溺れる者二人。相手を踏み台にしなきゃ生き残れない】  2018/4/7 積み込み
 ルネサスに限りませんが、常識的に考えて、溺れている者どうし二人が手を取り合ったら両方浮かぶなんてありえないですよ。だからか相手を踏み台にすべく内部では壮絶なサバイバル・バトルが行われます。負けたほうの品種は潰されるので、それを採用していたお客さんにとっては迷惑この上ない話ですよね。
 NEC系の品種で言えばV850は無くなるし(RH850は一般客は買えない)、生き残ったRL78(元々K0Rの第4世代品)だってMiniCubeが使えるはずだったのに。コンパイラもCC-RLで性能が上がったことは喜ばしいけど、ソースの互換性がないので書き直し。ソース互換で性能上げて欲しかったです。もっとも性能が必要ならIAR買えばいいじゃんという雰囲気で、あのままだったら性能は上がらなかったかもしれませんが。ま、不幸中の幸いというヤツですかね。
【電源回りこみの嵐】  2018/4/7 積み込み
 ICが低消費電力になるのは良いことですが、信号端子からの回り込みで動作して問題になるのをちょくちょく目にするようになりました。完全に動作してくれるなら良いのですが、ちょっと電流を流すモードになると当然正規の電源じゃないんでトラブリます。しかも原因究明というか正規の電源が入ってないことに気づくのに時間がかかることもしばしば。民生機器のマニュアルには、動作しないときの対処として電源が入っているか、電池がなくなって無いか確認してくださいって書かれているものが結構ありますが、デバッグのマニュアルにも書かねばならないようですね。
【コーディングの5S】  2018/4/7 積み込み
 コーディング作業は製造ラインの作業と同じく5S(整理/整頓/清掃/清潔/躾)が必要と感じることが多々あります。
整理: 特に重複定義(同じ定義をソースのあちこちでやってしまう)はいけません。メンテナンスのときに全部直すの大変です。整理して1箇所で定義しましょう。
整頓: 工具置き場や部品だなと同じで、共通定義場所、共通関数など、書かねばならない内容を「明示」して、所定の位置におきましょう。
清掃: 現場では「ゴミを見たら跨ぐな(素通りするな)」と言われます。他人が落としたゴミ(意味の無いコメント、一時的なデバッグの残骸)も掃除しましょう。いつか使うかもしれない未使用のデータや関数も、そのソースからは外して引き出しにしまいましょう。
清潔: バグ、ウイルスの無いソース状態を保ちましょう。
躾: コーディング・ルール/ガイドラインは守りましょう。
【一度手放した金は戻ってこない】  2018/4/7 積み込み
・元本保証を信じるな。いくら契約書を交わしても相手が夜逃げしたら戻ってない。
・将来の利率や収入の保証を信じるな。
・人に金を貸すな。特に絶対返すと言うヤツに限って絶対返さない。
・人に物・不動産を貸すときは相場より高めにせよ。必要なときに返し渋りされる。
・借金するな、支払う利息で欲しいものが買える。
【ユーティリティ・ソフト】  2018/4/7 積み残し
・ターミナルソフト: コマンド/レスポンス画面と、垂れ流しログ画面
・漢字フォント: UTF-8対応
【製作】  2018/4/7 積み残し
・PIC32 28pin,256kB 秋月に有り(漢字LCDコントローラ用として最適)
・OSレスRT処理: マニュアル作成

 


以前の更新
2019/08/13 [コラム]”古典小数点、不労小数点”を追加。
2018/11/04 [マイクロチップ(Microchip)MPLAB X IDE(備忘録)]”ウオッチが同名のstatic変数を区別できない”を追加。
2018/10/23 [マイクロチップ(Microchip)MPLAB X IDE(備忘録)] 更新。
2018/09/16 [マイクロチップ(Microchip)MPLAB X IDE(備忘録)] 新規追加。
2018/01/08 [パーツショップ,電子部品通販会社] ”電即納(つまみの探し方)”を追加。
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/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 ページ新規作成

マイコン技研