AtmelーICEでの開発環境整備2016年11月22日 13時23分18秒

営業案件の中で再びAtmegaを使いそうだったので既存製品のAtmega328pボードを改造して環境の確認をしてみました。

最近はちょっとしたプロトタイプの試作は、楽なArduinoに頼ってしまってICEは買ったまま棚上げ状態でした。 ICEはRunesasやSilab,古くは8085やZ80でよく使っていたので容易いことだろうと思ってましたが、ちょっとつまずき・・・

原因は簡単なことで(マニュアルを良く読めば書いてある)、FUSEビットのDWENを許可するのを忘れていました。

その他、ライターと同じ設定で良いだろうと勝手に思いこんで、ToolのInterface設定がISPのままだったり・・・(debugWIREにする)

動いてしまえば簡単なもので、最近使ったSilabのIDEデバッガと比べると操作性は格段のさで使いやすい。 ポートのON/OFF状態が視覚的にわかるのが特にいいですね!

IDEのアプリは無料だし、デバッガも安いのでコスパ最高です。 あとは、デバイスの価格がもっと下がればなお良しです。(Microchipに吸収されたので少しは下がるかな・・・と期待)

【備忘録】arduioでのpulsein関数の精度が悪い2016年05月26日 13時47分50秒

arduioでサーボモータパルスを検出するプログラムを作っていたところ、pulsein関数で戻り値が不安定で精度がでない症状が現れた。

最初のテストでは、メインループの中でpulsein関数をコールして使うとほぼ想定内の値が戻ってくてる所までは確認。 諸々のタイマー割込を10msで動かしいろいろコードを付加していくと、pulsein関数の戻り値が不安定になってくることがわかった。

不安定さは割込処理内のコードを増やした分だけ多くなる感じです。 おそらく、このライブラリは他にこの関数の動作を邪魔をするものがいない条件で時間を計測しているみたいですね。

計測するパルス幅は2mSを越えることがないので、pulsein関数のある記述を割込処理に押し込んだら、この不安定は完全に解消。 自前でこの関数もどきをわざわざ作るのもめんどうなので割込処理内で計測されることにしました。

でも問題が・・・・追記へ続く

【追記】 実験していると色々見えてきました。 レファレンスにも書いてあったのですが、タイムアウト値を超えるパルスが入るとゼロを戻してきます。 戻り値で判定するときはこの点に注意しないと怪しい動きをすることになります。

ちょと使いにくいなぁ・・・、自前のライブラリを作ってしまいたくなりました。(でも、方法を調べて勉強しないと・・・苦笑)

その色々調べていたら、コールされるとそこからH区間をずーっと探し続けるので、タイムアウト値は周期分ないとダメな事がわかりました。(よく考えれば当然のこと、苦笑)

それから、puluse関数をコールして実行しているときは、割り込みを入れると計測誤差が一気に大きくなるので注意が必要です。

追記の前に前途したタイマーのなかにpuluseIn関数をいれるのは、1ms以内の計測であれば可能ですが、それ以上だとまともに動作させるのは難しいです。 そそれは、タイマー割り込みは仮に10mS間隔で設定しても基本は1mSで動いているので、この中にpulseIn関数をいれると1ms以内に抜け出ることができなくて割り込み処理のタイミングがめちゃくちゃになります。

【さらに追記】 内部構造を知る上でとても参考になるサイトがありました。 http://garretlab.web.fc2.com/arduino/inside/index.html

Attiny13aのヒューズリセット2016年03月19日 18時10分10秒

秋月で一個¥50で売られているお手軽なマイコンですが、どうしてもポートが足りなくなって、リセット端子もポートで使おうとすると、ISPでの書込が出来なくなります。

そこで必要なのが、高電圧で書き込んでしまったヒューズビットをリセットする治具が必要になってきます。

いろいろWEBを探し回って見つけた一番代表的なのが、このページ。 https://sites.google.com/site/wayneholder/attiny-fuse-reset

12Vをチャージポンプで生成する記事もありますが、Arduio UNOがあればとってもお手軽にできます。

まずは、ATTINY13A用にユニバーサル基板で作ったところ、問題なくリセットできました。追々168Pや328Pの28ピンDIPでも出来るように改造追加を施す予定です。 これで、ヒューズビットを書き損じてしまって、半死に状態なマイコンを救えますね。

ちなみに、チャージポンプ付きの回路はこれです。 https://sites.google.com/site/wayneholder/attiny-fuse-reset-with-12-volt-charge-pump

DS1307の低電圧バージョンDS13382016年02月22日 17時39分11秒

Arduioで人気者になったRTCのDS1307ですが、調べてみると3Vで使えません。 どれくらいの実力があるのかと思い、電圧そ下げながら動かしているとおおよそ3.6V前後でリード・ライトが出来なくなりました。 電池をつないでいないと、もうちょと頑張るけどそれでは意味ないですし・・・。

カタログを見るとバックアップ電池電圧の1.25VよりVCCが下回るとリードライトが禁止になるそうです。(カタログではこの電圧の表記がVtpとなって誤記されてます)

他に使えるものはないかと調べていると、DS1338というほぼコンパチなデバイスが同じMAXIMからでています。 大きく違うところは、バックアップ切替電圧が電池電圧基準でなく、固定値であること(1.62/2.59/2.82)と、レジスタ07HのBIT5に機能追加されているだけでした。

スレーブアドレスや他のレジスタ、ピンアサインは、コンパチなのでそのまま置き換えができそうですね。 海外のWEBサイトの情報を眺めてみてもほぼ代替えとして取り扱われているので大丈夫そうです。

さっそく、手に入れて置き換え実験をしてみたいと思います。

Attiny13aをいじり倒す。2016年02月19日 12時02分00秒

アトメルのAttiny13a色々クセはあるが慣れれば使いやすそうだ。

簡単なアナログ測定&ロジックICの組み合わせならこの手のマイコンを使うのが一番てっとり早いので、来月納めるボードに今回採用することにしたATTINY13Aです。

参考になる記事をWEBを検索しみると、あったのはLEDをチカチカさせるのとADCで読みとった値をPWM出力で輝度調整するものばかり。 多少の参考になるものの、はやり自分で実験しないとダメなようです。

内部クロックの分周比を変えてみたり、128kHZで動かしてみたり・・・ 色々いじり倒してみると、やってはいけないことやちょっと物足りないところ、以外と便利&簡単なことやら見えてきました。

痛かったのは、WDTで使う128kHZのクロックを使おうと思い、でFUSEビットをいじったら、ISPで書込不能になってしまったこと。(汗) 高電圧でリセットかける治具をArduioの使ってそろそろ作っておかないとかなと感じています。 そのほか9.6MHZを4.3MHzにクロックを変更してもISPでの書込は問題ないが、プログラマーのInterfaveSpeedを落としてやらないと巧くデータが読み出せないことがあるので要注意です。

内部クロックは前置分周期でシステムクロックを150KHzまで落としてもたけれど、あまり消費電流が変わらなかったのが惜しいです。 やはり、スリープ状態にして消費電力を減らさないとダメなんでですね。

それでも、1個¥50と安いこのマイコン、あとは米粒ほどのTiny10(¥80)もこれから色々活躍しそうです。

秋月ボードのarduiono化やデバッグ諸々2015年12月18日 13時14分12秒

【秋月ボードのarduiono化】 秋月電子で売られているオリジナルAtmega328ボードをarduino化してみた。

最近arduioを使う機会が少しずつ増えてきた。そんなこともあって秋月電子で昔購入してarduio化できるatmega328ボードをいじってみた。

うっかりしたことに、付属していた16MHzの水晶がどこかに行ってしまったので、クロックは内蔵CR発信器にゆだねることに・・・・ 回路はほぼUNO(\3000程度)とほぼコンパチなので簡単にできるだろうと思っていたところ、ほぼ一日かかってしまった。

その原因はフタをあけてみれば、とても単純で当たり前なことでしたが・・・汗。

①どのブートローダーを書き込めば良いのか色々あって迷う  いろいろネットに転がっていたが、結局書き込んだのはIDEをインストールしたときハードディスクにあったもの。「atmegaboot_168_atmega328_pro_8MHz.hex」でした。

②ヒューズビットの適正値がWEB上の記事では少しずつ異なる。 ディフォルトでは、EX:FF/HI:D9/Lo:62が書き込まれていますが、これをEX:FD/HI:D4/Lo:E2に書き換えました。 これによって、IDEのボード選択は Arduio Pro or Arduio Pro Miniになる。

③内蔵CR発信器は8MHZだったことをすっかり忘れてました。通信が正常にやり取りされていないのが、起動後の動きからなんとなくわかっていました。これは、①にも②も大きく関係のあることで、ブートローダーの書き込みは正常にできても、Auduio-IDEとの通信がまったくできずにいた大きな原因でした。(汗)

【Arduioでの組込機器開発考察】

arduioを使った組込ボードの開発事例がネット上でたくさん見受けられます。 使いやすいライブラリや事例をみると結構簡単に色々できそうなので、色々迷い込んでくる仕事に使えるかなぁ・・・・、と思いつつも、実際にはお客様に納めるモノに滅多に使わずじまいです。

その理由は、回路周りは自分で信頼を高める施しができても、ソフトの開発においてどこまで信頼がおけるのかが今ひとつだからです。

arduioの最大の弱点はデバッグ環境が貧弱なことで・・・・、 ブレークポイントを設けて変数の確認や変更などができないことでしょうか。 もしこれを検証するとしたら、自分でモニタープログラムを作って、デバッグ時にプログラムを止められるような仕掛けを作らなければならない。

なので、複雑な数値を扱ったり、その信頼性を要求するような機器には全く使う気にはならないです。 それでも、ものを動かしたり止めたり、簡単に通信をさせたり、データを保存したするにはとっても便利な開発環境なので使わない手はないとも思ってます。

arduio自体は、bootloader命みたいなモノなので、正しくブートプログラムを書き込んでおけっば、あとはユーザープログラム次第。 マルチタスクなOSではないので言われた?書いた通りにしか動かないのでお気楽です。 プログラムの制御そのモノについては、処理時間やタイミングに厳しいプログラムを作るのは厳しいかも・・・ それでも、既存のライブラリの信頼性や性能に満足できないのであれば自分で作ることもできるから、まぁイザというときには何とかなりそうだ。 コンパイラの信頼性というかバグについては、メーカー製から比較すると多少の不安はあれど、動作の検証さえしておけはそれほど変わりはなさそうです。

DART-MX6【備忘録】2015年09月09日 16時50分00秒

気になるイスラエルのボードシステムベンダー。 色々な専用コントローラタブレットに活用されているらしいDART-MX6が気になる。(17×52mmのボード)

Linux,AndroidとWindowsCEが載せられるとか・・・ チップワンで取り扱っているのでサンプルを買って評価しようかと思案中。

詳細はここ↓ http://www.variscite.com/products/system-on-module-som/cortex-a9/dart-mx6-cpu-freescale-imx6

ラズベリーパイ2が来ました!2015年09月06日 12時23分24秒

今や組込といってもPCと同等の仕様と機能をもつボードが安く手にはいるようになったこの頃。

世の流れに遅れをとってはいけないと思い「ラズベリーパイ2」のスターターキットを手に入れました。 ラスベリーパイが初めてリリースされた頃、その高機能と安さから手に入らなかったので購入先送りにしていましたが、いまや手に入り安いのと応用した資料が豊富な事から、ちょっとした組込でも使われています。 当時は¥3500のボードでパソコン並みの事ができると驚いていましたが、オリジナルで設計変更できないのと今後安定して供給されるのだろうかという不安から開発案件での採用は見送って居ました。

このRaspberry Pi-2 modelBはWindows10にも対応しているらしいので、これを使っておこの秋はミニパソコンを作ろうかと思案中。 でも、コレをいじっている時間がとれるのかが悩みどころです。

忙しいって良い事なんですけどね・・・苦笑

PK51フリー版の限定解除①2015年01月19日 14時31分34秒

Silliconlabsの8051系8ビットマイコンの開発ツールのPK51ですがそのままインストールしただけでコンパイルのコードサイズの上限がありすぐいっぱいになってしまいます。

実はSlliconlabsのサイトではこのフリーでこの制限を解除するライセンスがあります。

まずは、SiliiconlabsのPSN(プロダクトシリアルナンバー)申し込みフォームに必要事項を記入し送信すると、直ぐにPSNの発行レスポンスが返ってきます。

http://pages.silabs.com/lp-keil-pk51.html

詳細はAN-104に細かく書いてあるので・・・以下概説。 パソコンにはあらかじめダウンロード&インストールしたKeil Visionは入っているものとして、 メニューの「ファイル」→ライセンスマネージャーのダイアログを開いて、「Get Lic via internet」をクリックするとライセンス発行の為の申し込みフォームが開きます。(ブラウザ起動)

必要事項とPSNを入力して「submit」をクリックすると登録されているメールアドレスにライセンスNoが送られてきます。 再びKeil VisionのライセンスマネージャーにもどってLicence ID Codeを入力すると制限が解除されます。 Keil Visionで解除を行えばSilliconlabsのIDEコンパイルするときも解除されてますのでフルサイズのプログラムを作ることが可能です。

(FACEBOOKより転載)

組込ネットワークのノウハウ強化(2)2013年08月27日 11時58分03秒

Arduinoの MEGA 2560 これも楽しそうです。 Etherシールドで動作が確認できれば色々とコンパチボードを起こして応用製品の開発に使えます。