2013年2月24日日曜日

TerminalCopyOnSelectをビルドしても、Lionではエラーになる

Terminal.app で、範囲選択した際にクリップボードへ自動的にコピーされず、面倒だと感じていました。
調べてみると、TerminalCopyOnSelectというソフトが有ることを知りました。

ただ、最近はバイナリの更新がされておらず、皆さんGitHubよりダウンロードして自前でビルドしているとのこと。
ソースをGitHubより取得しXcodeでコンパイルすれば動作するよ、という情報が多いので、その通りただビルドしてみると、以下のエラーが...。
これって単純にビルドすれば良いのではなくて、「Terminal.appのバージョンチェック箇所を修正する必要があるのでは?」と思い、もう少し調べてみるとやっぱりそうでした。

こちらに、ちゃんと対応バージョンの更新手順が書いてありました。
  CopyOnSelectのLion対応

結論としては、ただコンパイルすれば良いのではなく、
Info.plistファイルの"MaxBundleVersion"をTerminal.appのバージョン以上にしないとダメ
という事です。

私の環境(Mac OS X Lion 10.7.5)では、上記Terminal.appのスクリーンショットより、バージョンが303.2とわかるので、MaxBundleVersionを以下のように修正したところ、

-------------------------------------------------------------------------------------------

com.apple.Terminal
MaxBundleVersion
303.2


-------------------------------------------------------------------------------------------




問題なく使用出来るようになりました。

2012年10月1日月曜日

Tizen SDK 2.0 の atom用イメージの作成 その2

前回、Tizen SDK 2.0 の atom用イメージの作成 その1 で、syslinux 関連でエラーが出ていたため、とりあえず Tizen 1.0の環境からそれらをダウンロードしてエラーを回避できないかに挑戦してみました。

結論としては、まだatom用イメージで起動はできてきません。

不足する以下のパッケージを tizen_20120905.3 より取得しました。

  • mtools-4.0.12-4.4.i586.rpm
  • syslinux-extlinux-4.04-1.4.i586.rpm
  • syslinux-4.04-1.4.i586.rpm
  • syslinux-tftpboot-4.04-1.4.i586.rpm
  • syslinux-devel-4.04-1.4.i586.rpm


これらをローカルのフォルダ(/tmp/tizen_20120905.3)に格納し以下の様にmicコマンドを実行しました。


$ sudo mic create loop TRATS-2.0A-tizen-2.0_20120926.2.ks -o .  --local-pkgs-path=/tmp/tizen_20120905.3

すると以下のようになり、syslinuxは使ってくれるようですがまだエラーが出ています。

Info: Marking /home/toru/TRATS-2.0A-tizen-2.0_20120926.2/tizen_20120905.3/syslinux-devel-4.04-1.4.i58\
6.rpm to be installed
Info: Marking /home/toru/TRATS-2.0A-tizen-2.0_20120926.2/tizen_20120905.3/syslinux-extlinux-4.04-1.4.\
i586.rpm to be installed
Info: Marking /home/toru/TRATS-2.0A-tizen-2.0_20120926.2/tizen_20120905.3/syslinux-4.04-1.4.i586.rpm \
to be installed
Info: Marking /home/toru/TRATS-2.0A-tizen-2.0_20120926.2/tizen_20120905.3/syslinux-tftpboot-4.04-1.4.\
i586.rpm to be installed
Info: Marking /home/toru/TRATS-2.0A-tizen-2.0_20120926.2/tizen_20120905.3/mtools-4.0.12-4.4.i586.rpm \
to be installed
Warning: repo problem: nothing provides charging-animation needed by pattern:trats-.noarch,

Error : found 1 resolver problem, abort!

これは、ksファイル中の以下の部分が影響しています。多分TRATS-board(Samusungの評価ボード?)用のもので、TW317用(pinetrail)だと"@Pinetrail Support"に該当するものだと思いますので、暫定でコメントアウトしました(本当は、@Pinetrail Support相当の処理が必要)。

# @trats

そうすると、micコマンドで "create loop"だとmicコマンド自体は成功するようになりました。



$ sudo mic create loop TRATS-2.0A-tizen-2.0_20120926.2.ks -o .  --local-pkgs-path=/tmp/tizen_20120905.3

しかし、実行したいのは"create raw"です。"create raw"だと、またこのエラーがでます...。
Tizen 1.0 の handset-pinetrail-tizen_20120905.2 は、"mic create raw" で生成したイメージでUSBから起動できることを確認したので、"create raw"で問題ないと思うのですが。

Error : Unable to find package: syslinux

2012年9月28日金曜日

Tizen SDK 2.0 の atom用イメージの作成 その1

HTML5をアプリ開発の主な言語にしているTizenですが、先日SDK 2.0がリリースされました。

Tizen SDK 2.0 をインストールすると、Emulatorがインストールされます。まずはこれで動作確認ができます。しかしEmulatorのため非常に動作が遅いです。

実機環境としては、arm用にTizen Developer Phoneがありますが、私は持っていません。もう一つintel atomでも動作可能なため、私はそのうちの一つexoPCのOEM?のONKYO TW317(A7)を購入しました。

現在は、Tizen SDK 2.0で、arm用の動作イメージはあるようなのですが、atom用の動作イメージが無いので作成してみました。なお今回は成功していません。

今回は以下の環境(現時点の最新)を使用しました。
http://download.tizen.org/snapshots/2.0alpha/common/tizen-2.0_20120926.2/

イメージ作成のmicコマンドで使用する、ksファイルを取得します。
そのままだと、ローカルディレクトリ/srv以下よりrpmファイルを取得しようとするので、以下のように書き換えます。またatom用のイメージを作成するため、armv7lをia32に変更します。

#repo --name=tizen-base --baseurl=file:///srv/snapshots/2.0alpha/common/tizen-2.0_20120926.2/repos/tizen-base/armv7l/packages/ --ssl_verify=no
#repo --name=tizen-main --baseurl=file:///srv/snapshots/2.0alpha/common/tizen-2.0_20120926.2/repos/tizen-main/armv7l/packages/ --save  --ssl_verify=no

repo --name=tizen-base --baseurl=http://download.tizen.org/releases/2.0alpha/daily/tizen-2.0_20120926.2/repos/tizen-base/ia32/packages/ --ssl_verify=no
repo --name=tizen-main --baseurl=http://download.tizen.org/releases/2.0alpha/daily/tizen-2.0_20120926.2/repos/tizen-main/ia32/packages/ --save  --ssl_verify=no

そして以下のように実行しましたが、エラーが出てしまいました。

$ sudo mic create raw TRATS-2.0A-tizen-2.0_20120926.2.ks -o .
mic 0.14 (Ubuntu 12.04 precise)
Info: Retrieving repo metadata:
Info: Retrieving repomd.xml ... DONE
Info: Refreshing repository: tizen-main ...
Info: Refreshing repository: tizen-base ...
Info: zypp architecture is 

Error : Unable to find package: syslinux

syslinuxのrpmファイルがないからNGなのでしょうか?今回はここまでです。 
なお、ksファイルの修正の際にarmv7lのままでmicコマンドを実行すると、エラーが出ずにイメージが作成できました。動作確認できませんが...

2012年6月9日土曜日

Arduino勉強会 第4回 参加

第4回 札幌Arduino勉強会(http://atnd.org/events/29542)で発表しました。
そのときの発表資料です。
皆さん、いろんな物を作ってるんですね。非常に楽しませて頂きました。




以前にやりたいと書いた2コン対応ですけど...すぐ出来そうと書きましたが、ベースとしているソフトで複数接続を意識していない(?)ような感じでしたので、大改造が必要とわかり、頓挫しています...

2012年3月30日金曜日

android のgsmコマンド

android シミュレータで音声通話の動作確認をgsmコマンドで行うことが出来ます。

ただ、電話を掛けるのか、掛かってくるのかが、よくわからなかったので(書籍/ネット上の記事も若干混乱気味)、動作確認した結果をまとめました。しかし「電話をかける」コマンドはみつけられませんでしたが(GUIで電話は掛けられるので問題ないですけど)。
  • gsm call <電話番号>:指定した電話番号から着信する(電話がかかってくる)
  • gsm accept <電話番号>:(gsm callを実行し)着信中の電話番号に応答する(電話に出る)
  • gsm ??? <電話番号>:指定した電話番号に発信する(電話をかける)

実験して分かりましたが、canfelence callというのができるんですね。複数人と同時に通話ができるようです。

こんな感じで、一度に複数番号から着信状態にしたあとに、電話に応答するとconference callができます。

gsm call 1111111111
OK
gsm call 2222222222
OK
gsm call 3333333333
OK
gsm list
inbound from 1111111111 : incoming
inbound from 2222222222 : incoming
inbound from 3333333333 : incoming
OK




2012年3月3日土曜日

Mac OS X lion(10.7)でAndroid ICSをビルドする その1

Mac OS XのVirtualBoxでubuntu10.04(64bit)をインストールし、Android ICSをビルドしようとしました(ubuntuの方が慣れているので)。しかし、なぜかrepo syncで http errorが繰り返し出て、ダウンロードが終わりません。

そこで、VirtualBoxのubuntuでのビルドは止め、普通にMac OS X(lion)でAndroid ICSをビルドすることにします。
結論としては、ICSのビルドは通ってませんが...。ビルドが通れば更新しておきます。

参考にしたのは以下のサイトです。
・公式サイトSetting up a Mac OS X build environment

既にlionでのbuildに挑戦されているdangunさん(Buildできなかったとのことですが...)
・【Android】LionでIce Cream SandwichをBuildできなかった

あと、SDK 10.5 の単独インストールについて
How to add base SDK for 10.5 in xCode 4

ざっくり概要としてはこんな感じです。
公式ページではsnoleopard:xCode3の環境を前提
➡でもlion:xCode4を使っている
➡するとSDK10.5が無いと、コンパイルエラー発生
➡なんとかSDK10.5を入れよう(Xcode3もインストール or SDK10.5のみインストールでもいける?)

以下を前提としており、私の環境(以下の括弧書き)では少々手順が異なりましたので、それをまとめます。
  • OS:snowleopard(lion)
  • Xcode:Xcode3(Xcode4)
  • ツールインストール:Macports(Homebrew)

以下、Setting up a Mac OS X build environment の構成に合わせて記載します。
■1. Creating a case sensitive disk image
  そのままのため、省略。

■2. Installing required packages
2-1. Xcodeのインストール
  lion のため、Xcode4 をインストール済み。
 しかし Android ICS のビルドには SDK 10.5 が必要なので、Xcode3.2.6 をダウンロードし、SDK 10.5 のみをインストールします。

xCode3 2.3.6 の dmgをマウントすると、以下にSDK 10.5のパッケージがあります。Finderからは見えないので、コンソールでこんな感じで見えるところに置いてから、インストールしました。
$ cp /Volumes/Xcode and iOS SDK/Packages/MacOSX10.5.pkg ~

※ちなみにSDK 10.5が無いとビルドする際に以下のエラーが出ます。

Checking build tools versions...
Please install the 10.5 SDK on this machine at /Developer/SDKs/MacOSX10.5.sdk
external/qemu/Makefile.android:82: *** Aborting the build..  Stop.


2-2. その他ツールのインストール
・Homebrewを使っているので、こんな感じでインストール。libsdlというFormulaは無かったので、"sdl"でインストール(問題ないはず)
$ brew install sdl gnupg

・gitはインストール済み。(何のタイミングでインストールされたか分かってません...)

■Reverting from make 3.82
make はインストール済み。またversion 3.8.1だったので問題なし(何のタイミングでインストールされたか分かってません...)

■Setting a file descriptor limit

  そのままのため、省略。

■そしてビルド実施...。
$. build/envsetup.sh
$ lunch vbox_x86-eng
$ make 

エラーが発生したので詳細確認。
$ make showcommands

============================================

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=4.0.1

TARGET_PRODUCT=vbox_x86

TARGET_BUILD_VARIANT=eng

TARGET_BUILD_TYPE=release

TARGET_BUILD_APPS=

TARGET_ARCH=x86

TARGET_ARCH_VARIANT=x86

HOST_ARCH=x86

HOST_OS=darwin

HOST_BUILD_TYPE=release

BUILD_ID=ITL41D

============================================

host C: editdisklbl <= bootable/diskinstaller/editdisklbl/editdisklbl.c

cc -I bootable/diskinstaller/editdisklbl/../libdiskconfig -I bootable/diskinstaller/editdisklbl -I out/host/darwin-x86/obj/EXECUTABLES/editdisklbl_intermediates -I dalvik/libnativehelper/include/nativehelper -isystem system/core/include -isystem hardware/libhardware/include -isystem hardware/libhardware_legacy/include -isystem hardware/ril/include -isystem dalvik/libnativehelper/include -isystem frameworks/base/include -isystem frameworks/base/opengl/include -isystem frameworks/base/native/include -isystem external/skia/include -isystem tools/include -isystem out/host/darwin-x86/obj/include -c  -fno-exceptions -Wno-multichar -m32 -fPIC -include system/core/include/arch/darwin-x86/AndroidConfig.h -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG  -O2 -g -W -Wall -Werror     -MD -o out/host/darwin-x86/obj/EXECUTABLES/editdisklbl_intermediates/editdisklbl.o bootable/diskinstaller/editdisklbl/editdisklbl.c

In file included from bootable/diskinstaller/editdisklbl/editdisklbl.c:29:

system/core/include/diskconfig/diskconfig.h:100: error: expected specifier-qualifier-list before ‘loff_t’

system/core/include/diskconfig/diskconfig.h:119: error: expected declaration specifiers or ‘...’ before ‘loff_t’

bootable/diskinstaller/editdisklbl/editdisklbl.c: In function ‘main’:

bootable/diskinstaller/editdisklbl/editdisklbl.c:191: error: ‘loff_t’ undeclared (first use in this function)

bootable/diskinstaller/editdisklbl/editdisklbl.c:191: error: (Each undeclared identifier is reported only once

bootable/diskinstaller/editdisklbl/editdisklbl.c:191: error: for each function it appears in.)

bootable/diskinstaller/editdisklbl/editdisklbl.c:191: error: expected ‘;’ before ‘offs’

bootable/diskinstaller/editdisklbl/editdisklbl.c:193: error: ‘offs’ undeclared (first use in this function)

bootable/diskinstaller/editdisklbl/editdisklbl.c:193: error: too many arguments to function ‘write_raw_image’

make: *** [out/host/darwin-x86/obj/EXECUTABLES/editdisklbl_intermediates/editdisklbl.o] Error 1



$ cc -v

Using built-in specs.

Target: i686-apple-darwin11

Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/src/configure --disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1

Thread model: posix

gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)

(2012.03.03 17:36追記)
lunch vbox_x86-engだとビルドが通らない可能性を考え、lunch full-envで試しましたが、だめでした。
$. build/envsetup.sh
$ lunch full-eng
$ make 

以下、エラーです。
host C: libelf <= external/elfutils/lib/xmalloc.c
In file included from :0:
./external/elfutils/config-compat-darwin.h:42: error: static declaration of ‘strnlen’ follows non-static declaration
/usr/include/string.h:143: error: previous declaration of ‘strnlen’ was here
make: *** [out/host/darwin-x86/obj/STATIC_LIBRARIES/libelf_intermediates/lib/xmalloc.o] Error 1

(2012.3.9 7:40追記)
Xcode3+Xcode4の環境で試しました。
以下で、エラーとなります。Android Building | Google Groups で質問があるのもこの状態ですね。でも Android Building によるとコンパイルが通っても、正常に実行されないという記載があった気がします...
host Executable: triangleCM (out/host/darwin-x86/obj/EXECUTABLES/triangleCM_intermediates/triangleCM)

Undefined symbols:

  "__dyld_func_lookup", referenced from:

      _promoteLocalToGlobal in libSDL.a(SDL_dlcompat.o)

      _dlcompat_init_func in libSDL.a(SDL_dlcompat.o)

      _dlcompat_init_func in libSDL.a(SDL_dlcompat.o)

      _dlcompat_init_func in libSDL.a(SDL_dlcompat.o)

ld: symbol(s) not found

collect2: ld returned 1 exit status

make: *** [out/host/darwin-x86/obj/EXECUTABLES/triangleCM_intermediates/triangleCM] Error 1

問題の__dyld_func_lookupは、ここで定義されてました。これがリンクされればいいんでしょうか。未確認です。
$ nm -a /usr/lib/dylib1.10.5.o

                 U ___dso_handle

0000000000000014 T __dyld_func_lookup

0000000000000000 T dyld_stub_binding_helper

ootsuka-no-MacBook-Pro:/ ohtsuka$

2012年3月2日金曜日

Android Frameworkを変更すると沢山リビルドするのを止めたい

今、手元にbuild環境が無いので適切な例ではないかもしれません。

例えば...
frameworks/base/services/java/com/android/server/connectivity
をデバッグのため、少しログ出力を追加したとします。

確認のため、Androidビルドのトップディレクトリでmakeすると、依存関係からなのか、沢山ビルドが走ります。API I/Fを変えた訳ではないので、依存関係があってもビルドする必要はないと思うのですが...

(2012/3/4追記)
2012/3/2に参加した、AndroidのHangouts への参加者の皆さんよりアドバイスを頂きました。


imgを再生成するのではなく、imgを展開して変更のあったファイルだけ差し替えるとよいそうです。


以下参考URLです。
DEDIA Streetさん Desire X06HT – system.imgの展開

ただ、上記手順では、ファイルシステムを展開しています。
ファイルシステム として タイプyaffs2 で mountし、直接ファイル差し替えが出来ると思うので試してみます。

2012年3月1日木曜日

MacのVirtualBoxでUSBメモリを使う

USBメモリは、BUFFALOのRUF2-YUF8GS-BKです。
VirtualBoxは、Ver.4.1.8(Mac OS X lion上)です。

Android x86 ICSをビルドしたので、USBメモリからPC実機で起動しようとしました。
USBメモリに実行イメージをddコマンドで書き出す必要があるのですが、VirtualBox上のubuntuがどうしてもUSBメモリを認識してくれません。lsusbは固まります。
(USBメモリの抜き差しと、メニューのデバイス➡USBデバイスからチェックをつけたり外したりを、繰り返すと1回だけ認識しました、でも1回だけ...)

Mac上ではデバイスとして見えないので、VirtualBoxの管理下にUSBメモリはあるはずなんですが。

とりあえずは、VirtualBoxを起動しているHost PC(Mac)側にイメージを持ってきて、Macからddコマンドで書き出して起動は出来たんですけど。

2012年2月28日火曜日

PICでファミコンを操作する(2コン対応) その2

複数のwiiリモコン検出時のINQUIRY COMMANDの応答ですが、勘違いしていました。
私は、INQUIRY_RESULT の応答としてこんな感じを想定していました。
HCI_CMD_INQUIRY_RESULT: 02 受信データサイズ 02 BTアドレス1 BTアドレス2 

ただ調べてみると、INQUIRY_RESULT が機器の数だけ返ってくるらしい、ということが分かりました。
確かに、各機器はお互いの状況を知らないので、誰かがとりまとめをしないと上記のような結果は得られないはずです(そしてその役割がINQUIRY COMMANDの発行側...)。

 ということで、見つけたい機器の数だけINQUIRY COMMAND~INQUIRY_RESULTの受信までを繰り返してみました。 するとこんな感じで、wiiリモコンを複数見つけることが出来ました。
HCI_CMD_INQUIRY_RESULT: 02 0F 01 BTアドレス1
HCI_CMD_INQUIRY_RESULT: 02 0F 01 BTアドレス2

2コン対応、いけそうです。

2012年2月27日月曜日

PICでファミコンを操作する(2コン対応) その1

wiiリモコンで、ファミコンの操作ができるようになりました。 ただ1つのwillリモコンしか対応していないため、2つ目のwiiリモコンも接続できるようにします。 bluetoothの機器の探索で、2個見つけられれば良いはず...と考えてソース(main.c)を見ると以下の部分が該当しそうです。
case HCI_CMD_INQUIRY:
  //Inquiry (search bluetooth dongles around you)
  buf1[0]=0x01;
  buf1[1]=0x04;
  buf1[2]=0x05;
  buf1[3]=0x33;
  buf1[4]=0x8b;
  buf1[5]=0x9e;
  buf1[6]=0x05;//waiting time (5 * 1.28 sec)
//org  buf1[7]=0x01;//if there are bluetooth devices around you, you should give a maximum number here. 
  buf1[7]=0x02;//if there are bluetooth devices around you, you should give a maximum number here. 
  data_size=8;
  DemoState = BT_STATE_WRITE_CLASS;
  HciState = HCI_CMD_INQUIRY_RESULT;
  break;
INQUERYの最後の1byteで探索する機器の数を指定できるので、探索機器数を1→2にしてみました。 wiiリモコンを2つ用意して、認識させてみると...INQUIRY RESULT EVENTで返ってくる機器数は1のままでした。 他にまだ対応すべきところがあるんでしょうね、残念。

2012年2月21日火曜日

PICでファミコンを操作する その3

ずっと更新していませんでしたが、wiiリモコンとBluetoothドングル+PIC24FJGB002で通信し、ファミコンの操作をした際の動画をアップしました。

Playing NES(not emulator) with Wii Remote(ファミコンをWiiリモコンで遊ぶ)

この環境のベースとしては、辻見さんが公開している以下のベージを参考にさせて頂きました。ありがとうございます。
PIC
bluetooth-HID応用例(wiiリモコン)
ソース等は別途公開します。 ソースは以下より取得ください。 https://github.com/tocchi02/NES-Wiimote

2011年12月18日日曜日

PICでファミコンを操作する その2

4021を使わないバージョンは、いったん諦めました(ちょっと負けた気分...)。

そうなると一気に敷居は下がり、PIC24FJGB002+bluetoothドングルをファミコンと接続し、wiiリモコンの環境で、ファミコンを操作することが出来るようになりました!

wiiリモコンで本物のファミコンを操作する...
とりあえずやってみましたが、やっぱりコードが無いというのは自由でいい感じですね。

今後はⅡコンが使用できるように拡張する予定です。
ただ4021を使わないことにしたので、使用するポート数が一気に増えてしまいました。PIC24FJGB002 ではポート数が足らず、Ⅱコンへの拡張ができません。

対策としては、以下が考えられます。
・案1. ポート数の多いPIC24FJ64B004を使う
・案2. I2C接続等で制御できる、GPIOを拡張するICを使う(MCP23017など)

案1は何も問題ないと思います。(ちょっと高いPICマイコンを使うことになってしまいますが)
案2は、間にICをはさむ分、反応が遅くなるはずですが、人にわかるレベルなのかがよく分かりません。

2011年11月3日木曜日

PICでファミコンを操作する その1


PICでファミコンのコントローラーを操作します。
以前のbluetoothドングルをPIC24JF64GB002で使用するやつのと組み合わせれば...

ということで、とりあえずコントローラーのコードを切断し、つないでみました。本当にケーブルを途中で切断しつないだだけです。

本来のコントローラは、4021というパラレル⇒シリアル変換ICを経由して各ボタンのOn/Off状態をシリアルの信号として出力します。
今回はその4021の出力信号をPICでエミュレーションすることを考えてこのように接続したのですが...

信号のP/Sが、本当は16クロック毎にHIになるはずなのですが、3クロック毎にHIになっている様になっているようにPICからは見えます(状態変化割り込みで確認)。
でもPICから適当にQ8の信号を出してみると、SELECTボタンに反応が!ということは3クロック毎にP/SがHIになっている?というのはウソですね...

PICの処理速度が間に合わないのか?
ロジアナか、オシロで波形を確認したいです。

2011年10月29日土曜日

PIC24FJ64GB002のUART設定 その2

// Configure U2RX - put on pin 17 (RP8)
RPINR19bits.U2RXR = 8;
// Configure U2TX - put on pin 16 (RP7)
RPOR3bits.RP7R = 5;

これの意味って、「U2RXに割り当てるポートは8(PR8)」、「RP7に割り当てるのは、5(U2TX)」っていう意味でした。
RXとTXで設定の仕方が逆(機能に使用するポートを指定/ポートに機能を指定)なんですね。

てっきり、
RPINR19bits.U2TXR = 7;
と設定できると思い込んでました...

やっと分かったので、ポートの変更も出来ました。

2011年10月20日木曜日

PIC24FJ64GB002のUART設定

ソースを見ているとこんな感じで、RX, TXに割り当てるポートの設定をしています。
// Configure U2RX - put on pin 17 (RP8)
RPINR19bits.U2RXR = 8;
// Configure U2TX - put on pin 16 (RP7)
RPOR3bits.RP7R = 5;

INT0を使いたいので、U2TXの割り当てをINT0との共有になっているRP7から、別なポートへ変更したいのですが、この即値"5"の意味が分かりません...

RPOR3bitsの定義を見ればよいと思いますが、どこで定義されているんでしょう?

2011年10月19日水曜日

C言語ではじめるPIC24F活用ガイドブック

書籍、「C言語ではじめるPIC24F活用ガイドブック」を買いました。
PICは初めてなので、ネット上の情報をかき集めるのはなかなか大変ということで、まずは一冊書籍で勉強。

2011年10月9日日曜日

PIC24FJ64GB002でbluetoothを動かす(その4)


bluetoothドングルが認識されないので、USBコネクタ周りの配線を再確認し、27pin VSSがGND に接続されてないというショボいミスを発見。この修正でつながるかと思いきや状況変わらず。

Futabaさんのblog(http://side2.jp/2011/05/android-bluetooth-dongle-pic24f/)の電源投入直後と思われるUARTの出力ログを見ると、"GEN: USB Generic Client Initalized:"のあとにVID,PIDを表示しているので、ソースからこのキーワードで検索。
すると、コンパイルオプション"DEBUG_MODE"を有効にしないとログ出力がされないことが判明。複数ファイルでコンパイルオプション"DEBUG_MODE"が使われているようなので、USB関連で複数ファイルからincludeされるhrdakinori-BT_DROID-1c15567\USB\usb_host_generic.hに"#define DEBUG_MODE"を定義して再コンパイル。

再度焼き直し実行してみると...
VID,PIDが出力された!しかもbluetoothドングルのLEDが点滅してる!

接続テストにHT-03Aで、これまたFutabaさん作成のAndroidアプリ"S2 Bluetooth Terminal2"を使って、接続確認。
見事ブレッドボード上のLED1,2の制御がHT-03Aよりできました!!!

Android + Bluetoothドングル + PIC24Fで作成レポートを書いてくれたFutabaさんに感謝いたします。

私にも出来ました!
これでやっとやりたいことの下準備が出来ました、実現のめどが立ったら報告します。とりあえずROMが不足している問題を何とかしないと...

2011年10月8日土曜日

PIC24FJ64GB002でbluetoothを動かす(その3)


作成したUART基板をPIC24FJ64GB002と接続し、
改造したUSB-RSAQ2PC経由でPCへ接続。

とりあえず、こんなログが出てました。
また、LEDも接続しているのですが、LED3も点灯しています。

焼いたプログラムは動作しているようです。
でも、接続したbluetoothドングルを認識してVID,PIDが表示されるはずですが、その表示がありません。
ドングルはPLANEXのBT-MicroEDR2Xを接続しているのですが...

USBVIEW.EXEで確認したところ、BT-MicroEDR2XのVID,PIDは以下のようです。
idVendor: 0x0A1
idProduct: 0x0001

まずはUSBコネクタ周りの配線を確認しますか...


PIC24FJ64GB002でbluetoothを動かす(その2)

前回の PIC24FJ64GB002動作! の続きです。

PIC24FJ64GB002 に焼けはしましたが、何がどうなっているのかまったく状況が分からず...

問題その2. 動いているのかどうかまったく分からない
 実はここで1週間程度止まってます。
動けばいいやーと思い、UARTはいらないでしょ、と回路を組んでませんでした(ADM3202ANも手元に無いし)。
 でもデバッグしようにも手元にあるのはテスターだけなので、まったく情報が得られません。
 結局、秋月でADM3202ANを注文し、ほかでも使えるように別基板でUART基板を作成。

でも最近シリアルなんて使ったことがなく、以前に使っていたUSB-RSAQ2を使うためドライバをネットで検索するも、vista用ドライバがIODATAに無い...

「USB-RSAQ2 vista」で検索すると、改造すれば使えるとのことで、ICの足を切断して対応。無事、認識しました。
http://wiki.tomocha.net/Windows_Vista_USB-RS232C.html
http://www.rootlinks.net/2010/06/16/usb-rsaq2/

 でも、ふと思います。何を勉強すれば「IC3の5番ピンを切れば、動作する」というところに気がつけるのでしょうか?

PIC24FJ64GB002でbluetoothを動かす(その1)

bluetoothをマイコンから使ってみたい、でもマイコンから使用できるbluetoothモジュールは高くて...と思っていたら、USB-HOSTでbluetoothドングルが使えるとのことで飛びついた。
AVRマイコンはちょっとかじったことがあったのですが、PICは初挑戦ということで、変なところにはまりたくないとライタはPICKIT3を購入。

Futabaさんのブログhttp://side2.jp/2011/05/android-bluetooth-dongle-pic24fを参考に作成。

一通り作るも動作せず...。PIC初挑戦で無謀かと思い始めますが、デバッグ開始。

問題その1.どうもPICをMPLABから認識したりしなかったり(Target Device IDが00000000)する
 ブレッドボード上のICD2の配線を指し直して認識するようになりました。接触不良でした。