忍者ブログ
ちょっとは人のためになる事をしないとインターネットコミュニティーの皆様に申し訳がないかと思いながら、自分の備忘録ていどでしかなく、実際の所たいした情報も提供できないでいるブログ
[1] [2] [3] [4] [5] [6] [7]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

キーボードが表示または非表示になった契機は UIWindow に対する Notification で取ることができる
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasHidden:) name:UIKeyboardWillHideNotification object:nil];
キーボードが表示、または非表示になったときビューのサイズを変更しなければならない場合がある。キーボードのサイズは Notification オブジェクトの userInfo から取得することができる。
- (void)keyboardWasShown:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];
    NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
    CGRect keyboardRect = [aValue CGRectValue];
これで、keyboardRect がキーボードの表示領域が得られる
PR
unrecognized selector sent to instance

Terminating app due to uncaught exception

XCode において上記エラーのように、セレクタがなくて例外が発生した場合、デバッガが run loopで停止して原因箇所が分かりにくい。

解決方法1
gdbのコマンドラインから

b __raiseError
 

または、Xcodeの、実行/ブレークポイントを管理/シンボリックブレークポイントを追加で
__raiseError
を追加

例外が発生する前にブレークする

解決方法2
例外が発生してしまった後、どこで起きたかを探る

デバッガの出力

2008-12-24 11:26:04.089 hogehoge[30592:20b] Stack: (

    2487701771,

    2475978299,

    2487730954,

    2487724300,

    2487724498,

    17384,

    23290,

    22894,

    23740,

    38791,

    11319,

    816379725,

    816409420,

    816216335,

    816148471,

    816144856,

    827735530,

    827745292,

    2487203317,

    2487205080,

    827737600,

    827737797,

    816114840,

    816160916,

    9636,

    9490

)


この表示は例外で飛ぶ前のスタックフレーム(プログラムカウンタ)、10進数なので
上から順にみて数値がお大きく変わるあたりに注目。ユーザーコードとライブラリでそこそこ分離した場所にロードされるので、どこからがユーザーコードなのか大体の判断がつく。この場合は6番目の17384に注目。このアドレスのソースコードを出してみる。特定アドレスのリストを出すには list に * 付き引数。

(gdb) list *17384

普通はこれでばっちり原因箇所が出るはずだ。
ソースが出ない(ライブラリ内だったり)する場合は他のアドレスを試せばok

 

 インストールが長いので iPhone SDK 2.1 の新機能を翻訳しておく

iPhone OS SDK を含む非Mac OS Xプラットホームのターゲットをサポートする
Mac OS X 10.5 SDK のための GCC 4.2 と LLVM GCC 4.2 コンパイラ
新規プロジェクト、ターゲット、ソースファイル作成のアシスタントが更新
ツールバーは単一のポップアップでプラットホーム・ターゲット・デバッグ/リリースを切り替える
Subversion 1.5に対応した統合されたSCM
黒軸の重さで腱鞘炎っぽくなり、茶軸に買い替えてみた。
適度な軽さというところか。こちらのほうがしっくり来る。
黒軸では新品当時からチャタリングに悩まされていたが、新しく届いた茶軸では起きないようだ。

 使いにくすぎる
こんなに使いにくいAPIドキュメントはみたことない
いや、初期の頃のjavaドキュメントもこんな感じだったか
コメントから自動生成されたドキュメントではこの程度ということだろう

http://www.xmlsoft.org/APIfunctions.html
このページでブラウザの検索機能を使って検索するのがおすすめ

andlw 0x0f
addlw -.10
btfsc STATUS, C
addlw 'A' - '0' - .10
addlw '0' + .10
Vref=5V の場合、10bit A/D読みとり値を数値化するため(0.01V=1となる整数化)
ADRS * 500 / 1023
といった計算をすることになる。5.00Vのとき500が得られるので小数点をはさみつつ簡単に表示できる。

でも、ADRES x 500 が 16bit幅を超えるので、1023で割るために32bit割り算ルーチンを使わなければならなくなる。

乗算一発で出す方法

500/1023≒32032/65536

なので、ADRES x 32032 の上位16bit(/65536)を取り出せば,16bitx16bit=32bitの乗算ルーチンのみで、後処理が楽な値が得られる。誤差的にはADRES x 32031 のほうが有利だけど、x32031だと1023 => 500 が出ないのでレンジをフルに使いたい場合はx32032のほうがよさげ。

[16bit整数] x [整数部0bit 小数部16bit]の固定小数点演算ですね

I2C 制御のLCDモジュールをバッテリー放電器(製作中)のPICにつないでみた。放電器のPICリセットを繰り返しているようだ。プログラムミス、電圧降下、ウォッチドッグタイマ、LVP書き込み端子、MCLR端子等々を疑って調べてたけど、結局パスコン入れるのをサボったせいと判明。

ブレッドボードにのっかった製作実験中のPICもLCD I2CのPICもパスコンなし。とりあえず放電器側PICにパスコンいれたら安定しました。パスコンって小規模な回路なら気休め程度のものかとおもったら大間違いでした。きっちり入れましょう(反省)
E24系列82Kと20Kで分圧すると 25Vが4.902Vに
VREF+=+5V=A/D値255, VREF-=0V=A/D値0のとき 4.902V=250

まあ、実際の所、AD読取値はテスタで校正したいから、校正パラメータとかけ算割り算はいれなきゃならないとはおもう。
昔かったH8のライターボードについていた100Vむき出しの電源を流用して可変電圧電源を作りはじめた。構想としては、可変電圧の三端子レギュレーターをつけて、ケースにつっこむ。PICで作っるデジタル電圧計と組み合わせるだけの簡単なもの。

ケースの加工をしていたら電動ドリルドライバの電池が弱っているのがきになる。ニカドなのでいわゆるメモリー効果だろうとおもって、なぜか持っているバッテリー放電器(これまた秋月キット)で放電させてみた。6セル7.2Vのドリルドライバなので、終止電圧をを6Vに設定して放電開始するが一瞬で放電が終了してしまう。バッテリパックの電圧を計ってみたらすでに6V近辺まで落ちている。

これは電池の劣化かなとあきらめかけたが、6セルパックの接合部に電極をさしこんで個々の電圧をはかってみると、6このうち4つは1V以下だが2つは1.2Vのままだ。というわけで、差し込んだ電極から問題のセルだけ放電中。

I2C LCDドライバPICはほぼできてしまった。基板に実装したら完成だが、I2C接続用のケーブルがないので次回秋葉買い物後にもちこし。L型の1X4ピンヘッダに2550コネクタとする予定。


追記:
100mA吸い取る放電器が27mAしか流せません。
メモリー効果バリバリですね。
放電後の性能に期待
RS-232Cをブレッドボードで使うためのモジュール。PICBridgeに書いてあるRS-232Cコンバーターはこれです。PICライター制作時の副産物。

データシートの回路図通りにADM3202を配線。両オスの基板コネクタピンでブレッドボードに実装できるようにした。
D-SUBコネクタをとめているネジは、敢えて長めにカットして飛び出させてある。長さはコネクタピンの黒い部分まで。つまり、ブレッドボードの基板面にちょうど接する長さ。
D-SUBコネクタが重くて、ピンだけじゃ安定が悪い。ネジを足がわりに使って支えにしています。



ダウンロード(pdf)
(修正) MCLRのプルアップ抵抗を省略するために _MCLRE_OFF をセット

I2CBridge の回路図



とはいっても、I2CBridgeはチップ単体動作のようなものなので回路というより接続I/Oピンの覚え書きですね。大部分は手持ちデバイスを接続してみましたってだけのもの。


PICアセンブラソース
PC/PIC間通信プロトコル仕様(pdf)
Windows ホストアプリケーション(zip/Windows HOST)

LCDをPICにつなごうと考えた。

H8のようなI/OがたくさんあるCPUなら良いがPICではきつい。4ビットモードを使っても信号線が7本。AKI-H8ではRWのラインを省略して6本で制御しているけど、それだとBUSYがとれないので、書き込みに十分すぎるほどのウェイトをいれてやらなければならず、表示がトロくなるので採用したくない。

とにかくアプリケーションを走らせるPICの信号線は消費したくないので「I2CでコントロールできるLCDディスプレイ」的なモジュールとすることにした。

I2Cスレーブを作ることになるのだが、I2Cスレーブをデバッグする方法がない。そこで「I2C LCDディスプレイ」に先立ってI2Cスレーブ評価用「I2C ブリッジ」を作った。「ブリッジ」というのは、PCをホスト・PICとRS-232Cで通信して、PICがPCからのコマンドに従いI2Cをコントロールするブリッジ的動作とするためだ。

このブリッジにはRS-232C入出力、I2C入出力(汎用3-STATE I/O)があればたりる。「8PIN USARTつきPIC」なんてあったら最適なのだが、そんなものはない。仕方ないので14pinのPIC16F688を採用。14pinあればオンボード書き込みPINを全部避けてアプリケーションを作れるのでとても楽。ちょっともったいないけどね。

PIC16F688、早いし高機能でちいさい。しかもやすい。気に入った。


完成したPICライターと実験用安PIC(PIC10F200)でなにかしてみる
10F200ってA/Dもついてないし・・・なにか使い道ないだろうか
さすが70円



FOSC/4の出力 1MHz をそのまんまチャージポンプで昇圧してみた
1MHzって結構高速なんでどうなるかとおもったけど、ちゃんと昇圧できた

ダイオードは 1S4 コンデンサーは 0.1μ
回路図略

プログラムはどうとでも。OSCCALのB0をONにしてFOSC4を出力するだけ
LEDを点滅させてあそんでるけどどうでもいいわな

PIC10F200, PIC16F87, PIC16F88, PIC16F648A に書き込み成功~

PIC16F818は壊れているっぽい。AKIプログラマーV4で一回かいただけなのになあ・・・


忍者ブログ [PR]
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新CM
[02/07 @naoshi65536]
[02/07 忍]
[09/18 とおりすがり]
[06/26 ilmare]
[03/16 とおりすがり]
最新TB
プロフィール
HN:
naoshi
性別:
男性
職業:
ソフトウェア技術者
趣味:
料理
自己紹介:
@naoshi65536 で連絡がつくはずです。
バーコード
ブログ内検索
カウンター
アクセス解析
FX NEWS

-外国為替-