北の国から

忘れたことを思い出す為の記録

便利機能のおぼえがき

vimを分割するやつ

  • :split : 横に割れる

  • :vsplit :縦に割れる

割った画面を消すときは:qで消える

workspace切り替えるやつ

  • Ctrl+Alt+(↑or↓or→or←) : 矢印の先のworkspaceに移動
  • Shift+Ctrl+Alt+(↑or↓or→or←) : chromeとかの画面を矢印の先のworkspaceに移動させる
  • Super+S : workspaceの一覧を表示する

STM32F3 HALでエンコーダ入力

はじめに

エンコーダのカウントをしたくなった時に割と設定とか忘れがちなのでまとめときます.

CubeMx上での設定

Pinoutタブ

基本的にエンコーダでA,B相をカウントするときはCH1とCH2を使うはずです.(それ以外知らない)

なのでCH1,CH2どちらも揃っているタイマを選びます.

左側ツリーよりTIMx(xは任意の数字.TIM1とかTIM4とかいろいろあるよね)を展開し,“Combined Channels"以外を"Disable"に設定.

その後,“Combined Channels"を"Encoder Mode"に設定します.


設定すると右側のICの絵で対応しているピンが緑に変わります.

CH1はA相,CH2はB相に繋ぎます.(当然ですが逆だと値も逆になります)

Configuratinタブ

“Control"欄のTIMx(さっき設定したタイマ)を開き,"Parameter Settings"タブへ行くと,エンコーダ入力に関する諸設定ができるようになっているはずです.

僕はいつも

Period : 65535 (16bitカウンタの最大値)

Encoder Mode :Encoder Mode TI1 and TI2 (4逓倍)

の部分だけ変更しています.

プログラム上での扱い

エンコーダカウントの開始

HAL_TIM_Encoder_Start(&htimx,TIM_CHANNEL_ALL);

エンコーダカウントの停止

HAL_TIM_Encoder_Stop(&htimx,TIM_CHANNEL_ALL);

カウント値の読み込み(iは適当な変数とする)

i = TIMx -> CNT;

このようにするとエンコーダの値を取得できます.

もしかしたらもっといい値の読み方あるかもしれないので知ってる方、教えてください…

追記

値取得用関数の定義

毎回TIMx->CNTで読み込むのは見た目気持ち悪い&ぱっと見わかりにくいので

int getTIMxCNT(){
   return TIMx->CNT;
}

(xは適宜変える)
とか定義しておけば少し見やすく、わかりやすくなりますね.

nucleoを割ってフリスクにいれた話(雑ver)

はじめに

皆さんはnucleoというstm32の評価ボードをご存知でしょうか.

いくつか種類があって,ピン数でnulceo32とかnucleo64とかに分別されます.

nulceoボードには専用の書き込み回路のst-linkが内蔵されており,nucleo64ボードではそれば分離できるようになっています.

今回は分離したst-linkをFRISKケースに閉じ込めた話です.

写真等は手元にないので後々記載します.

きっかけ

先週の木曜日(2017/3/23)にあった「関東春ロボコン」に行った際,

出展されていたSTMicroelectronicsさんからnucleo64 STM32F411REボードのサンプルをいただきました.

以前から私はSTM32を扱っていたのですが,書き込みにはdiscoveryボード内蔵のst-linkを用いていました(これは分離不可)

小さいst-linkが欲しかったのでこれは良い機会だと思い、帰って早速割ってみることにしました.

ついでにfriskケースに入れちゃいました.

出来たのはこんなやつです.

準備

準備するものは,

  • nulceoボード
  • はんだごて
  • 好きなコネクタ
  • ヤスリ
  • friskケース
  • ドリル(3キリ)
  • 3mmLED(赤1,緑1)

です.

nulceoへの加工

まずはnucleoからst-linkを分離します.気合で割ります.

割れたらバリをやすった後に余計なピンを取り除きます.



そのままのサイズだとfriskケースに入らないので,基板を切ります.

両側5mmずつくらいなら切っても問題ないはずです.

切ったらまたバリを取りましょう.



SWD部分に好きなコネクタをつけます.

私はピンヘッダをつけました.

なるべく横から端子が出るようにしたほうがかっこいいです.



friskケースに入れるとLEDが見えなくなるので取り除きます.

これで一旦終了です.

friskケースの加工と組付け

friskケース内部の壁は取り除きます.

friskケースの側面にちょうどよく穴を開け,mini-B端子とSWDのコネクタが見えるようにします.

また,ケース上部に3キリでLEDを出す穴を2つ開けます.

ケース内にst-linkを入れ、両面テープ等で固定します.

開けた穴に3mmのを埋め込み,パッドにハンダ付けします.

1番パッドに赤のカソード,2番にアノード

3番に緑のカソード,4番にアノードをつけます.

LEDをホットボンドで固定し,フタを閉めて完成です.

終わりに

作り方を忘れないようにささっと書きました.

あとで詳しく編集し直します.(画像とか)