2015年09月14日

Tera termのちょっとした裏技

プロジェクションボールのクラウドファンディングに向けた準備をちょこちょこ進めています。

今回は組込のデバッグ等で欠かせない
Tera termのちょっとした裏技をご紹介します。


こちらのサイトでも紹介されていますが、
Tera termの表示を16進表示へ切り換える方法です。

Tera termのteraterm.iniファイルを下記のように書き換えます。

; Display all characters (debug mode)
Debug=on

この状態でTera termを起動させて、
画面上で「shift」+「Esc」を3回押すと16進数表示に切り替わります。
何度か繰り返し押すと順繰りにモードが切り替わります。


startdevice.png
上の写真はWiced smartでpuartプログラムを
koshianに書き込んであるBLEデバイスと会話させている最中の
koshianからの返答を表示させた例です。

デバイス間のやり取りのコマンドを確認する際に16進表示が非常に役に立ちます。

Tera termをご使用の方はぜひ、お試しを!


posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2015年06月11日

ネジ穴加工必須アイテム

今回はあると便利な道具をご紹介します。


最近はFablabやワークスペース等でレーザーカッターや
3Dプリンタに触れる機会が多くなったと思います。


レーザーカッターや3Dプリンタから作られたものを連結したり、
別の部品とつなげたりする際にネジ穴を作成してネジ止めというのが
よくあると思います。


その際に役立つのが「タップ」です。


tap1.jpg
簡単に言えばネジ穴を作成する道具です。


M3のネジの場合、下穴として2.5mmくらいの穴を作成します。

その後、手でM3用タップを使ってネジ穴を作成します。

tap2.jpg

工作レベルだとタップを使わずに、
ネジを無理に入れてネジ穴を作ってしまうということもあると思いますが、
タップを使ってネジ穴を作成するとネジ頭をバカにせずに
簡単に綺麗なネジ穴ができます。


1000円位でホームセンターで入手できますので、
レーザーカッターや3Dプリンタでネジ穴を作成する機会が多い方は
ぜひ道具箱に!


次世代なモノづくりでもタップは十分に活躍する道具です笑


ラベル:常備必須部品
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2015年04月25日

LogicoolのUnifyingについて

今回はMakersにとって便利なデバイスをご紹介します。


みなさんはキーボードやマウスはどのメーカをご使用でしょうか?


もし、Windowsだけでなく、rasberryPI、Linuxなども使うって方にお勧めなのが
LogicoolのUnifying対応のキーボードとマウスです。



Unifyingに対応したキーボードやマウスを使用すると、
小型のUSBレシーバー1個でマウスやキーボード、
テンキーなど最大6つのワイヤレス機器を接続できます。


これだけなら、bluetoothと同じと思われるかもしれませんが、
Unifyingの何がすごいって、
WindowsのUnifyingの登録ソフトでワイヤレス機器を一度、登録すると、
その設定がWindowsに限らず、rasberryPIやLinuxなどでも
引き継がれるということです。


Windows上で一度、設定すれば、UnifyingのUSBモジュールを
WindowsマシンからLinuxマシンに差し替えるだけで
そのまま同じキーボードとマウスを使用可能です。


特にLinuxマシンではUnifyingのUSBモジュールが
標準USBマウスやUSBキーボードとして認識されるため、
ワイヤレスデバイスということを意識せずにドライバを自動検出して
使用可能となります。




これが実現できているのは、
WindowsのUnifyingの登録ソフトで
UnifyingのUSBモジュール内に登録デバイスを
ROMデータとして登録し保持しているからだと思われます。




bluetoothではデバイス認証が面倒だったり、
接続が不安定だったり、
レスポンスが悪い、
ドライバが見つからないといった問題が生じますが、
LogicoolのUnifying対応デバイスならそんな問題生じません。





なかなか画期的だと思いました。
ぜひ、マルチOSユーザーの方は使ってみてください。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2015年03月07日

dsPIC内部プルアップ

先日、ある試作機を作る際に遭遇したトラブルについて、
解決方法をご紹介します。


試作機の概要としてはdsPICのUARTモジュールで数MHzの高速通信をさせ、
RS485ドライバを介してデバイスと通信するものです。


遭遇した問題はUARTの受信がなかなか安定しないということです。
低速なUARTではこのような問題に遭遇したことがありませんでした。



時々、全く通信ができなかったり(受信割り込みが発生しない)、
通信できても、意図しないデータも一緒に受信したりという状況でした。


RS485とdsPICの間にオシロで計測すると、
波形には問題なく、通信も安定するという状況でした。


RS485ドライバは半二重通信なので送信モードと受信モードの切り替えに
問題があるのか、受信バッファ処理に問題があるのかなど色々検討しました。




結論は、UARTのdsPICの入力ポートの電圧が不安定だったようです。
オシロをつなぐと、プローブの微小なキャパシタンスで安定したようです。
電圧が不安定なため、ノイズの影響をもろに受けているようです。




対策は、
RS485のRO受信ポートからdsPICのUART入力ポートへ直接つないでいる
配線に対してプルアップ抵抗を間に入れました。


追加回路を作成するのは面倒なため、
dsPICのメインプログラム内で内部プルアップを有効にさせました。


dsPICリセット時のデフォルトではCN**ピンの内部プルアップは
すべて無効になっています。
CNPU1=0x0000;
CNPU2=0x0000;



今回、UARTの送受信ポートはRB10,11のため、
ピンアサイン図からCN15,16に該当します。



CN15,16の内部プルアップを有効にさせるため、
下記のように変更しました。
CNPU1=0x8000;
CNPU2=0x0001;




内部プルアップは外付けでプルアップさせるよりも、
弱いプルアップとなっていますが、
今回内部プルアップを有効にさせるだけで
遥かにUARTの通信が安定するようになりました。



内部プルアップ恐るべし。




内部プルアップを有効にすると、
スイッチ入力を使用する際の回路の簡素化にも貢献できます。
スイッチ入力の際に入力ポートに直接スイッチを接続し、
一方をGNDに落として、内部プルアップでプルアップさせれば、
入力ポート部分の抵抗やVDDなどのプルアップ回路が不要になります。


ぜひ、内部プルアップを活用してみてください。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2015年02月19日

dsPIC33FでのI2C LCD初期化トラブル

dsPIC33FJ64GP802で不思議な事象に遭遇したため、メモ書き。


マイコンのデータ表示に使うLCDで秋月やaitendoで販売されているI2C接続のものをよく使用しています。


LCDの価格に差がなく、4ビットや8ビットピンを配置する必要がなく、配線が楽だからです。


好んで使用しているのは
ACM1602NI-FLW-FBW-M01
です。

白い綺麗なバックライトが特徴で他の省エネ薄型I2CのLCDに比べ、
プルアップ抵抗の制限を受けない感じです。

省エネ薄型I2CのLCDはI2Cの駆動電流が少なく、
プルアップ抵抗が小さくても大きくてもうまく通信できない感じがします。
特にスレーブのデバイスを複数繋げるとプルアップ抵抗の制限が顕著でした。






今回はI2CのLCDでdsPIC30FやPIC16F等で使用していたライブラリを
dsPIC33F用に少し修正して利用しようとしたところ、あるトラブルに遭遇しました。


プログラムとしては、
main関数内で
クロックの設定やポートの設定の後、
I2Cモジュールの初期化を行い、
LCDの初期化という流れです。



dsPIC30FやPIC16F等でも使えていたにも関わらず、
うまくLCDの初期化ができないという問題に遭遇しました。


オシロで波形を見るとI2Cのデータやクロックが出ているようですが、
うまく初期化ができていないようです。


送信やACKのタイミングなど調整してみましたが、
うまくいかず・・・



結局、
ポートの初期化の際にI2CでSDAとして使用するRB9を
"input"として初期化するとうまくいきました。


つまり、
TRISB=0b0000000000000000;
から
TRISB=0b0000001000000000;
にすると解決。


データシートにはI2Cモジュール有効と共にIOの設定が上書きされるとありましたが、
他の何かが悪さしているのか上書きされなかったようです。
それでLCDからのACKが無視されてしまったようです。

タイミングが変わるのか、IO設定が上手くいっていないのか、
真因は不明ですが、同じような事象で苦労している方に役立てればと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする