酔漢電子工作手帳

2004-09-05

JTAGを残して完成

MP3プレイヤー

13:56 | MP3プレイヤー - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - MP3プレイヤー - 酔漢電子工作手帳

いしかわさんのところからたどり着いた放課後の電子工作 〜 会社でハンダ付け、自宅でもハンダ付け 〜にMP3プレイヤーの製作が紹介されています。

で、中学・高校生のころに作られたものとして6800ベースのマイコンの写真が出ています。私も「私だけのマイコン・設計&製作」をぼろぼろになるまで読んでマイコンの勉強をした口なので、懐かしい気持ちになりました。

後一歩

| 16:29 | 後一歩 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - 後一歩 - 酔漢電子工作手帳

基板のほうはほぼ完成です。JTAG周りの結線を残していることくらいでしょうか*1。あとはケーブルワークですね。家に万力がないので会社にケーブルを持っていって圧接しなければなりません。

加速度センサーをつけたいのですが、以前買い置きしていたものが見当たりません。2000円追加出費ですか(T_T)。

DACにはトランジスタによる電圧-電流変換回路を通して2色LEDを接続しています。LEDはスタンレー電気の5614Sで、ラジオデパートの一階で偶然見つけました。DACに0.6Vから3.3Vの電圧を出力すると、LEDに0から16mAの電流が流れます。定格が20mAなので少しくらめですが、手持ちの抵抗を使ったので妥協しました。DACは2系統使っていますので、両者の出力の按配を変えれば色が変わるはずです。

int_mask

| 23:27 | int_mask - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - int_mask - 酔漢電子工作手帳

ハードが完成に近づいてきたのでソフトのほうも重い腰を上げて目を通し始めました。

ちらちら覗いていたときに気になっていたint_mask[ ]の正体がわかりました。これは、割り込み機能が貧弱なARM7TDMIに割り込み順位機能を与えるものです。ARM7には割り込み順位がありません。そのくせ、レジスタをいじってやると割り込み処理中であっても割り込み可能になります。つまりソフトできっちり締めておかないと、でたらめなネスティングが可能になるのがARMの割り込みです。

TOPPERS/JSP 1.4のARM実装はint_mask[]配列を用意することでこれを解決します。割り込みハンドラは最初に割り込みデバイスに対応する要素をこの配列から取り出して割り込みマスクとして設定してしまいます。デフォルトのマスク値はall 1で、これは全禁止状態です。つまり、デフォルトでは割り込み処理中は他の割り込みを許さない設定になっています。

設定を変えたければ、割り込み要因ごとにこのマスクを変えてやることになります。たとえばタイマー割り込みハンドラは、タイマー初期化時に自身の割り込みのint_mask[]値を変更して、自分自身以外のすべての割り込みを許しています。これは、タイマー割り込みの優先順位を最も低くしたことになります。

ADuC7020は複雑な使い方をしないと思われますので、ほとんどの場合マスクはデフォルトでかまわないでしょう。しかし望むなら複雑な割り込み優先順位関係を構築することもできます。

*1:例によってプルアップ抵抗を買い忘れた

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20040905