• カテゴリ 雑記 の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - 雑記カテゴリのエントリ

Palmiの首の後ろにある「パワーボタン」を押してみると、Palmiのほっぺがピンク色になった~!



ウォーミングアップのごとく、首を動かし、腕を動かしてますぅ。


動作のウォーミングアップPart2ですぅ。何していいかわからないから、放置!


次は、言葉のウォーミングアップ~。これ、見てるとおもしろい!まるで、Palmiの早口言葉みたい。Palmi頑張れ~。


このあとマニュアルに従って、インターネットに接続しようとしたのですが、事務所のWiFi環境には容易につながらず、iPhoneでもつながらず、失敗の連続。Palmiはぐずって、しきりに「ネットワーク」「WPS」と言うし。。。

わかる人にWiFiルータの設定を変更してもらい、ようやくWPSやらを使ってつながった様にみせかけてだんまりに。。。
ACアダプターを抜いて主電源ボタンをOFFにして強制シャットダウンするほかなく・・・。パソコン同様に、たぶんあまりやってはいけないんでしょうが・・・。

結局のところ、Palmi Fwapparなるアプリは、iphoneがiOS9だとUSB接続に失敗してしまうようです・・・。
WPS頼みだとどうにもならない場合もあるでしょうから、早くiOS9の対応をして欲しい~!

再起動後、Palmiはシステムのアップデートを見つけたようで、ダウンロードに入りました。


Palmiがやってきた

みっちゃん
バッテリーの取付位置は、Palmiの左脇腹なので、Palmiの頭を右にして寝かせ、左腕をあげます。


バッテリーを奥まで差し込むと、バッテリーの手前にツメが“カチ”っと出て、しっかりと固定されました。


バッテリーカバーを閉じて、Palmiをリラックスポジションの姿勢でお座りさせます。


ACアダプターのプラグをPalmiの背面にある入力ジャックに差し込んで、電源プラグを家庭用電源コンセントに差し込みました。


Palmiのバックパネルにある主電源ボタンをオンにすると、バッテリーの充電が開始です!

「オン」というと、通常はボタンを押しこんだ状態と思っていましたが、Palmiの場合は逆で、ボタンを押していない状態が「オン」なんです。ここは迷ったので、マニュアルで確認しちゃいました。(^^;

Palmiがやってきた

みっちゃん

Palmiがやってきた ~開梱の巻~

カテゴリ : 
雑記 » palmi
2015-10-1 17:30
今日、楽しみにしていたPalmiがやっと到着しました!
早速、箱から出してあげないと、、

そーっと段ボールのふたを開けてみると、
「新しい日常が、やってきた」「Thank you for purchasing me.」
とPalmiからのご挨拶が書かれています。何かドキドキです。


先ずは、Palmiを大切に扱うための大きいサイズの「ファーストステップシート」が入っていました。
一段目には、電源コード、ACアダプター、バッテリー、姿勢調整用アダプター、ユーザーズマニュアル、保証書他の大切な付属品、テキストや書類が入っていました。


付属品類の一段目を取り外すと、いました!待ちに待ったPalmi。


「ファーストステップシート」に沿って、Palmiの胴体を両手でしっかり持って箱から取り出してあげます。ここでPalmiに初めて触るので、これがまたドキドキです。


次に、Palmiの基本スタイル“リラックスポジション”のレッスン。


「ファーストステップシート」を平らな場所で開いて、PalmiをPalmi原寸大の上に寝かせます。手順にそって、“リラックスポジション”で座らせてみました。





夕方にお披露目したので、今日はここまで。

Palmiがやってきた

みっちゃん

SIMPLE TERMのウィンドウサイズ

カテゴリ : 
雑記
2015-8-17 15:00
面倒な設定が無い以外の特徴がないSIMPLE TERM。
特段要望がある訳でもなく、レガシーなシリアルターミナルプログラムに落ち着いている。

バッファに溜まったデータがだらだらと表示されるのは、最近の通信速度向上に描画が追いついていない。作者の怠慢と言われたので、久々に描画方法を一から見直して大幅な負荷率低減と描画速度を当社比300%向上。
ついでに、80×24の固定だったウィンドウの文字数を任意に変えられるように変更。




技術

GCC Developer Liteの更新は?

カテゴリ : 
雑記
2015-1-13 15:00
新しもの好きの作者の割には、パブリック向けの更新が滞っている様です。
カスタムターゲット向けのパッケージはそこそこ更新されていますが、ツール類は特段変わった様子も無く枯れたままだったり。

そんな中、作者より更新の案内がありました。
ソースの編集は1ファイルに限定している事もあって有用性は無いと判断し、公には活性化されていないタグジャンプ機能を、今後のリリースでは使えるようにするらしく。

既にターゲットによってはサポートファイル類が肥大化しており、それらを使用する場合はソースやヘッダファイルを参照せざるを得ない状況です。
また、シングルソースであっても、長大であれば短期記憶をアテに自分のソースを移動するのは骨が折れますし、数日もすればおぼろげな記憶のレイアウトはアテにならなくなってくるでしょう。

Eclipseをはじめ、最近のIDEの類はプロジェクト中のファイルを解析して、編集作業をしやすくする機能が当然の様に備わっています。
GCC Developer Liteは単なるテキストエディタと称している割に、そこそこ中途半端に変な機能が備わってはいますが、広大なソースファイル類を手に取る様に見渡す事はできません。

これらから、タグジャンプ機能の公開が迫られていたという背景がありました。

今回の機能解放では、外部のコマンドを併用してソースファイル中の単語の関連性を簡易的に調べて、宣言されている場所を渡り歩く事ができる様になります。

タグファイルが生成されてさえいれば、カーソル位置の単語をタグファイルから検索させ、その単語を含むソースファイルの該当位置へジャンプ(タグジャンプ)させる事ができますし、ジャンプした履歴を逆に辿る事もできます。

背反事項として、設定によってはタグファイルのサイズがソースファイルのサイズとは関係なく大きくなる事がありますが、ハードディスクもSSD化が進み速度的に有利な環境が整いつつあるので、本ツールを活用されている方向けに活性化する事としました。

ちなみに、ゼロからプログラムを書き進める時よりも既存のソースファイルを読み進めるための機能なため、とりあえずは大きめのサイズになりがちのFDIII-HCやUD3のサンプルプログラムを読むには良いでしょう。

近々公開されるであろう更新版では、この機能が活性化していると思います。

技術

ROM API

カテゴリ : 
雑記
2014-12-26 18:00
NXPのMCUにはROM APIなる機能が備わっている物がある。内蔵ROM上にいろいろなルーチンが予め書き込まれているので、そのルーチンを使えばFLASHメモリ上にそれらの機能を別途作り込む必要が無いという事の様だ。

トラ技の付録だったLPC810の様に、FLASHの容量が少ないデバイスではこのROM APIの恩恵に与る事も多いはず。UART・I2C・SPI・ADCといったペリフェラルは、ROMに用意されたルーチンに任せる事でFLASHの容量を消費せずに利用できるという物。

特にROM APIの中でありがたいのが割り算で、ソースに「/」や「%」を使ったとたんに数キロバイトしかないFLASHの大半をライブラリが占めてしまうのを解消してくれる。
使い方はマニュアルに書いてあるが、何やら特定の環境を前提としている様でよく分からないので、今回はたぶん公知の情報でしょうがLPC82xを前提としてちょっとだけ簡単に使える方法を備忘録として書いておく。
概ねAPIの名称はマニュアルの記述を踏襲しつつ、まずはAPIへの入り口を作る。APIの呼び出しにいちいち変数なんぞ作って初期化して使うのは野暮ったいので直接アドレッシングで。
typedef struct { int quot; int rem; } idiv_return;
typedef struct { unsigned quot; unsigned rem; } uidiv_return;

typedef struct {
  int (*sidiv) (int numerator, int denominator);
  unsigned (*uidiv) (unsigned numerator, unsigned denominator);
  idiv_return (*sidivmod) (int numerator, int denominator);
  uidiv_return (*uidivmod) (unsigned numerator, unsigned denominator);
} TLPC_ROM_DIV_STRUCT;

typedef TLPC_ROM_DIV_STRUCT *pTLPC_ROM_DIV_STRUCT;

typedef struct {
  const uint32_t p_dev1;
  const uint32_t p_dev2;
  const uint32_t p_dev3;
  const uint32_t p_dev4;
  pTLPC_ROM_DIV_STRUCT pROMDiv;
  const uint32_t p_dev6;
  const uint32_t p_dev7;
  const uint32_t p_dev8;
} TROMAPIs;

#define LPCAPI (*(TROMAPIs **)(0x1FFF1FF8UL))
#define LPC_DIV_API ((LPCAPI)->pROMDiv)
これらの宣言をしておけば後は使うだけ。
割り算をしたければ、
int ans, numerator, denominator;
ans = LPC_DIV_API->sidiv (numerator, denominator);
// ans = numerator / denominator;
余りが欲しければ、
int ans, numerator, denominator;
ans = LPC_DIV_API->sidivmod (numerator, denominator).rem;
// ans = numerator % denominator;
それすらも野暮ったかったら、gccであれば
int __aeabi_idiv (int numerator, int denominator) {
return LPC_DIV_API->sidiv (numerator, denominator);
}

unsigned __aeabi_uidiv (unsigned numerator, unsigned denominator) {
return LPC_DIV_API->uidiv (numerator, denominator);
}

idiv_return __aeabi_idivmod (int numerator, int denominator) {
return LPC_DIV_API->sidivmod (numerator, denominator);
}

uidiv_return __aeabi_uidivmod (unsigned numerator, unsigned denominator) {
return LPC_DIV_API->uidivmod (numerator, denominator);
}
としておけば、「/」やら「%」を使用するとリンクされる除算のライブラリ自体を置き換える素地となる。

割り算に限らずペリフェラルを扱うAPIもこの様なマクロを介して呼び出せるので、お気楽感が増すでしょう。

LPC8xxのボーレート

カテゴリ : 
雑記
2014-12-11 18:46
NXP LPC824と戯れているウチにボーレートの設定に疑問が出てきてしまった。

LPCXpressoはサンプルやライブラリも一緒に提供してくれるのでお気楽なのだが、いかんせんXpresso MAX用の設定がわんさとあって自前のものに移管させる際に結構ハマる。
普通LPCOpenのライブラリを使ってくれる事を期待しているのだろうと思い、それを無意識に使うと案の定といった感じ。とは言うもののソースがあるので、十分追うことは可能だし複雑怪奇な物は特に無いので素直にデータシートと見比べれば良いまでである。

そいでもってシリアル通信だが、やっぱり半二重や1Mbpsはさくっと出来て欲しいなぁと思って色々試したお話を。

端子はSWMまかせで好き勝手に割り当てられるのでよしとして、USARTの初期化とボーレートの設定はサンプルのまんまでも何ら問題はない。OETA|OESEL|OEPOLは半二重I/Fのバス制御にRTS端子を使う際に追加している。
#define _BAUDRATE	115200
Chip_UART_Enable (LPC_USART0);
Chip_UART_ConfigData (LPC_USART0,
UART_CFG_DATALEN_8 | UART_CFG_PARITY_NONE | UART_CFG_STOPLEN_1 | UART_CFG_OETA | UART_CFG_OESEL | UART_CFG_OEPOL);
Chip_Clock_SetUSARTNBaseClockRate (_BAUDRATE * 16, true);
Chip_UART_SetBaud (LPC_USART0, _BAUDRATE);
後はボーレートを好きな値にすれば良い筈だが、ボーレートジェネレータがインテリジェンスなのは分かるが1Mbps以下でしか誤差率を吸収してくれないし、Chip_Clock_SetUSARTNBaseClockRate に指定しているボーレートに対する *16 なんてデータシートまともに読まないと怪しい倍数にしか思えない。

結局の所、昔ながらの明確な指定をしようとするのであれば、ライブラリを使わずに自前でレジスタを叩いた方が素直というのはどこの世界も同じ。今回は1Mbpsにしたいだけだったので、クロックを16MHzの倍数にし、予め div と mul を固定し、BRGに好きな値を入れるという方針にした。
まず sysinitほげほげ.c の中の Chip_SetupIrcClocking でPLL設定しているとこを
Chip_Clock_SetupSystemPLL(7, 0);
Chip_Clock_SetSysClockDiv(3);
てな感じにすればオーバー気味だが fclkout=96MHz, sysclk=32MHz になる。
後はUARTの初期化時に
Chip_Clock_SetUSARTNBaseClockRate ((2000000 * 8), true);
LPC_USART0->OSR = 7;
としておけば良いかな。ボーレートは
uint32_t setbaudrate (uint32_ baudrate) {
  LPC_USART0->BRG = (Chip_Clock_GetUSARTNBaseClockRate () / (8 * baudrate)) - 1;
  return (Chip_Clock_GetUSARTNBaseClockRate () / (_OSR * (LPC_USART0->BRG + 1)));
}
で決めてみてはどうでしょう。今回はOSRをデフォルトの16から8にしたが、この辺は必要に応じて変えればOK。
これで2M,1M,666k,500k[bps]といったどこかで見た様な値が選べる。

技術

SP360 Extreme Pack

カテゴリ : 
雑記
2014-11-13 18:18
カメラをカメラで撮影する事のもの悲しさ。


ハウジングやマウントやらも必要だったのでExtreme Packで。

しかしLiveで見るにはスマホかWifi経由だけなのはこれいかに。
とりあえず今日はここまで。

NXP lpc82x

カテゴリ : 
雑記
2014-11-6 17:29
トラ技の付録だったLPC81xの上位版、LPC82xシリーズ
ピンコンパチじゃないので注意が必要だけど、 新しくA/Dコンバータが内蔵されたので楽しげな用途が。

TSSOP20なので変換基板つかえば工作も簡単、楽しそうです。

LPCXpressoを使えばエディタ・コンパイラ・デバッガ、それとサンプルも一切合切ついてこれ一つで完結するので楽ちん。


このデバイスはスイッチ・マトリックスで任意の端子にペリフェラルを割り当てられる(一部の機能を除く)ので、PLDやFPGAの様に最短経路で周辺回路とつなげられるのがヨサゲです。
ウェブ上で設定できるので、モノが無くてもどんな感じか垣間見る事ができます。


それと、タイマの機能をステートフローで記述できるのもおもしろい。

Edison

カテゴリ : 
雑記
2014-10-28 17:31
巷ではEdisonがちらほらと見受けられるように。


WiFiもBluetoothもメモリも装備されてOS入り。こんなサイズに収まってくれるとやること無いですな。
懐かしいx86互換のV25ボードを引っ張り出して並べてみました。Turbo Cが使えるのかな?んなわきゃないか。



初回ロットはコンソールの取りこぼしやら諸々イラッとするので、さらっとアップデートしましょう。