2013/11/16

[雑記]Vaio Duo 13買いました。

,
 えへへ、買っちゃった…(口座の残高を見て顔面蒼白になりながら)。ということで、遂に念願のちゃんと動くノートパソコンを買いました。

スペック

SVD1322A1J
Windows 8.1 64ビット 
ブラック 
Core i5-4200U(1.60GHz) インテルHDグラフィックス 4400 
メモリー8GB(オンボード8GB・追加なし) 
SSD 約256GB 
無線WAN・GPSなし 
日本語配列・バックライトキーボード 
液晶保護シート(貼付サービス付)あり 
VGAアダプターなし 
ワイヤレスルーター 
USB IRアダプターなし 
Office・Adobe Acrobatなし 

ATOK 2013 for Windows(30日期間限定版) 
ウイルスバスタークラウド90日期間限定版 
AdobePremiere11/Photoshop11(30日間体験版) 
Adobe Photoshop Lightroom 5なし 
長期保証<3年ベーシック>/SVD1322A1J用
長期保証(オンサイトなし) 
残価設定クレジット対象モデル
分割払手数料1%(24回)対象モデル
ノートンオンラインバックアップ(60日限定版) 
タッチパネル搭載 
VAIOアプリケーションあり 
VAIO本体 
メッセージ刻印サービスなし 
個人向けVAIOオーナーメードモデル 
13.3型ワイド 1920×1080ドット 
13Autumn 
CLIP STUDIO PAINT なし

 以上のカスタマイズで\175,360でした。お高い買い物です…。
 カスタマイズは、RAM8G、SSD256GBは譲れない点で、逆に妥協したところはCPUをi7→i5に落としたところです。後GPSが欲しいなあと思ったのですが、LTE付きモデルでないとGPSが付かないみたいなので諦め。

買ってから届くまで

11/1 ソニーストアで注文
11/6 発送(新東京物流システム支店から)
11/7 家に到着

最初はお届け予定日が11/9でしたが、2日早く送られてきました。

感想

やっぱ書きたくなりますよね、レビュー。まあ既に、前の記事に家電量販店で触った感想を少し買いているので、ここではもうちょっと細かいことについて書きたいと思います。

いいところ
  • スタイラスペンが使いやすい。本当に使いやすい。ノートパソコンというと、トラックパッドの小ささとマウスに比べて使いにくいことに苦戦して、ストレスが溜まるという印象があるのですが、スタイラスペンは手ですっと動かしてタッチするだけなので、本当に便利です。
  • Vaio Paperなどで手書きが出来る。新感覚。
  • 休止からの起動が早い。電源ボタンを押すと、すぐにログイン画面が出てくる。スマフォ並。
  • 発熱が少ないこと。私は前にVaio Pを持っていましたが、布団の上で使っていると、度々熱暴走することがありました。それと比べると、Vaio Duoはファン無し(多分)ですが、触ってもあまり熱を感じず使えるので快適。
  • タッチパネルがあるので、ストアアプリが本当に使いやすい。タブレット向けに作られている(?)ストアアプリは、画面外からのスワイプなどもあり、マウスだけだとかなり使いにくいものですが…。逆にタッチして操作できると、ボタンが大きかったりするので使いやすいです。玉に瑕なのは、ストアアプリの数が少ないこと。Tumblr.とか存在しないみたい…
わるいところ
  • スタイラスペンでVaio Paperを使う時、ペンで書いてからソフトが線で追従するまでに少しだけラグがある。設定で変えられるのかもしれないが、ちょっと気になる。
  • ディスプレイを立てた時の角度が固定で、なおかつそれが斜めなので、正直寝っ転がって使うにはつらい角度。できればもう少し自由に変えさせて欲しかった。
  • これは私の目の問題でもありますが…13.3型フルHD解像度でも、ぶっちゃけ文字が小さい。多分知らず知らずのうちにより目になってたりするので、目への疲労が心配。
Read more →

[雑記]お気に入りのつけ麺店

,
 いや私はラーメンブロガーではないし、そこまでラーメンフリークでもないんですけどね。麺屋武蔵武仁というところなんですが、凄い気に入ってるので書いちゃいました。

麺屋武蔵 武仁 - 秋葉原/ラーメン [食べログ] http://bit.ly/HQHJQy
麺屋武蔵 武仁 | ラーメンデータベース http://bit.ly/HQHOUp

 このお店は、バイトの面接が通ったのでその帰りにふらっと寄ったのが最初です。その時からハマってしまい、以来舌鼓を打ちに時々行ってるお店です。

武仁つけ麺(\1,000) 味玉+武仁肉+メンマ+刻みネギ

「推せる」ポイント

  • 魚介系の味が強いけれど、他のお店(ラーメン凪渋谷、つけめん玉とか)とは違って独特の甘みみたいなのがある。これがめっちゃ美味しい。
  • 麺は程よい堅さ、太さで食べやすい。量も大中小あるが、自分にあっていて◎
  • 他のお店では普通のつけ麺を頼むと、申し訳程度の薄ーーーーいチャーシューが乗ってたりとかしますが、ここはそんなことはなく、柔らかくて美味しいお肉が入ってます。これがかなり推せる。
  • スープ割りは何か味が変わる…そういうもの?とにかくつけダレの味が好みすぎるので、つけダレをそのまま飲むという、傍から見るとアレなことをですね
  • 濃厚つけ麺の味はあまり覚えてないけれど、よりクリーミーでとにかく「濃厚」だったような気がする。

つけ麺以外のメニューは?

普通のつけ麺ばっか食べる人間ですけど、他にメニューが存在してることは察知してます。カレーつけ麺とか有名みたいですね。

 他にも、夏には冷やしつけ麺とかやってました。冷えた麺類と聞くと、冷やし中華とかならいいですが、これがラーメンや冷めたつけ麺となると私は正直苦手なのです。ですが、ここの冷やしつけ麺はとても美味しくて、「冷たくてもこんな旨いものだったのか」と感動した(割とガチで)記憶があります。確か刻みネギと天かすが乗ってた。

 あと、武仁つけ麺(\1,000)が「全部乗せ」「価格も一番上」な立ち位置だと思ってるんですけど、実はその上に肉盛濃厚つけ麺だとかがあったんですね。最近気づいてびっくりしました。偶然他の方が頼んでるところを見たのですが、武仁つけ麺の武仁肉(?)よりも大量の肉が乗ってて、値段相応なんだなあと思いました。貴族になったら食べてみたいですね。ええ。

 逆に、麺屋武蔵がつけ麺チェーン(?)なのか、ラーメンを食べる人はあまり見かけたことがないです。自分も一回しか頼んだことがない。しかも夏の暑い日だったので、記憶があまりない。ああ…

まとめ

記事に書くネタがないと、こういう路線に走るものなんですね… まあ人それぞれ好みはあるでしょうけど、個人的におすすめです。
 あと、実際そんなに高い頻度で通っているわけではないんですが、時々foursquareでメイヤーをさせていただいております(?)。
メイヤーです

 

Read more →

[電子工作?]Maker Faire Tokyo 2013に行ってきました。

,
感想です。面倒なので箇条書きです。

  • ビスマス結晶は今年も綺麗でしたが、今年も買いませんでした。
  • NXPさんのブースでLPC800 Mini-kitの実物を見ましたが、想像してたよりもずっとコンパクトに纏まってました。
  • 今年は去年と比べてもArduino一色なように感じました。去年はもう少しFPGAとかがあった気もします…。ただ、どなたかが出品していらしたLPC2388のマザーボードは、心の底から凄いなあと思える作品でした。大きい基板を目一杯使っていることとか、それなりに規模の大きそうなプロジェクトをちゃんと成し遂げるところとかがです。自分の中の「ああいうものを作りたい」というイメージにピッタリだったので、具体的な目標になってくれそう。上手くモチベに繋がればいいなあ。
  • MFT2013では、自分が今Eagle使い始めたこともあって、基板ばかり見ていました。けれど、あの場はどちらかと言えば「ものづくりをして、出来たものを見せあおう」みたいな空間なんですよね。だから、電子工作の部分は手段であるといった人が多いと思うし、自分と他人で作品を見る視点やそれをどう感じるかといったことが、結構ずれてるのかなあと考えながら歩いてました。どうでもいいですね。
  • 新しく別のビルも使うことになったんですね、知らなかった
  • 生物系のブースも幾つかあったようで、個人的には面白いなあと思っていたんですが、あまり興味を持たれていなさそうな感じだったのが、残念
  • お台場に行く途中のよさこいイベントと、1/1スケールガンダム、なぜか大量にいる調査兵団(コスプレ)が面白かった、というのもある
Read more →

[雑記]Bloggerのテーマを変えました

,
 今のテーマに段々と飽きが来ていたので、新しいものに変えました。http://btemplates.com/というサイトで見つけたAlfaものです。一応はこれでいいかなあと思っていますが、気が変わったらまた他のにするかもしれません。
 
 このテーマにした動機を書いておきます
  • メニューが右にあって1列
  • 余計な装飾がない(シンプルなのでよい)
くらいですかね…同じく上のサイトにあるAvenueというテーマと迷ってたのですが、とりあえずはこっちで様子見です。とりあえず問題点として
  • 投稿の下のほうに変な広告のようなものが出ている
  • 俺はFacebookとかはやっていない(、ので右上のボタンのほとんどが使えない)
  • メニューのArchiveで、ボタンが2つ表示されてしまっている
  • メインページで、各ページのプレビューで改行が反映されておらず、とても読みにくい
  • SyntaxHighlighterをもう一度入れなおさないといけない
といったことが気になっています。自力でテンプレートを直せればよいのですが… とくに最初の広告のようなものは、ユーザーからしたらとても不快でしょうし、どうにかしたいですね…

小見出しを付ける

後、前から自分の文章が読みにくいと感じていたのですが、ようやく「小見出しがないからでは」と気付いたので、簡単なものですが小見出しを付けるようにしていこうかな、と。
 cssはかなり苦手なのですが、以下のサイトのを使わせていただこうかと思っています。Bloggerで、標準で小見出しにする事できましたね…テーマのテンプレ中で、h1~h6に装飾するようにもなってるようですし、わざわざ考える必要もなかった…

見出しデザインの参考にしたい CSSで作るhタグのサンプル集 | 日刊ウェブログ式 http://bit.ly/17whV2I

まああまり記事を書くことがないですが…
Read more →

2013/11/04

映画まどマギ叛逆の物語、の考察(ネタバレ)

,
 映画を2回見た時点での個人的な感想です。モロネタバレになります。検索避けしようと思ったんですけど、ちょっと不可避ですね…
 私がこんな記事を書くというのも珍しいことだと、自分でも思うんですけどね。忘れないうちに…
まだ内容を理解していないの?(はい)

後半のストーリーの理解


 確か、QBの作戦とは、ほむらちゃんが魔女化するところを、外部と遮断することで一体どうなるか検証するものであり、最終的には、膨大なエネルギーを秘めたまどかを支配するつもりだった(あやふや)。それを知ったほむらちゃんは激怒し、作戦を完遂させないために、殻を破らず自ら呪いを生み出して、結界の中で死のうとした。

 でもそれを知らないまどか達は、円環の理の一部であるところのさやかとペペ(だっけ)が結界内に呼び寄せられたことを利用して、結界の中の見滝原で魔女化したほむほむを倒し、結界破って円環の理に還させてあげようとしてあげた。お迎えである。

 でもそれはほむほむの意思とは違う。だから戦いの途中、魔女化したほむらちゃんが「もうやめて…」って言っていた。しかし、べべのトランペットや、魔法少女たちの力によって、結局殻は破られた。ここまでは分かる…


わからないこと


この後の、
・ほむほむが「この時を待ってた」→一体いつから待ってたのか

・ほむほむがワルプルギスの夜に勝てなくて、まどかを撃ったシーンは過去の改装なのか殻を破った後戻ったのか(多分前者?)

・なんで殻の外に、結界内にいなくなった人間を呼び戻しただけのはずの、マミさんと杏子がいたのか→他の人間は、ほむらの魔女結界が創りだしたもので、主要人物のみが呼び寄せられたものだが…

・映画後編まどマギのOPにあった、ベンチでほむらとまどかが頬を擦り合うぐう聖なシーンが、今作も用いられた。叛逆の方では、まどかは棒人間のようで、地面に倒れ、後にはピンクのペンキの跡のようなものしか残っていなかった。このシーンの意味するもの

・一番わからないのは、ほむほむとまどかの「願い」の違いと、それの不理解からああなるに至った過程(よく見てないだけか)

・映画予告(劇場版まどマギ後編の最後のやつ)にあった、ほむらちゃんが赤いリボンつけて弓撃って戦っているシーンは、一体どこに消えたのか。
 一応、以下の予告でも0:03くらいにある。


・アニメでは、まどかが魔女化することでワルプルプルの夜は消滅し、その後宇宙自体が書き換えられてしまったので、ほむほむが魔女化したシーンはなかったはず。そもそも予告では、宇宙改変によりほむほむはナイトメアのいる世界で戦い、魔女もソウルジェムも無かった気がする。しかし、叛逆の物語では、ほむほむのソウルジェムは濁りきり、魔女化する寸前の状態であった。これは改変される前の世界の話である…?ここらへんの経緯はそもそも映画に出てきてないような気がするが、何があったのか。
 これは、2つめのワルプルを倒せなかったシーンが出てきたことと関連している?

これが分からない…


気になったシーン


・さやかがほむらちゃんに「どうするかじっくり考えるんだね」みたいなことを言った時、空から声が聞こえてきたのは、結界の外から呼びかけていたのか?(ほむほむが結界内に呼び込んだので、それはない…?)

映画一つに何を真面目になっているんでしょうね、本当…
左が叛逆のポストカード、右が映画まどマギ後編のポストカード
そうそう、来場者特典の色紙はほむまどで、ポストカードはまどかでした。

(2013/11/16)フィルムを貰いに行ったので追記しておきます。
外れでした…!!
フィルム特典
世間では「\1,500の宝くじ」だの「フィルムで一儲けしよう」だの言われていますけど、まあ運ゲーですよね。
 そもそもどのシーンなのか分からなくて困ってました。が、多分ほむらが魔女になった時の殻?が橋の上にできた時の遠景だと思われます。
 ヤフオクでフィルムの値段を時々見てますが、前作のまどマギ映画のフィルム特典ほどの値は付かないみたいですね。
Read more →

2013/10/29

[PC]リモートデスクトップどうしよう

,
 離れた場所からでも、メインPCとの連絡を絶たれずに済むという"安心感"を得るためのリモートデスクトップ(違う)。まあファイルをクラウドストレージに置いておけば、自分の場合は事足りそうなんですが。
 リモートデスクトップを使いたいけどどうすりゃいいんだっていうログです。

1)Microsoft Remote Desktop

 最近Microsoftが、公式でiPad/Androidからも使えるリモートデスクトップアプリを出したみたいですが、残念ながらメインPCがWin8Proではないので使えません。

ASCII.jp:MS純正のリモートデスクトップアプリがiOSとAndroidにhttp://ascii.jp/elem/000/000/835/835143/


2)フリーソフトを使う

 VNCとかTeamViewerとか、フリーソフトも今少しずつ探してますが、なかなかいいのが見つからないです。


3)Intel AMTを使う

 "Intel AMT(Active Management Technology)"というのもリモートデスクトップの一種らしいです。偶然知ったものですが、遠隔起動とかもできる優れものらしいです。が、個人向けの機能ではないみたいですね。
 このAMTを使うには、"Intel vPro Technology"に対応しているCPU(一覧)が必要ですが、サーバー向けのXeon以外だと数が少ないです。メインPCのi7-3770Kも非対応で、安いところだとHaswell i5-4570Tとかでしょうか?

■笠原一輝のユビキタス情報局■
Intel AMTを使って、リモートからのBIOS制御やOSリカバリに挑戦
http://pc.watch.impress.co.jp/docs/2008/1204/ubiq233.htm

下に、実際にAMTを用いて、リモートで再起動→BIOSを開いてる動画を貼っておきます。

ほんと便利そうなんですよね…
Read more →

[電子工作]LPC800 Mini-Kitもどき その4

,
 秋月でFT232RLを買ってきて、ようやくはんだづけする時間が出来たので、USB-UART変換部の動作確認をしました。ちゃんと動いてくれました、良かったです。

 テストした時、LPC810が手元になかったので

・R4、R5の33Ωは未実装、半田ジャンパした。
・LED1、2(TxD、RxDインジゲータ)未実装
・LPC810ソケットの2ピンと8ピンをスズメッキ線でつなぎ、エコーバックさせる
で動作させました。

 もともとFT232のドライバが入ってたからなのかもしれませんが、繋いだら「デバドラをインストールしています」というダイアログの後、すぐ使えるようになりました。
 データシートの回路そのままとはいえ、自分で作った基板がちゃんと動作するのは嬉しいことです。
デバイスマネージャはこう見える。こんな名前だっけ?

 ちなみに、秋月でFT231XS(I-06713)という商品も見つけました。こちらもFTDI社のUSB-GPIO変換ICですが、

・FT231XSはロジックレベルが3.3V
・ピン数が少ない(20ピンTSSOP)
・値段が安い(\210、FT232RLは\300)

なので、5V系じゃないならこっちのほうがいいですね…
Read more →

[雑記]UE900買いました

,
 前のイヤホンが断線してしまったので、新しくイヤホンを買いました。Ultimate EarsのUE900というものです。

 選ぶ時の基準は、
・ケーブルの取り外し、付替え(リケーブル)が出来ること。(前使ってたイヤホン4つを、全て断線で使えなくしたため。)
・カナル型
だけ満たしていればどれでもいいかな…と思ってたんですが、リケーブル可能なのが割と少なく高価格帯ばかりだったので、ちょっと出費がかさんでしまいました。
 リケーブル可能なものについては、一覧を載せているサイトがある(ちょっと古いけど)ので、リンクを載せておきます。

ケーブルが交換できるイヤホン一覧 - Sound Field ~オーディオのまとめ~ http://bit.ly/16xAQtq
通勤通学におすすめ iPhone / iPod用カナル型イヤホン10選 http://www.kanekiyoshuntaro.com/photoblog/?p=2139


 最終的に、価格が4万以下で
・Westone 4 R-Series
・UE900
・IE80
の3つに絞り、秋葉原のeイヤホンで試聴して(、後デザインで)決めました。eイヤホンは高価格帯のイヤホンでも、棚からいちいち出してもらうよう頼む必要がなく、気軽に視聴できるのでいいお店でした。
 
 で、UE900、新品だと\39,000ですが、中古だと\29,000辺りまで落ちるので、中古に甘えました。といっても、店員さん曰く「エージングしてある」こと、「保証が新品と違う」ことぐらいしか差はないみたいですね。
 
 音質に関してそこまで拘る人間じゃないのと、あまり耳が肥えてないので、音質に関してはノーコメントですが、正直どっちも変わらんわ…無改造iPod直結ですけど、Westone 4Rの方が、心持ち低音強いかなあと思いました。ほんと心持ち。
 
 私は眼鏡着用者ですけど、SHURE掛けに不便さは感じてないです。ただ、若干付けるのが面倒くさい程度。

 キャリングケースが付いているので、どう収容するか苦心せずに済むのもいいと思います。iPodに巻きつけるのはご法度らしいですからね…

 "Logitech"と"Logicool"の違いが分かりにくく、それを逆手に取って偽ブランドで売ってるものもあるらしい。
Read more →

2013/10/11

[雑記]TeXの環境入れた。

,
 やっと(La)TeXを使える環境にした。これはそのメモ。レポートの期限に殺されそう。
Texmaker 4.0.4 + TeXインストーラ 3 + Texmaker日本語化パッチを入れた。

 テンプレは、物理のかぎしっぽさんの"標準的なレポート"のやつ。

 Texmakerの設定は、次のサイトが詳しい。
TexmakerをWindowsで使うための設定。 | HuIn.Log http://bit.ly/19m1dEN

 LaTeXを、日本語版のpLaTeXe2だかに変えるのに、ちょっと場所がわからなくて戸惑った。どう展開したりしたかは忘れちゃったけれど、自分の環境だと"D:/w32tex/bin64/platex.exe"になってる。
 デフォルトでjsarticleとかは入ってるんだね。

 1年の頃は、半強制的にWinShellとかいうのを使わせられていたけれど、いちいちpdfを開くことや、エディタの機能が貧弱(デフォだと予測変換とかない)なので乗り換えた。候補にはTeXStudioもあったんだけど、Texmakerの方が人口多そうだからこっちにした(意志が弱い)。でも肝心のレポート何も書いてないから、使ってみた感想はまだない。

 簡単コンパイル(F1)を"LaTeX + dvipdfm + PDFファイルの表示"にすると、F1押すだけで自動的に右側にpdfが出てきてくれるので、マウスを触らずに済んでとても効率的。
 変換候補も、例えば"subsection{}"みたいな長い単語を打つ時に、楽が出来て良し。

 一応スクリーンショットをば。
Texmakerのスクリーンショット。使いやすい感じ。

 ああ、PCのよりよい環境を作ろうとするだけで、一生が終わりそうな気すらしてきた…。IT技術によって生活の質?楽さ?はめっちゃ向上してる(≒ユビキタスの恩恵)と思うけど、なんかなあ…

 とりあえず、今いい感じのソフトが無いなあと感じてるのは、スクリーンショットを撮るやつで、pngで保存できる + 撮ったら自動的にそのフォルダを開く + AltとPrtScで撮れる(当たり前)って条件だけでもあんまりない。困ってる。
Read more →

2013/09/29

[電子工作]LPC800 Mini-Kitもどき その3

,
 基板は今中国あたりのどこかを揺蕩っているはずです。主な部品もDigi-Keyで買いました。でもひとつ重大な問題がありまして…メインの肝心要のLPC810の在庫が、どこのショップでも0のままなのです。もはやギャグ。

 一応主要ショップでの在庫数はここから確認できるのですが、0のまま変化してないように思います…
 
 Digi-KeyでもLPC81xシリーズだけ0のまま。NXPさん生産する予定あるのかなあ、って思うくらい。
在庫が無いよう…
いつになったら手に入るんだろう…


追記: 2013/10/08

リセッタブルヒューズなんですが。
リセッタブルヒューズ各種
上から
MF-SM050-2 2920(7351メトリック) 最大電圧60V \53
MF-MSMF050-2  1812(4532メトリック) 最大電圧15V \24
になっている。明らかにサイズが違う…。後写真には写ってないけれど、
MF-FSMF050X-2 0603(1608メトリック) 最大電圧6V \45
というのも買った。1608なのでとても小さい。

 それはともかく、この前基板が届きました。
基板(表)
基板(裏)
えっと、まあ最大のミスは、パッドと間違えてビアを配置したことですかね…。シルクのロゴが綺麗に出てたのにはびっくりしました。
 で、これに部品をちまちまと乗せて行っているのですが、実装してみると幾つか問題が出てきたので書き留めておくことにします。

2013/10/05 Rev 1.1

基板出てきてハンダ付けした後の修正

・M3のネジ穴を角に4つ設ける
・Debug Port周り
1.シルク印刷が見えなくなるので移動する
2.リフロー用パターンなので、手ハンダが難しい(もしかしたらボックス無しのヘッダのためのパターンなのか?http://www.digikey.jp/product-detail/ja/GRPB052VWQS-RC/S9012E-05-ND/1786414みたいな)
3.1ピンと、ケーブル側コネクタの出っ張り部分を表示しないと、分かりにくい
・USB周りの電源の取り回し方がゴミ
・Vccの電源の幅を太くする(現状16mil)
・LED1、2に謎のシルクがある→Eagleでも既にあった
・SJ1を通じて、10PinコネクタからもVccへと給電する→ここはジャンパピンの方が良いかもしれない。
・Debugポートは全部端っこのほうがよい。
・LED、ダイオードのカソードにマークとか無いと実装しづらすぎる 

 一応LPC810をのっけて、LPC-Link2からLチカプログラムを書き込んだら動作しました。デバッグも順調みたいです。10ピンポートの方は大丈夫そうですね。
 FT232RLの仮想COMは、肝心のFT232を買ってなかったので、まだ動作未確認です。
LPC-Link2を繋いだ図
電源の配置に困っているので(真ん中にUSBポートが来るのはそのままであって欲しい)、それが出来たらRev 1.1として、そのまま発注はせずにファイルだけローカルに置いておこうと思います。

 現状ダイオードの電圧降下は200mV程度。LDOの発熱もほぼなく、といった感じ。
問題点として、USB経由で給電するときの電流値ってデスクリプタに書いたりすると思うんですけど、FT232RLは書き換えられるのかな…


Read more →

2013/09/28

[電子工作]aitendoのDDSモジュールを動かす その2

,
0)前置き

 前にこんな記事を書いて以来、aitendoのDDSモジュールも放置していたのですが、そろそろケースに入れたいのでまた触り始めました。
 取り敢えず、SPIでいい加減動かさないと…ということでSPIから制御する話です。

 使ったハードはArduino Duemilanoveなので(今となっては化石…)、Master側のSPI設定に困ることはないです。


1)ハード的な話

 AD9850は、どうも2ピンがLow、3・4ピンがHighならばデフォルトでシリアル通信モードみたいです。aitendoにある回路図を見ると、2ピンに繋がっているJP1をジャンパしておけばGNDに落ちるみたいなので、パラレル→シリアルへの変換コマンドを送る必要はないみたいです。

 出力ですが、IOUTが200ΩでGNDに落ちているので、そのまま出力インピーダンスも200Ωなのでしょうか…?評価キットの回路図では、IOUTBは25ΩでGNDに、IOUTは50ΩでGNDに落ちてますが…

2)ソフト的な話

 AD9850のデータシートに書かれている、SPI通信のタイミングをみます。
AD9850 Data Sheet 英語 Rev H(http://www.analog.com/static/imported-files/data_sheets/AD9850.pdf)より転載
で、AD9850のシリアル信号線の名前は、SPIによくあるSS、MOSIなどとは違ってますが、結局役割は同じみたいです。

FQUP(FreQuency UPdate) → SS(10)
WCLK → SCLK(13)
D7 → MOSI(11)


 SPI通信をするときには、幾つか設定しないといけない事がありますが、AD9850のデータシートを見る限りでは、以下の様になってるみたいです。

・動作モード
 CLKの立ち上がりでデータをサンプリングするみたいです。又、通信していない時のCLKはLowなので、SPI_MODE0になります。

・データの送り方(BitOrder)
 BitOrderは、データの送る順番がw0(LSB)から順にw1、w2、…、w31(MSB)なので、LSBFIRSTです。

・SS(FQUP)の制御
 SPI通信では、先ず最初にSSを下げてから通信をしますが、どうも通信終わりのSS↑↓は自分でやらないといけないみたいです。

・AD9850のRESET信号
 RESETを最初に落とすことになりますが、このRESETは正論理(!)なので、Resetしたい時に0にします。最初負論理だとてっきり思っていて、動かずに困りました…

・送るデータですが、EF_AD9850に依れば、
//Calculate the frequency of the HEX value
x=4294967295/125;//Suitable for 125M Crystal
frequence=frequence/1000000;
frequence=frequence*x;
y=frequence;
らしいです。例えば40kHzであれば、0b00000000, 0b00010100, 0b11111000, 0b10110101になります。

最後のw32~39のControl Registerには、
bit[1:0] Control Serialならば00
bit2 Power Shutdown 0
bit[7:3] Phase
を書き込みます。


 ということで、ArduinoのSPIを使うように改造しました。一応クラスにしてますが、8bitレジスタ5個分を送るだけの簡単なプログラムです。
class AD9850{
 //7 reset
 //10 fqup
 //11 d7
 //13 wclk 

private:

public:
 AD9850(){};
 ~AD9850(){};

 //Initialize SPI & DDS(AD9850)
 void Init(){
  //set
  pinMode(7, OUTPUT);

  //Send Reset signal
  digitalWrite(7, 0);
  digitalWrite(7, 1);
  digitalWrite(7, 0);

  //Init SPI
  SPI.begin();
  SPI.setDataMode(SPI_MODE0);  //Idle : clk low, rising edge. 
  SPI.setBitOrder(LSBFIRST);
 };

 //freq : Frequency[Hz]
 //w0 : Control Register Value
 void SetFrequency(const unsigned char w0, const double freq){
  const double xtal_freq = 125;  //125MHz Xtal
  const double x = (4294967295 / xtal_freq)  / 1000000;
  long int y = (long int)(freq * x);
  
  SPI.transfer(y & 0xFF);
  SPI.transfer((y >> 8) & 0xFF);
  SPI.transfer((y >> 16) & 0xFF);
  SPI.transfer((y >> 24) & 0xFF);
  SPI.transfer(w0);  //Control Register
  //FQUP
  digitalWrite(10, 1);
  digitalWrite(10, 0);
 };
};
このプログラムを実機上で動かして、ロジック・アナライザで通信データを見てみたところ、下の写真のようになりました。
ロジアナで見たSPI通信

 SPI.transfer()を1byteごとに呼んで送信しているため、1byteごとに何も通信していない部分(A2のMOSIが1になっているところ)がありますが、CLKもLowのままでサンプリングされてないので問題無いと思っています。

 DigitalWrite()でSS(FQUP)を制御しているので、SPIの通信が終わってからSSが上がるまでに結構時間がかかっているみたいですが、まあ動いてるので大丈夫でしょう…

 使い方は、前のライブラリ(EF_AD9850)とほぼ一緒。
Read more →

2013/09/21

[電子工作]出てきたDAC08ボードのなにか

,
※書きかけ
 昔作ったDAC08の載ったなにかが出てきました。よくわからないので回路図を調べました。
DAC08周辺回路図

 電源周りは全ての部品を書いてるわけではないです。
載っているDC-DCコンバータモジュールは、+-5V出力のMAU106。Vref用の基準電圧源はLM336-2.5。DAC : DAC08です。8bitパラレル入力で、セトリング時間は最高85ns。私はDAC/ADCに関して無知なのでよく分からないのですが、セトリング時間の逆数が、サンプリングレートになるんでしょうか?だとしたら、11.8Mspsくらいでしょうか。鈴商で買ったやつです。

 で、調べてみるとこの回路には少し問題があるみたいで…

1)DC-DCコンバータモジュール

 MAU108ですが、安定出力域は、出力電流で+-42mAまでです。これは大丈夫そうだった
 
 他に、出力リプル電圧が大きいこともあります。データシートp.3の、"Ripple & Noise (20MHz)"の項目に、Typ. 50mVp-p、Max. 75mVp-pと書かれています。
 エレキジャックの記事にも、高周波ノイズが多いので、チョークコイルとコンデンサによるフィルタを入れていると書かれていますし… 今のところ本当に出力をDAC08の+V/-Vに直結しているので、ここを改善しないといけなさそうです。
 
 また、上の記事には「ただし、出力は安定化されていないので負荷電流で出力の電圧が変化してしまいます」とあります。

 どちらにせよ、ノイズに弱く電源が綺麗じゃないといけない(?)DAC/ADCのことなので、もうちょっとどうにかしたいです。

2)DAC08の出力抵抗

 DAC08のデータシートp.11 Figure 24には、

と書かれています。
 上の回路図の定数(Vref = 2.5V、Rref = 5.1kΩ)でIfrを計算すると、大体4.88mAになります。ですが、データシートp.3のSpecificationsのFull Range Currentには、Ty.で1.992mA、Max.でも2.000mAとなっています。
 なので、Ifrはどう考えても流し過ぎなんじゃないかなあ、と。絶対最大定格を見ても、Reference Input Currentは5.0mAとなっています。ICが壊れる寸前ということなのでしょうか


Read more →

[雑記]PS3と机買いました

,
 知り合いから譲ってもらったんですが…初期型PS3(20G)で、全面のフタが折れてるものを、\10,000。

 もちろん20GBじゃあ足りないので、HDDを換装することにしました。換装はそこまで手順が多いわけではないですが、ネジが外しにくくて大変でした(1つねじ山潰してしまった…)。

 周辺機器で買ったもの:

・HDMI-DVI変換アダプタ PL-HDDVAD \950 Amazon
・HDMIケーブル1.0m DH-HD14ER10BK \950 急いでたのでヨドバシ
・HDD(2.5inch 海門 500GB) \3,000 (別の方から譲ってもらった)
・PS3 メモリーカードアダプター CECHZM1J \980 じゃんぱら
 ちょうど中古で売りに出てて良かったです。発売が2006年11月なので、新品はあまり販売されておらず(大体のところでは販売終了)、どっかに出てる中古品を回収する感じです。

 
 これとは別に、机と棚も買ってしまいました。

・デスク(リッケン2 120-DBR) \9,990 ニトリ
・シェルフ?
A4 3段ケース(ZHU-BK) \1,490 ニトリ

 本当は、そろそろ限界が来てるPC用の椅子(といっても、4脚のダイニング向けの普通のを使ってた)を、買い換えたかったのですが… なるべく早く欲しかったので近所のニトリに行ったのですが、タンパ2 HL937に実際に座ってみると、座面と背もたれが同時に倒れるのがなんか怖かったので(そして在庫もなかった)、今回は辞めました。

 机はで、今の105cmの学習机みたいなものから、幅120cmに広がったので、それなりに余裕ができてよかったです。唯、奥行きが約75cm→60cmに狭まってしまいました。まあキーボード打つときに肘が置けるので、今のところの問題はないですが…

 他に、机の下に入れるラックと本棚も買い物リストには入ってましたが、ラックはどうも入れるスペースがなさそうなこと、本棚は売り切れでダメでした。

 ニトリの家具については、組み立ての時の説明書が、IKEAのよりも分かりやすく、気のせいかもですが、ネジとかがちょっと頑丈な気がしてマシだと思いました。
 しかし、低価格な収納小物になると、紙製のものがとても多いですね。あれは若干不安になるので、自分では買わないようにしてるんですけど…実際のところどうなんでしょう?

 
 後最近買ったものといえばアブサンというお酒です。
某H○Bで天国への階段というカクテルがありますが、あれを飲んで以来ハマってしまったので、遂にお家用に買ってしまいました。

・ペルノ・アブサン700mL \4,460(送料込) Amazonマケプレ
・アブサンスプーン(フイユ柄) \1,995 Absinthe-Tokyo
Lyonnais (リヨネ、グラス) \1,050 Absinthe-Tokyo

 買ったのはアブサンの中でも、比較的オーソドックスなペルノ・アブサン。H○Bで天井から吊るされてるのと同じやつです。
 アブサンスプーンなんですが、ちょっとお金を出してもいいから好きな柄のを買おうと思ってこれにしました。

 実際に作ってみると、何しろアブサンファウンテンが無いので、水の入れることの難しいこと。本来なら1滴ずつ入れ、アブサンに起こる変化を楽しむんですが…なかなか難しいです。
Read more →

2013/09/16

[電子工作]LPC800 Mini-Kitもどき その2

,
 1枚の基板としての設計(といえるほどのものではない…)は終わりました。
1)仕様 
 
 2層基板、幅98.63mm×高さ47.3mm。

2)パターン
全体のパターン
パターン(裏面のみ)
パターン(表面のみ)
3)回路図
回路図
4)変更点

・参考になったサイト
EAGLE on PCB Design (EAGLEを使った回路・パターン設計) http://slidesha.re/149g2L1

・どうせだから基板を横10cmまで伸ばした。結果的にめっちゃスペースが余ることになって、大きめのロゴとかはそっちに移動させた。

・コネクタの信号名をシルクで入れた。これがないとPCのモニタとにらめっこすることになって、個人的にとてもうざったい。

・パスコンの位置を、VccがICに入る前に移動。

・ダイオードをなんか適当なやつ(SOD-123パッケージ)に変えた。

・Vccを幅16mil、ドリル16mil、ビア外形32milにした。
 1mm幅で許容電流1Aくらいって聞いたので、USBの0.5A(実際はそこまで流れないだろうとは思う…)弱で耐えれるように。16mil=0.4064mmだからダメか…

・10ピン1.27mmのヘッダ(CN1)を、表面実装品に変えた。これは、ライブラリの1.27mmの貫通する方のヘッダだと、クリアランスのエラーが出ちゃうため。
Read more →

2013/09/15

[電子工作]IV-16用ボード

,
※あとで書く
 フィラメント管IV-16用のボードです。ユニバーサル基板でやろうとして、隣の桁の同じ部分も表示されてしまい頭を抱えてたので、思い切ってプリント基板で作ってみました。
 
 動かなかった原因
・フィラメント管は応答速度が遅いらしく、すぐには消えてくれないこと(未検証)
・フィラメント管は文字通りフィラメントが並んでいるので、発光ダイオードなどと違い、逆方向にも電流が流れる…?ちゃんとGNDに落としてないと消灯できなさそう。なのかなあ。

作ったもの

パターン
Top View
Bottom View(表面レイヤー非表示)
回路図
回路図

部品について


部品リスト:
Part     Value          Package    Library   Position (mil)        Orientation

C1       0.1            C2012      rcl       (2787.5 837.8937)     MR180
C2       0.1            C2012      rcl       (1675 850.3937)       MR180
C3       0.1            C2012      rcl       (587.5 837.8937)      MR180
C4       10?            C3216      rcl       (3225 725)            R180
C5       10?            C3216      rcl       (3225 575)            R180
CN1      CON8           CON8       1-MyLib   (2737.5 1012.5)       R180
CN2      CON2           CON2       1-MyLib   (3375 1012.5)         R180
R1       1.1k           R3225      rcl       (2475 750)            MR270
R2       1.1k           R3225      rcl       (1450 812.5)          MR270
R3       1.1k           R3225      rcl       (439.37008 903.74016) MR270
R4       5k             R1206      rcl       (3337.5 125)          R180
R5       10k            R1206      rcl       (3337.5 225)          R180
R6       10k            RTRIM3224J rcl       (3462.5 387.5)        R180
SJ1                     SJW        jumper    (3262.5 837.5)        R180
U1       IV-16          IV-17_COMP untitled1 (3050 300)            R0
U2       IV-16          IV-17_COMP untitled1 (2500 300)            R0
U3       IV-16          IV-17_COMP untitled1 (1950 300)            R0
U4       IV-16          IV-17_COMP untitled1 (1400 300)            R0
U5       IV-16          IV-17_COMP untitled1 (850 300)             R0
U6       IV-16          IV-17_COMP untitled1 (300 300)             R0
U7       TC62D748CFG    TSSOP-24   untitled1 (2787.5 637.5)        MR270
U8       TC62D748CFG    TSSOP-24   untitled1 (1675 637.5)          MR270
U9       TC62D748CFG    TSSOP-24   untitled1 (587.5 637.5)         MR270
U10      TL1963ADCQR    SOT-223-6  untitled1 (3462.5 650)          R270

作るときには、以下のサイトをめっちゃ参考にさせていただきました。分かりやすいページをありがとうございます。
 フィラメント管 IV-16 - N->N->N http://bit.ly/1dgwdsx
 フィラメント管時計 - N->N->N http://bit.ly/1dgwiMZ

駆動部:


 定電流LEDドライバICを使ってる方がいたので、それに倣った。ただ、TLC5940はちょっと高い(\335)のと、面実装パッケだと裏側にサーマルパッドがあってややこしそうだったのでやめた。Aduinoでの作例が多いからちょっと残念だけど…

STP16CPC26PTR \102 24-SSOP(QSOP) SPI http://www.digikey.jp/product-detail/ja/STP16CPC26PTR/497-11923-1-ND/2757659
TC62D748CFNAG(EL,H \111 24-SSOP 東芝! SPI http://www.digikey.jp/product-detail/ja/TC62D748CFNAG(EL,H/TC62D748CFNAG(ELHCT-ND/2790827
TLC5925 \172 24-TSSOP SPI http://www.digikey.jp/product-detail/ja/TLC5925IPWR/296-24466-1-ND/2057694

 で、どうやらどれもピン配置は同じらしい。コンパチって感じ。
それっぽいパラメータを比較したのが以下のテーブル。後から考えてみると、最大周波数ってSPIの方か…テーブル作るのにはmobtabgenというサイトを使わせていただきました。

IC名出力電圧出力電流最大周波数最大損失Ignd(GNDに流せる最大電流)
STP16CPC2620V(max)5~90mA30MHz1600mA
TC62D74817V(max)1.5~90mA25MHz1.56W
TLC592520V(max)3~45mA30MHz1.1W750mA

 ピン配置は以下のよう。変わらぬ…
 DP含めると8エレメント、それで16ポートあるんだろうけど、生憎DPが無いので2ポートは空き。ICの片側にちょうど8ポート出力があるので、左右で管を分ける感じ。
定電流LEDドライバICのピン配置比較
各々のデータシートから転載させていただきました。
信号線がよく分からない。スタティック駆動だからnOE(Output Enable)はいつもLowでいいんじゃないか?
 nSLATはLowだと、SINから入ってきたデータをラッチせず、そのままSOUTに流すだけなんだけど、こればかりは各ICごとに別々に制御しないとダメなんじゃないの?共通にすると全部のICが素通りかラッチしか出来ないし…。と思ったのでnSLATは1~3で分けてます。ここらへんは使ってみないとよく分からないという感じ(その割にボードは既に投げてしまった)…

 フィラメント管のパッケージはTO-100らしく、一応ソケットがあるみたいですが、確かに高いので今回は見送りました…フィラメント管には寿命があるとはいえ、まあ大丈夫でしょう…(てきとう)


電源部


 フィラメント管用のVccを生成する電源部ですが…

 フィラメント管は各エレメント当たり17~22mAほど流れる。(ニキシー管などによくある)延命のために、少し電流を少なくするとしても15mA。全管全エレメントが点灯すると考えると、15mA * 7エレメント/tube * 6管 = 630mAは流れる。よって、余裕を見て1A程度は流せて欲しい。

 さらに、フィラメント管の駆動電圧は3.15V~4.5Vらしいけど、TC62D748での電圧降下がどれくらいかよく分からなかった(データシートの回路例によれば、+1.0V)ので、ちょっと電圧調節出来て欲しかった。

 そもそも4V出力のLDOは少なく(東芝のTA48M04Fくらい)、0.5A出力だともしかしたら足りないかもしれないので、可変LDO?を使うことにした。LDOは、小型でVdropがそこまで大きくないやつ(LM317とかはちょっと…)ということで、Digikeyで適当に見繕った。
 ただ、電圧可変のLDOってどれも高い、TL1963ADCQRでも\335。

Vadjの抵抗の計算

Vout = 1.21V * (1 + R2 / R1) + (Iadj) * R2
Iadj = 3μA@25℃なので無視して、
Vout   R2 / R1
3V 1.56
4V 2.305 10kと?
4.1V 2.388 10kと23.7k(R96)
→ここらへんを可変にするには、R1 = 10k、R2 = 15kと10k半固定にするとか。(この組み合わせだと上の理論値が3.025Vしか出ないです…)

 出力コンデンサはESR < 3Ωで10μF以上、Z5U Y5V X5R X7Rシリーズとかが良いらしい。

 最初は通信線のコネクタから電源引っ張ろうかとも思った(SJ1)けど、この分だとダメそう。

 何かあったら怖いから電源すぐ落とせるように、一応スイッチとリセッタブルヒューズくらいはつけておこうと思ったんだけど、忘れてた。パターン一旦切るのもちょっと無理そうだし、諦める…。


パターンで苦労したところ


  • オートルーターだと最初25%くらいしか行かなかった。頼りきりなのもどうかと思うけど。オートルーターかけると、配線が遠回りになったり、曲げる角度が直角になる(設定で変えられるかも)ので、結局Ripupして手動でやり直すのが多かった。
  • 最初Viaのサイズをドリル0.6mmとかにしてもずっとDRCエラーが出てた。なんでだろ…Elecrowのホームページによると、最小ドリル径は0.3mmらしいんだけど。Twitterで教えていただいたところによると、Drill 12mil(0.3048mm)、外枠 24mil(0.6096mm)で大丈夫らしいのでそうしてる。
  • 一旦配線した後で、部品を移動させると配線がちょっとめんどくさくなる
  • GND端子の配線を既にしている状態で、端子を残すように(Terminal→Thermals on)Polygonでベタグラウンドを書くと、GNDパターンの周りがThermalパターン+配線みたいになっちゃう。
なんか残ってる
ベタグラウンドでGNDに落とせるって分かってるなら、配線しないほうがいいのか…?

  • 回路図エディタで、コピペして配線くっつけようとすると地味に繋がってなかったりする。めんどくさい。
  • バスの信号線は、名前を"SIGNAL[0..5]"とかにすればSIGNAL1~5までが作られ、"OE,SCK,SIN,SOUT"とかカンマで区切れば、それぞれ出来る。
     唯のNet→Busへと配線するときは、Netの名前がBusの名前と一致しないとつなげませんと怒られる。Bus→Netするときは、Bus上をクリックした時点でどの信号線を選ぶか出てくる。こっちのほうが良さげ。 

パターンのヤバイところ(主にトラ技だけ読んでやばそうなところ)


・異なる層の配線を並行させてる(めっちゃダメらしい)。
・もしかしたらベタGNDで浮島パターンみたいなのがある…
・一部途中で配線が切れてる気がする。
・LDOのVadjの抵抗が、微妙にICから離れてる(なるべくICに近づけて配置するのが望ましい、らしい)。
・ネジ穴が基板の外枠からあまり離れていないので、強度的にとても不安。あとφ3なんだけどM3のねじがちょうどぴったりではいらない事例が起きるような気がする。3.2とかにしておけばよかった…
・半固定のサイズが結局わかってない。
・GNDを分かりやすくするように、端子の周りを白シルクで囲おうとしたけど、端子の上からシルク塗るのってどうなんだろう…と思ったのでやってない。
・パスコン周りのViaとかGND抜きとか、とりあえずただ闇雲にベタGNDにしてはいけないらしい。よく読んでないのでよく分からないんだけども…
・パスコンを経由してからICのVccに配線するのは多分出来てるはず…

 問題が多すぎますね。初めてだからしょうが無いといえばしょうが無いのです…本なりなんなりでお勉強したいですね…

(2013/09/16) 昨日Elecrowに注文しました。

2 Layer 10cm * 10cm Max PCB - 5/10pcs (Color Free)
Qty - 10
Layer - 2
PCB Thickness - 1.6mm
PCB Dimension - 5cm Max * 10cm Max
PCB Color - Black
Suface Finish - Hasl
E-Test - 50% E-test
Panelizing - 1 copy
File - 1122. untitled.zip
で$23.90、220gなので送料$6.52かかって計$30.42でした。5cm*10cmと10cm*10cmは値段が変わらない(輸送量は変わるかもしれない)ので、若干損した気分…

 朝起きたら、もう「生産の方に回したよ」みたいなメール?が来ました。レベルシフタ(アウトライン無かったやつ)と違ってめっちゃ早かったです。

The comments for your order are: Dear Customer,
We have put your design into production, it will cost about 4-6 business
days. Thank you!
Best Regards
Elecrow

Your order has been updated to the following status:
New status: In production
だそうです。
Read more →

2013/09/10

[電子工作]LPC800 Mini-Kitもどきの製作 その1

,
※書きかけ、やりかけ

 LPC800 Mini-Kitが探しても本当に見当たらないので、業を煮やしてそれっぽいのを作ることにしました?
 初心者がやるとこーなるのかーーーーみたいなことを分からされててとてもつらいなあ。

ピンの設定
ISPモードに入るためGNDに落とすスイッチが5ピン。
ISP書き込み用のUARTが

部品の選定
 

 電源周り、自動切り替えするICは使わずに、原始的にダイオードで済ます。一応VBUSを外に出して使うことも考えてはいるので、バイパス用のジャンパパターンを付けておく。
 ショットキーダイオードは思考停止でライブラリにあるSOD523を選んだ。でも実際ボードいじってると、これじゃあ小さすぎて無理だと思わされるってワケ。一応Digikeyにはこのパッケで使えそうなのがある(http://www.digikey.com/product-detail/en/PMEG3005EB,115/568-7397-1-ND/2697417)。けどねえ…
 
 スイッチング電源はコイルを選ぶ才能がないと気付いたので、LDOにした(楽)。選択基準とか候補が次のようになってる。
3.3V LDO Vdrop < 1.0V、Iout > 0.3A

ノイズ入るとヤバイとも思えないんだけど、なんか面倒くさいしLDOにしておく。
BA33BC0FP-E2 \107 1A TO252-3 Vin < 16V Vdropは0.3V@200mA? Rohm
http://www.digikey.jp/product-detail/ja/BA33BC0FP-E2/BA33BC0FP-E2CT-ND/3663735
KA78RM33RTF \72 0.5A TO252-3 Vin < 20V Vdropは0.6V@500mA、200mAだと180mV程度。 Fairchild
http://www.digikey.jp/product-detail/ja/KA78RM33RTF/KA78RM33RTFFSCT-ND/3478379
MCP1802T-3302I/OT \69 SOT23-5 0.3A Vin < 10V Vdropは0.2V@100mA
http://www.digikey.jp/product-detail/ja/MCP1802T-3302I%2FOT/MCP1802T-3302I%2FOTCT-ND/1979781
AP7215-33YG-13 \58 SOT89-3 0.6A Vin < 5.5V Vdropは0.1V@100mA 本当はこれを使いたかったが、外部9Vも無くはなさそうだから断念…
http://www.digikey.jp/product-detail/ja/AP7215-33YG-13/AP7215-33YG-13DICT-ND/2179740
TA48S033AF(T6L1,Q) \128 5HSIP(TO-252-6) 1A Vin < 16V Vropは0.69V@1A
http://www.digikey.jp/product-detail/ja/TA48S033AF(T6L1,Q)/TA48S033AF(T6L1Q)CT-ND/2273210

 とりあえずKA78RM33RTFを使う方針で行きます。AdafruitのライブラリにTO252があります、78XXのライブラリもあります。なので唯のコピペ。
 コンデンサは入力側は0.1μFだけど、出力側が33μFなので、チップ積層セラミックコンデンサならこれ
C3216X5R0J336M130AC TDK 3216 ±20% \95(高い…)
http://www.digikey.jp/product-detail/ja/C3216X5R0J336M130AC/445-4060-1-ND/1965707
ちな、秋月には33μFは売ってない。


回路図(暫定、ほぼ決定)
かいろず
配置が下手、読みにくさヤバイ。特に部品の番号とかの重なりがひでえ。

パターン
 ICの近くに、ICと同じ配置したピンを出しておく。
 VBUS、Vccもパッドで外に出しておく。
Top
FT232RL周りが本当にきつくて、全然配線できない。やばい。Arduino Duemilanoveとかどうしてるんだろ…
 とりあえず、5cm * 5cmにはどうやっても収まりそうにないから、5*10か10*10になるんだろうなあ…
Read more →

2013/09/08

[電子工作]双方向レベルシフタ基板を設計して、Elecrowに投げてみた

,
 なんかそろそろ基板作れるようになりたいよなあ、ということで、試しに双方向レベルシフタの基板を作ってみました。双方向レベルシフタを選んだのは、部品点数が少なく、基板の規模も小さく、そして少しは実用になるもので思いついたのがこれしか無かったからです…
 使うレベルシフタICは、Texas InstrumentsのTXB0108です。単純にググって一番上に出てきたから使おうと思っただけの話。
 変換基板は、Adafruitのこれパクリ目標にして作りました。

 設計にはEagleを使いました。

・ライブラリを準備する

 メインの部品であるTXB0108が、Adafruit.lbr(GitHub)に元から入っているので、自分でライブラリを作るということはありませんでした。というか、面倒そうなのでその必要がないようなものを選んでました。

・シルクの編集

 シルクの編集には、表面ならレイヤ21(tPlace)あたりにテキストを書き込んだりする。Vectorフォントの方が無難、らしい。フォントが3種類しか選べないのがとてもつらい。
参考:EAGLEでのシルク印刷編集: 組込み徒然草 http://bit.ly/1cT9LFD

・イメージの追加(import-bmp.ulp)

 import-bmp.ulpを使うと、シルクに.bmpが追加できるみたいです。でも失敗しました。なので今回は使用していません。
シルク印刷する、どちらかの色を選ぶべき(決して両方ではない)
どうやら、上の画面でなぜかバカ正直に2つともチェックを入れてしまってたのが問題だったみたいです。使う色を指定する画面なので、モノクロビットマップならば、黒(かもしくはネガポジ反転となる白)のどちらかを選ぶべきでした。(2013/09/10)
画像のサイズの指定。シルクは21(tValue)
あと、次に表示される上のようなダイアログでは、シルクとして印刷したいなら[Choose start layer for 1st selected color]の欄を21にすべきです。サイズの指定は様々ですが、いきなりInchで指定しろと言われても分からないので、mmにしてます。
 FormatをDPIとかScaledにすると、大抵サイズが自分の思った通りにならないので、正直に幅を指定することにします(Aspect/Ratio m)。

 使う.bmpファイルですが、不精なのでペイントでやっています。でもまあフリー素材のロゴの脇に文字入れるくらいだったら、それなりに満足できるものが作れそうです。
 保存するときには、モノクロビットマップよりも16色ビットマップで保存し(黒白だけしか無い画像だと仮定して)、色選択の時に白、灰を抜かして黒だけにすると、モノクロビットマップで保存してimportした時よりも綺麗に出来ました。特にフォントの縁のギザギザが、心持ち少なくなったような気がします。

例えばこんなロゴを作ってみた。フォントがやはりギザギザしている…

・ベタアースにする

 ベタアースにするためには、ポリゴンとかいうのを使うみたいです。ベタパターンの描画 - 電子工作室さんのページを参考にしました。
 ランドの塗り方は右のほうにしました。また、この時はまだSeeedStudioに頼むつもりだったので、Isolatedの値も0ではなく にしました。ちなみに、ベタアース表示のボタン(Ratsnest)はです。
 
 Isolatedの値を0にすると、配線との配線の間に孤立したランドみたいなのが作られ、尚且つこれが消せなくなってしまうことがありました。それだけなら実害がないのですが、配線がランドのせいでRipUp状態になることがありました(後から考えてみると、元々ここは配線されていなかった?)。こうなるともうお手上げでした…
17ピンが×、今の自分の知識では直せなかった。
ピンヘッダとか穴のある部品でも、配線は穴を通り越して真ん中まで行くんですね…ちょっと解せない点です…

・最終確認

 念には念を入れよということで、ガーバーデータを送る前に最終確認したほうがいいみたいです。GC-Prevueというフリーソフトを使ってみました。
参考:CuBeatSystems: EAGLEで設計した基板の製造をFusion PCB Serviceに頼む。(EAGLE用の一発生成CAMファイルや、ガーバデータの検証方法もあります。) http://bit.ly/1cTamY0
GC-PrevueでTop layer(.GTL)とSolder Stop Mask top(.GTS)を表示した時のスクリーンショット。

 で、出来た基板はこんな感じです。
ボード…あれこれ下枠切れてたり左が歪んでるけど大丈夫なのか??まずくね?
回路図
本当は最初SheedStudioというところに投げようと思っていたのですが、TwitterでElecrowの方が基板の色が選べておトクと聞いたので、そっちにしました。
 緑の基板が嫌いだから赤か青にしようという、個人的な話です… 

かかったお金は以下の様な感じです。

1 x 2 Layer 5 * 5cm Max - 5/10pcs (Color Free) (SPF20505S)  = $9.90
        Qty 10
        Layer 2
        PCB Thickness 1.6mm
        PCB Dimension 5cm Max * 5cm Max
        PCB Color Red
        Suface Finish Hasl
        E-Test 50% E-test
        File 1068. LevelShifter.zip
------------------------------------------------------
Sub-Total: $9.90
Registered Air Parcel (Weight: 110 g. ): $4.59
Total: $14.49
Reward Points earned: 10

赤で1.6mm厚、最大5*5cmまでの基板が10枚で$9.9。なんて安いんだろう…

 .drcファイルと、ガーバーデータ出力のための.camファイルはElecrowの注文画面にあります。Fusionって書いてあるけど…
 あとElecrowって部品実装サービスみたいなのもやってるんですかね。ゆくゆくはZynqとか使ったり乗っけたりしてみたいですよね。というかBGAパッケが使えないのは相当痛いような気もするし。

(2013/09/10)  一昨日投げたんでしたっけ?昨日の夜?とりあえず、9/8にはOrder UpdateなるEメールが飛んできて、こんなことが書いてありました。

Elecrow
------------------------------------------------------
Order Number: ****

Detailed Invoice:
 ttp://www.elecrow.com/index.php?main_page=account_history_info&order_id=****

Date Ordered: 2013/09/07

The comments for your order are: Dear Customer,
We have recieved your order and the gerber file, our engineer is checking
the gerber file, if the file meet the requirements, we will put it into
production ASAP. Thank you!
Best Regards
Elecrow

Your order has been updated to the following status:
New status: Processing

Please reply to this email if you have any questions.

 あれ通ったんですか…確かにdrcには引っかかからないけど、根本的にボードに過ちがあるような…でも英語のメール考えたくないので、放置します…

(2013/09/14)通ってませんでした。あっちの人からメールがきました。
Hi ***
There is a problem that the gerber file don't have outline.
Please look at the picture.
please send the gerber file to me again.
Best Regards,

だそうで。アウトラインの欠けているところを、わざわざ写真までつけて教えてくれました。ごめんなさい…
 訂正したガーバーファイルを、添付して送ってみたら、お返事がきました。
Hi ***
I will arrange it into manufacture now.
it will return to us in 3 to 6 days.
we will ship it to you soon after we get the PCB boards.
Best regards,
だそうです。
こっから3~6日+配送みたいですね。待ってます。そろそろ部品買わないと…

 パーツリストは、part2html.ulpなるものがあるのでそれを使いました。
Part Value Package Library
C1 0.1u C2012 rcl
JP1 1X11 pinhead
JP2 1X11 pinhead
U1 TSSOP20 adafruit
だそうです。買うのはICだけでいいかなあ。

(2013/09/16) パーツリストの出力なら、[File]→[Export]→[Partlist]の方がいいかもしれない。見やすい。[BOM]だった
Part     Value          Device     Package  Library  Sheet

C1       0.1u           C-EUC2012  C2012    rcl      1
JP1                     PINHD-1X11 1X11     pinhead  1
JP2                     PINHD-1X11 1X11     pinhead  1
U1                      TXB0108PWR TSSOP20  adafruit 1

Read more →

[電子工作]LPC11U37でのXorshiftのメモリ消費量とかを調べた

,
 ちょっと気になったので、Xorshiftのコードサイズがどれくらいになるのか確かめてみました。あと最初うまくいかなかった時に何をしたのかの、ログです。

ぜんたいのこうせい
1)前置き
2)ソース
3)実行結果
4)まとめ
5)おまけ

使った環境
MPU : LPC11U37/401 Cortex-M0
Toolchain : Keil MDK-ARM Version:4.72.1.0

1)前置き - なんでXorshiftか
 乱数が欲しい時は何を使えばいいんでしょうか。標準的な関数rand()は、今では精度の悪い(≒ランダム性が高くない)、使わない方がいい乱数生成器の代表になってしまいましたが、シード含めて2つの関数を呼べば乱数が出てくるので、気軽に使える乱数生成器の1つです。この気軽に使えるというのが重要で、例えばC++の標準になった乱数生成クラスだと、何回かクラスのインスタンスをゴニョゴニョして、んでもってやっと乱数が出てくる(精度はいい、らしい)感じです。これだと、PC上で実行する分にはいいけれど、メモリが少なく速度が遅いマイコンだと、本当に使えるのかと疑問になってしまいます(まあそもそもC++のこれにまだ対応していないのが多いような気もする、<random>インクルードしたらエラーになったし)。
 ということで、今回はある程度精度があって、とても高速だと言われるXorshiftというものを使ってみます。
 解説とサンプルコードは、Wikipedia(http://ja.wikipedia.org/wiki/Xorshift)にあります。
 
2)ソース

 こんなかんじのコード(main.cpp)になりました。他に、startup_LPC11U**.s、system_LPC11Uxx.c、core_cm0.c、core_cm0.h、サンプルプログラム集にあるuart.c、uart.h、type.hが必要だと思われます。

#ifdef __cplusplus
extern "C" {
#endif
 
#include "LPC11Uxx.h"
#include "uart.h"
#include 
 
void SysTick_Handler(void);
 
#ifdef __cplusplus
}
#endif

//xorshift
uint32_t xor128(){
 static uint32_t x = 123456789;
 static uint32_t y = 362436069;
 static uint32_t z = 521288629;
 static uint32_t w = 88675123;
 
 uint32_t t = x ^ (x << 11);
 x = y;
 y = z;
 z = w;
 return w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
}

void uart_init(uint32_t baudrate)
{
 UARTInit(baudrate);
}

//delay functions
volatile static uint32_t msTicks = 0;
void SysTick_Handler(void) { 
 msTicks++;
}

inline void delay(uint32_t delayTicks) {
 uint32_t curTicks = msTicks;
 while((msTicks - curTicks) < delayTicks);
}

//entry point
int main()
{
 SystemCoreClockUpdate();

 uart_init(9600);
 
 if(SysTick_Config(SystemCoreClock / 1000)){
  //handle error
 }
 
 while(1){
  char str[24] = {0};
  const uint32_t length = (uint32_t)(sizeof(str) / sizeof(str[0]));
  //convert uint32_t to char array.
  if(EOF != sprintf(str, "%u\r\n", xor128())){
   //send to console(UART serial).
   UARTSend((uint8_t*)str, length);
  }
  
  delay(1000);
 }
 
 return 0;
}

 このプロジェクトをまとめたものを.zip形式で上げておこうと思ったんですが、Bloggerがファイルのアップロードに対応していないらしいので、考え中です…この際意識高くgitデビューしちゃうか。

3)実行結果

 他に書くこと無いので、メモリ消費量と逆アセンブルを書いておきます。なお、これはXorshiftを使っているけれど、上のコードとは少し違うものをコンパイルした時のものです。
 途中に出てくる-O0、-O1、-O2、-O3というのは最適化の度合いで、数字が大きくなるほど最適化が書けられていきます。いらないものはバッサバッサ切り落とされちゃいます。これを設定するには、Keil μVision4なら、[Project]→[Options for Target '<project name>'...]で出てくるダイアログの、[C/C++]タブ、[Language/Code Generation]のOptimizationで設定可能です。

 また、ここに書いてある逆アセンブルはデバッグ時に表示されるものをコピー&ペーストしています。困ったことに、無償版だとこうしないと表示してくれないみたいです(参考:http://mbed.org/users/MACRUM/notebook/offline_compiler_2/)。


-O0です。
xorshift書く前
Program Size: Code=4724 RO-data=224 RW-data=172 ZI-data=676

xorshift書いた
Program Size: Code=4792 RO-data=224 RW-data=188 ZI-data=676

xorshiftをボーレートにした(強制的に使う)
Program Size: Code=4796 RO-data=224 RW-data=188 ZI-data=676


逆アセンブル
                 __rt_exit_exit:
0x00000160 BC03      POP      {r0-r1}
0x00000162 F001F8F3  BL.W     _sys_exit (0x0000134C)
0x00000166 0000      MOVS     r0,r0
    19:         uint32_t t = x ^ (x << 11); 
0x00000168 484E      LDR      r0,[pc,#312]  ; @0x000002A4
0x0000016A 6800      LDR      r0,[r0,#0x00]
0x0000016C 02C0      LSLS     r0,r0,#11
0x0000016E 4A4D      LDR      r2,[pc,#308]  ; @0x000002A4
0x00000170 6812      LDR      r2,[r2,#0x00]
0x00000172 4050      EORS     r0,r0,r2
0x00000174 4601      MOV      r1,r0
    20:         x = y; 
0x00000176 484C      LDR      r0,[pc,#304]  ; @0x000002A8
0x00000178 6800      LDR      r0,[r0,#0x00]
0x0000017A 4A4A      LDR      r2,[pc,#296]  ; @0x000002A4
0x0000017C 6010      STR      r0,[r2,#0x00]
    21:         y = z; 
0x0000017E 484B      LDR      r0,[pc,#300]  ; @0x000002AC
0x00000180 6800      LDR      r0,[r0,#0x00]
0x00000182 4A49      LDR      r2,[pc,#292]  ; @0x000002A8
0x00000184 6010      STR      r0,[r2,#0x00]
    22:         z = w; 
0x00000186 484A      LDR      r0,[pc,#296]  ; @0x000002B0
0x00000188 6800      LDR      r0,[r0,#0x00]
0x0000018A 4A48      LDR      r2,[pc,#288]  ; @0x000002AC
0x0000018C 6010      STR      r0,[r2,#0x00]
    23:         return w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)); 
0x0000018E 4848      LDR      r0,[pc,#288]  ; @0x000002B0
0x00000190 6800      LDR      r0,[r0,#0x00]
0x00000192 0CC0      LSRS     r0,r0,#19
0x00000194 4A46      LDR      r2,[pc,#280]  ; @0x000002B0
0x00000196 6812      LDR      r2,[r2,#0x00]
0x00000198 4050      EORS     r0,r0,r2
0x0000019A 0A0A      LSRS     r2,r1,#8
0x0000019C 404A      EORS     r2,r2,r1
0x0000019E 4050      EORS     r0,r0,r2
0x000001A0 4A43      LDR      r2,[pc,#268]  ; @0x000002B0
0x000001A2 6010      STR      r0,[r2,#0x00]
    24: } 

-O3です。
xorshiftのxor128()をコメントアウトしている
Program Size: Code=3236 RO-data=236 RW-data=172 ZI-data=676

xorshiftをボーレートにしてない。
Program Size: Code=3280 RO-data=224 RW-data=188 ZI-data=676

xorshiftをボーレートにした
Program Size: Code=3280 RO-data=224 RW-data=188 ZI-data=676


逆アセンブル
    19:         uint32_t t = x ^ (x << 11); 
0x00000168 492A      LDR      r1,[pc,#168]  ; @0x00000214
0x0000016A 6848      LDR      r0,[r1,#0x04]
0x0000016C 02C2      LSLS     r2,r0,#11
0x0000016E 4042      EORS     r2,r2,r0
    20:         x = y; 
0x00000170 6888      LDR      r0,[r1,#0x08]
    21:         y = z; 
0x00000172 6048      STR      r0,[r1,#0x04]
0x00000174 68C8      LDR      r0,[r1,#0x0C]
    22:         z = w; 
0x00000176 6088      STR      r0,[r1,#0x08]
0x00000178 690B      LDR      r3,[r1,#0x10]
    23:         return w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)); 
0x0000017A 60CB      STR      r3,[r1,#0x0C]
0x0000017C 0CD8      LSRS     r0,r3,#19
0x0000017E 4058      EORS     r0,r0,r3
0x00000180 0A13      LSRS     r3,r2,#8
0x00000182 4053      EORS     r3,r3,r2
0x00000184 4058      EORS     r0,r0,r3
0x00000186 6108      STR      r0,[r1,#0x10]
    24: } 
    25:  
    
0x00000214 0000      DCW      0x0000}#0x10]                            /* Function successful */ SysTick Timer */ 

ちなみに、Global Symbolsによれば(<project name>.map。プロジェクトをダブルクリックすると表示される。)

Symbol Name                              Value     Ov Type        Size  Object(Section)
-O3 xor128()                                 0x00000169   Thumb Code    34  main.o(.text)
-O2  xor128()                                 0x00000169   Thumb Code    34  main.o(.text)
-O1  xor128()                                 0x00000169   Thumb Code    34  main.o(.text)
-O0 xor128()                                 0x00000169   Thumb Code    62  main.o(.text)

また、static変数は
Image Symbol Table

    Local Symbols

    Symbol Name                              Value     Ov Type        Size  Object(Section)
    x                                        0x10000004   Data           4  main.o(.data)
    y                                        0x10000008   Data           4  main.o(.data)
    z                                        0x1000000c   Data           4  main.o(.data)
    w                                       0x10000010   Data           4  main.o(.data)
のようになっている。uint32_tだから4Byteなのは妥当。だけどどこで初期化されているんだろう?

 UARTがなんか動かないので、まだxor128()がちゃんと乱数を生成しているかまでは検証していない。UARTでXorshiftが動いてるのを確認しました。
Xorshift

4)まとめ

 50Bytesとかだったら、余裕でプログラムに組み込んでいける。
 1clk = 48MHzとして、1clk1命令だとする(どうなんだろう)。すると、約21nsで1命令。16命令あるから、21*16=0.336μsが理想の動作速度?

 問題はx、y、zとかのシード値をどうするかで、C++11の<random>なら、ハードウェアエントロピーリソースを用いた予測不可能な乱数std::random_deviceが使えますが、ああいったものを考えないと毎回同じ数値が出てきてしまいます。1000回ごとにEEPROMに保存して、次回はそれをシードにするとかでしょうか…


------------------------------------------------------------------------------------------------------
5)おまけ! - extern "C"を忘れて、SysTick_Handlerが無限ループしてた話

 上のコードは、最初は次のようなコードでした。しかしこれだと、UARTに1~2文字ほど表示されるだけで動作が止まってしまい、ちゃんとxor128()が動いているのかわかりませんでした。
#ifdef __cplusplus
extern "C" {
#endif
 
#include "LPC11Uxx.h"
#include "uart.h"
#include < stdio.h >
 
 
#ifdef __cplusplus
}
#endif

//xorshift
uint32_t xor128(){
 static uint32_t x = 123456789;
 static uint32_t y = 362436069;
 static uint32_t z = 521288629;
 static uint32_t w = 88675123;
 
 uint32_t t = x ^ (x << 11);
 x = y;
 y = z;
 z = w;
 return w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
}

void uart_init(uint32_t baudrate)
{
 UARTInit(baudrate);
}

//delay functions
volatile static uint32_t msTicks = 0;
void SysTick_Handler(void) { 
 msTicks++;
}

inline void delay(uint32_t delayTicks) {
 uint32_t curTicks = msTicks;
 while((msTicks - curTicks) < delayTicks);
}

//entry point
int main()
{
 SystemCoreClockUpdate();

 uart_init(9600);
 
 if(SysTick_Config(SystemCoreClock / 1000)){
  //handle error
 }
 
 while(1){
  char str[24] = {0};
  const uint32_t length = (uint32_t)(sizeof(str) / sizeof(str[0]));
  //convert uint32_t to char array.
  if(EOF != sprintf(str, "%u\r\n", xor128())){
   //send to console(UART serial).
   UARTSend((uint8_t*)str, length);
  }
  
  delay(1000);
 }
 
 return 0;
}
この方(http://mibc.blog.fc2.com/blog-entry-82.html)と似たような症状なのかな。

5-1)問題を切り分けたい…

 とりあえず、デバッガを起動して実行してみます。すると、デバッガのステップ実行ではうまく文字が送信されるのに、リリース(FlashへのDownload書き込み)では動かない事がわかりました。
 どこに問題があるんでしょうか…。とりあえずブレークポイントを全て消し、プログラムをしばらく走らせ、徐ろにStopさせます。すると、SysTick_Handler()のB命令でずっと止まっているのがわかりました。本来ならばmsTicks++;が実行されるだけなので、なんか変です…

 しょうが無いのでプログラムで問題がありそうなところをコメントアウトしていきます。すると、次の部分をコメントアウトしたら動きました。
if(SysTick_Config(SystemCoreClock / 1000)){
 //handle error
}
ということは、SysTick_Config()が原因みたいです。SysTick_Config()はSysTickタイマーを設定・開始させる関数なので、もしかしたら割り込みが悪い影響を与えているのかもしれません。例えば、UART送信中に割り込みが来たりしたら動かなくなるとか?(違った)
 ということで、UARTSendのところに
__disable_irq();
UARTSend((uint8_t*)str, length);
__enable_irq(); //割り込みを再設定しないといけない?
としてみました。すると、最初の1回だけは正常に動きます。どうやら、問題はUARTSendではないようです(ライブラリからコピーしてきたので動いて当たり前か…)。

 で、SysTick_Handler()が無限ループになることも考えると、UART送信中にSysTickタイマの割り込みが発生し、SysTick_Handler()に飛んで無限ループに陥るために、送信できないのかもしれないと考えます。

5-2)void SysTick_Handler(void)はどこなのか

 startup_LPC11Uxx.sではSysTick_Handler()は
SysTick_Handler PROC
                EXPORT  SysTick_Handler           [WEAK]
                B       .
                ENDP
となっています。EXPORT SysTick_Handlerを右クリックし、[Go To Definition of 'SysTick_Handler'...]を選んでみても、ちゃんとmain.cppにあるSysTick_Handlerに飛びます。
その割には、逆アセンブルを見ると、
   151:                 EXPORT  PendSV_Handler            [WEAK] 
0x0000030A E7FE      B        SVC_Handler (0x0000030A)
   152:                 B       . 
   153:                 ENDP 
   154: SysTick_Handler PROC 
   155:                 EXPORT  SysTick_Handler           [WEAK] 
0x0000030C E7FE      B        PendSV_Handler (0x0000030C)
   156:                 B       . 
   157:                 ENDP 
   158: Reserved_IRQHandler PROC 
   159:                 EXPORT  Reserved_IRQHandler       [WEAK] 
0x0000030E E7FE      B        SysTick_Handler (0x0000030E)
   160:                 B       . 
0x00000310 E7FE      B        Reserved_IRQHandler (0x00000310)
となっています。これは、main.cppで定義したSysTick_Handler()ではなく、無限ループなのでは?

 アプリケーションノートのp.424~425とp.426の"Figure 23?80 Vector table"には、SysTickの割り込みベクタは0x0000003Cらしいですが、このアドレスを見る限りだと
0x0000003C 030F      DCW      0x030F
0x0000003E 0000      DCW      0x0000
となっているので、
    32: //delay functions 
    33: volatile static uint32_t msTicks = 0; 
    34: void SysTick_Handler(void) {  
0x000001C0 BD10      POP      {r4,pc}
    35:         msTicks++; 
0x000001C2 4844      LDR      r0,[pc,#272]  ; @0x000002D4
0x000001C4 6800      LDR      r0,[r0,#0x00]
0x000001C6 1C40      ADDS     r0,r0,#1
0x000001C8 4942      LDR      r1,[pc,#264]  ; @0x000002D4
0x000001CA 6008      STR      r0,[r1,#0x00]
    36: } 
にはどう考えても飛ばなさそうです。

5-3)顛末

 ここで、SysTick_Handler()の設定の仕方に何か問題があるのではと調べたら、これが出てきました。この通りにextern "C"したらちゃんと動きました。そうだった、前も同じミスをやったんでした。完全にバカですね。

 実際に動かない場合の.mapファイルを見てみると、関数は
    xor128()                                 0x00000179   Thumb Code    62  main.o(.text)
    uart_init(unsigned)                      0x000001b7   Thumb Code    12  main.o(.text)
    SysTick_Handler()                        0x000001c3   Thumb Code    12  main.o(.text)
    main                                     0x000001cf   Thumb Code   132  main.o(.text)
    __use_two_region_memory                  0x000002f1   Thumb Code     2  heapauxi.o(.text)
    __rt_heap_escrow$2region                 0x000002f3   Thumb Code     2  heapauxi.o(.text)
    __rt_heap_expand$2region                 0x000002f5   Thumb Code     2  heapauxi.o(.text)
    __I$use$semihosting                      0x000002f7   Thumb Code     0  use_no_semi.o(.text)
    __use_no_semihosting_swi                 0x000002f7   Thumb Code     2  use_no_semi.o(.text)
    __semihosting_library_function           0x000002f9   Thumb Code     0  indicate_semi.o(.text)
    Reset_Handler                            0x00000301   Thumb Code     8  startup_lpc11uxx.o(.text)
    HardFault_Handler                        0x00000309   Thumb Code     2  startup_lpc11uxx.o(.text)
    SVC_Handler                              0x0000030b   Thumb Code     2  startup_lpc11uxx.o(.text)
    PendSV_Handler                           0x0000030d   Thumb Code     2  startup_lpc11uxx.o(.text)
    SysTick_Handler                          0x0000030f   Thumb Code     2  startup_lpc11uxx.o(.text)
となっていて、SysTick_HandlerとSysTick_Handler()が別々にあるのがわかります。
Read more →