4021を使わないバージョンは、いったん諦めました(ちょっと負けた気分...)。
そうなると一気に敷居は下がり、PIC24FJGB002+bluetoothドングルをファミコンと接続し、wiiリモコンの環境で、ファミコンを操作することが出来るようになりました!
wiiリモコンで本物のファミコンを操作する...
とりあえずやってみましたが、やっぱりコードが無いというのは自由でいい感じですね。
今後はⅡコンが使用できるように拡張する予定です。
ただ4021を使わないことにしたので、使用するポート数が一気に増えてしまいました。PIC24FJGB002 ではポート数が足らず、Ⅱコンへの拡張ができません。
対策としては、以下が考えられます。
・案1. ポート数の多いPIC24FJ64B004を使う
・案2. I2C接続等で制御できる、GPIOを拡張するICを使う(MCP23017など)
案1は何も問題ないと思います。(ちょっと高いPICマイコンを使うことになってしまいますが)
案2は、間にICをはさむ分、反応が遅くなるはずですが、人にわかるレベルなのかがよく分かりません。
2011年12月18日日曜日
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よりできました!!!
PIC24FJ64GB002用のBluetooth stackのソースコード公開しましたでソースを公開している @hrdakinoriさん、
私にも出来ました!
これでやっとやりたいことの下準備が出来ました、実現のめどが立ったら報告します。とりあえず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 に焼けはしましたが、何がどうなっているのかまったく状況が分からず...
問題その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の配線を指し直して認識するようになりました。接触不良でした。
AVRマイコンはちょっとかじったことがあったのですが、PICは初挑戦ということで、変なところにはまりたくないとライタはPICKIT3を購入。
Futabaさんのブログhttp://side2.jp/2011/05/android-bluetooth-dongle-pic24fを参考に作成。
一通り作るも動作せず...。PIC初挑戦で無謀かと思い始めますが、デバッグ開始。
問題その1.どうもPICをMPLABから認識したりしなかったり(Target Device IDが00000000)する
ブレッドボード上のICD2の配線を指し直して認識するようになりました。接触不良でした。
2011年9月25日日曜日
X40 のリカバリ(IBM Rescue and Recovery)
linuxを入れていたが、再度Windowsを使いたくなりリカバリ方法を調査。
このページが参考になりました。
grub> root (hd0,1)
grub> parttype (hd0,1) 0x0b
grub> unhide (hd0,1)
grub> chainloader +1
grub> boot
今使っているGrubのバージョン(GRUB version 1.98+20100804-14)が新しいため、コマンドに変更がありそのまま使用できなかったので、以下のようにコマンドを置き換え(パーティション構成も違うので)。無事IBM Rescue and Recoveryが起動しました。
grub> root (hd0,2)
grub> parttool (hd0,1) type=0x0b
grub> parttool (hd0,1) hidden-
grub> chainloader +1
grub> boot
Rescue and Recoveryで復元が終わり、再起動。
でも以下のようになり、起動しない...
Welcome to GRUB!
error; unknown filesystem.
Entering rescue mode...
grub rescue>
ls コマンドで、HDDの状態を確認。ここで表示されたパーティションをさらにlsすると中身が見えるらしいが、windowsのfatパーティションなので、Unknown file systemと怒られる。
grub rescue> ls
(hd0) (hd0,msdos2) (hd0,msdos1)
きっとMBRがGRUBのまま復元されてないと予想し、昔の98liteインストール用のFDが残っていたので、USB接続のFDDから起動し、以下を実行。
FDISK /MBR
めでたく、Windows XPの起動ロゴが見えました。
登録:
投稿 (Atom)