LPC810のI2C-bus ROM APIで苦労した

スレーブから受信したいとき、i2c_master_tx_rx_pollで、送信バッファにアドレスを入れ送信してから、受信するかと思いきや違うらしい。i2c_master_receive_pollの受信バッファの1番目の要素にアドレスを入れて、受信を行うと良いらしい。
d.hatena.ne.jp
ここに答えが書かれていた。
アドレスのR/Wビットが違うからだろうと思い、いろいろ試行錯誤していたが、まさか受信バッファにアドレスを入れるとは思わなかった。
ユーザーマニュアルには確かに送信バッファにアドレスを入れろと書かれていたと思うのだが…。何故、受信バッファにアドレスを入れるのか謎である。しかし、良く気がついたな。
LPC800 User manualには明らかに誤った事が書かれていた。”The slave address with the R/W bit =0 is expected in the first byte of the send buffer. After the task is finished, the slave address with the R/W bit =1 is in the first byte of the receive buffer.”とあった。この通りにやっても全くうまく行かなかった。
安いし、大きさの割にはメモリが多く、高性能そうだったから選んだが、資料の間違いの多さは非常に困る。

ESP8266が不安定だったけど解決した

CH_ENを使って外部からESP8266を起動させていて、動作が不安定な場合はハードウェアユーザーガイドを参照し、RC遅延回路を追加すること

ESP-WROOM-02を使って、インターネットから加工された画像を取得して、メモリ液晶
みんなのラボのブレークアウト基板を使ってテスト中)に表示させたい。インターネットから取得するときだけ、ESP8266を起動して、それ以外の時の液晶のリフレッシュや極性反転はLPC810で行う予定。LPC810ひとつだと、ESP8266の画像取得終了を検知出来ないので、2個のLPC810を使って、ひとつは液晶の駆動、もうひとつは液晶駆動LPC810から信号を受け取って、ESP8266の起動を行い、ESP8266の終了の検知をして、液晶駆動しているLPC810を再開させることにしている。
最初は、終了の検知を出来なくてもいいやと思って、LPC810ひとつでやっていたが、いまいち不安定だった。多分、リセットを行っていないからだろうと思っていたが、違った。電源が使いかけの乾電池だったから、電圧が足りないと思い、昇圧コンバーターを通してみた。そうしたら、多少安定した気がするが、やはり数回に一回はESP8266が起動しない。オシロスコープで観察したところ、電圧降下や発振が見られた。友人にこのことを聞いてみたら、昇圧コンバーターは発振することがあるらしいことが判明した。少し高い電圧に昇圧して、シリーズレギュレーターを通したらどうだろうとアドバイスをもらい、似たようなことをやってみた。9Vの電源を元に三端子レギュレーターでESP8266とLPC810の3.3Vを得て、液晶駆動用の5Vも別の三端子レギュレーターで得てみた。しかし、ダメだった。角形な9Vの電池を使ったから、これでは電流が足りないのかなと思って、単三電池6本の電池ケースを発注したり、9Vからシリーズレギュレーターで3.3Vを得るのは効率が悪すぎるので、DC/DCコンバータも発注してみた。いろいろ合わせて1万円弱を秋月に発注してしまった。発注したものは、ほとんど使わないで放置することになりそうだ。OSコンとかインダクタとかDC/DC制御ICとか。使わない気がするが、スキルをつけるために動かしてみるか…。データシート通り組んで終了だけど、放置よりは良いだろう。
なお、秋月から届いた部品は今のところ、ほぼ放置している。
ESP8266のフラッシュ書き込みのために使っているブレッドボード上でも3.3Vと5Vが得られるので、それでも試してみた。なんとなく、一番安定しているような気がするが、やはり何回かに1度は起動に失敗する。オシロスコープで観察する限りでは、一番安定していた気がする。が、ダメだった。
長くなってしまったが、疑った原因は次の二つだけだ。

  • リセット信号のタイミング
  • 電源

結局、両方とも原因では無かった。

[Document list 0A-0D] ESP8266 Hardware Guide – ESP8266 Developer Zone
原因は、ESP8266のHardware User Guideに次のように書かれていた

Note: If the power management IC is connected with the power-on enable pin CHIP_EN, it can control the power on-and-off of ESP8266EX by output high and low voltage through its GPIOs. However, pulsed current might be produced at the same time. In order to delay the transmission of pulsed signal and avoid unstable current of CHIP_EN, a RC time-delay circuit (R=1kΩ, C=100nF) is needed. There is an internal pull-up in the CHIP_EN pin, so no external pull-up is needed.

そう。
RC遅延回路を組めば良かった。

発注していなかったが、幸い、1kΩの抵抗と、0.1μFのコンデンサが家に転がっていたので利用した。
そしたら、かなり安定して動作するようになった。20回近く電源を入れ直してみたが、動作しないことは全く無かった。
そういえば、RSTピンは浮かせてはならない的な事が書かれてあった気がするが、接続忘れていても確か普通に動作した。あとでプルアップするか3.3Vに接続するかしておかねば。
RC遅延回路をユニバーサル基板に組んだ際、CH_ENに接続するところを間違えてRSTに接続してしまったり、RSTから抵抗を切り離そうとしたら、銅のパターンごと取れてしまったので最初から作り直したりして、結構時間がかかった。作り直したときも裏面だと左右か上下が反転するが、そのことで混乱して左右逆に抵抗を実装して抵抗を取るのも面倒なので1から作り直したりした。
没作が2枚出来てしまった…。

ともかく、今のところ、安定して動くので、いろいろ試してみよう。
昇圧コンバーターによる動作も行えるか試してみなければ。
あるいは、9Vからシリーズレギュレーターで電源を得た場合とかも。
乾電池で何日持つんだろう。

LPC810の省電力モードでいろいろハマった

d.hatena.ne.jp
こちらの記事を参考にしながら、Deep-sleep modeに入ったり、Deep power-down modeに入ったりしてみた。
gist.github.com
とりあえず、main以外は、こんな感じ。
gist.github.com
最初はこんな感じだったと思う。
これだと、割り込みでWAKEUPした後、Deep-sleepに入ると、タイマーで復帰しなくなる。

	    	// Needed?
NVIC_ClearPendingIRQ(WKT_IRQn);
NVIC_DisableIRQ(WKT_IRQn);
LPC_PMU->DPDCTRL = 0;
SCB->SCR = 0;
LPC_WKT->CTRL |= (1 << 1) | (1 << 2);

Needed?のところがまずかったらしい。
あと、LPC810メモ:deep power-downモード(Self wake-up timerで復帰) - みっかぼログにある、次のサンプルコードも原因の一つだった。

        // DPDFLAG(11)が立ってるので、deep power-downからの復帰である。
//	同フラグをクリア
LPC_PMU->PCON &= ~(1 << 11);

正しくは次の通りだ。

LPC_PMU->PCON |= (0x1<<11);

この修正を加えることで、ピン入力でWAKEUPしたあと、Deep-sleepに入ってもタイマーでちゃんと復帰するようになる。
しかし、これではDeep power-downに入った後、復帰後Deep-sleepに入ろうとすると一瞬で処理が終わる。
スリープしていない。
Needed?の部分は、LPC812, WKT, deep power down mode: working only once... | www.LPCware.comにあったのを持ってきたり、Deep power-downで消し忘れたレジスタがあるのでは無いか疑惑を払拭するために追加したのだが、これはまずかったみたい。
正しくは次の通りみたいだ。

	    	LPC_WKT->CTRL |= WKT_CLR;
NVIC_ClearPendingIRQ(WKT_IRQn);
NVIC_DisableIRQ(WKT_IRQn);

この修正を加えることで、ちゃんとスリープから復帰する。

しかし、フラグをクリアするのに、0を代入するんじゃ無くて、1を代入するとか罠だよな。
今年も残りわずかだが、なんとか年内に記事を公開できそうだ。

00:07追加
あけましておめでとうございました。
修正後のmainを貼り忘れた。
gist.github.com
直すと、こんな感じになるかと思う。

MADOSMAをWindows 10 Mobileにした

救済措置で送料分返金されたので、その分、何らかのお返しをすべく、マウスコンピューター秋葉原ダイレクトショップでアップグレードを依頼した。
Windows 10 Mobileにしたのはいいが、早速、不便な点が2点ほど
まず、ロック画面が天気予報にならない。
そして、メールアカウントごとに異なる着信音が設定できない。
というか、そもそも音が鳴らない模様…
これは不便だ。
既存のコードを捨ててスクラッチから書き直している部分が多いのかな。Edgeなんかはそうだよな。完全に作り直している。今まであった機能がなくなるというのは少し不便ですな。

さくらのVPSのインスタンスを追加

とりあえず、Net Radio Archiveを入れた。


これを見て若干不安になった。それと、ディスク容量が50GBで頻繁にローカルに落として消さないとすぐ一杯になりそうになるのが理由だ。
さくらのVPSなら同じ値段でHDDプランなら容量が2倍なので、それほど頻繁に消して落とす必要が無さそう。ただ、消し忘れてしまいそうなのが怖い…。

SIMロックフリーの罠(docomoとApple関連)

当たり前の話だが、SIMロックフリー端末は無保証である。
海外で購入した端末ならわかる。技適が無いと違法なので使わないが…。たまに技適のある端末が転がっていたりするので、それを使ったりすることはあるか。iPhone 4sは技適が表示されるモデルを輸入して、docomoで使っていた。
が、国内で購入した3大キャリアで使えると宣伝されているiPhoneでトラブルが起こって、しかもサポートに問い合わせたら何もしてくれないと言うのはひどい話だとは思わないだろうか?
iOSが更新された後に地雷が発動して、しかも、OSの問題だとは一切認めることが無い。

携帯電話の責任分界点は謎だ。謎過ぎる。

前回遭った問題

togetterで雑にまとまって…いや、まとまっていないので書いてみる。
結論から言うと、事務手数料3000円(税別)支払うと解決した。
原因はFOMA契約だったからなので、Xi契約にすると解決した。

iOS 7.1が出たので適用したら、圏外表示になって、通話が一切出来なくなった。
FOMA契約だとdocomoではLTE対応の端末を蹴るらしい。
iOS 7まではLTEを無効の設定にして、再起動すれば、3Gの端末として認識されるらしく、何も問題なく使えた。
しかし、iOS 7.1からはLTEを無効にしてもLTE端末として基地局に接続しに行くのか、蹴られて圏外になる。
携帯ネットワークの知識が素人レベルなので、合っているのかは謎

Apple正規サービスプロバイダが隣駅にあったので、行ってみた。
故障では無いと判定され、交換されなかった。
Genius Barでは、交換可能なので交換したけど、自分には責任は無いとAppleの姿勢をちゃんとアピールしてきて感じが悪かった。
ドコモショップの協力の下、SIMカードの故障では無い事と、Xi契約のSIMなら問題なく使えるという事が確認出来たので、割と安心して契約変更出来た。契約変更しても使えるようになるという保証は全くないと言われたが。

今回遭った問題

未解決だ。

iOS 9にしたら、SMSの送信失敗が多くなった。表示上では失敗なのに、実際は届いているので、誘導通りに再送信すると多分2重3重課金される。
自分が頑なに通話のみのプランを使っていて、通話も家族内通話だけで使っている。従って、月々の料金は基本料+SMS従量料金が若干になる。少しでも利用料を稼ぐために設置した罠なのでは無いかと思えてくる(違

SIMカードを受け取りに行ったとき、SIMロックフリー端末については、一切のサポートが受けられないと言われ、承知したので、ダメ元でAppleに問い合わせてみた。

一人目の中国人だと思われるアドバイザーとチャットで話し、スペシャリストに聞きに行ってもらった結果、記事を紹介された。support.apple.com
読んでみたが、送信は出来ているし、出来るトラブルシューティングは全て行ってた。
二人目の中国人っぽい名前のアドバイザーとチャットした結果、スペシャリストと通話することになった。
電話のスペシャリストは、どっかの銀座バーと違って、丁寧だったが、結局、Appleの責任では無いと言う回答だった。
エンジニアに調査をしたところで、これはキャリアの問題であって、なんでこの問題があがってくるんだということになるらしい。

結論


だからプロプライエタリはクソだ
腐ったリンゴだ
問題が起こっても直せやしねえ
直そうとしねえ
問題があると認めようとしねえ

しかし、ドコモがノンサポートで全額基本使用料を取ると言うのは、いまいち納得がいかない。
MVNO使えって話か。

余談

そういえば、MADOSMAは何度か回線との相性問題について問い合わせたけど、丁寧でまともな回答が返ってきていたな…。
サポート分のプレミア価格がついているだけの事はある。
性能からして、ちょっとお高い程度だけど、Appleサポートの役立たずを経験したら、かなりお買い得に思えてくる。

携帯電話端末においては、サポートの態度がMicrosoftAppleで入れ替わっている気がする。いや、Windows PhoneやWindows 10 MobileのポジションがLinuxで、iOSが昔のMicrosoftで、Androidは…よくわからん。
Appleに2回ほど言われた、「そちらのキャリアの問題でしょう」がMicrosoftジョークの「それは仕様です」とか「そちらのハードの問題でしょう」を彷彿とさせる。
Windows Phoneは変態しか使わなさそうなイメージがLinuxっぽい。今のところ、シェアも低いし。
もっとも、Windows PhoneやWindows 10 MobileのサポートはMicrosoftでは無くOEMだから、OEMのマウスコンピューターが優秀なんだろうなぁ。
アプリは少なすぎて使い物にならないし、たまに再起動することがあったりするが、MADOSMAは良いものだ。

受けたことのあるサポートの感想

適当にずらずらと書いてみた。
読みにくいかもしれないが、ご勘弁を。

Apple

Genius Bar(銀座)

無能
交換しか出来ない
iPhone 4s発売後にハンズフリー通話のマイク故障で故障判定してもらったら、普通に通話して壊れていないとか言いやがった。スピーカーで通話するときのマイクと普通に通話するときのマイクが別だと言うことを知らなかった模様。
iPhone 5sの不具合を報告しようとしたら、交換するか、しないかの二択だった。その上、その不具合は貴様の自己責任とか責任転嫁してくれた。現状渡しのソフトウェア利用規約を出してきたのだろうけど、万が一の時に何もしてくれないのでは無いかと不安にさせてくれる。聞いた話だと、ACアダプターが発火しても、貴様の使い方が悪いとか言ってくるらしいし。気分を害したくないなら行かない方が良いだろう。

Genius Bar(栄)

4sがランダムに携帯の電波を受信しなくなって本格的に使えなくなったので、名古屋の栄で交換できないか聞いてみた。そういえば、銀座では、iPadを渡されて、さぞ当然の如くIMEIを入力させられたけど、栄ではスタッフが入力していた。アメリカで買ったモデルだったから、在庫が無いと言う事が判明した。以前は、日本にあるモデルをSIMロック解除して渡すことがあったらしいが、今は違って、海外モデルを取り寄せることになるのかな。

Apple正規サービスプロバイダ

自分が行ったことのある所は良かった。
Genius Barよりマシ。

チャット

最近は中国人が頑張っている様だ。
日本語が若干怪しいが、チャット終了後も調べてくれて、フォローアップのメールが届いた事がある。
ちゃんと受付番号が自動的に発行されて、再び問い合わせた時に引き継がれて良い感じ。

電話

主にチャットの人が対応出来ない、難しい問題の時に出てくる。
機能要望のフィードバックの受付もしてくれた。
何か問題が起こったときはGenius Barに行かずに電話サポートを使った方が良いかと思う。

MacBook Proの修理

メインメモリーが診断ツールで問題があると判定された事があった。
診断ツールの終了後にサポートに飛ぶオプションがあったので、それを利用した。が、どうも、診断ツールで得られた情報がサポートに送信されない模様。診断ツールで問題が発見されたとコメントに書いておけば良かったところを、WindowsWindows Updateがエラーになるとか、インストールが途中でエラーになって止まるとか書いてしまったがために、Boot Campのサポートになってしまった。なんとか事情を説明したら、普通に修理受付になった。確か、引き取りのみの対応だった。最初、自分でヤマト運輸の営業所に持ち込むと言ったら、そこに持ち込むまでの間に事故があったら困るので引き取りにしてくれと言われたけど、Apple正規サービスプロバイダやGenius Barへの持ち込みの途中で事故があったらどうなるのか、今、思うと謎である。
引き取りに来た翌日には修理拠点に到着して、すぐに修理されて、その次の日には戻ってきた。

iPhone 4sの修理(電話で依頼)

何も問題なく手続きが進み、引き取りに来るかと思いきや、引き取り日の朝だったか前日になって、いきなり引き取りがキャンセルされた。何故キャンセルされたのか何も説明が無かった。問い合わせたら、どうやら手違いで修理を受け付けてしまったらしい。なんとか修理できないものかと尋ねたら、カスタマーリレーションズに転送されて、直営店なら修理できるかもしれないとの話だった。

ASUS

メールサポート

週末や祝日は休みなのか、返信に少し時間がかかっていた。
自分の場合は、並行輸入的なタブレットPCの修理相談だったが、保証期間内でも有償修理だった。修理を受け付けているだけまだ良いかな。サポートが良くないと評判をよく聞くが、自分の場合は、至って普通だった。

Microsoft

Surface Pro修理

Appleと違って、日本っぽくご不便をおかけし申し訳ない的な謝罪がある。そして、引き取りは無く、自分で送る必要がある。引き取りに来るまで待たなくて良いというメリットがあるけど、引き取りを希望する場合は自分で手配しないと行けない。また、梱包材は自分で用意する必要がある。購入時の箱でも使えば良かったんだろうけど、ナイスなデザインの箱を手元に残したかったので、ヤマト運輸の精密機械向けの箱を購入して送った。
ASUSと違って、なんと、購入した国じゃ無いのにサポートが受けられる!ただし、交換されるのはサポートを受ける地域の仕様のSurface Proなので、日本では日本語のOSの入ったSurface Proに交換される。
修理…というか、交換の速度は結構早かった。確か、送った翌日には受領したとのメールが届き、その次の日に発送されて、発送された翌日には届いた。
届いた交換品は…、傷だらけだった気がする。使えるから良いんだけどな。

Surface Proとウイルス対策ソフト

NOD32を使っているが、Surface Proと相性が悪いらしく、休止状態の復帰に失敗することがある。
保証期間が過ぎた頃に、この件を相談してみたら、何故か普通に受け付けてくれた。自分の知っている他社(LenovoApple)だと有料になるはずなのに、無料だった。これは、日本のメーカーと横並びの対応なのかな。
原因が判明したので、報告したら、何度も感謝された。

Windows 8.1にアップデートしたらアクティベートに失敗した問題

アップデートが出たので、適用したら、アクティベートに失敗して、海賊版疑惑になった事もあった。電話認証を強制的に出して、電話認証を試みたら、電話先で滅多に無いエラーが出たっぽい。詳しくは忘れたけど、結構長い時間保留で待たされた。深夜にもかかわらず、いろいろと調べてくれた模様だが、認証は出来ず、翌朝、Surfaceのサポートに問い合わせることになった。しばらくしてから、担当者から電話がかかってきて、取れなかったので折り返したが、記録に残っていないらしく謎で、2度目の連絡を待つことになった。2度目の連絡で、新しくプロダクトキーを発行したので試して欲しい的な事を言われた。メールでプロダクトキーと操作手順を受け取ったがメールが文字化けしていて読めなかった。今時、文字化けが起こるとは珍しい…。再度、zipで固めたtxtファイルで送ってきてくれて、これは問題なく読めた。しかし、再発行されたプロダクトキーを入れてもアクティベートはうまく行かなかった。しばらく経ったら、いかがお過ごしか尋ねる電話がかかってきて、ついでに他の人からの情報で、リセットして、英語のままアップデートを適用すれば問題なく8.1に出来るという事が判明した。かなり時間がかかったが、放置される事は無く、最終的に問題は解決した。

Windowsストアのギフトカードが使えない問題

MADOSMA発売キャンペーンのアレだな
Twitterの検索を見る限りでは、応募者全員に当たっているのでは無いかと思えるほど高い確率で当選しているようだ。それだけ、売れていないマイナーな製品ってことかな…
電話で問い合わせたら、ちゃんとした人に引き継がれて、数日後に電話がかかってきて、再発行されたコードを教えてくれた。ちゃんと、残高が増えたかどうか向こうで確認してから、電話を終えることになった。

マウスコンピューター

MADOSMAのアンテナピクト表示

どっかに文章になっていれば、問い合わせる手間が省けるのだが、無かったので問い合わせた。データ通信のみのSIMカードだと、3Gのみのエリアの場合、圏外に表示されるが通信は出来るらしい。レアな使い方をしているのに、ちゃんと回答された。

MADOSMA故障疑惑

この問題に引っかかった。サポートに問い合わせたら、故障と判定されて、そのまま修理に行き、何もされず、アップデートで直るという情報の書かれた報告書が得られた。送料と箱代が無駄になった…と思いきや、Twitterでぼやいたら救済措置があった。FAQがもっと早く更新されていれば良かったんだけど、問題に気づくのが早すぎたので運が悪かった。

PS3が戻ってきて、PS Vitaを送り返した

音沙汰無かったので心配だったが、無事、修理されて戻ってきた。
ディスクドライブごと交換かなと思っていたが、どうやらフラットケーブルだけ交換したらしい。
時間がかかったのは部品でも取り寄せていたからだろうか。
SONYは結構、高度な修理をするようだ。

PS Vitaは、やはりタッチパネルの誤作動が確認出来たので、再現条件を詳しく書いて送り返すことにした。
チャットサポートに念のため問い合わせてみたが、どうも故障判定を行っていない様だ。
どっかのバーみたいな、素晴らしく適当な対応だった。
再び預かるか、様子を見るかの二択だった。
こちらの示した条件で誤作動が起こるかどうか聞いたら、わからないみたいだし、担当部署への情報提供を行う的な事を言っていたが、進展があったら連絡ぐらいよこしてくれないか聞いたら、それは出来ないとか言われた。
本当に情報提供が行われているのか謎だ。
クレーマーを満足させるためだけの言葉で、本当は何もやっていない可能性もあるな。
プレイステーションクリニックの対応はどうなることやら
チャットサポートよりまともだと良いな。

しかし、PS Vitaのタッチパネルはなんであんなに誤作動を起こすんだ…。
ウェットクリーナーで拭くと確実に誤作動が起こるんだけど、某知恵袋によれば、3年前から存在する現象のようだ。
マニュアルを流し読みしてみたが、水分で誤作動を起こすことは書かれていなかった。
水分で誤作動を起こすのは、レアケースなのかなあ。
少なくとも、自分の場合は手汗に反応して頻繁に誤作動を起こすから、使い物にならなくて困る。

PS Vitaが返却された

現象が再現しなかったと言うことでPS Vitaが返却された。
届いたので早速確認したが、確かに現象が再現しない。
送ったときは確かにタッチパネルが誤作動を起こしていたのだが、妙だな。
しばらく使って様子を見ることにする。

PS3は、修理進んでいるかの情報がない。
PS Vitaの件で情報提供を行った時についでに聞いてみたが、症状を確認しているとの事だった。
あれから連絡が無いけど、順調に修理が進んでいると良いな。
某知恵袋で、日曜に営業していないとか書いてあったけど、プレイステーションクリニックって日曜に営業している場合もあるようだ