JP7FKFの備忘録

ヒトは,忘れる生き物だから.

2018年買ってよかったもの

2018年買ってよかったもの

なんか周りで書いてる人が多いので便乗して私も書いてみます. 主にAmazonの注文履歴とにらめっこです. 今年は一人暮らしを始めたので,たくさんのものを買った気がします.来年からはちょっと少なめになるかな?

f:id:jp7fkf:20181231125048p:plain:w300
2018年は51件ほどAmazonでお買い物をしたようです.

  1. 見なかったことにしようBOX


    散らかってるものをとりあえずつっこんでおくとみなかったことにできる魔法のコンテナです. これにだいたいの身の回りのものを綺麗に分別して入れてそのまま引越ししました.引越しとか移動のたびにダンボールに詰めなおして引っ越す必要もなくて大変助かりました. このBOXは重ねてもある程度安定するので,スチールラックとかにこれをそのまま乗っけて整頓しています.
    こちらも併用しました.こっちは使わないときは折りたたんでおけるので場所を取らなくて便利です.思ったより丈夫だった.

  2. PC モニタ


    引越しでディスプレイも東京に持ってきたのですが,利用していたのはメインで21.5インチとサブの18.5インチディスプレイでした. 流石に作業領域が小さいし,時代は4Kでしょ,広いほうが捗るだろうし悩むなら買ってしまおうとポチってしまいました. しかし27インチの4Kは解像度が高すぎてコーディングとかをするには見辛くてダメでした.大失敗.4Kならたぶん30〜40インチあるべきだと思います 4Kの動画を見るときとかに使うことになるんだろうか...これはサブモニタになってしまいました.
    ということで4Kまでいかないけどさらに画面がでかい31.5インチのWQHDディスプレイを買ってしまいました. これはなかなかよかったです.今はこれをメインディスプレイにして使っています. 金銭的に余裕ができたら30-40インチくらいの4Kディスプレイを買いたいところです.

  3. Anker SoundCore Sport


    アウトドアで音楽を聴きたいと思ってポチりました.もちろんアウトドアでも大活躍で,家の中でも簡易防水なのでお風呂で音楽が聴けてよいです.長風呂するときには必須アイテム.電話会議では使ったことがないけど,どうなんだろう.今度試してみます.来年からゆるきゃん(ソロキャン)をしていきたいと思っているので.そのときも使っていきたいです.

  4. Amazon Echo dot


    一応スマートスピーカーの波に乗っておくかということで,Prime dayかなんかでポチりました.音楽をかけたいときにかけてくれるし,天気もわかるし,今何時?もよく使います.実はこれを目覚ましにしていてweekdayのみ起こしてもらっています.最近はパスタを茹でる時間を計ってもらうことが多いです.家にnature remo的なデバイスがあり,amazon echo連携ができるそうなのでやってみようと思っているのですがまだやってない.家の照明は自作なので,これにも赤外線センサをつけてコントロールしたいと思っています(今後の課題).

  5. Zolo Liberty


    もともとフルワイヤレスイヤホンとしてX3Tを使っていましたが,ちょっとバグることも多く周りの電波が汚いところだとブツブツ切れることが多くてストレスフルでした.なのでAnkerのこいつを試してみようかと購入.音質は満足いくレベルですし,ブツブツ切れることも少なくなりました.さすがに東京都内だと所々切れることはありますが,X3Tよりはいくぶんマシです.バッテリもケースがあるので十分持ちます.総合的には価格を考えるとよくできたデバイス,で買ってよかったと思います.ただこいつはイヤホン本体の操作がタッチ式ではなく完全なクリック式/ボタン式です.耳にはめている状態でボタンをクリックするには結構な力がかかり,単純に耳が痛いと感じることもしばしば.タッチ式だったら最高だったでしょうね.

  6. サーモス 真空断熱タンブラー 420ml ステンレス JDE-420

    サーモス 真空断熱タンブラー 420ml ステンレス JDE-420

    サーモス 真空断熱タンブラー 420ml ステンレス JDE-420


    私はよく作業するときにコーヒーを飲みつつ作業をすることがあります.そうすると普通のマグカップだとすぐにコーヒーは冷めてしまいますが,これに入れておけば本当に長い間温かい状態を保ってくれます.価格も手頃で,お気に入りです.熱いものだけでなく無論冷たいものも長い時間保ってくれますので,夏も快適です.

他にも長年使ってきたモバイルバッテリーがとうとう膨張したのでAnkerのモバイルバッテリーを買ったり,みんな大好きRedbullとかを買ったりしていました.お買い物は価格と品質を吟味して買うかどうかを決定するようにしていて,今の所ほとんどの買い物に納得ができています(4Kディスプレイは品質や価格はよかったと思うのですが,実際の使用感がわかっていなかったので失敗でした),2019年もその調子でお買い物していきたいと思います!


P.S. ほしいものリストは下記です.いつでもお待ちしております.
ほしいものリスト - Amazon.co.jp

2018年を振り返りつつ2019年を眺める

2018年もいよいよ年の瀬.私の生まれた平成という時代も,もうすぐに終わろうとしています. 私の過ごした2018年を振り返りつつ,次の2019年をどう生きるかを書いていきたいと思います. 後からみたときに,今何をしてい(る|た)かがわかるように....

2018年は何があったのか

端的には最悪の一年だったが,ちょっと振り返る.

就職した

就職しました.就職した会社はインターネット関連の会社です.ISPとかをやっているところです.配属された部署は技術を開発するという名前がついている部署でした.私としては今まで得意としていた電気電子,高周波関連とは少し違った道を歩んでいます.それは私がそうやっていきてみたいと決めたからです.とはいえ,通信の世界でも電気電子の知識は少し生きつつ,高周波を学んだことで得られた知見も,少しは役に立っていたと思います.私は就職してから,研修等を経て,本務では主としてVNF(仮想ネットワークアプライアンス)のconfig作成や試験を行っていました.VNFの動作を確かめたり,トラフィックをたっぷり流してどういう挙動を取るのかや,異常系試験などを行っていました. 装置の検証というのは装置のconfigが変わると最初からやりなおし,試験を通しなおし,などが起こることがありますが,私はその度に試験を人力で流すのはただの作業であると感じて,誠に稼働の無駄である気がしてならず,最近はRENATというRobot Frameworkを利用した試験自動化ツールを使って試験を自動化することを試みたりしています.

その他にも自社で持っているASの運用,装置の更改,構築などに多少携わらせていただいています.自分としてはもっと技術を触って開発をしたいという思いがありますが,今の所自分としては,業務としてはあまり技術を触っていない/開発をしていない な,と感じてしまっています.これは会社で働いている以上そういうこともあるので仕方ないという側面もあると思います.ただ,いざ技術を使った業務が来ると,自分の技術力が劣っていることでスムーズにいかないこともあり,これは自分が技術を身につけられていない,怠慢であることに他ならないと感じることもあります.普段技術開発できていなくても,いざ来たときにスピーディに対応できるよう,日々努力は怠ってはならないと感じた一年でもありました.fundationを自分で整え,いざ面白い仕事が来たときのチャンスを逃さず自信を持ってやりますと言えるようにしておきたいと感じました.

周りには優秀な人がたくさんいて,恵まれている環境にいると思います.同期もつよい人が多くて全然ついていけてない自分がいます.
//ちゃんと,技術で勝てるような何かを持たないとダメだなと.
だからこそ,成長できる環境にいるからこそ,自分の努力が足りなかった一年だとも感じています.環境はある程度整っているので,なんとなく過ごしていた2018年を改め,2019年は積極的に手と頭を動かしていきたい.

生活の変化

地方から出てきて東京で一人暮らしをはじめました.私個人として一人暮らしは経験したことがあり,抵抗もまったくないので何事もなく暮らしています.東京はとても便利という印象です.趣味の電子工作で部品が必要になればサクっと電車に乗って秋葉原に行けばいいし,ものが欲しければお店はいくらでもあります.勉強会も,地方と比べて活発に開かれています.Interopのような展示会にも新幹線に乗らずに在来線ですぐだし,とてもよいです.ただやっぱり家賃は高い.何を楽しむにしてもお金がかかったりするし,なかなか難しいところ.はやく稼げるようになって20代を楽しみつつ仕事もガリガリやりたい感じです. 仕事というものが生活の軸となって日々の時間を過ごした一年であり,いろいろあって自分のProductivity, Creativity は最悪の一年だったように感じます(当社比).来年はそんなことがないようにちゃんと何かしらのものを作って,成果を出していきたい.仕事だけじゃなくプライベートでも.

雑に2018年を振り返りましたが,私の2018年はまったく色濃くなく,ここ数年ではワーストレベルのクオリティの年でした.心の中では本当に最悪と思っている.時間もなんとなく過ぎていき,ここまであっという間でした. ただ,一年過ごしているとだんだん動き方がわかってきたので,来年からはよくできるかなと思っています.

2019年はどうしようか

最悪の2018年,同じ繰り返しにならないように2019年を過ごしたい.

目標やらやりたいこと

目標を立ててもだいたい達成しなかったりしますが,目標は目標として一応書いておきます

目標

  • TOEIC800up: 多分無理かも.努力はする.英語できるとかっこいいじゃん(知らんけど).
  • CCNP R&S取得: 今年はCCNAを取ったので,セカンドステップとしてNPを狙います.
  • 電験3種取得: 科目合格が今年まで.これでダメだったら色々無駄になるので頑張る.あと2科目だし.

やりたいこと

  • ブログでもなんでもいいので(技術的)outputをする
    2018年の何が最悪かって,ほぼoutputしていないところ.今専門としているネットワーク技術じゃなくてもいいし,趣味の電子工作,プログラミングやらなんでもいいのでとりあえず何とかしてoutputを出す.ブログでもいいしどこかでLT発表してもいい.outputできるレベルのことを"ちゃんと"やる.小さなことでもoutputしていく."誰か"にとっては必要とされていることかもしれない.
  • 「あとでやればいいや」を極力なくす
    「あと」が延々とこなかったり,あとでやると溜まって大変になって結果的に生産性が落ちていた感じがする.数年前の流行語なのかもしれないけど「今でしょ」精神で,今をちゃんと生きるようにする.
  • 英語以外の外国語に触れる. 別に"ちゃんと"喋れなくても,書けなくてもいいので,ちょっと喋れる,ちょっと書ける,ちょっと意味がわかる程度でもいいので第二外国語としてなんらかの言語に触れる.中国語,スペイン語あたりなのかと思っている.

とりあえず雑に書いた. 後でいくらでも変えていいと思っている自由人なので,今回はこのくらいにしておく. 来年もどうぞよろしくお願いします.

Cisco Catalyst 2960G switchを修理した話

壊れたCisco Catalyst 2960Gなswitchを譲渡してもらった.

壊れたCiscoCatalystスイッチを譲渡していただける機会があった. 私はモノを修理するのが好きなので,今回も治すことを試みた.

症状としては,電源を入れてもコンソールからは何も出力されない. Catalyst 上のインジケータLEDも,特に意味のある光り方をしない. (具体的には,電源を入れると点灯こそするものの,その後は一切変化しない.電源を入れるたびにオレンジ,緑等の色が変化する.電源を入れるたびに光ったり,光らなかったりするLEDが出るなど,ステータスを表しているとは到底思えないような光り方をしていた.)

LED表示はこんな感じ.コンセントをさしたり抜いたりすると光るところが変わったりする.明らかにおかしい. f:id:jp7fkf:20180906124027j:plain:w500

Ciscoバイスはどの順序で各メモリを利用するのか.

ここで,Cisco スイッチの起動順序をおさらいしてみることにする. 私はそもそもあまり詳しくないので,調査してみてわかったことを簡単に書いてみる.正しいかどうかはわからない.

起動順序は下記URL等を参照した.
Ciscoデバイスの操作 - Ciscoルータ - メモリの種類と起動順序

ciscoバイスは,Flash, NVRAM, RAM, ROMの4種類の記憶装置が存在する. 具体的には,ROMはPOST,Bootstrap,ROMMON, miniIOSなど,最小限のソフトウェアが乗っている.FlashIOSイメージが格納され,起動時にRAMにロードされて実行される.RAMはIOSがロードされるほか,running-confingもここに乗っている.NVRAMはwrite mem等をした際に書き込まれる領域,つまりstartup-configが格納されている.

というわけで,基本的にロード順序としてはROM -> Flash -> RAM -> NVRAM の順序で読み込まれるような気がしていた.しかしながらよく考えると,ROMに書かれているプログラムもRAMに展開されて実行されるような気もしていた.これはコンピュータアーキテクチャが分かっていればすぐにわかることなだろうが,ciscoがどのようなアーキテクチャで作っているのか私は知識がなく,断定はできなかった.

現状として,電源を接続しても,Catalyst 上のインジケータLEDは,特に意味のある光り方をしない.点灯こそするものの,その後は一切変化しない,など,syst, statランプの点滅などもなかったため,POSTすら実行できていない可能性が高いと推測をした.

起動しない原因と可能性

これらの原因として考えられるものの1つとして,ROMの破損が考えられた.しかしながらROMが破壊していた場合,ROMを交換するだけでなく,その中に書き込まれているプログラムも他のciscoスイッチ等からコピーする必要があり,現状その手段を持ち合わせていないため,交換して修理することは難しいと判断した.

2つ目の可能性として,POSTやブートストラップが,仮にRAM上に展開されて実行される場合,RAMの故障によりPOSTが動いていないことが考えられた.

RAMは電源断時には情報は持つことはなく,電源が入っているときのみ記憶動作を行うため,これは交換することで修理が可能であると考えた.

他の可能性として,根本的にデバイスに供給されている電源の不具合(各電圧ラインの電圧が異常である等)が考えられたが,これはテスタですべての電圧ラインを確認し問題ないことを確認した.

FlashとNVRAMについては,これが破壊されていた場合でも,最低限POSTは走るであろうと考えられたため,今回はこれらの故障が原因ではないと判断した.

上記の判断と,自分が行うことのできるレベルとして,RAMを交換して様子を見るということが初手として打てる手であると判断し,当該スイッチので用いられているRAM交換することにした.

DRAMの交換を試みる.

スイッチの蓋をあけると,RAMと思われるデバイスが見つかった.
f:id:jp7fkf:20180906124034j:plain:w500
f:id:jp7fkf:20180906124051j:plain:w500
型番を調べるとビンゴで,512MBのSDRAMである.
こいつはMicron TechnologyのMT46VというシリーズのSDRAMのようだ."-6T"というのは,Speed Gradeで,使えるClock Rateを示している.
Micron MT46V Series DDR-SDRAM

本来であれば同一の型番のDRAMを用いるべきであるが,digikey等で検索しても1qty. から適正価格で買えるものが見つからず,入手性の観点から互換的に利用できると考えられた"-5B"というSpeed Gradeのものをを代わりに用いることとした.こちらはより高速なクロックに対応したモデルであるが,データシートを見て,当該スイッチで用いられているクロックでも問題なく動作すると判断した.

最近ではマルツパーツ館digi-keyのパーツが1個から購入できるので大変便利である.私もこれを利用させていただくことにした.

パーツは5営業日くらいでマルツの店舗に到着し,受け取ることができた.十分早い.
f:id:jp7fkf:20180906124043j:plain:w500
交換するDRAMが入手できたので,早速交換を行う.

交換の仕方は割とワイルドに?交換対象のDRAMの足にたっぷりの半田を盛り付けて熱容量をあげておく.半田を盛ったら,周囲の部品を壊さない程度に半田ごてをがっつり当てて半田を溶かして部品を取り外す.
f:id:jp7fkf:20180906124058j:plain:w500

取り外すことができた.
f:id:jp7fkf:20180906124111j:plain:w500

半田の残骸をはんだ吸い取り線等を用いて綺麗に取り除く.
f:id:jp7fkf:20180906124119j:plain:w500

綺麗になったら,いよいよ新しいDRAMを取り付ける. DRAMと基板をマスキングテープ等で固定すると,面実装部品でも比較的簡単に半田付けを行うことができる.軽くマスキングテープで固定し,足とパッドにフラックスを塗布する.面実装部品の場合は,ほとんどの場合フラックスを塗ることは必須だと思う.塗っておくと上手にパッドに半田が流れてくれるし,ブリッジもしにくくなる.無洗浄タイプを用いると,後から洗浄を行わなくてよかったり,余計な腐食の心配をしなくていいので楽だと思う. f:id:jp7fkf:20180906124127j:plain:w500

フラックスを塗ったら,いよいよ半田付けを行なっていくが,このような面実装部品では軽くコテ先に半田を含ませて足をなぞるようにするとうまくいく.

この要領で全てのパッドと足がはんだづけされていることを確認する. ブリッジ等が起こっていると,電源を入れた場合にDRAMだけでなく周辺の回路も破壊することがあるので,できるだけルーペなどを用いてブリッジがないということをしっかり確認する.
f:id:jp7fkf:20180906124144j:plain:w500

DRAMの交換が終わったので,元どおりにシャーシを組み上げ,電源を入れる.これでLEDがうまく点滅,点灯したり,コンソール表示が出れば成功だ. 緊張の一瞬である.
f:id:jp7fkf:20180906124137j:plain:w500
f:id:jp7fkf:20180906124148j:plain:w500

無事息を吹き返した. よかった.

まとめ

これらの事象が示していることは,POSTは確かにRAMにロードされて動いているとみられるということだ.RAMが死んでいるとPOSTすらまともに走らないし,LEDも無論まともに点灯しない.当たり前といえば当たり前の話なのだが,アーキテクチャを理解していないとわからないことでもあった.この事実を知ったことは,ふるまいが確認できたという点で,大変良い経験となった.

というわけで,無事Cisco Catalyst 2960G を修理することができた. DRAMの故障だと見抜くことは難しいことだと思うが,今回はROMではなくRAMが死んでいてくれただけで大変助かった.めでたし.

P.S. 同じような症状で死んだCat2960GをRAM交換で直そうとしていた人がいた...けど,この人は失敗していた.
Repair of a Cisco 2960G switch with amber LED via RAM chip replacement (FAIL/defect) - YouTube

References

Geekbuying でXiaomi Huami Amazfit Bip Lite を買ってみた話

Smart な Watch がほしかった.

smartなwatchというのもたくさんある.代表的なのはApple WatchとかApple WatchとかApple Watchとか.

私はPodCastを聴いていて特にしばしば聞くのがRebuild.fm である.
このPodCastの中で,smart watch の話題が出ていて,宮川さんが「Amazfit」というwatch を使ってみているというエピソードがあった.

私は時計はここ10年くらいずっとCASIOのG-SHOCKを使っていて,ソーラーパネルがついている充電式のwatchなので,電池交換をすることもなく10年間を過ごしてきた. だが最近は,twitter でsleep tracker がついたfitbitを代表としたfitness tracker的なものを使っているヒトがいて,私もsleep tracker的なものが欲しかった. だが単にsleep trackしてくれるだけじゃ面白くないから,通知とかも受けられるレベルのものが欲しいなぁと思っていた.私の欲しい機能はこの程度だったので,宮川さんの言っていたamazfitがちょうどいいんじゃないかと思って買ってみた.値段も手頃なので,そこまでこだわらないとか,smart watchを自分の生活の中で試してみるとかいう程度にはちょうどいいんじゃないかと思う.

初Geekbuying

今回はgeekbuyingを利用して購入してみた.私はこれを使うのは初めてだった. Aliexpressとかは使ったことがあったが,こいつは初めて. ということで購入して手に入れるまでをちょいと書いてみる.

何も考えずにAdd to cartをポチッとな.支払いはpaypalにしました. 香港から発送が近そうなので,shipping from HongKongにしました.

f:id:jp7fkf:20180814180344p:plain:w500
日本円で7882円.安い.shippingはfree.

f:id:jp7fkf:20180814180522p:plain:w500
私が発注した時は先ほどの金額よりちょっと安い7072円だった.

f:id:jp7fkf:20180814180629p:plain:w500
f:id:jp7fkf:20180814180648p:plain:w500

4月20日に発注して,shippingが記録されたのが,5月10日みたい. この辺りの遅さはありますが,許容しないとね.早く手に入れたいならそれなりのお金を払えばよい話である. Singaporeからは,4日程度で到着みたいです.早い.

到着しました.
f:id:jp7fkf:20180814180847j:plain:w500

思ったよりすんなり手続きできて,特に問題もなかったです.ggるとgeekbuyingは商品が届かないとかなんとか書いてあったりしますが,今回は何も問題ありませんでした. aliexpressとかで買い物したこともあるけど同じような感じだった.

使い心地はまた別記事で.

第36回電通大コンテストの結果

題のとおりです.
2017年に開催された第36回電通大コンテストの結果がかなり前に発表されておりました. 私は7MHz部門に参加し,113QSOという結果でした.

第36回電通大コンテストに参加した - JP7FKFの備忘録

結果は...

f:id:jp7fkf:20180518174611p:plain:w500

ちなみに2015年に開催された第34回電通大コンテストでは, 123QSO, 316pts, 33multiで総合得点10428ptsで7MHz部門で10位でした.

電通大コンテスト2015結果発表 - JP7FKFの備忘録

今回は113QSO, 299pts, 37multi, 総合得点11063ptsで同じく10位という結果でした.

以前と比べてQSO数は下がっているものの,multi,総合ptsは上昇しており,特に成長は感じられませんでした.
ただ,知り合いの局に関東でよく聞こえていたとの報告をいただいて嬉しい限りです.

1総通を取りたいと言い始めてからもう何年も経っていますが,いまだに取得できる目処は経っていません....
和文モールス難しい(一応修行はしているのですが...).

これからも精進したいところです.

=====第36回電通大コンテスト=====
Call:JP7FKF/7 (QTH:060101), 7MHz Only
LICENSE: H
QSO: 113
MULTI: 37
TOTAL SCORE: 11063
RANK: 10

SW4STM32で実数型をsprintfするときのtips

SW4STM32で実数型の値を出したくて,実数型のフォーマット指定子である%fをいれてみたらエラーが. なんでやねんって話である. これが組み込みプログラミングらしいところで,おそらく実数型のsprintfはコードサイズが増えるため,デフォルトでは利用しないようになっているのではないかと予想する.

エラー文は下記の通り.

The float formatting support (-u _printf_float) is not enabled from linker flags

検索したところ,下記のサイトに以下のような記述を見つけた.
PrintfのFloat出力: Crescent

結論から言うとプロジェクト内のプロパティから、
C/C++ Build」->[Settings]->
[Tool Settings]->[MCU GCC Linker]->[Miscellaneous]
でLinker flagsの
「-specs=nosys.specs -specs=nano.specs」
から
「-u printf_float」
を追加して
「-specs=nosys.specs -specs=nano.specs -u
printf_float」
にすることです。

なるほど.ということでこの通りに設定をいじる. f:id:jp7fkf:20180109000457p:plain:w500

するとめでたくコンパイルは通り,正しく実数型を扱うことができました.めでたし.

Reference

STM32マイコンでADCを使ってみる話

最近はPICよりかはSTM32を用いて電子な工作をしている. 基本的なペリフェラルとして,GPIO(論理出力/入力),ADC, PWM,Timer(割り込み),通信系(I2C,SPI,USART,I2S,CAN,USBなどなど)等がある.このうちでもセンシング等でよく利用されるのがADCであろう.秋月で簡単にチップが入手できるSTM32F042には,12bitというわりと分解能の高いADCが付いている.PICでは8bitや10bitが多い中,12bitもの分解能が得られるADCはありがたいものだ.

今回はこのSTM32のADCを利用する方法を簡単にまとめてみようと思う. 主に下記の記事を参考にさせていただいた.

STM32の少しややこしいところは,PICのようにチャネルを設定しADCをGOしてフラグが落ちるまで(ADC完了まで)待ち,データを取る.というシーケンスでチャネルを次々変えて変換すれば異なるチャンネルのADCができるというわけではないという点である.特に注意するべきがこの複数チャンネルのADCであり,これはDMAを使ってやるとかなり簡単に処理することができる.STM32でADCを利用するときはDMAの利用は必須と言えそうだ.

複数チャネルのADCについては,上記の記事でかなり詳細に紹介されているので,ここは自分が忘れない程度にざっくりと記載していく.参考にするのであれば上記の記事を参考にすることをお勧めする.

DMAを用いたADC

まずはSTM32CubeMXでペリフェラルの設定をする. ADCしたいピンをADCモードに設定する.GUIなので簡単である. f:id:jp7fkf:20180108234233p:plain:w500

さらにconfigurationタブから,ADCのconfigは下記のようにしておく.

  • Continuous Conversion Mode: Enable
  • DMA Continuous Requests: Enable
  • Overrun behaviour: Overrun data overwritten

f:id:jp7fkf:20180108233837p:plain:w500

さらにDMAのconfigをいじっておく.ADCからのDMAリクエストを追加して

  • Mode: Circular
  • Increment Address: Memory
  • Data width: half word

f:id:jp7fkf:20180108233855p:plain:w500
ここまでできたらCubeMXを用いた設定は終了なので,コードを生成する.

ここからはSW4STM32でコードを書いて行く. 追加するべきは,初期化や変数宣言をするあたりに下記のコードを追加するだけである.

enum{ ADC_BUFFER_LENGTH = 2 };
uint16_t g_ADCBuffer[ADC_BUFFER_LENGTH];

memset(g_ADCBuffer, 0, sizeof(g_ADCBuffer));
HAL_ADC_Start_DMA(&hadc, g_ADCBuffer, ADC_BUFFER_LENGTH);

これで,任意の場所でg_ADCBufferの中身をみてやれば各chのADC値が読み取れる.ch1とch2を使っているのであればg_ADCBuffer[0]にch1が,g_ADCBuffer[1]にch2のADC値が入っている.
ADCを複数チャネルで利用する場合であっても,チャネルの若番から順に配列に格納されていく.ch1とch3のみを有効化した場合でもg_ADCBuffer[0]にch1, g_ADCBuffer[1]にch3の結果が入る.

というわけで,これだけでDMAを使ってADC値を得ることができる.ADCするためにCPUを使う必要もないし,いい感じである.CPUのリソースを有効に使える感じがする.これからもSTM32の勉強を進めて色々なモノづくりを進めてみようと思う.

References