W.Deeの2009年1月の日記

kikyou.info»日記

誠に勝手ながら、kikyou.infoは2017年12月いっぱいをもって閉鎖します。ながらくありがとうございました。

最新月 : 2008年10月
2003年 [             3    4    5    6    7    8    9   10   11   12  ] 月
2004年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2005年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2006年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2007年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2008年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2009年 [   1    2    3    4    5    6    7    8    9   10   11       ] 月
前月の日記  次月の日記

2009年1月31日

PIC16F84Aで7セグメントLEDドライバを作ってみた

というわけでPICプログラマキットについてきたおまけのPIC16F84Aで7セグメントLEDドライバを作ってみました。ボタンをおすと0〜9までのカウントを繰り返します。

PWMによる明るさ制御や、数字の入れ替えの際のクロスフェードなども実装しています。

あと別にボタンでカウントアップするものを作りたかったのではなくて、こっちが本題なんですが、シリアル通信で外部のマイクロコントローラから制御できるようになってます。ただしテストできてにゃい。

PIC7セグドライバ

ソースはこんな感じ(sdcc用)。sdcc結構バグっぽいかも。いろいろ試行錯誤した途中でのハテナだったのでいったい何が原因だったかを知るには至ってませんが。

たくさん買ったPIC16F716-I/PはPIC16F84Aとよく似てるのでこのソースをちょっと修正すれば動きそうですね。

  • 2009-01-31 12:56 はむぞう : 僕も昔PICで遊んだことあります。水銀スイッチとLEDを使用して、振ると字がでるおもちゃです・・・・ バグ・・もしかするとハード的な物かも、接触不良とかは大丈夫でしょうか?
  • 2009-02-01 00:08 W.Dee : 接触不良、、、ではないとおもいます。なんか明らかにバグっぽいので報告しておきました https://sourceforge.net/tracker/index.php?func=detail&aid=2552730&group_id=599&atid=100599

2009年1月30日

PIC16F84Aであそぶ

PICプログラマキットにPIC16F84Aがオマケでついていたので、とりあえず初めてのPICプログラミングとして、LEDを点滅させるのをやってみました。Ver4用のコントローラはファームウェアをぶっ壊して使えなくしてしまいましたが、Ver3.5のコントローラならばこちらのプログラムでLinux上から書き込めるのです。わーい。できた。

2009年1月28日

PICプログラマキットver.4

秋月電子のPICプログラマキットver.4のファームウェアのバージョンアップが「error code=0x55」などといって失敗し、正常に起動しなくなってしまったorz なんでそこで失敗するのかのう

しょうがないのでPICプログラマーVer.4 バージョンアップキットこれを買いに行く予定。正常なコントローラからは他のコントローラを書き換えられるようなので………

あと買ったPIC16F716-I/Pってまだプログラマーが非対応なのね。近日リリース予定のベータ版で対応可能と書いてあるからそれをまつか。

jfsにする

メインマシンはいままでxfsにしていましたが、細かいファイルの扱いはjfsのほうがよさげなので、Subversionつかってるとなおさらなソースファイルの山に対処するためにxfsからjfsにしました。

やり方は簡単。あらかじめ/etc/fstabのxfsと書いてある部分をjfsに書き換えておいたら(このとき該当ファイルシステムのUUIDも控えておくように)、update-initramfs -k all -uして、knoppixとか適当なLive Discで起動したら、別ハードディスクにcp -xvpRでコピーして、ファイルシステムを作り直して(このときにjfs_tune -U <UUID>でUUIDを元の物と同じにするように)、cp -xvpRでコピーして戻すだけ。

しかし/etc/fstabを書き換えるのはいいんですが、一度、update-initramfsをするのを忘れたために、jfs領域がxfsでマウントされるというカオスな状態になりました。jfsでフォーマットされてるにもかかわらず、ある程度ファイル読めるのね。

2009年1月25日

Ubuntu on VAIO type P:suspendできるようにする

dmesgをみているとどうもsony-laptopかsonypiかどちらかが悪さしているようなので

/etc/modprobe.d/blacklistに

blacklist sony-laptop
blacklist sonypi

を追加し、/etc/init.d/hotkey-setup の

        Sony*)
        #modprobe sonypi; # Needed to get hotkey events
        #modprobe sony-laptop

の二行の modprobe をコメントアウト。

$ sudo update-initramfs -k all -u

してリブート。

一応サスペンドはできるようになったが、ハイバネートはうまくいかない。電源が切れずにリブートしてしまう。

サスペンドができただけでもよいとしますかね。

Ubuntu on VAIO type P:fbdevにする

Xが遅い件について。

どうもXのログを見ていてもよくわからんのですが、ふとXのドライバをvesaではなくてカーネルフレームバッファ(fbdev)にしたら、ある程度の改善を見ました。

/etc/X11/xorg.confは以下のようにします (driver "fbdev"を追加)。

Section "Device"
    Identifier    "Configured Video Device"
    driver "fbdev"
EndSection

Section "Monitor"
    Identifier    "Configured Monitor"
EndSection

Section "Screen"
    Identifier    "Default Screen"
    Monitor        "Configured Monitor"
    Device        "Configured Video Device"
EndSection

カーネルフレームバッファを有効にするため、/boot/grub/menu.lstの以下の部分を変更します。

# kopt=root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro vga=0x367

vga=0x367 を追加します。0x367はモード番号です。vesaドライバで起動するとXのログ(/var/log/Xorg.0.log)に大量にどばーっと出てくる、Mode: 161 (1366x768)とかの数値(16進)に0x200を足した数値です。

ちなみに0x367は1600x768x16bppです。0x368だと1600x768x32bppになりますが、さすがにもっと重くなるので、ハードウェアアクセラレーションの効かないこの状態では16bppでもしかたないかな、と。

同じく/boot/grub/menu.lstを編集し、Ubuntuロゴを止めます。フレームバッファを使用すると表示が変になるし、Xを使っていても画面の上の方になんかゴミが表示されるようになってしまうからです。

# defoptions=

quiet splashを削除します。そうしたらこれらを実際のメニューに反映するために

$ sudo update-grub

を実行してリブートします。

psbドライバが何事もなく使えればいいのに。

2009年1月24日

VAIO type P がきた

キターー

のは数日前の話ですが、とりあえずVistaは起動してリカバリディスクをつくったらおさらばして、Ubuntu Intrepidを入れてみました。ってか「インターネットに接続する」ってのをクリックしてもなんも反応がなくて、おかしーなーとおもってぷち、ぷち、ぷちと何回もクリックしてたら数分後に12個ぐらいそのウィンドウが開いてるんだもん。重すぎ。

ちなみにXMBはC:\InstantON に入ってます。どういった形でこれがロードされるのかはちょっと調べてません。Ubuntuをクリーンインストールしたので消えてしまいましたが、気が向いたら使えるようにしてみようかとも思っていますが。

Bluetooth、WirelessLAN、サウンドは問題ありません。いい感じです。

しかし、液晶のバックライトの輝度調節はできません。Xの解像度が変です。ハイバネート、サスペンドともにできません。黒乳首のタップができません。

Xの解像度については、/etc/X11/xorg.confに

Section "Device"
        Identifier      "Configured Video Device"
EndSection

Section "Monitor"
 Identifier "Configured Monitor"
 Vendorname "Generic LCD Display"
 Modelname "LCD Panel 1600x768"
 Horizsync 31.5-48.0
 Vertrefresh 56.0 - 65.0
 modeline "640x480@60" 25.2 640 656 752 800 480 490 492 525 -vsync -hsync
 modeline "800x600@56" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync
 modeline "800x600@60" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
 modeline "1024x600@60" 65.0 1024 1048 1184 1344 768 771 777 806 -vsync -hsync
 modeline "1600x768@60" 65.0 1024 1048 1184 1344 768 771 777 806 +vsync +hsync
 Gamma 1.0
EndSection

Section "Screen"
 Identifier "Default Screen"
 Monitor "Configured Monitor"
 Device "Configured Video Device"
 Defaultdepth 24
 SubSection "Display"
 Depth 24
 Virtual 1600 768
 Modes "1600x768@60" "1024x600@60" "800x600@60" "800x600@56" "640x480@60"
 EndSubSection
EndSection

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
EndSection

と書くことで正しい解像度になりますが、非常に描画がトロい。KnoppixやDebian Live CDで起動させるとサクサク動くので、なにか設定が違うのかな、と思っていますが、調査中です。

xserver-xorg-video-psb (Poulsbo用ドライバ) はUbuntu 8.10(Intrepid Ibex)では正常に動作しません。メモするのを忘れて出典がわかりませんがIntrepidではサポートする気は無いようです。

あと、刻印、ちゃんとPanasonicと入れてくれました。

Type-Panasonic

SONYさすがです。GJです。

2009年1月23日

あれ以降に買った物
  • カーボン抵抗 330Ω 1/4W 100個
  • カーボン抵抗 1MΩ 1/4W 100個
  • カーボン抵抗 750kΩ 1/4W 100個
  • カーボン抵抗 330kΩ 1/4W 100個
  • カーボン抵抗 100kΩ 1/4W 100個
  • カーボン抵抗 22kΩ 1/4W 100個
  • カーボン抵抗 470Ω 1/4W 100個
  • カーボン抵抗 10Ω 1/4W 100個
  • スイッチングダイオード 型番分かんないけど適当な奴 100個
  • 7セグメントLED C-551SRD 6個
  • 丸穴ICソケット42pin 4個
  • 丸穴ICソケット18pin 10個
  • 0.1uF 積層セラミックコンデンサ 10個
  • 10uF 積層セラミックコンデンサ 10個 (耐圧10V)
  • 100uF 積層セラミックコンデンサ 10個 (耐圧6.3V)
  • よくわかんないちっこいスピーカ 2個
  • セラロック 20MHz 10個
  • 温度センサIC S8100B
  • タクトスイッチ 10個
  • CdS

これで大体の実験はブレッドボードでできるとおもうんです。

2009年1月21日

PIC16F716-I/Pをどう使うか

無駄(←キーワード)に7セグLEDをスタティック駆動してみたい。

gschemを使ってテキトーに書いてみた。PICそもそも使ったこと無いのでこういう使い方なのかなーと想像。

7セグLED駆動

メインプロセッサからはData ClkとDataの二線によるなんちゃってシリアル通信でコマンドを送る。あとクロックも。

それぞれプロセッサの識別は、それぞれのRA2とRA1を数珠つなぎにすることで、互いに初期化時に信号を送ってIDを自律的に決定するようにする予定。無駄に。

これやるまえにメインプロセッサやんないとだめやね。少なくともClockと適当なData Clk/Dataを送れるようになるぐらいのを。

  • 2009-01-21 06:36 Miliardo : これはまさにPICプロセッサの無駄遣い(笑)……まあ、私もMCS-51とAVR以外のコントローラを使ったことがないから、暇があればPICを試してみようか(なんだかPSPでPCのキーボードを使いたくなったから)。
  • 2009-01-26 15:37 W.Dee : 大量生産でこういう設計してると怒られそうですが趣味だし勉強だしということでw

2009年1月20日

でかい時計を作りたい(4)-ブロックダイアグラム

こんな感じです。

ブロックダイアグラム

FoneraからはシリアルでメインプロセッサのPIC16F887-I/Pに入ってく。40ピンのでかいやつ。250円。メモリ368バイトも持ってるんだよ。すごいでしょ。

そこから贅沢にも24ピン(16+8)をつかってドットマトリクスLEDの行/桁駆動。

ここまではまあいい。ここまでは。

問題はそっから右側。

昨日、無計画にも買い物リストも持たずに秋葉をさまよってたら7セグデコードICがなかなか気に入ったのが見つからない。ってか売ってない。そしたら、うめさんが魔の囁き「18ピンぐらいのPICで制御したら」。

で、秋月で売ってる一番安くて7セグデコードICの代わりになるぐらいのピン数をもった奴ということでPIC16F716-I/Pを買ってきた。110円が6個。たかが7セグごときに一桁ごとにコンピュータとか贅沢だなー。しかも128バイトの超広いメモリ空間。

ふは。ってかこの18ピンのやつ、UARTとかついてない。しょうがないからメインプロセッサからチマチマと適当にタイミング合わせてシリアル通信させるかということに。オシレータも内蔵してない。これまたメインプロセッサからクロック出してやるかということに。たしかでかいやつの方はクロック出力あったよな。あと数十円だせばちゃんとここらへんついてるの買えたんじゃないの?まあマゾなんでいいですわ。

でも無駄に(7セグ制御としては)高機能な石つかうから無駄に部屋の光量に合わせてLEDの光量もPWM制御するとか、無駄にクロスフェード表示とかできるよねーとか。

うん、たのしみだ。

  • 2009-01-20 14:10 AZ-UME : 勢い余ってICEとデータロガーとロジアナを買いそうな予感のDeeさんを電柱の影から見守ってますね^^
  • 2009-01-26 15:32 W.Dee : 昔からオシロが欲しいですたい。

2009年1月19日

でかい時計を作りたい(3)

重要な事をいい忘れましたが、NTPで時刻情報をとってくる時計です。

今日買ってきた物

  • AKI-PICプログラマ完成品Ver4
  • スイッチングACアダプタ 15V 0.8A (PICプログラマ用)
  • USB-シリアル 変換ケーブル
  • 積層セラミックコンデンサ 0.01uF 10個
  • 赤いLED OSDR5113A 300個
  • スイッチングACアダプタ 5V 4A
  • DCプラグ (ACアダプタがささる♀)
  • カーボン抵抗 150Ω 1/4W 100個
  • カーボン抵抗 1KΩ 1/4W 100個
  • カーボン抵抗 75Ω 1/4W 200個
  • 赤い8x8ドットマトリクスLED×2
  • PIC16F887-I/P 4個
  • PIC16F716-I/P 7個
  • 丸穴ICソケット 40pin
  • ユニバーサル基板 310mm×228mm
  • ブレッドボード
  • 2SA1015-Y 200個
  • 2SC1815-GR 200個

ブレッドボード僕も初めて買いました。実験が楽になりそう。

2009年1月17日

でかい時計を作りたい(2)

なぜ、fonかというと、

  • 安い。2,000円でお釣りが来る。
  • Ethernetはもちろん、ワイヤレスLANまで装備。
  • ファーム書き換えによりLinuxが走る。多分正真正銘のntpdまではしる。
  • UARTつき。他のデバイスと通信ができる。

ということで、ネットワーク対応の小物を自作するにはうってつけなのです。

fonで時刻情報は取得・出力するとして、表示部はPICマイクロコントローラを中心に作ろうかなと。

2009年1月16日

でかい時計を作りたい

でかいデジタル時計を作りたい。デカデジクロック みたいなやつを。

うめさんにいろいろ聞きながら画策中。とりあえずLa Foneraを使うことにした(ぇ)。

  • 2009-01-17 15:25 AZ-UME : 電子工作も楽しいっすよね。ソフト設計とハード設計が両方満喫できますし。
  • 2009-01-18 01:18 W.Dee : っすねー ガキのころはどっちかというとハードよりの人間でした。標準ロジックICだけで1clk/dayのパルスを入力として現在日付を表示する表示器(閏年対応)とか作ってました

2009年1月10日

VAIO type Pを予約した

ポケットには実際には入らないだろうと思われときどきツッコミなおさないと出てきてしまいあまりの人気に真似する人が続出しているというVAIO type Pですが、衝動的に予約してしまいました。

はっはっは。

刻印サービスといって、ボディに任意のメッセージをレーザーで刻印してくれるサービスがあるのですが、

Panasonic VGN-P90HS

と申し込んでおきました(VGN-P90HSは今回買ったVAIO type Pの型番)。

ふっふっふ。

  • 2009-01-10 05:37 nakata0705 : いいですね衝動買い。おいらもPalm Preを衝動買いしたいですよ…。
  • 2009-01-13 13:30 W.Dee : 衝動買い万歳