The Yak Shaver
さあ、今日も毛を刈ろう。
skip to main
|
skip to sidebar
2013/05/31
シェルスクリプトの if 文のおぼえがき
とりあえずよく忘れるものだけ。 #### ファイルの更新日時を比較 if [ file1.c -nt file2.c ]; then echo "file1 is new" else echo "file1 is old" fi `-nt` は newer than です。 `-ot` では older than になります。 #### ファイルの内容を比較 if [ "`cmp file1.c file2.c`" ]; then echo "differ" else echo "equal" fi 条件式の中をダブルクォートで囲まないと、`-bash: [: too many arguments` といわれます。 #### ファイルの存在をしらべる if [ -e file1.c ]; then echo "exist" fi if ! [ -e file1.c ]; then echo "NOT exist" fi
Eagle のコマンドバーで線を引く
EDAのEagleでコマンドバーで座標を指定して線を引く方法です。 たとえば、部品登録する際にパッケージを描きますが、それの外形線を引くときなどに便利です。 下記のような外形線を引きたいとします。
まず、原点を部品の中央として、4スミの座標を求めます。下のような絵をチラシの裏にでも描くことになるでしょう。
さて座標が決まれば、あとは実際に線を引いていけばいいのですが、せっかく座標がわかっているのに、描画エリアを拡大/縮小しながらマウスでポチポチクリックしていくのはバカバカしいです。ですので、Eagleのウィンドウの上の方にあるコマンドバーに座標を打ち込んでいきます。 たとえば、先ほどの絵で左上の座標から時計回りに入力していく場合は、コマンドバーに下記のように入力します。 wire (-6.7 12.8) (6.7 12.8) (6.7 -12.8) (-6.7 -12.8) (-6.7 12.8) 1行目の `wire` は線を引くコマンドです。2行目以降が座標で、`(x y)`の形式で指定します。それぞれの行末でEnterキーを入力し、すべての座標を入力し終えたら、ESCキーを押せば `wire` コマンドから抜けます。なお、コマンドバーでは矢印キーの上下で入力履歴が使えます。 スルーホールやSMDパッドも同様の座標指示で配置できます。 ちなみに、外形線のレイヤと線幅は下記のようにするとよいと思います。 - レイヤは tPlace か bPlace - 線幅はシルクの線幅(例:Olimexでは10mil = 0.254mm) これらは、`change`コマンドや右クリックメニューの`Properties`で変更できます。
2013/05/30
Google日本語入力のユーザ辞書登録
特になんてことはないのですが、Macで Google日本語入力(Google Japanese Input)のユーザ辞書登録をするやり方です。 メニューバーの右の方にある `あ` もしくは `A` というアイコンを右クリックし、`Dictionary Tool ...`を選択。
そして、 `Add` ボタンを押して、 `Reading`に入力語句、`Word`に変換後の語句を入れます。
2013/05/29
AVRのタイマー割込みサンプル
1秒ごとにLEDが点滅するサンプルです。
2013/05/27
AVRのSW入力とLED点灯のサンプル
タクトSWを押すとLEDが光るサンプルを置いておきます。
- LEDはPB0: LO で 点灯 - SWはPB1: LO で ON です。 ごく単純なものですが、組込みにおける`Hello world!`的なものなので、一生のうち何度も書くです。
2013/05/25
C言語の二次元配列の要素数
比較的最近のGCCで二次元配列の初期化をする話しです。 char arr[][] = {{1, 2, 3, 4}, {6, 7, 8, 9}}; などと書くと、コンパイラから次のように文句を言われます。 Error 2 array type has incomplete element type Warning ではなく Error です。エラーメッセージには`element type`とあるので、型がおかしいように思えますがそうではなく、単純に要素数を明示してないのが原因です。ですんで、 char arr[2][4] = {{1, 2, 3, 4}, {6, 7, 8, 9}}; といういうふうに、要素数を明記してやれば回避できます。一次元配列では要素数は省略できますが、多次元では省略不可のようです。 GCCの仕様変更によるものらしいです。
RN-42-EK HID接続テスト(キーボード編)
[前回](http://yak-shaver.blogspot.jp/2013/05/rn-42-ek-hid.html)のつづきです。 今度はキーボードとして認識させてみます。 RN-42の設定は以下のとおり。 - S~,6 # HID - SH,0200 # キーボード - SM,6 # Pairing Mode (キーボードでは必須) - SR,BC9A78xxxxxx # 接続先PCのアドレス(必須ではない) コマンドモードで上記を設定した後に RN-42 の電源を切/入し、PCのBluetooth管理でキーボードとして認識させます。 あとはマウスの時と同様にTeraTerm からレポートを送信してテストします。 キーボード用のレポートは1つにつき11バイトで構成されますが、キーボードの場合は通常、押す/離すでレポートを2つ送信することが多いです。 FD 09 01 04 00 0B 00 00 00 00 00 ; Alt+h FD 09 01 00 00 00 00 00 00 00 00 ; release all ここでは2列で書いていますが、バイナリファイルにする場合は下記のように連続して書き、22バイトとします。
無事レポートが届けば、RN-42が `Alt+h`を押してくれるので、下記のようにTeraTermのヘルプメニューがプルダウンします。
2013/05/24
RN-42-EK HID接続テスト(マウス編)
遅ればせながら、Bluetoothモジュール RN-42 の評価基板をテストしています。 HIDマウスとしての動作を確認できたので、その記念動画です。 この状態ではまだマイコン等は接続しておらず、Mac --> (USB SERIAL) --> RN-42-EK --> (Bluetooth) --> Mac というループバック環境です。 MacでのBluetoothの接続状態は下のような感じです。
`FireFly-XXXX` として認識されています。これが Connected(緑色)なら接続は正常です。この状態で、RN-42 の UART(RxD) に対して マウス用のレポートを送信すれば、マウスとして動作します。 レポートは(テストなので)Macからシリアル通信で送ります。 Mac > Parallels Desktop > Win XP > COM4(USB Serial) > TeraTerm > ファイル > ファイル送信 > バイナリファイル で送信。 マウスのレポート用のバイナリファイルは下記のような7バイトです。 FD 05 02 00 0A 00 00 この例では`0A`がX座標の移動量です。これを送信した瞬間に、マウスポインタが右に43ピクセルほど移動します。レポートの移動量と画面上の移動量が一致していませんが、これはおいおい調べることにします。 以下は RN-42 の設定です。 - S~,6 # HID - SH,0220 # マウス - SM,6 # Pairing Mode (必須ではない) - SR,BC9A78xxxxxx # 接続先PCのアドレス(必須ではない) 以下、メモ書きです。 - レポート送信用のボーレートは9600, 115200 bps で正常動作を確認済み - HIDとして接続中は `$$$` によるコマンドモードには入れない - コマンドモードに入るには PCのBluetooth管理で`FireFly-XXXX`を削除(disconnect ではなく、remove)した後に、Teraterm から `$$$`を入力する - さらに、RN-42 のTXD/RXD をオープンになっていないと、Teraterm から `$$$` が届かない模様 - ほかのHIDデバイス(キーボードなど)に切り替えるときは、コマンドモードで SH,0200 としたあと、RN-42 の電源を切/入し、PCのBluetooth管理でキーボードとして認識させる
2013/05/16
AVRのUARTのサンプルその2
以前の[これ](http://yak-shaver.blogspot.jp/2013/05/avr-1.html)のつづきです。 割り込みによる送受信とリングバッファを追加したものです。 若干納得が行かないところもありますが、とりあえず使えます。
リングバッファモジュール
前回の[コレ](http://yak-shaver.blogspot.jp/2013/05/blog-post.html)をモジュール化しました。 動きは同じです。
リングバッファのサンプル
通信などに用いるリングバッファのサンプルです。 このサンプルでは、バッファの状態をグラフィカル(笑)に表示するので動きがわかりやすいかもしれません。 バッファに書き込むライトポインタとバッファから読み出すリードポインタがあり、ライトポインタはリードポインタを追い越しません。 これにより、まだ読み出されていないデータは上書きされることはありませんが、書こうとしていたデータは捨てられます。 それを防ぐためには、書込み/読出しの頻度差(通信速度差ともいえます)に見合ったバッファサイズに調整する必要があるでしょう。
AVR シリアル通信サンプル その1
UARTのもっとも単純なサンプルを置いておきます。 デバイスはATMEGA88P、クロックは工場出荷状態の内蔵RCオシレータで9600bpsです。 このままでは実用的でないです。 とくに受信部分は割り込み処理とバッファが別途必要ですがそれはまた後日。
2013/05/08
AVR Dragon の debugWIRE 使用上の注意
AVR Studio と AVR Dragon の組み合わせで debugWIRE を使ってデバッグをする方法について書きます。 debugWIRE は 6ピンのISPコネクタで接続するので、結線自体はふつうにISP書き込みするのと同じです。 ただ、debugWIRE を使うには、事前に AVR のフューズビット DWEN を 1 にしておく必要があります。フューズ操作は、デバイスによっては ISP接続ではできないものもあり、 AVR Dragon でそのようなデバイスのフューズを操作するには、ISPコネクタでの接続ではなく HVPP ソケットを使わなければなりません。 ですが、買ったままの AVR Dragon は HVPPソケットはスルーホールパターンのみでソケットは実装されていないので、HVPP を使いたいときは、事前に別途 ZIFソケット等をハンダ付けしておく必要があります。 これらのことは特に、新しい環境だったり初物のマイコンだったりすると割とハマリやすいので、以下に手順を残します。 ---- まずは AVRマイコンの DWEN ビットを ON します。 1. AVR Studio を起動し AVR Dragon と PC をUSBケーブルでつなぐ。 1. AVR Dragon の HVPP ソケットに AVRマイコンを差し込む。 1. AVR Studio > Tools > Device Programming 1. Interface = HVPP > Apply 1. 左ペインの Fuses を選択し、 DWEN をチェック。 Program を押す。 ---- 次に HVPPソケットから AVRマイコンを外してターゲット基板に実装し、ISPコネクタと接続します。 debugWIRE でデバッグするのに最低限必要な結線を下図に示します。
ここで、ターゲット基板に専用の電源回路がある場合(ふつうはこれ)は、ISPコネクタの 2番ピン(VTG)は接続しません。 ターゲット基板に電源回路がない場合は、しかたないので接続します。ただし、その場合は AVR Dragon から+5Vを供給することになるので、ターゲット回路の電源系は+5Vとなります。もし 3.3V系のICなどが接続されている場合は壊れる可能性があるので注意が必要です。 ---- 結線ができたら、あとはふつうにデバッグを始められます。 1. ターゲット基板の電源を入れます。 1. `Alt` + `F7` を押して プロジェクトのプロパティを開き、左ペイン > Tool > Selected debugger/programmer = AVR Dragon, Interface = debugWIRE
1. ソースにブレークポイントを仕掛けて、`F5`(Continue)します。
実行中は AVR Dragon の赤LEDは点灯せず、緑が点灯/点滅しています。もし、赤が点灯している場合は何かがおかしいです。 デバッグまでの手順は以上です。 ---- ####余談その1 上の結線図にもありますが、ISPコネクタの2番(VTG)はターゲット基板に接続する必要はありません。このピンは AVR Dragon から 5V が出力されており、これをターゲット基板の電源として使うこともできますが、単純なブレッドボード上での評価用と割り切ったほうがいいと思います。特にターゲット回路の電源が5Vより低い場合(3.3V系など)はターゲット回路を壊す可能性があるため、このピンはオープンのままのほうが無難です。 ####余談その2 ブレークポイントを仕掛けても止まらないとか、ローカル変数がウォッチできない場合は、コンパイル時の最適化が効いていることが原因かもしれません。その場合、次のようにして最適化を無効にします。 `Alt` + `F7` を押して プロジェクトのプロパティを開き、左ペイン > Toolchain > AVR/GNU C Compiler > Optimization > Optimization Level = None(-O0) ![最適化OFF](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgRSD87u-b-b47depwL70r0QTdNDa_eRlYlcZovYIeE81aXcyTCv1sXqjvwUD4tDdsNWaY-3CJi1bkG3Q5K7hcRAbyB2jpeqarjHyVSs3g8wN14oxhlVWyQPcVICrPjMMkYAfAlb1-U7jQ/s1600/Screen+Shot+2013-05-08+at+9.27.50+AM.png) ####余談その3 AVR Dragon のマニュアルによると、大きい方のLED が黄色に光っているときは、AVR Dragon のファームウェアがコンフリクト(?)しているらしいので、ファームウェアをアップデートする必要があります。 ####余談その4 ISPコネクタでの接続した状態で `AVR Studio > Tools > Device Programming > Interface = ISP` とした時は `Device Signature`, `Fuses`, `Lock Bits` はどれも読めず、下記のようなダイアログが出ます。 Unable to enter programming mode. Please verify device selection, interface settings, target power and connections to the target device. しかし、この動作は正常です。最初に書いたとおり、AVR Dragon でフューズビット等をR/Wするには、ISPコネクタではなく HVPPでの接続でしかできません。つまり AVR Dragon でこの手の操作を行うには、`AVR Studio > Tools > Device Programming > Interface = HVPP` として、HVPPソケットにAVRマイコンを挿しこんで行います。ダイアログのメッセージを読むと、一見、結線や電源を見なおせばISP接続でも `Device Signature` 等が読み取れそうに思えますが、この場合はそうではないです。 以下環境です。 - Mac mini 2011 (OS X 10.8.3 / Mountain Lion) - Parallels Desktop 8 - Windows XP Home SP 3 / Windows 7 Home x64 - AVR Studio (Atmel Studio) 6.1 / 5.1 - AVR Dragon
2013/05/07
Parallels Desktop に入れた Windows で、なぜか日本語キーボードになる件
英語キーボードをつないだMacなのに、Parallels Desktop に入れた Windows XP ではなぜか日本語配列になってしまうのを治す方法です。 要はキーボードのドライバを入れなおせば解決するのですが、ちょっと煩雑なのでおぼえがきとして残しておきます。 1. Windows > スタートボタン > コントロールパネル > キーボード 1. 「ハードウェア」タブ > 「101/102 英語キーボードまたは …」を選択 > 「プロパティ」ボタン > 「ドライバ」タブ > 「ドライバの更新」ボタン 1. 「いいえ、今回は接続しません」をチェックして「次へ」 > 「一覧または特定の場所からインストール」をチェックして「次へ」 > 「検索しないで、インストールするドライバを選択する」をチェックして「次へ」 > 「101/102 英語キーボードまたは …」が選択された状態で「次へ」 > 上書きしてもいいか聞いてくるので、「はい」 > 「完了」ボタン 1. Windows を再起動 これで直るはずです。 下記は、参考までにこちらの環境です。 - Parallels Desktop 8 - Windows XP Home/Pro
2013/05/04
Mac でCOMポート
COMポートに何かをつないで通信したいときは、Windows PC の場合は TeraTerm Pro を使うのが定番です。 Macの場合は TeraTerm Pro の代わりに [CoolTerm](http://freeware.the-meiers.org/) が紹介されていることが多いですが、実は無くてもできてしまいます。 COMポートは `/dev/tty.xxxxxxx` という名前で列挙されています。このデバイス名さえ分かれば、下記のように screen コマンドを使うことで手軽に通信することができます。 $screen /dev/tty.usbserial-A101XXXX 115200 上記は、FTDIの仮想COMポートに 115200 bps で接続する例です。
新しい投稿
前の投稿
ホーム
About
Unknown
詳細プロフィールを表示
Labels
AVR
( 12 )
Blogger
( 10 )
Chrome
( 2 )
cocoa
( 5 )
Eagle
( 5 )
emacs
( 31 )
game
( 1 )
Google
( 4 )
iPhone
( 2 )
Javascript
( 1 )
lisp
( 4 )
LPCXpresso
( 1 )
mac
( 53 )
Markdown
( 4 )
msp430
( 1 )
NXP
( 1 )
Parallels Desktop
( 1 )
PIC
( 3 )
python
( 19 )
Raspberry Pi
( 9 )
ruby
( 1 )
Safari
( 2 )
shell script
( 4 )
Sublime Text
( 1 )
windows
( 7 )
xcode
( 8 )
xyzzy
( 60 )
おぼえがき
( 69 )
まとめ
( 6 )
メール
( 2 )
よもやま
( 19 )
工作
( 23 )
電験
( 4 )
本日の探索結果
( 2 )
Blog Archive
►
2015
( 3 )
►
02
( 1 )
►
01
( 2 )
►
2014
( 17 )
►
12
( 1 )
►
07
( 3 )
►
06
( 3 )
►
04
( 2 )
►
03
( 4 )
►
01
( 4 )
▼
2013
( 135 )
►
12
( 5 )
►
10
( 6 )
►
09
( 7 )
►
08
( 10 )
►
07
( 24 )
►
06
( 15 )
▼
05
( 15 )
シェルスクリプトの if 文のおぼえがき
Eagle のコマンドバーで線を引く
Google日本語入力のユーザ辞書登録
AVRのタイマー割込みサンプル
AVRのSW入力とLED点灯のサンプル
C言語の二次元配列の要素数
RN-42-EK HID接続テスト(キーボード編)
RN-42-EK HID接続テスト(マウス編)
AVRのUARTのサンプルその2
リングバッファモジュール
リングバッファのサンプル
AVR シリアル通信サンプル その1
AVR Dragon の debugWIRE 使用上の注意
Parallels Desktop に入れた Windows で、なぜか日本語キーボードになる件
Mac でCOMポート
►
04
( 17 )
►
03
( 13 )
►
02
( 17 )
►
01
( 6 )
►
2012
( 11 )
►
10
( 5 )
►
07
( 1 )
►
02
( 2 )
►
01
( 3 )
►
2011
( 86 )
►
12
( 2 )
►
11
( 2 )
►
10
( 1 )
►
07
( 2 )
►
06
( 3 )
►
05
( 20 )
►
04
( 49 )
►
03
( 7 )
►
2009
( 4 )
►
03
( 1 )
►
01
( 3 )
►
2008
( 8 )
►
12
( 8 )
STAT
Ads
Amazon.co.jp ウィジェット
Powered by
Blogger
.