2010年07月16日
負論理の制御信号とTTL
ふと、いろいろなICの制御信号に負論理のものが多い理由について考えてみた。特にチップセレクト(CS)などは、負論理、つまり値が0のときに有効になる信号が多い。ほかにもリセットも負論理のものが多い。
昔の74シリーズのTTL(74HC??ではなく、ほんとうにTTL=Transistor-Transitor-Logicのバイポーラトランジスタのやつ。ノーマル74シリーズや74LSなど)は、入力ピンがトランジスタのエミッタなので、入力ピンをオープンにすると、電流が流れ出さず、Hレベルになる、という性質があった。(ちなみにCMOSでは入力をオープンにするのは電位が定まらないのでご法度)
つまり、あまり使わない端子で、有効になって欲しくない信号を、端子を開放したままにしておけばHレベルになるわけで、そのHレベル=無効、とする、つまり負論理にすれば、使わない信号線は開放にすればよいことになる。
意外とこんな理由もあるのではないかという気がしてきた。
2010年06月29日
iPhoneSDKでシリアル通信
標準のデベロッパ登録ではできないっぽい。
http://recotana.com/recotanablog/?p=283
標準じゃないデベロッパ登録、って、どんなのなんだ?
aitendoというお店
いろいろ面白そうな小物を売っている
http://www.aitendo.co.jp/
2010年05月25日
即興の電子工作
電子工作におけるラピッド・プロトタイピング、について考えてみる。
いや、ArduinoとかGainerとかで電子工作(テクノ工作)のしきいが下がって、システムをちゃちゃっと作って試してみる、というラピッド・プロトタイピングがしやすくなった、という話ではなく、電子工作そのもののラピッド・プロトタイピング。
即興の電子工作、といってもいいかもしれない。
ずいぶん前の未来大にいたころ、いしかわさんが遊びにこられたとき、こういうことを考えているんですよ、という話を聞いたその場で、
こういう回路でできるじゃないですかね?と部品を取り出し、5分ぐらいでユニバーサル基板にその回路を作ってみて、動かしてみた、ということがあった。
それをみて、いしかわさんは、即興の電子工作だ、電子工作のセッションだ、といっていた。
音楽の都だと、街中で出会った見知らぬ人同士が、セッションを組む、というが、そんな感じの電子工作。
そんな電子工作ができる人は限られるかもしれないが、一種の芸、ととらえると、面白いのかもしれない。
そういう芸風を仕立てていくのはどうだろう?
2010年03月16日
作品集
いまさらながら、気付けばずいぶんたまっていたので、電子工作というかマイコンねたを整理してみた。
2010年01月15日
Tweetするデバイス
スイッチを押すと、Tweetするデバイスを作ってみた。
今回の機能は、コーヒーサーバーの近くにおいておいて、コーヒーを入れたらボタンを押すと、コーヒーが入ったよ、とTweetするだけ。
スイッチのところをいろいろ変えると、使い道が広がりそうですね。標準化して基板でもおこしておくか。
以下、技術的な話。
・LANTRONIX XPort + 小マイコン(CY8C22113)
・小マイコンは、ボタンが押されたら、TweetするHTTPのPOSTメソッドをXPortに吐かせるためのコマンドをUARTで送るだけ(実際には、送られるHTTPの内容を送っているだけ)
ざっと思いつく用途
・ポットのお湯が減ってきたらTweet
・部屋の温度を定期的にTweet
・○○さんの椅子に仕込んで、着席したらTweet
・部屋の電気が消えたらTweet
・雨が降ってきたらTweet
・ご飯に行くよボタン
2010年01月14日
マイコンからTwitter投稿する準備
ほとんどただの備忘録。
Twitter API
http://watcher.moe-nifty.com/memo/docs/twitterAPI20.txt
発言はupdateコマンド。
BASIC認証のかけかた
http://x68000.q-e-d.net/~68user/net/http-auth-1.html
要は、httpクライアントをつくればいい、ということだ。
2009年12月07日
リチウムフェライト電池
そんなものがあるのか。
http://blog.siliconhouse.jp/archives/51662323.html
2009年12月03日
EngineerAward2009
P板.com賞をいただいてしまった。恐縮。
しかも、大賞の方にも気にかけていただいていて、これまた恐縮。
ヒビマイシン。
2009年11月27日
フルカラーLEDの受光特性
何を考えているかバレてしまいそうだけど、フルカラーLEDの感光特性を測ってみた。
思ったより、分光性は悪いようで、例えばRのLEDの光を当てると、RもGもBも、同じように充電されてしまう。
動作原理からすれば、入る光の波長にあわせて感度に差はあるはずなので、もう少し微妙な変化を調べてみるか。
あるいはレーザー光のように、波長の広がりが狭い光源を使ってみるか。
Saelig
CIRCUIT CELLAR誌の広告で発見。はじめてみる部品がいろいろ売っている。
http://www.saelig.com/
2009年11月23日
「郵便物からの眺め」について
先日公開した、「郵便物からの眺め」の動画ですが、さまざまな反響がありうれしく思っております。
しかし、まだ実験的な段階のため、さまざまな指摘も頂き、
問題点があることもわかり、YouTubeとニコニコ動画から削除をいたしました。
今後、内容をねりなおして進めて行きたいと思います。
2009年11月20日
汎用ICのみでビデオ信号
これもだいぶ昔につくったやつ。
2009年11月19日
郵便物からの眺め(整理)
先日の郵便物からの眺め、を編集して解説を加えてみた。
2009年11月16日
LED Tile
以前作ったものの紹介ビデオを作ってみた。
2009年11月13日
指キタスカメラ
昔作ったやつを、FPGAで仕込みなおしてみた。
指がつりそうになる。
2009年11月11日
LEDの足
今日、どうも作った基板のLEDが光らないなあ、と思ったら、長いほうの足がカソード(K)のLEDだった。
長いほうの足はアノード(A)というのが業界標準なのかと思っていたが、人生2度目の遭遇。
2009年11月06日
郵便物からの眺め(続)
昨日のやつを、再生のフレームレートを3fpsにおとしてみた。これぐらいのほうが、コマがよく見えていいかもしれない。
2009年09月11日
C328カメラのSYNC
しばらく前に使っていた、シリアルでJPEG画像が取れるカメラC328を久しぶりに使ってみるが、どうもSYNCがうまくいかないことがある。
DC安定化電源のOUTPUTスイッチをONにする、という手順で電源をONにすると無事動くのだけど、装置側の電源SWでONにすると、SYNCが返ってこないことが比較的おおい。どうも電源の立ち上がり、というかリセット(Power On Reset; POR)っぽいなあ、と思っていたら、こんな方(11/26分)を発見。
原因はともかく、電源の入れ方には気をつけたほうがよさそうだ。
SSRで、カメラの電源をON/OFFできるようにするのが無難か・・・
このカメラ、基本的にはサイコーに便利なんだけど、こういう基本的なレベルで、微妙に使いづらい。
2009年05月21日
多層基板の設計
ふと思い立って、4層の基板を初めて設計しようと思い立ってみる。
しかし、わからないことがたくさんある。頭の中で重なり具合をイメージさせながら設計しないといけなくて、慣れるまでがちょっとたいへん。LSIの多層メタル配線とは、また少し勝手が違う。
P板.comの方に、いろいろ教えていただきながら、だいたいめどが立った。
忘れないうちに、昆布のほうへまとめておく。(未来日記)
2009年03月16日
LEDマトリクスで遊んでみる
1日仕事。LEDを光センサとして使って、レーザーポインタ光があたっているかを検知して、LEDを点灯させる。1msごと・1行ごとに、光センサ読み取りとLED表示をダイナミック点灯で行っている。
これで情報の入力方法はできたので、あとはこれをどう動かすか、だな。
2009年02月09日
秋月の新商品RSS
なかなか便利だったのでsubscribeしていたんだが、どうも最近未読アイテムがないなあ、と思っていたら、いつのまにかなくなっていた。
えらい数の新商品。節穴。
http://akizukidenshi.com/catalog/e/enew_dT
2009年01月16日
行き先表示器
行き先表示器をバージョンアップ。Armadillo-210を使って単体で完結するようにしてみた。
これで、私の行き先は、世界中のどこからでもわかってしまうようになった。
・・・行き先のログでもとって、たどれるようにしてみようかな。
2008年07月24日
PSoCのADC(続)
昨日の続き。DELSIG8なんかは、割り込み先で値を読むことができる。
http://mnihombashi.blogspot.com/2007/05/psoc-delsig8.html
このあたりの情報を参考に、Cで、変換終了時に割り込み処理ルーチンが書ける。
DELSIG8なんかの場合は、変換時間が256clockと決まっているので、タイマ割り込みの代わりのように使える。これは便利かも。
以下、失敗の備忘録。
・PGAを通した後でDELSIG8でA/D変換した結果がずっと変わらない→PGAをStartし忘れ(ありがち)
・A/D変換の結果が、どうも入力電圧とあわない。RefMuxで、0〜VDDを測定レンジにしているはずなのに、1.6V程度ごとに0x00〜0xffを繰り返す→ディジタルブロックとアナログブロックのクロックを同じにしないといけない。と書いてあるが、てっきりDELSIG8のTMR Clockを選んだら、両方とも設定されるのかと思ったら、ディジタルのTMRのクロックだけ。アナログのほうは自分で設定しないといけない。しかもアナログのクロックは、VC1, VC2は選べるがVC3は選べないという罠。
2008年07月23日
PSoCの動作速度
久しぶりに、PSoCでシビアなタイミングのプログラムを動かす。
SysClkの24MHzは、電源が3.3VでもOKだけど、
CPU Speedは、12MHz(SysClk/2)ぐらいじゃないとだめなのが多いのね。
20kspsぐらいのADCがほしくてDELSIG8を使ってみるが、割り込みが思いのほか重い。
基本的にPSoCのADCは、ソフトウエア処理だから、そういうものだと割り切ったほうがよさそうだ。
2008年05月16日
マイコンブ
研究室のマイコンブ(マイコン部)で公開用WiKiが立ち上がられた。
これから、いろいろと作品などを公開していこうと思う。
情報共有の場になっていくといいなあ。
2008年03月25日
デジカメのシャッターボタンのトルク
ふと思い立って、デジカメのシャッターボタンのトルクを、簡単に測定してみる。
軽量ばかりに、デジカメを逆さに、シャッターボタンを押すように押し付けて、
はかりの数値を読む。
どの機種でも、だいたい、半押しに150gf程度、全押しに300gf程度のようだ。
タクトスイッチのトルクと同じくらいだな。
2008年02月18日
USBのベンダID
カメレオンUSB FXを入手し、早速試す。
が、PCにつなぐと、なぜかIOデータのGV-MDV3、と認識されてしまう。
たしかにIOデータのGV-MDV3は持っていて、このPCにつないだことはある。
なんでだろう?と、USBデバイスのベンダIDを調べてみると、
GV-MDV3は、ベンダIDが0x04b4になっている。0x04b4は、Cypressの番号で、他のCypressのUSBデバイス(MiniProgなど)のベンダIDも、0x04b4になっている。
偶然、他のIOデータのUSBデバイス(USBメモリ)があったので、そいつのベンダIDを調べてみると、0x04bbとなっている。
GV-MDV3の*.infファイルを覗いてみると、0x04b4としてCypress EZ-USB FX云々、という文字列が見られる。
つまり、きっとGV-MDV3の中にEZ-USB FXが入っているんだろうけど、CypressのベンダID0x04b4を、そのまま流用して、IOデータのデバイス、として登録している、ということのようだ。
レジストリのHKEY_LOCAL_MACHINES\SYSTEM\CurrentControlSet\Enum\USB あたりを覗くと、確かにベンダID0x04b4なのに、IOデータ、という文字列が登録されている。
これって、ひどくないか?マズくないか?
2008年02月06日
Googleイメージ検索
ガラスエポキシ基板(FR-4)の、レジストがないやつの色を調べたくて、写真がないかな、と探すとき、もしかして、と思ってGoogleイメージ検索をしてみたら、あるある。
Googleイメージ検索って、アイドル画像だけじゃないんだね。
2007年12月27日
PSoC First Touch
なんとなくPSoC First Touchを衝動買い。
開発をPSoC Expressでやれば、コンパイラを買わなくてもすむわけだ。
ちなみにPSoC Expressでは、素のUARTがないようなんだけど、仕様なのかな?残念。USB-UARTはあるんだけど。
2007年12月25日
オシロスコープの使い方
そういえばウチの学科の学生さんは、学生実験などで、ちゃんと習う機会がほとんどないので、とっかっかりをまとめてみた
2007年11月15日
PICkit2でシリアルEEPROM
PICkit2では、I2CなどのインタフェースのシリアルEEPROMも書き込みみたいなんだけど、結線方法がどうも見つからない。探してみたらこんな方を発見。
2007年11月13日
PICkit2
そういえば、例のコンテストでもらえたPICkit2、Device Support Listによると、けっこういろいろ書き込んだりできるらしい。
あまりこったことをやらなければ、ICD2(浅田飴)の代わりに使えそうだな。
PIC10Fマイコンのコンテスト(作品)
6月ぐらいに入選していたPIC10Fマイコンのコンテストで、手元に応募書類をみつけた。4つのうち、↓これが入選していたらしい。
----
本システムは、ミカンなどの果物の表面にとりつけられ、その果物の糖度や鮮度などをリアルタイムに表示する機能をもつ。本システムは、PIC10F222、果物内に挿入する2種類の金属電極、糖度や鮮度などを測定するセンサ、および情報を表示するLEDから構成される。果物内に挿入される金属電極の間に、果汁が電解液となって生じる起電力を本システムの電源として用いるため、本システムにはバッテリは不要である。また果物の表面や内部に取り付けられるセンサによって糖度や鮮度など果物に関する情報が取得される。それらの情報は、LEDによって表示される。本システムは、用いるセンサの価格次第では使い捨て型とすることも可能である。
2007年11月07日
ARM7の割り込み
LPC2888とか、以前購入していたEZ-ARM7(LPC2214)の割り込みに関する調査。
けっこう複雑。http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/ などのサンプルを参考にする。(ちなみにオプティマイズのユーザ掲示板もあるようだ)
gcc向けのソースの書き方の手順は以下のとおり。
・VIC (Vectored Interrupt Controller)の設定
- VICIntSelect = 0x00; // すべての割り込みをとりあえずIRQとして使う
- VICIntEnable = 0x20; // 使いたい割り込みを許可(例えばTimer1なら、VIC Channelが#5なので、5ビット目を1(0x20)にする
- VICVectCntl0 = 0x25; // IRQ slotの0番目(優先度=最高)をEnableにして、割り当てるVIC Channelの番号(この例ではTimer1の5)を設定
- VICVectAddr0 = (unsigned long)Timer1_ISR; // IRQ slotの0番目の割り込み処理ルーチンのアドレス(関数名から逆算される)を設定
・割り込み処理ルーチンでするべきこと
- 割り込み関数自体を、IRQモードで実行する(つまり終わったらスーパーバイザ戻れ、ということか?)ため、__attribute__をつけて、次のように宣言する。
void __attribute__ ((interrupt("IRQ"))) Timer1_ISR(void)
- 割り込みフラグのクリア(Timer1なら、T1IR = 0x01;)
- VICVectAddr = 0xff; // VIC priority hardwareをクリアする、というおまじないらしい
・割り込みベクタの設定
IRQ割り込みがおこると、0x18番地にジャンプするので、ここに、以下の命令を書いておく。
---
LDR PC, [PC, #-0xff0]
---
これが0x18番地に書いてあるので、実行時のPCは0x20になっている(パイプライン処理の関係)。そのPCから0xff0をひいて0xffff f030番地の内容(実はVICVectAddrレジスタの内容)をPCにストア。VICVectAddrレジスタを読むと、いま起こった(中で優先度が最も高い)割り込みに対応するVICVectAddrx(x=0〜15)の値が読み出されるので、結果としていま起こった割り込みの処理ルーチンのアドレスがPCに入り、割り込み処理ルーチンへジャンプ。
・CPSR (Current Program Status Register)の設定
HRAさんのARM奮闘記からの情報で気づく。(よく読めば、アプリケーションノートAN10254のサンプルコードにもちゃんと書いてある。ちゃんと嫁>自分)
このレジスタで、FIQとIRQをそれぞれ許可・禁止を設定する(見落としがち)。CPSRは、アセンブラ命令を使わないといじれないので、以下のようなコードをスタートアップルーチン中に記述(あるいはasm()でもいいのか?いや、SPの初期化ができないからだめだな)。CPSRの7ビットめをクリアするとIRQが許可される(負論理)。ちなみにFIQは6ビット目をクリアすると許可。あわせて、スタックポインタ(SP)の初期化を、スーパーバイザモード、IRQモード(や、それ以外も使うならそれぞれ)に対して行う。(ARM7は、各モードで別々のSP(r13)を持っている)
----
ldr r3, ?? (__stack_end__などのアドレス) // スタック領域のお尻のアドレスをとりあえずr3に
msr cpsr_c, #0x13 // スーパーバイザモードに移行
mov sp, r3 // スーパーバイザモードのSPの設定(初期化)
sub r3, r3, #512 // 次に備えてSPを減らす(この512が、今のモードで使えるスタック領域のサイズ、ということになる)
mrs r0, cpsr // CPSRの値をr0に読み出し
bic r1, r0, #0x1f // まずはモード設定をクリア(bicは、即値で1のビットを0にする)
orr r1, r1, #0x12 // r1をIRQモードに移行するCPSRの値に設定
bic r1, r1, #0x80 // CPSRでIRQ割り込みを許可する値に設定
msr cpsr_c, r1 // r1をCPSRを(IRQモードに移行する)
mov sp, r3 // IRQモードのSPの設定(初期化)
msr cpsr_c, r0 // さっきのモード(スーパーバイザモード)に移行(戻る)
----
2007年11月06日
PSoCのアナログref電圧
いまさらながら、PSoCでD/Aコンバータを使おうとして、一瞬迷ったので、備忘録。
アナログ回路ブロックの「参照電圧」(というか出力の範囲)は、RefMuxで選ぶ。
・Vdd/2 +- BandGap だと、Vdd/2 - BandGap 〜 Vdd/2 + BandGap の範囲。
・Vdd/2 +- Vdd/2 だと、Vss(0V) 〜 Vdd の範囲。
など。
(ちなみにBandGapは約1.3V)
2007年10月30日
LPC2888(続続)
今日も合間をみて、LPC2888。
I/Oポートの1ビットを変えるだけで1us近くかかる件。でてくるアセンブルコードは、EWBのProjectのOption内の、C/C++ Compiler→Listの、Output list fileをチェックすればOK。
MODE0_2_bit.P2_1 = 0; という1行が、次のようなアセンブルコードになっていた。
----
MOV R0,#-2147483632
ORR R0,R0,#0x3080
MOV R1,#-2147483632
ORR R1,R1,#0x3080
LDR R1,[R1, #+0]
BICS R1,R1,#0x2
STR R1,[R0, #+0]
----
これはすごい。ありえないぐらい冗長。と思ったけど、asm()で直接アセンブルコードを書こうと思っても、なぜかMOVでは、即値で0x80003090などを代入できない(out of rangeと出る)ようだ。なんでだ?
それはともかく、LPC2888のIOポートは、特定ビットだけをset/resetするためだけのレジスタというのがある、不思議な構成になっているので、そいつを使ってみる。
MODE0S_2 = 0x02; としたら、次のようになった。
----
MOV R0,#-2147483628
ORR R0,R0,#0x3080
MOV R1,#+2
STR R1,[R0, #+0]
----
さっきのよりはまし。これで500nsぐらい。それでもやっぱり1命令あたり100ns以上かかっている。なんでだろう?cacheをonにしてないから、こんなものなのか?
次。UART。こんな関数を書いてみる。
----
void UARTinit()
{
LCR = 0x83; // enable access to Divisor
DLL = 78; DLM = 0x00; // (12MHz/16) / 78 = 9600bps
LCR = 0x03; // N81
MODE0_6 = 0x0f;
MODE1_6 = 0x0c; // TXD(P6.1) & RXD(P6.0) enabled
}
void UARTputc(unsigned char d)
{
while(_LSR_bit.THRE == 0); // wait for transmission ready
THR = d; // transmit data
}
unsigned char UARTgetc()
{
unsigned char d;
while(_LSR_bit.RDR == 0); // wait for data receive
d = RBR;
return(d);
}
----
ポーリングだし、ブロッキングだし、あまりスマートではないが、とりあえず動くようだ。
次。内蔵RAMからの起動。LPC2880/2888 Product datasheet Rev.3(概要っぽやつ)の6.1.4 On-chip ROMの記述によれば、
----
6.1.4On-chip ROM
The LPC2880/2888 includes an on-chip ROM that contains boot code. Execution begins in on-chip ROM after a Reset.
The boot code in this ROM reads the state of the mode inputs and accordingly does one of the following:
1.Starts execution in internal flash
2.Starts execution in external memory
3.Performs a hardware self-test, or
4.Downloads code from the USB interface into on-chip RAM and transfers control to the downloaded code
----
とある。USBからのDL、というのは、この4.のことで、いったん内蔵RAMにDL後、それを実行(きっとここに内蔵Flashへの転送が書いてあるのが*.ebnなんだろう)、とある。ならば、例のflash書き込みツール(MassDFU)というのは、実は内蔵RAMへの転送ツールなんだろうか?
淡い期待を持ってiRAMでつくったやつをそのままMassDFUで書き込んでみるが、もちろん動作せず。がっくし。ここは、しばらくあきらめるか。
次。外付けDRAM。案の定、こいつも含めて、もろもろ初期化がlow_level_init()に書いてあり、それがcstartup.sから、mainの前に実行されている。
たしかに、unsigned char *p = (unsigned char *)0x30000000;みたいにポインタを宣言しておくと、p[0]や*pなどでアクセスできようだ。めでたい。
2007年10月29日
LPC2888(続)
今日も、あまり時間は取れないながら、合間をみて、LPC2888をつつく。
デフォルトはCPUコアの動作周波数が12MHzのようなので、上限の60MHzまであげてみる。board.hというヘッダファイルに、SYSCLKとして書いておけば、スタートアップルーチン(cstart.s)で、これを使ってPLLを初期化をしているようだ。どうも、標準でついているサンプルが非常によくできているやつっぽく、外付けDRAMの初期化も、標準でちゃんとやっているっぽい。明日、確認してみよう。内蔵RAM領域での実行がまだできていないが、まあ追々。
しかしコアを60MHzにしても、ただI/Oポートの1ビットの値を変えるするだけで、1us近くかかる。なんでこんなにかかるんだろう。LPC2888のデータシートを読む限りは、特にI/Oポート操作にウエイトがかかる様子はないんだけど、なんでだろう。へんなコードを吐いてないか、アセンブル結果を見てみるか。
ちなみにihex→binaryの変換は、xeditでなくても、Cygwinのどれかを入れたときに入ってしまっていたobjcopyで、objcopy hoge.hex hoge.bin -I ihex -O binary と、入出力のファイル形式を明示すると、ちゃんと変換できるっぽい。xeditでつくったBinaryファイルと、最初の1バイトなどがちがうっぽいんだけど、なぜかちゃんと動くっぽい。とりあえず、当面はこれを使うか。
2007年10月27日
EWB for ARM
前日の余韻。調子に乗って、製品版のARM用EWBの価格を調べてみる。
フル機能版のEWARMと、デバッガなどを除いたEWARM-LEがあるようだ。
例えばこんなところでは、40万円ほど。
うーーーーーむ。
2007年10月26日
OlimexのLPC-H2888のブートまでの長いストーリー
OlimexのLPC-H2888に触手を伸ばしてみる。調子に乗って、ARM標準のJTAGアダプタにも触手を伸ばしてみる。
が、買ってみたら、OpenOCDからは使えないことが判明。がちょーん。事前の調査不足。
でも他のNXPのARMであるLPC21**とかだと、UART経由で書き込みができることを思い出す。
が、LPC2888のアプリケーションノートの、Getting Started(AN10548_1.pdf)によると、LPC2888はUART書き込みができない、とのこと。がちょーん。でもUSB書き込みができるらしい。
で、LPC2888用書き込みutilityがあることを知る。NXPからget(flash.utility.mass.dfu.lpc2888.zip)。
こいつの書き込みのファイル形式は、*.ebnという形式だが、
↑に付属のHostcryptv2.exeによってバイナリファイル→*.ebnに変換ができるようだ。
そこで、コンパイラ(IAR EWB)の出力ファイル形式を、*.elfから*.binに変更する。(EWBのProject -> OPtions -> OutputConversion / Output format: intel-standard (*.hex)をチェック
*.hexまでこれば、xeditなどで*.binに変換できる。
早速、EWB付属のsampleのLPC-H2888用の、LEDが点滅するサンプルをmakeする。Getting Started.hexができる。こいつを*.binに変換後、*.ednに変換。
早速、LPC-H2888をUSB接続し、↑の書き込みUtility(MassDFUApplication.exe)を起動するが、Bus Topology上に現れず。そういえば、USB接続したときにドライバも要求されない。
そういえば、と思って、LPC-2888のデータシートのChapter3: Boot Processを読み返すと、デフォルトは内蔵Flashからの起動、で、USBからの書き込み時には、P2.3/Mode2ピンを1にして電源を入れないといけないことを発見。
Olimex LPC-H2888で、このピンはどこだ?と探すと、回路図によれば、R16をショートさせればよいようだ。どこだ?と探すと、基板の裏側の、部品がついていないR16のところをショートさせればよい、ことになる。残念ながら、ショーtピンのようなものは立っていないので、ジャンパ線を半田付けし、クリップでつまむようにする。ちゃんとやるときは、ショートピンかなにかを立てたほうがよさそうだ。
このR16をショートさせて、USB接続すると、めでたくドライバを要求される。なぜかドキュメントに出ているデバイス名と異なる名前が出てくるが、↑のUtility内にあるドライバを指定すると、予定通り"USB Device with DFU Capabilities"となる。めでたい。
この状態で、書き込みUtilityを起動して、Bus Topologyを設定すると、めでたくデバイスが見つかるので、↑の*.ednを指定し、Programモードに移って、自動書き込みを指定すると、めでたく書き込まれる。デバイスをはずせ、といわれるので、いったんはずし、R16のショートをはずして内蔵Flash起動モードにして、再度USB接続(給電)するが、LEDが点滅しない。なぜだ。
もしや?と思い、EWBに戻ると、Projectの設定が、iRAMになっている。きっと内蔵RAMのことだろう。プログラムが内蔵RAMに入っていては、電源をいったん落としたら消えてしまうから、動くはずがない。
そこで、Projectの設定をiFlashに変更し、再度make→*.hex→*.bin→*.ednと変換し、再度書き込み。書き込み後、R16のショートをはずしてUSB接続をやりなおすと、LEDが点滅。めでたい。
もしかして、と思って、内蔵RAM用の*.ednを書き込み後、電源を切らずに内蔵Flash起動モードにしてLPC-H2888のリセットを押しても、残念ながら動作しないようだ。この部分は、今後の課題としよう。
ふう。つかれた。
2007年09月06日
締切ドリブン設計
締切ドリブン設計、というか、締切ドリブン製作。
おかげでだいぶ進んだ。
でもまだ半分。
以前書いたファームウエアで、致命的なミス(バレない場合も多し)を発見。なおさねば。これは週末かな。
2007年08月27日
昔、H8OSと呼ばれていたもの
16MbぐらいのDRAMがついていて、OSなしでつつけて、LANがついていて、そこそこ安価なボード、を探していて、ふと、秋月の三岩ボードを思い出した。
なんとなく敬遠していて、最近ぜんぜん見ていなかったけど、昔H8OSと呼ばれていたものも、だいぶ進化しているようだ。
こちらに、非常に心強いチュートリアルもある。
ちょっと怖い気もするけど、久しぶりにちょっと触ってみるか。
2007年08月04日
PSoCの処理能力
あらためてPSoCのデータシートをよく読んでみると、クロックが24MHzのとき、小さい文字で、処理能力は4MIPS、と書いてある。
ということは1命令6クロックということ?信じられん・・・
なんでそんなにショボいMCUなんだろう?
もともとPSoCは、周辺で多くのことができちゃうから、MCUはオマケ的、ということか?
2007年08月02日
PSoCのUART受信割り込み
PSoCの受信割り込みまわりで1日つぶす。
PSoCのUART受信は、標準だと、コマンド入力のようなCR末端文字列が受信されると発生する割り込み、しかない。
そこでここあたりを参考に、UART受信割り込みをハックする。
要は、
・1バイト受信するとRX8_ISRが呼ばれるので、それを普通の割り込み関数のように処理関数を書く
・RX8_bReadRxData() で1バイト受信。
ということ。
しかし、予想以上に割り込みのオーバーヘッドが大きいようだ。っていうかCで書いたPSoCのプログラムって、やけに実行遅くないか?
CPUのクロックはSYSCLK/1=24MHzなのに、1バイトをバッファに読み込むだけ、で6us近くかかる。そういえばこのとき、デバッグ用にIOポートをいじるのにLEDモジュールを使っているんだけど、これはただ単にIOポートのレジスタをいじるだけじゃないのか?もしかして関数呼び出しでもしているんだろうか?
IOポートのレジスタを直接いじってデバッグしてみるか。
2007年07月20日
(備忘録)Xilinx ISEでConfigPROM
備忘録。
FPGA用のConfigPROMのファイルは、iMPACTからつくれるが、ISEの中から起動したiMPACTだと、どうも作り方がみつからない。
とりあえず単体でiMPACTを起動し、PROM FormatterでMCS形式で生成する。
メモリIP
強引に16K個のD-FFを使っていた回路を、メモリ(Dual-port RAM)IPに変えてHDL書き直し。同期式メモリ、というのを使い慣れていないので少々難儀するが、なんとかOKっぽい。
Implementにかかる時間が、8時間ぐらい→30秒ぐらいに短縮。なんじゃこりゃ。
しかし、同期式回路だと、ステートマシンって、よく使うね。
2007年07月19日
定点カメラへの道(続続続続)
SDカード内の設定ファイルの書式を変更したり、RTCをバッテリバックアップできるように変更したりする。
と、どうも2回目の画像取得時に、カメラの初期化で止まってしまう現象が発生。
カメラのデータ送受信のところはまったくいじっていないはずなのに、なんでだ?
デバッグ用のUART書き出しをたくさん入れて動作を追うと、ACKが返ってくるはずのところでタイムアウトしてるっぽい。もしかしたら画像サイズを、設定ファイルで指定できるようにしたので、画像サイズが変わると、初期化にかかる(=ACKを返す)タイミングが変わるんだろうか。とりあえずACK待ちをなくして、だいたいよさそうになるが、どうも再現性が薄い。このUART書き出しコードをたくさん入れると、止まらなくなったりする。なんでだ?
とりあえず現時点で、止まらないっぽいので、10分間隔で連続運転試験開始。
しかし、だいたいのデバイスは、データシートをしっかり読んだつもりでも、一発で動くことがあまりなく、だいたい数日間は戯れないといけないことが多い。一種の儀式なんだろうか。
(備忘録)Xilinx ISEでRAM生成&sim&初期値
備忘録。
Xilinx ISEでRAMをIPとしてつくるには、CORE Generator単体で起動するのではなく、Project Navigator内から、プロジェクト内の新規ファイルとしてIPを指定して生成。
simは、そのままやればいいっぽい。
RAMの初期値は、RAMのIP生成時に*.coeというファイルで指定できるが、これはCORE GeneratorのTools→Memory Editorでつくる。(CORE Generatorで適当なプロジェクトを開いた状態で)
2007年07月13日
定点カメラへの道(続続続)
カメラからのデータの長さがある条件になるときに止まることが判明。デバッグコードを入れて様子を見て、バグをみつける。大丈夫そうな雰囲気。
ついでに消費電流を測ってみると、動作時は80mA近いが、待機時は0.8mAぐらい。SDカードをぬくと0.6mAぐらい。予想よりちょっと多いけど、カメラが標準で待機時0.1mAなのが、実際にはちょっと多いのかな。
PSoCのデータの書き込みは、ある程度予想していたように、かなり遅い。15KBのデータをカメラから115.2kbpsで読み出しながら書き込むので、40秒ぐらい。1KB/sいかない。まあこんなものなのかな。
とりあえず30分間隔で、連休中、連続稼動実験。
2007年07月12日
定点カメラへの道(続続)
いよいよタイマで定期的に取得をする。
ときどき、カメラをつつくところでとまることがあるっぽのが気になる。
デバッグ用にUARTで何か送るようにすると、あまりとまらないっぽい。
適度にウエイトがかかって、いい、ということなんだろうか。
とりあえず一晩連続稼動開始。
2007年07月11日
定点カメラへの道(続)
引き続き、定点カメラの仕込み。
どうも書き込みができないと思って、ファイル名をいろいろ変えてみたら、PSoCのSDCardモジュールでは、ファイル名の先頭が数字(0〜9)のファイルは書き込み用にひらけないようだ。(fpがMAXFILESになる)
なんでだろう?バグなんだろうか?
とりあえずファイル名の先頭を数字にならないように修正して、時刻をファイル名にして記録ができた。
あとはタイマ割り込みか・・・
2007年07月10日
定点カメラへの道
SDカードの書き込みがうまくいった。どうも書き込んだファイルのサイズは正しいのにちゃんと閉じていないらしい、という、よくわからない状況なので、思い切ってSDカードを替えてみたら、あっさりうごいた。
というわけで、単体で初めてのSDカードに保存したcapture画像。
あとはタイマと連動。
2007年07月09日
作業日誌(SDカード)
いよいよSDカードをつつく。
初期化に結構時間がかかるようだ。クロックを上限の4MHzにすると少しは速くなるんだろうか。
ファイルを読むのはいけるが、書き込むのが、どうもうまくいかない。SDカードをフォーマットして再チャレンジ。
2007年07月06日
PSoCもろもろ
久しぶりに、PSoCをちゃんといじる。
割り込みをちゃんと使うのは初めてのような気がする。
タイマ割り込みって、どうやってかけるんだろう?と思って調べてみたら、情報をまとめている方をみつける。そのタイマを配置してあるデジタルブロックに対する割り込み、として指定するらしい。
2007年06月28日
小型定点カメラとか行き先表示板とか
小型定点カメラをこまめに進める。RTCまわりは、だいたいOK。
PSoCのI2Cモジュールは、割り込みを許可しておかないといけない、ようだ。
続いて、例のカメラをつないでみるが、どうもうまくいかない。書き込み自体がNGになってしまう。もしかしてこわれたのか?
まあだいたいこうときは、なにをやってもだめで、あしたになったら、何事もなかったようにうまくいくこともあるわけで、とりあえず今日はここまで。
研究室内の行き先表示板の電子化について、あれこれ、皆で考える。
こういうことを普段から考えるような雰囲気は、マイコン部などのおかげなのかな。いいことだ。
2007年06月27日
PIC10Fマイコンのコンテスト
入賞したらしい
賞品って、なんだっけ。
4つ応募したんだけど、どれがあたったんだろう?
2007年06月18日
PRoC再再再チャレンジ
修正版PRoC基板が来たので、再再再チャレンジ。
あっさり書き込みはできたので、通信をしようとすると、1バイト送信するのところで、どうもリセットがかかっているようだ。
何でだろう?と思いつつ、サンプルコードと同じように2バイト送信してみたら、あっさり動作。
1バイトだけの送信はできない、ということなんだろうか。へんなの。
2007年06月13日
工作日和
午前中、工作室で、工作。
ドリルで穴あけ、ハンドニブラーとやすりでで角穴あけ、など。
途中、別件でやってきた先生と、ものづくり談義。
自分たちより少し下の代の人たちは、いわゆるファミコン世代で、ものづくりの経験が薄いが、そのもう少し下の、いまの20代前半の人たちは、いわゆるミニ四駆世代なので、手を動かしてものをつくる経験が多い世代なんだということを聞いたことがある。
でもそこの研究室の学生さんは、はんだ付けが下手(というか、センスがない)とか、圧着するタイプの端子でも、ぜんぜん圧着できていない、というか、根本的に、モノを触っている感覚が薄い、みたいな話。そういうもんなんだろうか。
午後、久しぶりにMIDIの続き。なぜかチャンネル0のMIDIメッセージに反応してくれなかったり、以前どれだけがんばってもウンともスンともいわなかったYAMAHAの音源が、あっさり音が出たり。
ちかれた。
2007年06月07日
小型定点カメラをつくってみる
思いつきネタ。
シリアルでつつくとVGA解像度のJPEG画像がとれるという奇特なモジュールを使って、SDカードに定期的に画像をとりこんでいく、いわゆる定点カメラを、ふと思い立って作ってみることにする。
最近のPSoC(CY8C29****)は、SDカードを直接つないで、FATでファイルを読み書きできるユーザーモジュールがあることを、つい先ほどまで知らなかった。いろいろ遊んでいる方もおられる世の中便利になったもんだ。
ついでに
秋月で売っているRTCもつないで、時刻も記録してみる。
RTCの消費電流が1uA以下、PSoCもSLEEPに入れておけば10uA以下、カメラもスリープにいれておけば100uA程度のようなので、RTCで定期的に割り込みでWake-upするようにしておけば、電池(単3x2本)だけでもけっこうもつんじゃないだろうか。
サイズは30mm角ぐらい。
2007年05月31日
備忘録: ModelSimでシミュレーション
ModelSimするときの備忘録。
・テストベンチもVerilogで書く(波形を編集はできないっぽい?)
・New ProjectでSimlulationをつくり、回路とテストベンチの*.vを追加
・ファイルは自動的に保存されない
・コンパイルは自動的に実行されない
・→シミュレーション開始前に、ファイルを保存し、コンパイルを忘れずに。
※QuartusII付属のシミュレータは、シミュレーション終了時刻をあとから変更できない(のか?)などあるので、本格的なシミュレーションには不向きっぽい。
2007年05月30日
小型のカメラ
いろいろ歩いて、こんなのを発見。
シリアルでつつけて、JPEGデータが出てくるカメラらしい。
微妙に使いでがありそうなないような・・・
小型の発振器
ふと思い立って、小型の発振器について考える。
表面実装の小型のやつでも、水晶発振器だと5×7mmぐらいまでっぽい。
で、発想の転換。以前から秋月で気にはなっていた、LTC1799なんてのはどうだろう。
精度はソコソコだが、外付け部品が抵抗1個だけ、最高33MHz、しかもSOT-23パッケージなので、3mm角(+抵抗)ぐらい。
なかなかいいんでないかい。
Digi-Keyでも売っているようだ。
2007年05月25日
同期回路の設計(続)
昨日に続き、同期回路の設計。
結構細かいタイミングに気を使う。
っていうか、順序回路の動作のタイミングというものが、イマイチしっくりこない。
2007年05月21日
作業日誌(続)
先週の続き。555の発振回路のジッタは、かなり小さいようだ。(オシロではふつうには計測不能)
ところが、別のパルスをトリガにして、そこから一定幅のパルスを作りたいときには、結局、最初のパルスと同期をとらないといけないわけで、そのパルスをトリガに555の発振を始めさせてもいいんだけど、起動が遅そうだし不安定そうで、やはりダメ。
というわけで、別の方法を試みる。やはり2重でトリガ、か。
2007年05月18日
PIC10Fマイコンのコンテスト(続)
引き続き頭をヒネってみる。
先日2つ投稿。さらに2つ投稿してみる。
あそこまでマイコンが小さいと、電源もポイントになりそうだ。
2007年05月17日
小型バネ
ふと小型のバネがほしくなる。
こんなサイトをみつける。
小型磁石
ふと小型の磁石がほしくなる。
こんな通販サイトをみつける。
2007年05月16日
作業日誌
ワンショットマルチの74HC221で、可変幅の単発パルスを出す。
が、思ったよりパルス幅がバラつく。ヘタをするとパルスごとに100usぐらいバラつく。
こりゃいかん。
というわけで別の方法を考える。
安定性の比較的高い、小さいR・Cで555の発振回路をつくって、カウンタで分周してみるか。
比較的小さいR・Cでの555の発振回路って、どれぐらい周波数がバラつくんだろう。(要はジッタがどれぐらいか、ということなんだけど)
2007年05月15日
多チャンネル同時計測型A/Dコンバータ
まああるだろうね、とは思っていたが、LTC2351-12あたりにあった。しかも差動入力、6ch。
ダメもとでサンプルをリクエストしてみる。
ふりかけマイコンコンテスト
PIC10Fデザインコンテストというものが始まっていることをしる。
ちょっくら頭をヒネってみるか。
2007年05月08日
MIDIをいじる
やっと時間がとれたので、MIDI機器をいじる。
オークションで入手した、YAMAHAのMU-10をつつくが、うんともすんともいわない。
探したら、手持ちのRoland CM64が見つかったので、こいつをつつくと、あっさり音がでる。ほう。
しかしMU-10は、なんでうんともすんとも言わないんだろう?
電源ON時で、ノートonすれば、とりあえず音はなるはずなんだが・・・
MU-10は、制御方法を選べるので、ちゃんとMIDIを選んで、MIDI-inにつないでいるんだけどなあ。CM64がいじれるということは、物理的なMIDI信号自体は間違っていないはずなんだが・・・はて。
もしかして、GM音源として初期化しないといけないのかな?と思って調べてみると、初期化シーケンスがあるようだ。明日ためしてみよう。
ついでにGM2とかXGへの初期化シーケンス、というものもあるようだ。
2007年05月01日
1GBくらいのCFカード
1GBくらいのCFカードを探してみるが、3000円程度。
一方、同じ1GBでも、SD、miniSD、microSDだと、1500円程度からある。
で、実はSDからCFへの変換アダプタというのがあるわけだけど、これが案外高い。
結果として高くなっちゃうけど、使い回しがきくし、これもいいのかなあ。
2007年04月24日
PRoC再再チャレンジ(続)
とりあえず水晶やアンテナまわりの部品を実装して、通信テスト。
とりあえずのデータ通信はできているようだ。(ちなみに通信速度はデフォルトの64kbps)
ただ、アンテナ周りの設計がいいかげんだからか、あまり飛ばないようだ。数m、というところか。
それともパスコンが少なすぎるのかな・・・(データシートだと0.1uF×7個+
10uF×1個がついているようだけど・・・)
とりあえず10uFをつけてみるか。
2007年04月23日
PRoC再再チャレンジ
PCBCARTからの基板の第2弾が届いたので、PRoCの再再チャレンジ。
18番ピンをVDDにつなぐのを忘れているという大ポカをしていて、ジャンパをとばす。
書き込みモードをResetになおして、無事書き込み完了。
次はXtalをつけて無線通信をやってみよう。
2007年04月20日
MIDIの規格(続)
MIDIの規格を読んでみるが、電気的特性の仕様がよくわからない。
受ける側はフォトカプラで受けるということだから、電圧振幅の仕様は決まっていない、ということか。
この回路図のMIDI-Outのところをみると、DIN5の4番を220Ω経由で+5V、5番を220Ω経由でUART直結、でよい、ということか。
MIDIの規格
ふと、MIDI音源をまいこんでいじってみたくなる。
詳細な解説を発見。
ついでに、マイコンでMIDI音源を作っている方 々を発見する。
シリアルの通信速度は、31.25kbps or 38.4kbpsということらしい。
そういえば、こういうハンパな数字だった。
ついでにDIN5コネクタの配置。midi.org なんてのがあるんだね。
2007年04月10日
基板製造 in Bulgarija
以前よく使っていた、Olimexに、久しぶりに発注をしようかと考えてみた。
が、どうもレスポンスが悪い。
データを送って、丸2日後ぐらいに、エラーがある、という返信があることも多い。
結局、もう2週間近くたっているのに、まだデータ受付すら終わっていない。
忙しくなってきたのかな。
そろそろ潮時か?
2007年04月09日
PRoC再チャレンジ
先日のPCBCARTの基板が無事届いたので、それで作ってあったPRoCに、再チャレンジを試みることにする。
で、前回の敗因を分析。パターン間違いのほかに、水晶まわりが、あやしい。
Application Noteをあさってみると、水晶のセレクションガイド(AN5034)というのがあったのを見落としていた。ざっと読んでみると、水晶の負荷容量のことが書いてあって、標準で10pF、とある。
標準回路図では、水晶がPRoCに直結されていたので、この負荷容量はPRoCの中に直結されているのかと思っていたんだけど、もしかして外付けしないといけないのか?
2007年04月06日
(小ねた)拡張できるLEDディスプレイ
マトリクスLEDとマイコンを仕込んだ基板の、上下左右の4箇所にコネクタがある。
1個だけだと、その中で点が往復する(WMV:83KB)けど、
2個つなげると、その中で点が往復する(WMV:129KB)ようになる。
理屈の上では何個にでも増やせる。
さて、広大(かつサイズ可変)なLEDディスプレイで、何をやろう。
まあ、小ねた。
基板製造 in China(続)
先日基板製造を発注した中国のPCBCART。
発送予定日が4/17だったのに、予定より11日も早く、4/6発送、とのこと。
データ送付から9日間(7営業日)しかたっていない。
どんな納期の設定なんだ。
中国の奥ゆかしさは計り知れない。
2007年04月05日
秋月電子の営業日
秋月電子@秋葉原が新装開店にともない、無休になったようだ。
これで、月・木が秋葉の厄日、というのが、少しよくなった。
2007年03月29日
基板製造 in China
小ネタ基板のqueueがたまってきたので、はじめて、PCBCARTに発注してみる。
中国の会社で、初期コストが32ドルほどかかるが、単価は安い。レジストの色をいろいろ選べる、など。
PCBEデータは受け付けてくれないので、grbtoolsで、gerber→RS274Xに変換。
支払いを済ませたあとでデータを送る、という手順なんだけど、それってなんかへんだな。もし作れないデータだったらどうするんだろう?
とりあえず送ってチェック待ち。
2007年03月19日
SMDの半田付け
ドライヤーみたいな工具で部品ごとあたためる方法があるらしい。
ほー。
2007年03月14日
esでBluetooth(with 自作L字コネクタ)→ペンの改造
昨日の情報に基づき、es用のUSBホストケーブルを製作。mini-B側の4番と5番をショートさせることで、あっさり解決。
こんな感じ。先日の市販のL字コネクタよりはかなりでっぱりが小さい。
拡大するとこんな感じ。ペンを取り出せない、という致命的な問題があったので、隙間を利用して、ペン取り出しツマミを動かすように、プラ板をはさんでみた。が、予想通り、すぐに外れる。
ペンの頭をちょっと出っ張らせれば、取り出しやすいのでは?と考え、転がっていたタッピングねじを埋め込む。出っ張りは気にならない程度で、なかなか取り出しやすい。
2007年03月12日
esのUSBホストケーブル(続)
USB miniAコネクタについて調べていくうちに、こんなページに行き着く。
ふむ。こういう結線になっているのか・・・
2007年03月02日
esのL字一体型USBホストケーブル
esのUSBホストケーブルの、L字型のやつがあったけど、微妙なでっぱりが気になったので、自作してみた。
上がUSB受け口、右下のでっぱりがes側。
物理的にこれ以上は小さくできないだろう。
ただ、↓のようにes側のコネクタがmini-Aではないので、残念ながらまだ使えない。mini-Aのコネクタを探してこよっと。
PRoCの基板をつくってみた
以前から気になっていた、PRoCを載せる基板を作ってみた。
アンテナ部分は、ApplicationNoteのまねっこ。
13MHzという変態的周波数の水晶は、例の特注水晶。
デバッグ後には、水晶のすぐ左あたりの縦線で分割して、モジュール面積を小さくすることもできる。
まずは火入れ、ですな。
USB mini-Aコネクタ
W-ZERO3のUSBホストケーブル(の小型のやつ)を自作しようかと思って、部品をそろえてみる。
es側は、とりあえずmini-Bコネクタでいいだろう、と思っていたのだが、どうもうまくいかない。うまくいかない、というか、+5Vが出てこない時点で、物理的な接触すらうまくいっていないようだ。
で、いまさらながら、USB OTGのコネクタについてちょいと調べてみると、USB OTG、つまりUSBホスト側のminiコネクタは、普通のUSBケーブル(A-miniB)のコネクタ(mini-B)とは違って、mini-Aという規格らしい。
esみたいに、USBホストにもUSBターゲットにもなる機器のためには、mini-Aもmini-Bも両方ともささるように、mini-ABという受け口(receptacle)もあるらしい。
へー。
というわけで、mini-Aプラグを探さないと。
2007年03月01日
ボトムアップ的な電子工作、という考え方
電子工作の面白みについて、ちょっと考えてみる。
よくありがちなのは、キットを作るタイプのもので、マニュアルと部品があって、手順どおりに作っておしまい。だいたい、作ったものは、使わないし遊ばない。
次にありがちなのは、まずはこんなマイコンがあって、こんな機能があるので使ってみましょう、的な解説。くっつけるのはスイッチだったりLEDだったり。だいたい、できあがるものは、つまらない。勉強にはなるけど。
これらを、仮にトップダウン的な電子工作、と呼ぶことにする。
これらをふまえたうえで、実際に必要とされる手順は何か、と考える。
だいたいは、まず作りたいものがあって、それをどうやって作るか、に頭をひねるわけだ。
例えばPlayStationのコントローラがある。こいつをマイコンでつついて、何かを動かしてみたい、と考えるとする。つまり素材があって、その料理法を考える、わけだ。
手持ちの料理法(自分が使い慣れたマイコン・デバイスを使う)でもいいし、新しい料理法(未知のマイコン・デバイスを使う)にチャレンジするのもいい。
当然、その料理のためには、いろいろと調べることが多い。コントローラのプロトコルとか、マイコンのプログラミングとか、さらには電源回路とか。
これを、仮にボトムアップ的な電子工作、と呼ぶことにする。
いままでの電子工作には、この、ボトムアップ的要素が、少ないんじゃないだろうか。
もちろん、このボトムアップ的電子工作を、趣味でやるのは、いい。
でも、講習会とか演習とかでやるのは、たしかに指導者には多大な労力がかかりそうだ。
しかし、たとえばこういう実施方法はどうだろう。
まず、素材を、ジャンクの山や雑多な部品箱から、自分で面白そうなものを探す。例えばヘンなスイッチでもいいし、ヘンなランプでもいいし、マトリクスLEDでもいいし、液晶モジュールでもいいし、なんかのセンサでもいいし、PlayStationコントローラでもいいし、モータでもいい。
次に、そいつをどう料理するか、を、自分で考える。まわりとdiscussionするのもいい。例えばこのスイッチで、ここがこう光るようにしよう、とか。
そして、ある程度のコアな回路は、みんなで共通化しておく。例えば使うマイコンとコンパイラをそろえる、とか、電源は同じACアダプタ、とか。これに関するlectureや演習をやる。
続いて、インタフェースの回路を考える。これはいろいろ調べたり、アドバイスを受けたりしながら。例えばセンサの出力の取り込み方法とか、コンデンサアンプの増幅回路とか、モータの駆動回路とか。
最後に、全体を設計し、回路もプログラムもつくり、デバッグしながら、完成。
時間はかかりそうだけど、ある程度じっくりやるのが許されるのであれば、こういうボトムアップ的な電子工作は、なかなか面白いし、ためになるんじゃないだろうか。
2007年02月18日
sparkfun
sparkfunに関するウィッシュリストを吐き出す。
で、今日届いたのだけれど、入っているはずのものが1個ない。
とりあえず問い合わせ。
業者さん経由でここに頼んだときも、抜けていたものがあって、問い合わせてもらったのだけど、送ったはずだ、の一点張りだったらしい。
今回は大丈夫かしら。
2007年02月07日
秋月改装
だそうだ。まじ?
2007年01月31日
13MHzの水晶
早速見積もりがきた。1個1000円ちょっと。案外安いかも。
2007年01月30日
PRoCのオシレータ
PRoCを使おうと思うと、13MHzという変態的な周波数の水晶がいる。
秋葉でくまなく探してみたけど、どうも見つからない。あの日米通商ですら売っていなかった。
というわけで、カスタム品を探してみる。
エレキジャック誌で、三田電波という会社を知る。
いくらぐらいなのか見当もつかないので、見積もりを依頼してみる。
2006年12月28日
PCとマイコンのシリアル接続
マイコンのデバッグをするとき、PCと、いわゆるシリアルで接続するのにどうも慣れていて、よく使う。
で、最近のPCにはシリアル(COM)ポートがないので、USB-シリアル変換機を使うわけだけど、当然レベルはRS232。で、マイコンのUARTは当然TTLレベルなので、レベル変換が必要になる。
しかしUSB-シリアル変換機の中身は、だいたいUSB-TTLレベルUART変換機+RS232Cレベル変換機、になっているわけで、TTLレベル→RS232レベル→TTLレベル、と変換していることになる。
これは無駄なので、Silicon LaboratoriesのCP2101を使って、USB-TTLレベルシリアルの変換機を作ってみた。TTLレベルシリアル側は、GNDとTXとRXだけでいいんだけど、私的な経緯で、VDD用の空きピンを含めて4ピンのコネクタ。CP2101は3V系なんだけど、幸い入力は5V-tolerantなので、マイコン側が3Vの信号を受けてさえくれれば、問題なく使える。
せっかくなのでUSB側はminiUSBコネクタにして、コンパクトにまとめてみた。けっこうイイかも。
2006年12月27日
海外の部品事情
昇圧型のスイッチングレギュレータを探して、National Semiconductorにたどりつく。
仕様を入れて部品を選んで、使う電圧などの条件を入れると、CやLなどを計算してくれ、おまけに、オススメの部品の型番まで出してくれる。
でもあまりなじみのないメーカのものがおおいので、どうやって入手すんねん、と思いつつ、ダメもとでDigi-Keyで検索してみたら、ぜんぶ在庫あり。
米国どうしだし、連携か流通がいいのかしらん。
2006年11月28日
PSoCがらみ2点
とってもいまさらながら、今月号のトラ技から、CypressのPRoCというものに、足をとめてみる。
PSoCに、2.4GHz帯SSの無線トランシーバがついただけ、といえば、その通りなんだけど、無線部分の外付け部品の少なさを見ると、ちょっと考えさせられる。
しかもSSで70チャンネルぐらい確保できるらしい。データ通信速度は70kbps程度。
いままで、お蔵入りにしてあったrfPICも、いまさらながら回路図を見てみると、無線部分の外付け部品は、予想以上に少ない。
もしかしてこれって、すごいものなんじゃんないだろうか。
残念ながらDigi-Keyを含めて扱っているところがほとんどないので、入手ができないっぽい。ダメもとで、サンプルをリクエストしてみる。
もう1つ。
これもいまさらながら、今月号のInterface誌から、USB内蔵PSoCというものに、足をとめてみる。
要はUARTの代わりに、USB-シリアル変換モジュールがついている、と思えばいい。PCからは専用ドライバでCOMポートに見える。
Pastelmagicでも扱っているようだ。
これも、なにげに、すごいものなんじゃないだろうか。
2006年11月07日
YMZ294
しばらくまえに秋月から買ってきたFM音源LSIのYMZ294。もう一人、遊んでいる人を発見。
2006年10月13日
ディジタル出力つきカメラ
節穴。いまさらながらInterface誌2006.11の記事から、秋月で売っているMTV-54K0DNを知る。
ディジタル出力のITU656出るんじゃん・・・
2006年09月02日
FM音源
秋月でYMZ294というFM音源のICが売っているのは知っていたんだけど、それを使って遊んでいる人がいた。
投稿者 akita : 16:36 | コメント (0) | トラックバック
2006年08月10日
RS422とRS485
差動のシリアル通信の規格として、RS422(EIA422)とRS485(EIA485)というのがあるけど、その違いが、いままでよくわかっていなかった。
こちらによると、1対多、と、多対多、の違いらしい。
へぇ。へぇ。へぇ。
投稿者 akita : 15:30 | コメント (4) | トラックバック
2006年08月03日
ACアダプタの電圧
秋月のACアダプタだけじゃないと思うけど、ACアダプタのAC側をON/OFFすると、ON時に、スパイクがのることがあるようだ。
3端子レギュレータの入力側のコンデンサをサボっていたら、これが原因と思われるもので、3個も壊してしまった・・・
入力コンデンサはワスレズニ。
投稿者 akita : 15:52 | コメント (0) | トラックバック
2006年07月26日
PCBEで検図
以前、PCBEを使った基板設計をまとめたけど、最後の目視チェックのとき、表面と裏面を分けて印刷するのがめんどかったので、両面基板のデータを、表面と裏面に分けて上下に並べる作業を自動化するプログラムを書いてみた。
特定の人の特定用途には便利かもしれない。
投稿者 akita : 09:38 | コメント (0) | トラックバック
2006年07月25日
基板設計
久しぶりに1日で2枚の基板設計。
挿入実装部品を使うと、自動的に足のところがスルーホールになるので、あまり配線が密でない限り、表と裏の配線を使い分けしやすくて、配線が楽チンで、いいね。
投稿者 akita : 22:28 | コメント (0) | トラックバック
2006年07月19日
まいこんのコプロセッサ
まいこん用の、浮動小数点演算のコプロセッサというのがあるんだ。
へーーーーーーーー。
投稿者 akita : 21:43 | コメント (0) | トラックバック
2006年07月12日
MRAM発売だって
MRAMがFreescaleから製品として発売になったそうだ。
不揮発メモリのクセに、readとwriteのサイクルタイムが同じ(35ns)というのが、ニクい。
投稿者 akita : 09:50 | コメント (0) | トラックバック
2006年07月06日
高性能なマイコン(続)
RenesasのSH2Aというシリーズがあって、200MHz, 内蔵RAM128KBなんだけど、こんなボードを2ch経由で発見。こりゃ買うしかないか。
投稿者 akita : 17:00 | コメント (0) | トラックバック
プロセッサ(MPU)とマイコン(MCU)
プロセッサ(MPU)とマイコン(MCU)の境界線、というのは、どこなんだろう。
祖先は、プロセッサがコンピュータ、マイコンが制御回路、ということだ。
でもプログラムを実行する、という点では、基本的な差はない。
どうも、LinuxやWinCEあたりの立派なマルチタスクOSなんかを載せられるのがMPU、そうじゃないのがMCU、というあたりに、ぼんやりと線がひけるんだろうか。
そのためにメモリ管理機構(MMU)があって、RAMもROMも外付けで、心持ち、周辺I/O(特にA/D変換器とか)が少ないのがMPU。
メモリ管理機構がなくて、RAMが内蔵されているものが多くて、ROMもFlashなんかで内蔵のものも比較的多くて、心持ち、周辺I/Oが多いのがMCU。
こんなところなんだろうか。
投稿者 akita : 16:49 | コメント (6) | トラックバック
2006年06月30日
微妙に高性能なマイコン(続)
もう少し背伸びをして、SH4かARM9あたりを狙ってみる。
SH4で240MHzぐらい。内蔵Flashがないが、外付けFlashから高速外付けSRAMに転送して実行すればよろし。
どうもMMUがないやつと、MMUがあるやつ(=Linuxあたりが動くやつ)で、動作クロックと内蔵メモリに大きなギャップがある。このあたりが、マイコンとプロセッサの差、なんだろうか。
でもプロセッサを、OSを載せずに、マイコン代わりに使っても、いいよね・・・?贅沢なんだけど。
投稿者 akita : 12:51 | コメント (2) | トラックバック
2006年06月28日
微妙に高性能なマイコン
微妙に高性能なマイコンを探してみる。
カメラから色抽出後にRAMにたまっている画像に対して、1フレームの時間内に、ある程度の画像処理をこなしたい。
OSはいらない(むしろ、じゃま)。
RAMはSRAMで、64KBぐらいつながれば十分。できればノーウェイトでアクセスしたい。
お金はあまりかけられないので、コンパイラは無料がいい。
入手できそうな範囲のSRAMのアクセスタイムが10ns程度ということで、クロックは100MHz弱、ということになる。
候補:
・FreeScaleのColdFire→CodeWarriorが30万円近い→ボツ。
・SiLabs.のC8051F200あたり→コンパイラの評価版の容量制限が心もとなく、正規版は30万円以上→ボツ。
・いろいろあるARM7-basedマイコン→かなりいろいろある。動作周波数は50MHz前後。コンパイラはgccが使える→なかなかいいんでないかい?
・いろいろあるARM9-basedマイコン→かなりいろいろある。が、SDRAMが載ってLinuxが動く、というボードばかりで、でかい→ボツ(ARM9単体で、BGAパッケージ以外があれば、基板からつくってもいいんだが・・・)
というわけで、ARM7-basedマイコンが載っているボードを、ちょっと探してみる。
・オプティマイズのEZ-ARM7 (Flash256K RAM16K 60MHz 4000円くらい)
・OlimexのLPC-H40 (Flash128K RAM64K 66MHz $50くらい):外部RAMつなげるのか?
・ほかにもOlimexで、いろいろ作っている
・DesignWaveの付録ADuC7026 (Flash64K RAM8K 44MHz ARM7):外部RAMつなげるのか?
まずはちょっとDesignWaveの付録基板から、手をつけてみるか。
投稿者 akita : 07:30 | コメント (0) | トラックバック
2006年06月25日
画像処理云々
画像処理云々。
高機能イメージセンサ、が、専門なわけですが、なかなかカラーのイメージセンサは、試作するのが大変(コネがいる、という意味で)
でも、世の中、やっぱりカラー画像を扱いたい。
そこで、試作的な折衷案。
こんなデジタル出力CMOSカメラを使って、カラー画像が得られる。(ついでにトラ技2005/2で、これを使ったデジカメ製作記事があるのを見落としていた)
そいつを閾値処理で二値化しながら、FPGAで作った回路に取り込む。RAMでもいいや。
で、フツーの画像処理では時間がかかってしょうがないけど画素並列処理向きなmorphing(画像の変形)ベースの画像処理に持ち込む。
画素並列の回路ができるんだったら、かなり高速にできるんじゃないか。
で、いろんな生画像を取って、処理系の有用性を検証すればいい。
お、なかなかいいストーリーじゃん。
というわけで、早速さっきのを購入。ついでにDigi-Keyで、Micronの500fpsぐらいとれるCMOSイメージセンサもあるので、マイ・ウイッシュリストに入れておこう。
投稿者 akita : 20:07 | コメント (0) | トラックバック
2006年06月20日
CameraLink
カメラの映像をデジタル的に取り込む信号の規格に、CameraLinkといのがある。(そのまんまのネーミング・・・)
FPGAのIPとして、このCameraLinkのI/Fも、あるんだとか。つまり自作の機器につなぎやすい。
製品はいろいろある。こんなのとか、こんなのとか。異様に解像度が高いものとか、異様にフレームレートが高いものとか、ある。お値段も、お高いようだ。
で、どうも、このCameraLinkというのがはやっているのは、日本だけみたいですな。
海外だとIEEE1394やUSB2.0が主流らしい。こういうのI/Fでも、FPGAのIPって、あるのかな。
投稿者 akita : 16:56 | コメント (0) | トラックバック
2006年06月19日
3端子レギュレータ≠理想電圧源
3端子レギュレータに、ちょっとだけ電流を吸い込ませようと思ったら、ぜんぜん吸い込んでくれない。
まあ内部回路からして無理だけどさ。やっぱ理想電圧源じゃないんだよね。電流を吸い出すほうは、結構な範囲で理想的なんだけどさ。
投稿者 akita : 21:38 | コメント (0) | トラックバック
2006年06月08日
チップ部品のサイズ
どうも前々から気になっていたのだが、チップ部品のサイズの表記には、ミリ系とインチ系があるらしい。
Digi-Keyで買うチップ抵抗などは、0402サイズ、といっても、実際には1mm×0.5mm程度あって、0402というのは、インチ表記のようだ。(0.4×2.54=1.0)
ややこしいなあ。
投稿者 akita : 05:49 | コメント (0) | トラックバック
2006年06月05日
0.65mmピッチ半田づけ量産
0.65mmピッチの半田付けの量産。
いくら細かい半田付けでも、半田付けの基本は同じ。よく暖める。これを忘れてはいけない。
米粒ぐらいの大きさの0603サイズの100kΩの抵抗32個が必要で、収納箱から1個1個拾うのがめんどくなって、とりあえず、えいや、と出して、1個ずつピンセットでつまんで半田付けしていったら、出した抵抗が、ぴったりちょうどなくなった。
ちょっと気分がいい。
投稿者 akita : 22:15 | コメント (0) | トラックバック
2006年05月31日
MSP430F2012付近のマイコン
改めて、eZ430についていた、MSP430-F2012のデータシートをじっくり読む。ポイントはこんな感じ。
○消費電流が小さい(250uA/MIPS:4MIPSでも1mAか。すごいな)
○16bitADC(Σ-Δ)がある(ものがある)(すごいな)
△RISCというだけあって、1クロック/命令(まあ最近はそういうのが多いし)
△16ビットマイコンというだけあって、汎用レジスタとかも16ビット(でもそれって便利なのかな?よくわからん)
×タイマが1つしかない(ちょっと心もとないか・・・)
×UARTがない
×14pデバイスで、I/Oが10本(電源以外に、TESTとNMIがある。NMI (Non Maskable Interrupt: 禁止にできない割り込み)があるマイコンなんて、初めて見た・・・ような気がする。CPUとしても、Z80以来じゃないかな。)
△eZ430で扱えるのはMSP430-F2xxxxシリーズ。ただしこのシリーズは14p(I/O=10本)と20p(I/O=16本)の2種類だけ。しかも20pはDIPがない。ただし両方ともQFNがある。
用途しだい、というところかなあ・・・
投稿者 akita : 14:17 | コメント (2) | トラックバック
2006年05月30日
eZ430
先日、chip1stopで頼んでいたeZ430が届く。
ぱっと見、USBメモリみたい。
サンプルプログラムは、あっさり動作。
ほう。
ちょっとデータシートを読んで、MSP430のアーキテクチャを鑑賞してみるか。
投稿者 akita : 22:41 | コメント (2) | トラックバック
2006年05月25日
i4004の概要
i4004の記事を知る。
データシートは以前にだいたい読んでいたのだが、設計思想あたりも読めて、なかなか興味深い。
歴史や古典に学ぶことは、新しいことを考えるためには重要なステップだと思う。
まさに温故知新。
投稿者 akita : 19:03 | コメント (0) | トラックバック
2006年05月23日
chip1stop
いまさらながら、chip1stopを知る。
ELISNETみたいな、部品調達サイト、ということか。
TIのeZ430も問い合わせできるみたいなので、買えるものか、問い合わせだけでもしてみよう。
投稿者 akita : 10:46 | コメント (2) | トラックバック
2006年05月16日
電流が流れすぎる・・・?
今日の午後は回路(デバッグ)三昧。
受け側は、10Vくらいの電圧を効率90%ぐらいのDC/DCコンバータ(LT1767)で3.3Vに落として、最大消費電流5mAのマイコンがつながっているだけで、他にはほとんどないのに、10Vぐらいの電圧をかけて15mAも流れる。
3.3V×5mAで16.5mW、10V×15mA×0.9=135mWだから、8倍ぐらい多いじゃないか。
DC/DCコンバータの消費電流は1mAぐらいみたいだし、いったいどこで食ってるんだ?
DC/DCコンバータの設計が甘くて、効率がおそろしく低いのか?
あ、でも消費電流が小さいと、かなり効率が落ちるみたいだな。1A近く流しているときの効率は90%ぐらいなんだけど、100mA以下だと、急速に効率が落ちるみたいだ。
3.3V100mAで85%とすると、10Vで39mA。まあこんなもんなのかな。
投稿者 akita : 22:27 | コメント (0) | トラックバック
2006年05月08日
データシート探し
マイナーな部品のデータシートを探していたら、AllDatasheetというのを発見。すごいな。
投稿者 akita : 09:24 | コメント (2) | トラックバック
2006年05月01日
電源に気をつけろ
半日、CPLDと戯れる。
予想外にスイッチングレギュレータで作った電源の電圧が下がっていることに気づいて、修正。やっぱスイッチング電源は、部品のレイアウトに気をつけないといけない。
どうも動作がおかしいなあ?書き込みができないことがあるなあ?と思ったら、これが原因だった。しかもときどき動かなくなるぐらいの、絶妙な下がり具合。
もう1つ、なぜかある出力ピンが、ほとんど無負荷なのに、Lに下がるときに1ms近くかかっているのを発見。Hにあがるときは10nsぐらいなのに。他のピンに割り当てなおして解決。出力バッファのプルダウンのnMOSがイカれちゃってるのかしら。
投稿者 akita : 21:04 | コメント (0) | トラックバック
2006年04月21日
Verilogで非同期回路
思いっきり非同期な回路を、Verilogの動作記述で書こうとして、はまる、はまる。
回路図を手で描いてから、構造記述で書いたら、あっさり完成。
やっぱVerilogは同期回路向けなんだね。
投稿者 akita : 15:22 | コメント (0) | トラックバック
2006年04月18日
メール送信ボード
PICNICと同じくTristateの製品らしい。
微妙にカスタマイズ性が低く、センサには使えない気もするけど、アラームにはいいのか。
投稿者 akita : 11:04 | コメント (0) | トラックバック
2006年04月11日
PIC10Fをつくってみる
なんだかとってもいまさらな気がするんだけど、ちゃんとしたプロセッサをHDLで書いたこと、というのが、よく考えたら、一度もない。
せっかくなので実在するプロセッサがいい。
そこで、PIC10F200あたりを攻めてみる。
命令セット(33命令)は大丈夫。メモリも大丈夫。クロックサイクルも大丈夫。I/Oポートも大丈夫。めんどいので、まずはWDTは省略。
なんかすぐできそうだな。
投稿者 akita : 16:18 | コメント (0) | トラックバック
2006年04月07日
赤外線りもこん
昔作ったことがある、解析器を発見。しかし作ったやつはどこいっちゃったのかな。またつくるか。
そういえば昔いろいろ調べた。コードはこんな感じだったなあ。記憶のリハビリ。
投稿者 akita : 08:52 | コメント (0) | トラックバック
2006年03月08日
楽しい基板設計
なんとなく気が向いたので、PCBEで基板設計するコツなどをまとめてみた。
投稿者 akita : 09:16 | コメント (0) | トラックバック
2006年02月28日
PIC10F20x漬け
今日は久しぶりに、朝から、まいこん漬けのときをすごす。
最近いじっているふりかけマイコン(PIC10F200)は、大きさは魅力的だけど、微妙にもう少し機能があったらなあ、と思うものが、割り込み。一切ないのが、ちょっと物足りない。
まあ欲を言えばきりがないわけで。
あと、手元のCCS-Cのバージョンが古いのか、できるHEXファイルが、どうもヘン。アセンブルソースを見る限り、気づいた点は以下の2つ。
・#use rs232でソフトUARTを使うと、#use fastio()しておいても、毎回tris命令で入出力ポートの設定が入る。しかも、送信ピン以外は、全部入力。なんじゃこりゃ。(0xffをレジスタに入れておいて、その当該ビット(送信ピン)だけを0にして、tris命令している)#asmで、そのレジスタに、初期化後に、本来trisされるべき値を代入しておけばういごいたけどさ。)
・config.bitの位置がへん。HEXファイルの中の0x3fe-0x3ffに書き込まれている。他のPICはここでよかったような気もするけど、PIC10F20xを書き込める、いわゆるBFMPの書き込みプログラムでは、config.bitは0x1ffe-0x1fffから読むらしい。なんじゃ?
いずれにしても、面倒だし、たいしたプログラムではない(そもそもプログラムメモリが256ワードしかない)し、mpasmで書くことにしましたとさ。
しかし内蔵オシレータ、ときどき、激しく周波数がズレるんだけど、なんでだろ?(30%ぐらい低くなることがある)パスコン?OSCCALの微調整を除いたら、これは起こらなくなったような気もする。
投稿者 akita : 17:40 | コメント (0) | トラックバック
DCC
いまさらながら、鉄道模型を、線路という2本の信号路を使って、電力供給+制御するDCCとうい規格の存在を知る。
ちょっと大きいけど、やっぱ誰でも考え付くものだよな。
投稿者 akita : 08:10 | コメント (0) | トラックバック
2006年02月20日
ジャンクなBluetoothカード
久しぶりにジャンクでバクチを打つ。
IBMのBluetooth PC Card IIというのを1000円で買ってみる。
IBM(Lenovo)のサイトで調べても、似たやつはあるが、IIは存在しない。
製品番号は09N9867、と書いてあるが、それも存在しないようだ。
いったいこれはナニモノ?マボロシ?
投稿者 akita : 18:59 | コメント (4) | トラックバック
Wake on PICNIC
普段メインで使っているマシンがWake on LAN(WOL)に対応していないので、あまりスマートではないが、秋月(というかTriState)のPICNICを何年かぶりに引っ張り出して、リレー制御して、PCの電源スイッチにつなげる。
なんか、こう、スマートではない。
でも背に腹はかえられない。
RC回路で、100ms程度だけリレーがONになるようにしてあるのが、ささやかな抵抗(何に対して?)。
投稿者 akita : 16:22 | コメント (0) | トラックバック
2006年02月14日
小型のDC/DCコンバータ
Enpirionというメーカがあることを知る。すげーな、こりゃ。ほとんどオンチップインダクタでDC/DCコンバータをつくっている。
投稿者 akita : 10:26 | コメント (0) | トラックバック
2006年02月13日
LEDマトリクス
LEDマトリクスを、無性にたくさん並べたくなって、100個ぐらい買ってみた。
1つが8x8画素で、好きなだけつなげられるように、この単位にマイコンを1個載せて、互いに通信させて、もやもやと動くようにしたい。
とりあえずはライフゲームあたりか。
スケーラブルなシステムのプロトコルは、考えがいがある。(言い換えるとけっこう難しい)
投稿者 akita : 22:16 | コメント (0) | トラックバック
DesignWaveMagazine
とりあえず入手。でも2000円以上もするのね。生協で買えばよかった。
さて何に使おう・・・>ARM7
今回は、大人気(おとなげ)なく3冊も買うのは、やめようと思います。
投稿者 akita : 18:49 | コメント (2) | トラックバック
2006年02月08日
マイコン的世界観
いしかわさんと会う。
久しぶりでもないんだけど、ネタが満載。
たとえ言葉が通じなくても、イカレた野郎には、PICとかAVRという言葉で、通じちゃうものがあるんだろうなあ。
Crazy Japaneseと言われてみたいものだ。
投稿者 akita : 00:16 | コメント (0) | トラックバック
2006年02月07日
ステンレスの半田付け
ステンレスの半田付けをしなければならなくなり、どうも苦手だなあ、と思っていたら、専用のハンダとフラックスがあることを、いまさらながら知る。
すげー。すぐつく。
投稿者 akita : 08:53 | コメント (0) | トラックバック
2006年02月02日
半田付け職人
こんな会社があることを知る。DVDも売っているそうだ。買ってみるか。
投稿者 akita : 17:43 | コメント (0) | トラックバック
GPIBなんか使ってみたくなったり
研究室で買ったテクトロのオシロの画面を、PCに転送するためのユニットを買ったけど、シリアル接続だと、どうもうまくいかない。80%ぐらいの確率で失敗する。
このユニットにはGPIBのコネクタもついているので、PC側のGPIBインタフェースがあればいいわけだけど、買うのもナンだなあ・・・と思っていたら、トラ技2005.10で、パラレルポートにつなぐインタフェースを自作してExcelで取り込んでいる記事を発見。不覚にも見落としていた。しかもテクトロのオシロTDSシリーズもいけるっぽい。
ちょっくらつくってみるか。まずはGPIBのコネクタ(セントロニクス24ピン)だな・・・
投稿者 akita : 10:07 | コメント (2) | トラックバック
2006年02月01日
チップ型LCRを測る計器
ピンセット型LCRメータを発見。ちょっとほしいかも。
投稿者 akita : 17:12 | コメント (3) | トラックバック
小型のDC/DCコンバータ
ふと気が向いて、小型のDC/DCコンバータを探してみる。
FDKのGM006というやつを見つけた。3.4mmx3.5mm、すげー。ばけもんだな。
小売で売ってくれるところはないものかな。
投稿者 akita : 13:10 | コメント (2) | トラックバック
14pのまいこん
Digi-Keyのカタログをあさっていたら、何気なく14pのPICがあることに気づく。
PIC16F688、というやつあたりだと、A/Dつき、UARTつき、20MHz、電源2-5V、内蔵OSCが8MHz。
なかなかよいんでないかい。
投稿者 akita : 07:36 | コメント (0) | トラックバック
2006年01月18日
C8051のコンパイラ
ふと思い立って、Cynalマイコン(C8051、正しくはSiliconLaboratoriesマイコン)のコンパイラであるKeilCの、機能制限版ではない正式版の価格を調べてみる。
オンライン価格で、3,000ドル弱。たけー。
投稿者 akita : 16:49 | コメント (0) | トラックバック
2006年01月06日
QuartusII
とある事情により、いまさらながらAlteraのQuartusIIをさわる。かなり使い方が変わっていて、とまどった。けど、慣れたら便利そうだな。まあ道具はそんなもんか。
投稿者 akita : 20:01 | コメント (0) | トラックバック
2005年12月28日
PSoCもろもろ
久しぶりに、PSoCで、いろいろとはまる。ので、忘れないうちに備忘録。
- デバイスによって、入力にしか使えないピンがある。でもなぜかPSoC Designerのデバイスエディタでは出力として接続できて、その駆動タイプまで選べる。データシート(のピンの記述)をちゃんと読もう。
- デバイスエディタからアプリケーションエディタへ移る前にGenerate Codeをするとき、Projectを保存しておかないと、前のやつでcodeが作られることがあるような気がする。(気のせいかも)
しかし、ちょっと凝ったことをやると、アナログブロックが足りなくなるね。ピン数は少なくてもいいから、もっとアナログブロックのあるやつがほしい。
投稿者 akita : 19:13 | コメント (0) | トラックバック
2005年12月26日
チップ部品の整理
この前見つけた、秋月で売っている小物入れを、とりあえず90個入手。
手元の、DigiKeyなどで買ったチップ部品を整理してみる。
この箱に、内容物の部品の名前などを書いてしまうと、使い回しが効かないので、C、Rなどごとに番号をふったラベルを貼り、そのラベル番号と内容物の対応表は、電子的に保存しておくことにした。
なんかちょっと(いやかなり)便利かもかも。
調子に乗って、更に300個発注してみた。
投稿者 akita : 17:57 | コメント (0) | トラックバック
2005年12月23日
Netburnerのモジュール
ちょっと遅れて、CircuitCeller誌をぱらぱらめくる。1ページ目にNetburner Mod5213の広告を発見。
Freescaleの32ビットプロセッサをDIPにする変換基板みたいなやつだけど、そのスペックを見て、たまげた。
32ビットタイマx4+16ビットタイマ(PWM等可)x4+(16ビットPWMx4 or 8ビットPWMx8)+割り込み用タイマx2。
これ、ほんとにぜんぶ同時に使えるのか?バケモノだな。
投稿者 akita : 07:08 | コメント (0) | トラックバック
ICD2で書き込み
ICD2が本格的に使えそうだというので、やっぱり自宅基板ではモジュラーコネクタはいやなので、ピンヘッダをたてたい。
そこでピン配置を調べてみると、やっぱり後閑さんのサイトに行き着く。5本(VDD,GND,CLOCK,DATA,VPP)でいいのね。もう1本なんかあるのかと思っていた。
投稿者 akita : 07:00 | コメント (0) | トラックバック
2005年12月21日
MPLAB
MPLAB+CCSCでデバッグできるの図を目の当たりにする。こりゃあいい。
投稿者 akita : 18:49 | コメント (0) | トラックバック
2005年12月16日
ForCy
macyu情報。
ForCyというもの。
未踏ネタ。組み込み用軽量言語らしい。
まずは目を通してみるか。
投稿者 akita : 22:50 | コメント (0) | トラックバック
2005年12月13日
MPLABでICD2とかしてみる
いまさらながら、Microchip純正のICD2なんかに手を出そうとしてみる。当然、統合環境であるMPLABから、うりうりしたいわけだけど、こいつと連動するコンパイラが、どうもよくわからない。
Microchip純正のC18あたりが無難なんだろけど、高い。と思ったら、60日間使えるStudentEditionというのがある。PIC18限定だけど、どうせICD2から使うから、全面的にPIC18に移行してもいいかもね。
さてほかのコンパイラだと、CCS-Cが無難なわけですが、これだとICD2が使えない(その1つ前の、シリアル接続のICD1は使えるようだ)。
こりゃ、Microchipで固めろ、ということかな。クヤシイけど。
投稿者 akita : 20:23 | コメント (6) | トラックバック
2005年12月08日
マルツメイク館
/.Jより。マルツメイク館。秋葉でハンダ付けが出来る場所らしい。買ってその場で作って試したい向きにはよいのかな。秋月も近いし。
投稿者 akita : 15:18 | コメント (0) | トラックバック
PSoCのアナログCTブロックのクロック
PSoCの中に、アナログCTブロックというのがある、Continuous Timeブロックというやつで、SCブロック(Switched-Capacitor)に対する言葉だ。
SCブロックには、スイッチトキャパシタ用にクロックを供給するところがある。それの周波数で等価的な抵抗が決まるんだから、あたりまえ。
なのに、CTブロックにも、なぜかクロック信号を供給するところがある。実際等価回路を見ると、オペアンプと抵抗と切り替えスイッチしかない。
なんでクロック信号がいるの?
投稿者 akita : 13:28 | コメント (0) | トラックバック
2005年11月30日
P板.comの価格
よくお世話になっている、プリント基板製作サービスのP板.comだが、どうも前々から、価格が離散的なような気はしていた。
どうも一辺の長さが50mm単位で価格が変わるようだ。
50mmx50mmの価格と、50mmx51mmの価格は違って、そのまま50mmx100mmまで同じ価格になる。次は50mmx101mm〜50mmx150mmが同じ価格。
つまり50mm単位で買い取っている、と思えばいいわけか。ふむ。
投稿者 akita : 15:11 | コメント (2) | トラックバック
算術シフトと論理シフト
シフト演算には、あいたビットに0をうめる論理シフトと、シフトする前のそのビットの値をうめる算術シフトがある。
C言語でシフト演算といえば「>>」とか「<<」だが、コンパイラによっては、同じシフト演算子でも、論理シフトと算術シフトを区別してくれるらしい。
char型の変数でシフト演算をすると算術シフトに、unsigned char型の変数でシフト演算をすると論理シフトに、それぞれ勝手にしてくれるらしい。
便利なんだか不便なんだか・・・まあ勝手にあいたところに0が埋まる、と思い込むのがよくないわけだけど。
投稿者 akita : 12:11 | コメント (0) | トラックバック
2005年11月29日
PSoCでHPF
PSoCは、フィルタも使えるんだけど、標準で使えるブロックには、LPFとBPFしかない。HPFはないのか?と調べてみると、こんなところから、AN2030を発見。
アナログCTで作れるんだけど、要はただのアンプで、RCを外付けする、ということ。これは、あまりうれしくない。
LPFやBPFみたいに、アナログSCだけで作れんもんなのかね。
投稿者 akita : 08:20 | コメント (0) | トラックバック
2005年11月28日
一連のタイミング問題をまとめる
一連の、タイミングのシビアなプログラムの件を、忘れないうちにまとめておく。すべて互いに深くかかわりのある問題だった。
1) (そもそもの過ちの始まり)内蔵OSCのPIC12F629を採用する。UARTもPWMもないのに、シリアル受信とLED輝度のPWM制御を、いずれもソフトウエアでやろうとする。
2) LEDの輝度制御をタイマ割り込みで行うが、その処理時間が、UARTの1ビット分の待ち時間よりも長くなり、ビット落ちが生じている。
3) そこでプログラムをフルアセンブラで記述し、タイマ割り込み処理を1ビット分の時間(52us@19200bps)の半分よりも短い24usとする。
4) シリアル受信の開始タイミングを、スタートビット開始(TTLレベルで立下り)から0.5ビット分待ったあとからサンプル開始していたのを、短くする。この待ち時間は、内蔵OSCの発振周波数のバラツキにも関係するが、試行錯誤後、5usがよいと結論。
5) 内蔵OSCの安定化のためには、パスコンが有効。しかし1000個近い基板のすべてに取り付けるのは困難なので、試行錯誤の上で、3個に1個の割合+末端の1個にとりつけることにする。少なくとも常温では大丈夫そうだ。
6) この後は、PIC12F629基板が1000個近くなり、しかもアクリル封入されるので、こちらに手を加えるのはご法度となる。
7) PC側にUSB-シリアル変換器を15個接続する予定が、シリアルデータの送出タイミングがそろわないことが判明。
8) そこでUSB-シリアル変換器を1個とし、そこから115200bpsで送出したものをPIC16F873で受け、それを19200bps×15分配して送出する、という構成とする。
9) 当然UARTが16個(受信1個+送信15個)もない(PSoCでも足りない)ので、送出を19200bpsの1ビット分の時間である52usごとにタイマ割り込みで行う。
10) 52usのタイマ割り込みで、送出データを、スタートビット→データの各ビット×8→ストップビット、と順次生成し、出力ポートの値を設定する。
11) しかしスタートビットとストップビットの生成が、各ビットの生成よりも早く終わるため、スタートビットとストップビットのみ、送出のタイミングが少し(といっても10us程度も)早い=スタートビットが10us程度長い
12) これを受けるPIC12F629側は、スタートビットの開始のタイミングから、前述のとおりかなりシビアなタイミングでデータを受けるので、このスタートビットの長さは致命的。(これはPIC12F629側で、ビットサンプリングのタイミングを、別の出力ポートをフラグとして使ってオシロで観測してつきとめる)
13) PIC16F873側のタイマ割り込みルーチン中のスタートビット生成の部分の処理時間が、各ビットの生成と同じタイミングになるように、nopを入れて時間調整し、処理時間をそろえる。
14) 完成。
ふー。
投稿者 akita : 08:57 | コメント (0) | トラックバック
2005年11月24日
シビアなタイミング
マイコンで、1us単位のプログラムを書く。さすがにオシロで波形を見ても気がつかないほどのシビアなことが原因で、半日つぶれてしまった。
データを取り込んでいるタイミングで、空いている出力ポートにフラグを立てる、というデバッグ方法は、原始的なんだけど、結局、最後はこれだね。
投稿者 akita : 22:34 | コメント (2) | トラックバック
わからん。
とあるマイコンで、シリアルで送られてきたデータを直接受けるときと、別のマイコンでボーレート変換したあとで受けるのと、挙動が違ってしまう。オシロで波形を見る限り、両者は同じ波形に見える。
前者は予定通りに動作し、後者は「ときどき」予定通りに動作する。しかも後者は再現性がない。
どうも電源っぽいな・・・困った。なにが原因なんだろう。
投稿者 akita : 09:47 | コメント (6) | トラックバック
2005年11月14日
NiosIIボード
いしかわさん情報より。
NiosIIボードなるものを知る。合成可能プロセッサコアを、FPGA(のconfigROM)に書き込んだ状態のボード。要は、マイコンボードになる、ということだ。
朱雀みたいではあるが、周辺I/Oなどの自由度が低い分、割り切って使いやすいのか?60MHzのRISCだ。ARM7ボードみたいだな。
投稿者 akita : 15:39 | コメント (0) | トラックバック
2005年11月11日
時間にシビアなプログラム
久しぶりに、命令実行時間を1命令単位で数えないといけないぐらい、シビアなタイミングで動くプログラムを、C言語で書いた。生成されたアセンブルソースを見ると、けっこう頭が悪いことをやっているので、ところにより手動でアセンブラで書く。
マイコン用のC言語だったら、ビット操作をする演算子がないと、困るよなあ。
例えば、変数aの0ビット目の値を調べるのに、
if((a & 0x01) == 0){
とか書くと、ビット操作命令を使ってほしいのに、クソまじめに、aと0x01とのANDをとって、その結果が0かどうかをZフラグをみている。(少なくとも3命令)
なんでこういう演算子がないんだろう。
投稿者 akita : 17:17 | コメント (4) | トラックバック
2005年11月08日
新しいまいこん
とある経緯で、新しいまいこんとして、PIC18F2220を触れる。たかがPICだとたかをくくっていたら、はまる、はまる。
まずコンパレータに加えてA/D変換器もあるので、それを使わない、という初期化が必要。
UARTを使うとき、CCSCで#fast_ioを宣言しておかないと、正しく送受信(特に受信)ができない。(ここだけで1時間ぐらい悩む)
このときにコンパイラを疑って、逆アセンブルしてみても、PIC18系のアセンブラは、だいぶ知らない命令があって、よくわからず、久しぶりにInstruction Set Summaryを読むはめになる。
いやあ、やっぱり、初物はナメちゃいかんね。
投稿者 akita : 21:11 | コメント (0) | トラックバック
2005年11月02日
ToothPIC
CircuitCellar誌の製作記事で発見。便利なんだかそうでないんだか、よくわからないけど、なんとなく面白そうなので、メモ。
ToothPICというやつで、Bluetoothモジュールつきのマイコンボード(というよりモジュール)。96ポンドだから、2万円ちょっと。
なんかに使えないかな。
投稿者 akita : 10:05 | コメント (0) | トラックバック
2005年10月28日
i4004を知るということ
歴史を知り、そこから学ぶ、という意味で、i4004を詳しく知ることは、それはそれで意義があるような気がする。
以前、i4004のデータシートは入手したが、アーキテクチャとマシン語(命令)は、まだよく見ていなかった。そのプログラミングのコツとかサンプルプログラム、みたいな情報は、どこかにあるんだろうか。なさそうだな。
ちょっと腰をすえてデータシートを読んでみるか。
投稿者 akita : 10:23 | コメント (2) | トラックバック
まいこんといふもの
例外的にいしかわさんと会う。
まいこんを部品、ととらえるのは、例えば74シリーズのように並べてシステムを作ることなんじゃないんだろうか。あるいはパイプライン処理をさせるとか、クラスタを組むとか、グリッドとか。
そう考えると、まだまだ可能性はある。
だって4MHzのZ80って、実質1MHzサイクルだ。内蔵オシレータで動いているPIC12F629と同じじゃないか。函館ルミナートで使っているのは、このPIC12F629だ。つまり演算能力ではZ80並みということだ。昔のパソコンには、MZとかPC8001とかZ80を使っていたものも多かったわけで、あんなことも、こんなことも、そしてあんなゲームもできてたですよ。たしかゲーセンのXEVIOUSだってZ80だった。
投稿者 akita : 00:04 | コメント (3) | トラックバック
2005年10月26日
HD64180
むかいやまさんからふられたZilogねたの続き。
旧日立(ルネサス)のHD64180という、Z80の上位互換なんだけど、けっこうクセのあるマイコンがあった。(ちなみに手元にはPGA版が1個ある。CPUコレクターなので。)
こいつをルネサスが作るのをやめちゃった(う)ので、Zilogが引き続き作るんだそうだ。
Z80をインテルが作るようなもんだもんな。逆セカンドソースとでもいうべき現象か。
しかしそこまでHD64180って、いまでも使われているんだ・・・
投稿者 akita : 21:04 | コメント (0) | トラックバック
2005年10月07日
SiliconLaboratoriesのデバッガ
いまさらながら、米粒マイコンことC8051F300用に買った、SiliconLaboratoriesのUSB DEBUG ADAPTER(俗称EC3)を使ってみる。
USB接続なんだけど、ドライバはどこにあるんだ?と探してみたら、HIDデバイスとして認識される。便利だね。
投稿者 akita : 08:39 | コメント (0) | トラックバック
2005年08月24日
作業日誌
無性に水温を継続的に測りたくなって、市販の水温センサを入手し、熱電対だろうと読んで信号をハックしようとして玉砕。LM35に逃げる。弱いなあ・・・>自分
投稿者 akita : 19:00 | コメント (0) | トラックバック
2005年08月22日
老眼なのか?
どうも、最近小さい字が見にくくなった気がする。といっても、2mm x 1mmぐらいのチップ部品に書いてある型番の話だけど。
いままではこんな小さい部品の字を読むことがなかっただけなのか、本当に老眼なのか。
投稿者 akita : 08:37 | コメント (0) | トラックバック
2005年08月14日
行き先表示機の改良
先に作った行き先表示機をちょっと改造。特定のメールを送ると、そこに書いたメッセージを表示できるようにした。これで携帯メールからでも行き先表示機の表示を変更できるようになった。
投稿者 akita : 22:41 | コメント (2) | トラックバック
2005年08月11日
USBメモリの活用法
いまさらながら、REX60という製品を知る。USBメモリ(FAT)内のファイルを、シリアル経由で操作・読み書きできる、というシロモノ。思ったより価格も安いので、データロガーみたいなのには便利かもしれない。
投稿者 akita : 12:54 | コメント (0) | トラックバック
2005年08月09日
CircuitCellular
あの人に触発されて、CircuitCellular誌の年間購読を申し込んでしまった。ある意味(いや立派な)衝動買い。
投稿者 akita : 15:18 | コメント (0) | トラックバック
2005年08月08日
ケーブル類の収納を考える
前々から気になっていること(はたくさんあるけど)。ミノ虫クリップのついた配線コードや、USBケーブルとか、そういう類のケーブル類を使わないときは、どう収納するのがいいんだろう。
丸めてorしばって、箱とかにしまっておくのはもちろんいいんだけど、比較的まめに使うものだと、取り出すのがめんどい。だいたいそのうち、きれいに片付けるのが面倒になって、スパゲッティになること請け合い。
壁につるしておくのが、なかなか便利そうなんだけど、うまいつるし方が思い浮かばない。
フックをかべにつけて、そこに引っ掛けておくのは、なかなかいいんだけど、ケーブル類の真ん中をフックにかけて、逆U字型になるわけで、取り出すときに、目標のケーブル(は、だいたいケーブルの両端で識別される)を探しにくい。
たぶんベストなのは、耳鼻咽喉科のお医者さんが使っているような、ケーブルの先っちょだけ、取り出しやすいところに引っ掛けてあって、ケーブルの残りの部分は、下にたれている状態、なのかな。どうなんだろう?そういう金具はどうやって作ろうか・・・
投稿者 akita : 09:10 | コメント (4) | トラックバック
2005年08月03日
CPLDとの戯れ
所用で、CPLDと戯れる。しばらく前に、XilinxのWebPackISEのバグで悩んでいたのがうそのように、さくさく動く。いやあ、こういうときは楽しいね。
しかし3V系と5V系をつなぐときには、いろいろと気を使うことが多い。3V系のデバイスって、入力は5Vを入れても大丈夫(5V-tolerant)なものが多いのはいいんだけど、「ときどき」だめなやつがあって、困る。どうしよう。
投稿者 akita : 17:02 | コメント (0) | トラックバック
2005年08月02日
行き先表示器
例の行き先表示器を、ちょっと更新。Web経由で、表示器に表示されている文字列を確認できるようになった。
http://ambition.ec.t.kanazawa-u.ac.jp/disp/
これで、行き先は全世界に知られるわけだ・・・
投稿者 akita : 10:45 | コメント (2) | トラックバック
2005年07月27日
基板を描きながら回路を考える
どうも最近、回路図を描かずに、基板の配線(アートワーク)をひきながら、部品を選んでデータシートを見て、回路をつくっていく、というクセがついている。非常によろしくないと思いつつ、ついやってしまう。
回路図を描いておかないと、あとで苦労するのはわかっているのに・・・反省。
投稿者 akita : 21:41 | コメント (0) | トラックバック
2005年07月25日
表面実装ICはがし
存在は知りつつも、たぶんお世話になることはないだろうと信じていた、表面実装IC取り外し用のハンダSunhayato SMD-21。
ところが、信じられない向きで28ピンのICをハンダ付けしてしまい、お世話になることにする。敗北。
投稿者 akita : 16:14 | コメント (0) | トラックバック
2005年07月21日
行き先表示板
しばらくまえから試行錯誤していた行き先表示板が、とりあえず完成。結局こんな構成になった。(なぜか画像がアップできないので、写真は後日・・)
蛍光表示器
|
マイコン(PIC16F628)-----キーパッド
|
(Bluetooth経由)
|
組み込みサーバ(USL-5P) = Webサーバ ----- INET
- キーパッドで、「在室」とか(+外出時は戻る時刻も)を設定できる
- Webサーバとして動いているUSL-5Pからも、CGI経由で 表示文字列を設定できる(外出先から変えるとか)
- 現在の表示を、このWebサーバで表示できるようにする予定(まだ)
で、備忘録。
- USB-RSAQ2やQ3をUSL-5P(というかLinux全般)で使うときのメモ:http://www.ku3g.org/negi/diary/?200411c#200411220, http://lists.sourceforge.jp/mailman/archives/iohack-users/2005-April/000165.html
- ↑に関連して、ネットワーク越しにシリアルポートをつつけるsredird:http://apex.wind.co.jp/tetsuro/f-bsd/serial.html, http://apex.wind.co.jp/tetsuro/f-bsd/serial.html
- クロスコンパイル環境は最新のものにしておきましょう。
- CGIでファイルを作るときは、書き込み権限に注意(特にテスト時にrootで作ったファイルを、CGIからnobodyやapacheで書き込もうとして失敗することはありがち)
投稿者 akita : 19:16 | コメント (0) | トラックバック
2005年07月14日
圧着ペンチ
お恥ずかしながら、圧着端子を固定するための圧着ペンチの使い方を、いままで知らなかった。
こんな風に解説していただけているサイトを発見。長年のなぞが解けた。
・・・しかし、聞くに聞けないコトって、けっこうあるよね・・・
投稿者 akita : 19:15 | コメント (3) | トラックバック
2005年07月12日
行き先表示板
ちょっと前になるけど、前に買ったノリタケ伊勢の蛍光表示管にマイコン+キーパッドをつけて、とりあえず行き先表示板を作る。
ついでなので、USL-5PをUSB-RSAQ3経由でつないで、Webサーバから内容を参照したり、修正できるようにしよう。(自分への備忘録)
#ついでにWebサーバをUSL-5P化するか
投稿者 akita : 03:11 | コメント (0) | トラックバック
2005年07月07日
千石電商
秋葉原に行くたびに、なにかとお世話になる、パーツのスーパーマーケットこと千石電商なんだけど、行くたびに、特に最近、店員のqualityが落ちてきているような気がする。
かろうじて値段は覚えているけど、接客態度はダメダメ(いらっしゃいませ、すら言えない)、商品知識はほぼゼロ、客がレジで待っていても、雑談ばかり。
これで品揃えがイマイチだったら、こんな店、二度と来るもんか、となるんだけど、品揃えがソレナリなのが、くやしいよなあ。
投稿者 akita : 15:20 | コメント (0) | トラックバック
2005年07月04日
半田付けの山
未来大での半田付け大会の作品の手直しをする。基板の方は、ほとんどOKなんだけど、コネクタ部がほぼ全滅・・・しかも持っていったケーブルが、単線の硬いやつなので、曲げているうちに折れそうだ。というわけで、やわらかいケーブルで直結して作り直し。ひさしぶりに大量の半田付けをやった。
投稿者 akita : 17:53 | コメント (2) | トラックバック
2005年07月01日
R8Cとの戯れ(久しぶり)
久しぶりにR8Cと戯れる。シリアル通信をほかと使っていると、彼(R8C)とのコンタクトがとれなくなってしまう。
ブレークポイントとか設定して、レジスタやら変数の値を見ればいいんだけど、なんかこう、せっかくE8とつながっているんだし、コンソールというか標準エラー出力みたいなものはないんだろうか。なんかありそうだよなあ。
だれかご存知でしたら教えてください。
投稿者 akita : 18:50 | コメント (0) | トラックバック
スルーホール(続)
請求していた資料が早速届く。はえー。
でも原理がよくわからん。どうやってスルーホールが、めっきで作れるんだ?
うーん。電話で聞いてみるか・・・セールストークで負けそうだな・・・
投稿者 akita : 16:42 | コメント (0) | トラックバック
2005年06月30日
F通のマイコンボード
以前、消息筋から聞いていた話と思われるやつが、姿を現す。
http://www.sunhayato.co.jp/catalog/f2mc/index.html#Label1
これだけついて2000円というのは、やりすぎでないかい?
それはともかく、いまいちウリがよくわからんな。
USBでデバッグできる、というのは、ボードとしてはうれしいけど、これは外付けコントローラの機能であって、マイコン単体の特徴ではない。
サイズも微妙にでかい。電源は5Vのみ。クロックは16MHzだけどCacheがないので、高機能志向でもない。A/DはあるけどD/Aはない。タイマは4本で、UARTは1個。
うーーーーーん。ビミョー・・・・・・
投稿者 akita : 09:13 | コメント (2) | トラックバック
2005年06月29日
スルーホールの作成
プリント基板を彫る機械はあるけど、両面をつなぐスルーホールを手動で作るのがめんどい。
で、電解めっきで、スルーホールを作る機械があるらしいことを知る。
http://www.hisol.jp/products/ttc/01_05.html
いろいろと都合のいいことが書いてあって、どれぐらい使えるものかわからないけど、まずは資料を請求してみよう。
投稿者 akita : 14:39 | コメント (0) | トラックバック
2005年06月22日
ふりかけマイコン
投稿者 akita : 14:20 | コメント (2) | トラックバック
2005年06月16日
PRoC
アナログもデジタルもプログラマブルなマイコンPSoCで驚いている場合じゃない。今度はPRoC(Programmable Radio-on-a-Chip)だそうだ。
まだ詳しく読んでないけど、WirelessUSBみたいな。中身はともかく、名前はすごいな。
投稿者 akita : 20:58 | コメント (0) | トラックバック
2005年06月08日
行き先表示板
部屋の行き先表示板を、また電子化しようと画策する。せっかくなので漢字フォント内蔵のやつにしよっと。
http://www.itron-ise.co.jp/japanese/products/module/gu3k/index.htm
いわゆる蛍光管なんだけど、寿命は大丈夫なのか?と思ったら、10万時間ぐらいはもつらしい。まあつけっぱなしでも大丈夫か。
ついでなのでUSL-5Pもつないで、Web上で行き先を示すやつもつくって、それと連動させて、「その他」の行き先を文字列として入力できるようにしたり。いろいろとやってみよっと。
投稿者 akita : 11:28 | コメント (2) | トラックバック
2005年06月06日
富士通のまいこん
いまいち地味なんだけど、富士通にはFRというシリーズのマイコンがある。
ここで、近いうちに面白い動きがあるらしいという情報を得る。楽しみだ。
投稿者 akita : 19:12 | コメント (2) | トラックバック
2005年05月31日
10bit 60MSPSのADC
10bitで60MSPSのA/Dコンバータが、秋月で売っているような時代になったんだなあ。しみじみ。
投稿者 akita : 09:54 | コメント (1) | トラックバック
2005年05月27日
Verilogとの戯れ(続続)
件の問題、クロック周波数を10kHzとかに落としても、リセット端子をつけてリセットしても、変わらない。真理値表とにらめっこしてみると、順序回路の組み合わせ論理回路のところの、Q2'の回路でQ2とQ0が入れ替わり、Q1'の論理が反転すると、現在観測されている動作になる。が、論理合成後の回路でも、もちろんそんなことは起こっていない。なんでだろう?
投稿者 akita : 12:29 | コメント (0) | トラックバック
2005年05月26日
Verilogとの戯れ(続)
Verilogとの戯れの続き。3ビットのアップカウンタを書いてみる。シミュレーションではちゃんとカウントしてるし、合成された回路をみても、ちゃんと動くはずの回路になっている。まるで教科書に出てきそうな、エッジトリガDFFと組み合わせ論理回路のフォードバックからなる、きれいな順序回路だ。Timingレポートをみても、セットアップもホールドも遅延も、クロック周期(100ns)からみたら問題ない。
でもCPLD(XC9636)に焼くと、こんな順番でカウントする。(ちゃんと8クロック周期なのがなやましい)
000 -> 111 -> 110 -> 001 -> 100 -> 011 -> 010 -> 101 -> (戻る)
ハザードっぽいな。しかしどこだ?
module count3(CK, Q);
input CK;
output [2:0] Q;
reg [2:0] count;
always @(posedge CK) begin
count <= count + 1;
end
assign Q = count;
endmodule
投稿者 akita : 14:01 | コメント (0) | トラックバック
2005年05月25日
Verilogとの戯れ
午後Verilogと戯れる。XilinxのCPLDに焼くと、どうしてQがふだん1で、100のときだけ0になるんだ?どう考えても逆だろう>Q
しかも周期が100クロックじゃなくて156クロック。
module hoge(CK, Q);
input CK;
output Q;
reg [7:0]count;
reg Q;
always @(posedge CK) begin
count <= count + 1;
if (count == 100) begin
count <= 0;
Q <= 1;
end else begin
Q <= 0;
end
end
endmodule
投稿者 akita : 20:17 | コメント (2) | トラックバック
2005年05月19日
PCBE
調子に乗ってPCBEで、けっこう大きな基板の設計をしていて、めどが立ったのでセーブしたつもりだったのが、保存されていなかった。orz orz orz
ちなみに縦と横で別の層を使う、いわゆるチャネル配線は、バス配線にはとっても便利だ。でも縦と横をつなぐところに打つビアを、自動的に先生してくれるソフトってないんかな。あ、作ればいいのか。簡単そうだ。
あとはそういうソフトを作るのが早いか、手動でビアを打つのが早いか、というところですな。
投稿者 akita : 10:16 | コメント (0) | トラックバック
2005年05月18日
パンドラの箱
いろんな箱に、ばらばらに分散した、手持ちのいろんなパーツを整理しようと思い立ち、まずは1箇所に集める。
どうやらパンドラの箱をあけてしまったようだ。
片付くのはいつの日になるんだろう。
投稿者 akita : 19:13 | コメント (2) | トラックバック
2005年05月17日
PSoCで割り込み
PSoCの割り込みでいくつかはまったので備忘録。
- 各割り込みの許可ビットを立てるのを忘れずに(当たり前といえば当たり前なんだけど、PSoCだと、つい忘れがち)
- コンパレータバスの割り込みは「アナログ割り込み」という名前。紛らわしい。
- MPUに固定されているリソースの割り込み(I/Oとかアナログ割り込みとか)の割り込みベクタはboot.asmにljmpとして書く。
- デジタル/アナログPSoCブロックの割り込みは、????int.asm(????は機能ブロックの名前)にljmpとして書く。
- 割り込み処理関数は、Cで書いているソース中に#pragma interrupt_handler ???(???は割り込み処理関数名)で定義し、ljmpでの分岐先は_???とする。
投稿者 akita : 10:41 | コメント (0) | トラックバック
2005年05月10日
ProDigio
秋月で、ProDigio関連のものが発売になったようだ。
http://akizukidenshi.com/catalog/items2.php?c=new&s=date&p=1&r=1&page=#K-00939
しかしこのProDigio、オリジナルのスクリプトを実行することしかできなくて、ビミョーだなあ、と思っていたんだけど、こんなのどうするんだ?
投稿者 akita : 18:19 | コメント (1) | トラックバック
2005年05月09日
LEDマトリクスで遊ぼう
先日の超小型USB-シリアル変換機に、8x8のLEDマトリクスをつけてみた。(黒い細長いのは、4ポートのHUB)
これを127個つなげてみたいなあ。
投稿者 akita : 15:00 | コメント (1) | トラックバック
PIC18F系のシリアルポート
当然といえば当然なんだけど、PICのマイコンのシリアルポートを使っているとき、
送受信(特に受信)に使っているピンを、I/Oポートをいじる命令で変更しては、たしかにまずい。
でもいじれないようにするか、いじってもシリアル通信には影響しないようにしてほしいものだなあ。
投稿者 akita : 11:31 | コメント (0) | トラックバック
2005年05月08日
米粒マイコンの半田付け(続)
先日の、米粒マイコンが認識されない、という話の続き。どうもGNDの接触不良のようだ。
MLP11(最近は他メーカにあわせてQFN11と呼んでいるようだ)のGNDは裏面にもつながっていて、けっこう面積が大きいので、他のピンとは比べ物にならないくらい熱容量が大きい。
したがって、半田ごてを長めにあてないといけない。
半田付けの基本中の基本を、あらためてココロに刻もう。
投稿者 akita : 21:44 | コメント (0) | トラックバック
2005年05月02日
PIC18Fの内蔵オシレータ
PIC18F系の内蔵オシレータは8MHzのものが多いので、てっきり全部それで動くのだとばかり思い込んでいたら、例えばPIC18F4220では、デフォルトではその1/256の32kHzで動くんだった。がちょーん。
クロック関係の設定は、手動でプログラム中でOSCCONレジスタをいじらないといけないんだった。知らなんだ。
投稿者 akita : 22:04 | コメント (0) | トラックバック
MLPパッケージのはんだ付け
顕微鏡(本来はLSIチップ撮影用)で撮ってみた。
こんな感じ。
投稿者 akita : 14:44 | コメント (0) | トラックバック
Zilog
いしかわさんに触発されて、Zilogのマイコンに手を出す。
しかしZilogっていうと、懐かしい。Z80だよなあ。自分が、マシン語で会話ができる、唯一のプロセッサ。ニーモニックなんていらない。
16ビットのZ8000というので失敗したというのは知っていたが、小型のやつがいろいろあって、Z8というシリーズらしい。今度は型番のゼロを取ったですか。
しかしラインアップがいろいろある。
今回興味の対象だったのは、8ピンのやつ。SOICパッケージはすでにいろいろあるが、DIPはまだサンプル品だけらしい。
しかも個人的に興味があるのが、UARTがついていること。実は8ピンマイコンでUART内蔵というのは、なかなかない。(PICもAVRも)
内蔵オシレータは5.53MHzまで。電源は3V系のみ。そうか5Vはだめなのか。
しかし最近はメーカの商品紹介サイトの横に、Buy Nowのボタンがあって、気がついたら押していそうで恐ろしい。
投稿者 akita : 09:57 | コメント (4) | トラックバック
2005年04月28日
ふりかけマイコン
米粒マイコンというのは聞いたことがあったが、世界最小(らしい)のPIC10F200シリーズは、ふりかけマイコンというらしい。
ふりかけは大げさだろう、と思って、見てみると、たしかに小さい。
専門用語で、SOT23というパッケージで、2.8mm×1.5mm(ピンは0.85mmピッチ)。たしかに小さい。ほしー。
投稿者 akita : 21:31 | コメント (3) | トラックバック
MLPパッケージの半田付け
いわゆる米粒マイコン(C8051F300)でも使われている、MLPというパッケージは、なかなか半田付けが難しい。0.5mmピッチで、しかも直方体のパッケージの横面に端子があるが、飛び出していない。
でも、こいつの半田付けのコツをつかんだ。完璧。まるでリフロー半田付けのように美しい。
投稿者 akita : 21:19 | コメント (5) | トラックバック
Verilogと戯れる
極めて久しぶりにVerilogと戯れる。忘れかけていた文法はしばらくやれば思い出すとしても、同期回路の書き方のコツというかカンをだいぶ忘れていた。
特にシミュレーションは通るんだけど、合成ができない、あるいは合成できても不要な回路がたくさんできる、という、よくあることがあって、なかなか難儀する。
今日の教訓。
- センシティビ・リスト(always@の中)には、変化に関係する信号をすべて書く
- 1つのレジスタの書き込みは、同じalways文の中で、if文で分けて書く。
(=別のalways文の中で、それぞれ1つのレジスタを書き換えようとしない)
- case文ですべての場合が列挙されていない場合は、余分な回路ができる(しかもかなりでかい)ので、すべての場合を列挙するか、default文をちゃんと使うべき。
投稿者 akita : 10:54 | コメント (0) | トラックバック
2005年04月26日
小ネタ(小物倶楽部系)
なんとなく、たくさんのデバイスをPCからまとめて制御したくなる衝動に駆られる。そこでこんなものを作ってみた。使いようによっては面白いかもしれない。
投稿者 akita : 16:42 | コメント (1) | トラックバック
2005年04月25日
いしかわさん
いしかわさんがやってきた。
Spartan3が動いていた。すげー。
部屋を物色された。所有物でしか話の種を提供できないのは極めて恥ずかしい。普段からコンテンツ重要、とか偉そうに言っているのに。活用してナンボ。ある程度は研究ネタで火を入れて手を動かしているモノはあるにしても、果たして自分は本当に活用しているのか?と自問する。
ヒビマイシン。
投稿者 akita : 21:16 | コメント (0) | トラックバック
2005年04月05日
PSoCとの戯れ(続)
500ページを超えるPSoCのデータシートに目を通す。で、だいたいわかった。
PSoC Designerではいじれない項目が、実は結構ある。
先のComparator Busなんかも、あるレジスタのビットで値がわかったり、
かかる割り込みとかを設定できるらしい。
すべてがPSoCからできない、というのは、発展途上なのか。いや、けっこうGUIでいじれない項目かもしれないな。でもPSoCの機能ブロックのデータシート(オンライン)に、一言書いておいてくれてもいいようなもんだよなあ。
投稿者 akita : 07:39 | コメント (0) | トラックバック
2005年04月01日
PSoCとの戯れ
締切をやや前倒しして、前々からあたためていた、PSoCとの戯れをはじめる。
いろんなディジタル機能やアナログ機能が、CAD上で、ひょいひょい、とつなぐだけでできちゃうから、なかなか楽しい。ときどきどう考えても理解できない挙動があったりして困ったけど、再コンパイル・再書き込みで、何事もなかったように動いたり。(よくある話)
で、一通り使ってみて、いくつか覚え書き。
- 機能ブロックの配置は自由だけど、接続にけっこう制限があるので、配置には注意(というか試行錯誤が現実的)
- クロック周波数の計算が、けっこうめんどい。(特にスイッチトキャパシタを使うフィルタに与えるクロック:なぜかサンプリングクロックの4倍を与えることになっている)
- Cypress純正ライタのUSBコネクタが、なぜかぐらぐらしている。そのため、時々PCから見えなくなる。大丈夫か>Cypressのはんだ付けのおばちゃん
- コンパレータバス、というのがあって、コンパレータの出力をつなぐんだけど、こいつの処遇が、HelpやDocument類を見ても、載っていない。困った。
投稿者 akita : 18:20 | コメント (0) | トラックバック
2005年03月30日
R8Cとの戯れ
いよいよ締切が近づいて、あまり気が進まないR8Cとの戯れを再開。
シリアル通信で、いろいろはまる。
タイマ割り込みで、いろいろはまる。
パルス幅計測で、いろいろはまる。
結局ここがなかったら、今日だけじゃ終わらなかったなあ。感謝。
http://plaza.rakuten.co.jp/nisiken2002/8000
で、最後にプログラムを書き込んで、stand-aloneで動かそうとしたところで、またはまる。
プログラムを書き込もうとすると、IDコードを入れろ、といわれる。なんじゃそりゃ?
で、いろいろと調べて、ここに行き着く。(あるいみスタート地点)
http://www.renesas.com/jpn/products/mpumcu/16bit/r8ctiny/faq/r8c_flash/flash_a_10.html
Renesas Toolchain Optionのlmcのところに、-ID#?? と書いておいて、これをいったんDL後、書き込みのときにこの数字(16進7バイト)を書けばよいようだ。ううん。知らないことが多いなあ。
投稿者 akita : 15:38 | コメント (0) | トラックバック
PCBEでショートカットキー
だめもとで、PCBEの作者の高戸谷さんに問い合わせとお願いをしてみる。
最近は開発はしていないとのことだが、ショートカットキーの追加ぐらいならすぐできるから、と快く追加をしてくださいました。
高戸谷さん、本当にありがとうございます。
これで、Eで変形や、Nでラインや、Lでレイヤ選択や、Jでグリッド変更や、Qでパッドや、Kで削除や、Wで複数選択や、Yでアパーチャ変更や、Fで変更がきでるようになりました。ありがたや、ありがたや。
投稿者 akita : 08:52 | コメント (3) | トラックバック
2005年03月28日
コネクタ配置
まったく別に、自分で設計した2つのボードの、シリアル接続用のコネクタのピン配置が、偶然同じになっていた。(GND-VDD-TX-RXの順)
いや偶然。でもラッキー。
投稿者 akita : 18:49 | コメント (0) | トラックバック
2005年03月25日
USL5Pで定点カメラ
USL5Pで定点カメラを久しぶりにいじる。(移転のごたごたも、これぐらいはいじれるようになった、ということか)
1ヶ月ぐらい触ってなかっただけなんだけど、だいぶ忘れている。記録をとることの大切さをあらためて感じた。
投稿者 akita : 18:59 | コメント (0) | トラックバック
2005年03月23日
PCBEでDRC
なんとなく気が向いたので、PCBEで設計した基板データに対して、DRC(Design Rule Check)をかけるプログラムを書いてみる。
結局、円や線分などの間隔や幅を調べないといけないわけで、点から線分に垂線を下ろしたり、線分と線分の交点を求めたり、久しぶりに数学(算数)をした。なかなかいい頭の体操になる。
で、結局ほとんど1日仕事になったけど、久しぶりに、長めのプログラムを書いた。やっぱ楽しいね。
で、今日はコマンドライン版で、あまりかっこよくないので、近日中にVisualC#.NETで書きかえて、Vectorあたりで公開をしようと画策する。しかしVectorデビューなんてできるのかな。
投稿者 akita : 17:53 | コメント (0) | トラックバック
2005年03月22日
小型Linux機
/.Jより、こんなのを知る。
http://www.plathome.co.jp/detail.html?scd=11810806
大きさはいい感じだけど、ちょっと(いやかなり)高いな・・・
投稿者 akita : 16:50 | コメント (2) | トラックバック
2005年03月18日
PCBEを考える
PCBEにどうしてもほしい機能。ショートカットキー。レイヤとアパーチャの表示ウインドウ。 これだけだったら、なんとなく作ってもいいような気がしてきた。VisualBasic.Netあたりの勉強がてらにつくってみようかな。 データをPCBE互換にしておけば、ガーバ入出力とかは、PCBEにお任せすればいいし。個人的にライブラリ機能は使わないからなくてもいいし。 このほか、あったら便利だなあと思う機能。undo(まあこれはいいや)。グループ化された「部品」の一覧表(あったら便利かもしれない)。投稿者 akita : 18:38 | コメント (0) | トラックバック
2005年03月12日
各種まいこん
ここ数日、3種類ぐらいのマイコンを使ったプログラムやらを書いていた。 結局「決め手」がなくて、用途ごとに、サイズ、機能などで選んでいるんだけど、まあ仕方ない。 でもさすがに3種類ぐらいを並行にやっていると、頭の中がごちゃごちゃになってきた。特にタイマまわりとか、I/O設定レジスタのビットが、0が出力か、1が出力か、とか。投稿者 akita : 14:55 | コメント (0) | トラックバック
PCBEで基板設計
ここ数年、基板をつくるときは、フリーソフトのPCBEばかり使っている。 かなり規模が大きくても、どうもスケマティック入力+自動配置というのは性に合わないようで、結局手配線でやっている。 いまさらながら、発見した使い方の備忘録。 特に表面実装の部品を使っていると、インチ系(1.27mmピッチとか)とミリ系(0.5mmピッチとか)が混在して、そのつなぎあわせに、グリッド間隔を0.1mmに変えたりと苦労していたんだけど、「交点/端点入力」という機能があることをいまさらながらしる。 これを選ぶと、選んだところが作図の始点などに自動的になる。なんて便利なんだ。 しかしこのPCBE、ショートカットキーが使えると、格段に便利になるんだけど、なんかいい方法ないですかね。ツールバーしかないんだが・・・(ソースは公開されていないみたいだし)(Undoがないのは、とりあえずがまんします)投稿者 akita : 14:53 | コメント (5) | トラックバック
2005年03月09日
SR8C
いまさらながら、R8CのDIP版の、サンハヤトのSR8Cをいじることになる。
開発環境のHEW3を使うのが初めてで、いまいち慣れないので、各種情報の備忘録。
http://plaza.rakuten.co.jp/nisiken2002/8000
投稿者 akita : 11:56 | コメント (2) | トラックバック
2005年02月25日
リセット回路を考える
あまりふだん気にしないものだが、なかなか奥が深いものだ。
http://www001.upp.so-net.ne.jp/FITDESIGN/manu5.htm
投稿者 akita : 20:29 | コメント (0) | トラックバック
2005年02月18日
デバッガ
C8051で、割り込み処理のあとに、すぐにまた割り込みがかかる現象に悩まされる。半日悩んだあげく、デバッガに頼ることにした。
で、その効果絶大。一発で原因がわかる。
(割り込みがかかって、割り込み禁止をしていたが、イベントが起こっていたので割り込みフラグがたっていた)
すごいよ、デバッガ。便利だよ。最高だよ。久しぶりに泣きそうになった。
2005年02月17日
C8051(続)
使っていたC8051F300の在庫が減ってきたので、Digi-Keyで買おうと思ったら、C8051F300は品切れで、C8051F300Rというのがある。でもSiliconLaboratriesのHPにはそんな型番のものはない。ナニモノ?>C8051F300R
2005年02月16日
C8051のタイマと割り込み
しばらく前に使っていたC8051F300(いわゆる米粒マイコン)でちょっと入り組んだプログラムを書く。といってもタイマまわりなんだけど、タイマの設定のしかたが、慣れるまではちょっと戸惑いそうだ。データシートをちゃんと読めばいいんだけど、いままでなれてきたやつとは、なんとなく一味違う(というか一癖あるというべきか)
2005年02月15日
TinySH
遅ればせながらトラ技で知る。
http://www.renesas.com/jpn/products/mpumcu/32bit/sh/sh_tiny/index.html
サイズはともかく、この性能は、どうなんだろう(いろんな意味で)