Sim's blog

電子工作はじめてみました

うぐっ、PC壊れた

2009-10-16 01:02:15 | その他
PC買いました。の続きになります。

ネットワークにつながらなくなりました。
というか、ネットワークカードがいかれたっぽいです。
今は予備のネットブックから書き込んでいます。
一応、起動するのでネットワークにつながらないパソコンとしては使えます。
ネットワークにつながらないと、すごくがっかり系の箱になっちゃいました。
開けてないので分かりませんが、今どきって、マザボ上にネットワークも載ってそうなので、マザボ毎交換になっちゃいそうです。
一応、イーサケーブルをネットブックにつなぐと普通にインターネットできるので、そこから先です。セーフモードで起動したりとか、してみましたが駄目でした。

USBのetherがあるみたいなので、これにするのがいいかもしれません。バッファローのページ

今年は本当に色々なものが壊れました。パソコンは3台目です。今、生き残っているのは、このネットブックだけです。というか、ライフラインですね。

PSoC3でキャラクタLCD

2009-10-15 01:10:41 | PSoC
PSoC CreatorでLチカ(2)の続きになります。

デバッグとかにも使えるし、とりあえずキャラクタLCDを使ってみることにしました。

PSoC3のI/OはVddioというI/O専用の電圧まで扱うことができます。ただし、VddioはVdda以下にしないといけません。PSoC3 FTKでは、VddioとVddaは同じソースから電力が供給されるようになっています(回路図はcy8ckit003userguide.pdfに載っています)。

PSoC FTKに2つあるジャンパーJ1とJ4を両方1-2間につなぐことで5Vを使えるようになります。デフォルトは2-3間になっていてレギュレータで作った3.3Vになっています。正確には5Vの方はUSBのVBUSとの間にショットキーバリアダイオードが挟まっているのでVfの分だけ電圧降下しています。測ってみると4.8Vくらいでした。

なんで動作電圧やI/O電圧のことを気にしているかというと、キャラクタLCDを3.3Vで動作させるのは面倒なので、5Vで動かしたかったからです。

キャラクタLCDは秋月の超小型LCDキャラクタディスプレイモジュール(通販コード P-01675)です。
コントラスト調整は、迷走の果てさんの「LCDのコントラスト調整について2」を参考にして、抵抗一本(2kΩ、写真の赤黒赤)で済ませています。
電源電圧が4.86V、2kΩの両端が0.472Vだったので、抵抗には0.236mA流れています。LCD内部の抵抗は18.6kΩ(=4.86/0.236-2k)くらいということになります。

PSoC Creatorですが、Character LCDモジュールだけを使います。

このモジュールは入出力がありませんが、リソースの設定で、どのピンを出力にするのかを決めます。多少制約があって、7個連続したポートを使わないといけないようです。P0-0~P0-6みたいな感じです。PSoC3 FTKは裏に端子が出ていてP0が7-0全て使えます。P0-6:0とP0-7:1はどちらでも使えますが、前の方が多少効率がいいそうです。

ダブルクリックして設定の画面にします。

名前をLCD1に変更したのと、ユーザー定義フォントを有効にしました。右側はクリックすると絵を作れます。自動で読み込んでくれたりする機能があるかもしれないと思って、いくつか試してみましたが、そのような機能はないみたいでした。

書いたコードです。
#include <device.h>

// ..... 00
// o.o.. 14
// .o... 08
// ..o.. 04
// ...o. 02
// ....o 01
const uint8 negi[] = {
    0x00, 0x14, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, // 8byte/char
};

void main()
{
    LCD1_Start();
    LCD1_LoadCustomFonts(negi);
    LCD1_Position(0, 0);
    LCD1_PrintString("Hello, PSoC!");
    LCD1_Position(1, 13);
    LCD1_PutChar(0xdf); // ゜
    LCD1_PutChar('o');
    LCD1_PutChar(0xdf); // ゜
    for(;;)
    {
        LCD1_Position(1, 12);
        LCD1_PutChar(0x00);
        CyDelay(200);
        LCD1_Position(1, 12);
        LCD1_PutChar('_');
        CyDelay(200);
    }
}

使いそうな関数はほとんど用意されています。フォントの設定は1文字8バイトで8文字分設定できるみたいです。今回はズルをして1文字分しか設定していません。

秋月液晶のバックライトですが、100Ωをつないだところ、抵抗の端子間の電圧は0.96Vでした。全体が4.86Vなので、Vfは3.9Vということになります。また流れている電流は9.6mAです。結構明るいわりに、意外と少ない感じです。

PSoC CreatorでLチカ(2)

2009-10-13 23:29:28 | PSoC
PSoC CreatorでLチカの続きになります。

LEDチカチカはもっと簡単にできました。

こんな感じで、クロックに直接デジタル出力をつないでやります。プログラムは不要です。発振周波数はClock_1をダブルクリックして出るダイアログで設定します。

本来なら、1行だけClock_1_Start();と書いてやる必要があるような気もするのですが、何もなしでも動作していました。


試しにフィルタを使おうと思ったら、PSoC 1のスイッチトキャパシタフィルタでなく、FIRでした。つまりアナログでなくディジタルフィルタでした。PSoC 3にはディジタルフィルタブロックという専用ハードがついているみたいです。一応、昔のスイッチトキャパシタブロックもあるのですが、モジュールとしてアナログフィルタは、今のところ用意されていないようです。
でもって、フィルタブロックの入出力の設定の仕方が分かりません。

PSoC CreatorでLチカ

2009-10-12 22:25:34 | PSoC
PSoC3/5用のPSoC Creatorをインストールしました。試しに作ってみたLEDチカチカの手順を忘れないようにメモしておきます。PSoC Creatorはまだベータ版なので手順や画面等は変更される可能性が高いです。

PSoC Creator 1.0 (Beta 3.1 1.0.0.5311)の起動直後の画面


Create New Projectをクリックして新しいプロジェクトを作ります(赤丸のところにあります)。


New Projectのダイアログが出てきます。

Nameのところにプロジェクト名、Locationにプロジェクトを作るフォルダの親フォルダを指定します。この場合だとD:wordPSoC3Design02というフォルダにプロジェクトが作られます。OKを押せばプロジェクト作成完了です。

プロジェクト作成直後の画面です。

前回の作業のときのレイアウトを覚えているみたいなので、完全に同じ画面になるかどうかは分かりません。

これから、LEDチカチカを作るわけですが、まずは右側のコンポーネントカタログから中央のキャンバス(?)に部品をドラッグドロップして、線でつないでいきます。

Ports & PinsのDigital Output Pinをドラックドロップ


Digitalの下のRegistersの下のControl Registerをドラッグドロップ


Control RegisterとDigital Output Pinを線でつなぎます。
まずは、矢印のところにあるWire Toolをクリックします。


次にControl RegisterとDigital Output Pinの四角い端子を順にクリックします。

実は、線でつながなくても、四角い端子を重ねるだけでもつながります。

Control RegisterやDigital Output Pinの部品をダブルクリックすると色々な設定ができます。もしくは右クリックして出るメニューでConfigureをすることで同じ設定ダイアログが現れます。今回は、そのまま使います。

次にDigital Output Pinを実際のPSoCの出力ピンに対応づけます。

メニューのProject → Design02 Resourcesを選びます。Design02.cydwrという新しいタブができます。もしくは左側のDesign02.cydwrをダブルクリックします。

いかにもピン配置という感じの画面です。

右側のPin_1を配置したいピンにドラッグドロップします。もしくは右側のPin_1のPinと書いてある列のドロップメニューでピンを選びます。今回はP2[0]にしました。


ここまでくれば、後はプログラムを書くだけです。
左側のmain.cをダブルクリックするとmain.cのタブがあらわれます。


ここにコードを書きます。


書いたのはこんなコードです。
#include <device.h>

void main()
{
    uint8 LED = 0;
    for(;;)
    {
        Control_Reg_1_Write(LED);
        CyDelay(100);
        LED ^= 1;
    }
}

Control_Reg_1_Writeは制御レジスタに書き込むAPIです。CyDelayは指定したミリ秒待ちます。

あとは、ビルドして書き込めばおしまいです。
ビルドはBuildメニューからできます。
書き込むのはProgramボタンを使います。もしくはctrl+F5です。デバッグするときはExecute Codeボタンを使います。もしくはF5です。

PSoC3 FirstTouch Starter KitでLチカしている様子です。


まとめると、
部品をドラッグドロップする(つなぐ) → 部品を設定する → ピンアサインする → コードを書く → デバッグして書き込み
みたいな流れです。

ほとんどPSoC3の入門ビデオそのままなんですが、ビデオの方はデジタルポートみたいなのを置くだけでLチカできることになってますが、現在のバージョンでは制御レジスタ+デジタル出力ピンの組み合わせにする必要があります。

どうせ、ここに書いたのも少し経つと全く通用しなくなる可能性大です。

マルツでpepperキット販売中

2009-10-11 09:42:36 | AVR
マルツでエレキジャックNo.14のサポート部品セットEJ14-PEPPEREJ14-2-1が発売になりました。

エレキジャックNo.14は基板が付録につかなくなって、抽選でプレゼントになりました。

写真はサポートページに載っていたプレゼント基板です。

マルツで販売されるサポート部品セットには、基板も含まれているので、プレゼント基板を持っていなくても困ることはありません。

エレジジャックNo.14「FunnelとPepperを使って省エネ・センサを作ろう」フォローアップ記事
もあさんのページ

ATMega329Pで生LCDを動かしてみました(2)

2009-10-07 23:42:30 | AVR
お約束の・・・、振ってみました。
ソースです。
#include <avr/io.h>
#include <util/delay.h>

int main()
{
    uint8_t c = 0;

    lcd_init();

    // COM0
    LCDDR02 = 0b10010010; // seg1-8
    LCDDR01 = 0b01001001; // seg9-16
    LCDDR00 = 0b00100100; // seg17-24

    while(1){
        if(c){
            // COM1
            LCDDR07 = 0b10010010; // seg1-8
            LCDDR06 = 0b01001001; // seg9-16
            LCDDR05 = 0b00100100; // seg17-24
        } else {
            // COM1
            LCDDR07 = 0b01001001; // seg1-8
            LCDDR06 = 0b00100100; // seg9-16
            LCDDR05 = 0b10010010; // seg17-24
        }
        c = !c;
        _delay_ms(250);
    }
}

配線を左右逆にした方が分かりやすかったです。LCDP81ではセグメント24が一番左でセグメント1が右です。
携帯動画だと汚いです。機材がないので勘弁してください。

ATMega329Pで生LCDを動かしてみました

2009-10-06 23:32:52 | AVR
ATMega329Pメモの続きになります。

ATMega329Pで生LCDの駆動をしてみました。

全桁点灯です。LCDはダイセンLCDP81です。このLCDパネルは1/3dutyなので、LCDのセグメントは3つのグループに分かれていて時分割でダイナミック点灯してやる必要があります。ATMega329Pは1/4duty、25セグメントまで対応しているので、問題なく使えます(LCDP81のセグメントは24本)。

コモン3本とセグメント24本の計27本をつないでいるので、線がもじゃもじゃです。


ストロベリーリナックスのジャンパーワイヤって、黒い部分が太いのでブレッドボードに並べて挿すことができません。そのせいで互い違いになるように挿しています。

LCDP81は千石の2Fで入手しました。以前、のりたんさんも使っておられました(記事)。1年以上も前に入手したものみたいです(記事)。ようやっと点けることができました。

ATMega329Pでの使い方です。ハードの方は1pinに0.47uFより大きいコンデンサをつけます。今回は1uFの電解コンデンサをつけています。後はLCDとの間を配線するだけです。ソフトの方は、4つある制御レジスタを使って初期化した後、LCDDRnというレジスタをビット操作することでセグメントの点灯/消灯を制御できます。

今回は電源電圧3V、内蔵の8MHzクロックで動作させています。

ソースです(<と>が全角になっています)。
#include <avr/io.h>

int main()
{
    // LCD初期設定

    // 安全のために関連ポートは全て0出力にしておく
    PORTA = 0x00; // COM0-3, SEG0-3
    DDRA = 0xff;
    PORTC = 0x00; // SEG5-12
    DDRC = 0xff;
    PORTD = 0x00; // SEG15-22
    DDRD = 0xff;
    PORTG = 0x00; // SEG23(PG4) SEG24(PG3) SEG4(PG2) SEG13(PG1) SEG14(PG0)
    DDRG = 0x1f;
    // LCDで未使用はPB、PE、PF

    // (1) LCDCRB
    // +--------- LCDCS クロック選択 0:システムクロック 1:外部クロック
    // |+-------- LCD2B バイアス選択 0:1/3バイアス 1:1/2バイアス
    // ||++------ LCDMUX1,0 1/3dutyのとき10
    // ||||++++-- LCDPM2-0 LCDポート遮蔽 24のとき0110
    // 00100110
    LCDCRB = 0b01100110;

    // (2) LCDFRR
    //  +++------ LCDPS2-0 N : プリスケール 111: clk/4096
    //  ||| +++-- LCDCD2-0 D : クロック分周選択 000:1分周 111:8分周
    // 01110101
    // f = clk / (K * N * D) = 8MHz / (6*4096*8) = 41Hz
    LCDFRR = 0b01110101;

    // (3) LCDCCR
    // 
    // +++------- LCDDC2-0 111:clkの半分駆動
    // |||+------ LCDMDT 1:最大駆動時間
    // ||||++++-- LCD濃淡制御 1000:3.00V 1110:3.3V
    // 11101000
    LCDCCR = 0b11101000;

    // (4) LCDCRA
    // +--------- LCDEN  1:LCD許可 0:禁止
    // |+-------- LCDAB  1:低電力波形 0:通常波形
    // || +------ LCDIF  割り込み要求フラグ
    // || |+----- LCDIE  1:割り込み許可 0:割り込み禁止
    // || ||+---- LCDBD  0:バッファあり 1:なし(省電力)
    // || |||+--- LCDCCD 0:内部給電 1:外部給電
    // || ||||+-- LCDBL  0:LCD表示  1:LCD無表示
    // 10000000
    LCDCRA = 0b10000000;

    // 全部点灯
    // COM0
    LCDDR00 = 0xff;
    LCDDR01 = 0xff;
    LCDDR02 = 0xff;

    // COM1
    LCDDR05 = 0xff;
    LCDDR06 = 0xff;
    LCDDR07 = 0xff;

    // COM2
    LCDDR10 = 0xff;
    LCDDR11 = 0xff;
    LCDDR12 = 0xff;

    // 無限ループ
    while(1) ;
}

数字を出すのは今後の課題です。

秋月にATMega328P

2009-10-05 22:48:38 | AVR
秋月でATMega328Pの販売が始まりました(商品番号 I-03142)。価格はなんと250円。これはたまげた(死語)。レール(14個)で買うと1個あたり230円です。

ん?そういえば、ATMega168が300円じゃなかったっけ(過去記事)。現在の値段を調べてみました(秋月のATMegaのページ)。

ATMega88P 250円 (数割りなし)
ATMega168P 230円 (数割り 14個以上で210円)
ATMega328P 250円 (数割り 14個以上で230円)

なんか、すごいことになってます。

TI MCU入門セミナーに行ってきました

2009-10-05 20:49:49 | MSP430
TIのMCU入門セミナーに行ってきました。
内容はTIのマイクロコントローラMSP430C2000Stellaris(ステラリス)の紹介です。

お目当てはTIのCortex M3、StellarisとUSBに対応した新しいMSP430です。Stellarisは、やたら速いというか、なんでも1クロックなCorex M3だそうです。イーサ(PHY+MAC)やUSB(含むon the go)を搭載したモデルもあります。驚いたのは、やたらキットがいっぱい並んでいたことです。普及のためと思われますが、気合はいりまくりです。キットのためにLuminary Microという会社を買収したみたいです。USBのライブラリなんかも気前よく無料だそうです。

新世代のMSP430(F5xxシリーズ)は、ついにフラッシュ書き込み電圧が1.8Vになっています。たしかF4が2.7V、F2が2.2Vと時代を経るに従ってどんどん電圧が下がっています。LDO搭載でUSBの5Vから3.3Vを作れるそうです。

pascalさんにお会いできました。プラスチックケースを削る機械を導入されたそうで、ケースにはいったそろばんを展示されていました。

aitendoのSPI液晶

2009-10-05 19:11:42 | 電子工作
徹底在庫処分中のaitendoですが、SPIで制御できる128x64液晶「FSTN液晶モジュール(128×64,SPI)[AD-12864-SPI]」が発売になっています。

バックライトはLEDで、SPIなので接続する本数が少ないあたりが、うれしいところです。動作電圧は3.3Vです。コンパクトな基板で2.54mmピッチになっています。1250円でグラフィック液晶というのもいい感じです。
横29mm縦13.5mmで128x64ということは、1ピクセルは1.07:1と横長なんでしょうか。

専用ケーブル「ピンヘッダ用接続ケーブ[CB-PH10P-250]」も別売りであります。

調べてみると元々の製造は中国のメーカーです(製品ページ)。元の型番はMzL05T-12864というみたいです。元々のデータシートです。思いっきり中国語です。

タイミング関係の数字がデータシートに載っていないので、どのくらいの通信速度で動くのかは不明です。

chumby

2009-10-04 20:15:39 | その他のマイコン
chumbyに新モデルchumby oneが出るという記事がengadgetに出ていました。$99に値下げです。本家サイトでは、右上に写真が出ています。今のもこもこから随分イメージが変わります。

Makeには、Chumbyのキットの記事が出ていました(販売ページ)。こちらはマイコミジャーナルの分解記事「Cooking Chumby! - (3) Chumbyをバラす」です。

chumbyの日本語公式ページ
書籍「chumbyで遊ぼう

現行のchumbyはi.MX21というfreescaleのARM9プロセッサが搭載されているそうです。世の中、どこもかしこもARMだらけです。