2017/05/05

AVR Studio7 浮動小数表示のためのリンカ設定

充電器の充電流値の記録をこれまでの Slip21 から Teraterm へ変更したプログラミングしたけど,
表示が ? を出力し上手くいかない。デジタル高精度温湿度センサ HDC1000 の表示も同様だ。Studio7 の最新版をインストールしたせいだろうか。最初,ビットシフトのマクロである _BV が悪影響を及ぼしているのではないかと3日,悩んだ。単純なテストプログラムの結果,リンカ設定が必要な事を思い出した。再インストールしたら,前回の設定は無視されるのだろうと思う。

Atmel マニュアルによれば,
-Wl,-u,vfprintf -lprintf_flt -lm

の設定をすべきだそうだ。AVR Studio7 の場合だと,メニュの Project > Properties をクリックし,ToolChain をクリックすると Linker の設定ができる。私は,libm.a と libprint_flt.a を追加した。
AVRlinker.png 

1年前の浮動小数表示トラブルを忘れていたのは驚きだ。加齢のせいかな。一度設定するとリンカもコンパイラも変える必要もないせいもあるかもしれない。

いかに浮動小数演算がリソースと CPU を浪費するか。仕事で使っていた機械系 CAD の CADAM は浮動小数演算で AutoCAD は整数型だった。CADAM は結局,大手だけで中小は AutoCAD が大勢を占めた。実数型データは取扱が直観的だけど,整数型はデータ処理が高速にできるのだろうと思う。



参考

2017/05/03

LAN 接続XP機に AVRWRT インストール

AVR ライタ問題はどうにもならなくなり,元の AVRWRT を XP から起動する事にした。常用機と LAN 接続されているサーバ機はXPだからだ。しかしXPですら,AVRWRT のドライバインストールはすんなりいかなかった。

インストールできるもののデバイスマネジャをみると,感嘆符が付いている。説明をみるとデジタル署名の不適合だそうだ。署名無視に変えても状態は変わらず,当該ドライバを削除した。XP のデバイスドライバのデジタル署名を無視する設定に変え,AVRWRT 添付のバッチファイルを使用して再インストールようとしてもうまくいかない。諦めかけて6回目くらいのトライで,OSに選択をまかせインストールしたら上手くいった。AVRWRT を起動させターゲットをチェックすると,BitBang ではできなかったターゲットの認識もOKだ。実際に,書き込みロードすると新プログラムが作動した。

XPから Windows 10 ファイルが見えない
しかし,ロードファイルを共有化してXPから Windows 10 アクセスしようとしてもできない。XPから Windows 7 のフォルダは見えるものの Windows 10 はダメだ。世の趨勢に合わせ,常用機を Windows 10 にバージョンアップしたものの私の場合,何のメリットもない。仕方なく先の書き換えは XP に転送した。Atmel Studio7 の作業フォルダをXPに変えた方が手間が省けていいだろう。

純正 AVR ライタ
今回の発端は Studio7 が Windows 10 Home Anniversary に変えたところ起動しなくなった事だ。AVRWRT のデジタル署名回避も Anniversary ではできなくなった結果,新ライタのトライとターゲットの配線変更を繰り返した。AVR プログラミングをする機会が多いなら,Atmel 純正ライタがいいだろうと思うが,生産中止らしい可能性もある。業務用のPCなら今時,xpだと仕事にならないだろうが,ゴミ扱いになっても全ての廃却は止めた方がいい。私のように保管庫サーバにしてみてはいかが。

Windows 10 Home Anniversary 未対応デバイスドライバに振り回された1箇月だった。ネット情報を頼りに自作ライタを漁ってみたものの,OS とターゲットは限られた動作実証のみのせいか,私の ATmega8 と OS の Anniversary が上手くいかない要因の一つかもしれない。個人でマイコン開発をやるなら,やはり開発環境とターゲットをデファクトスタンダードにしないとと結局,時間の浪費になるのか。
 
2017/04/30

FTDI BitBang AVR-Writer トライしてみた

 FTDI BitBang AVR-Writer と称される配線図をみると,ターゲットの RESET が FT232RL の DI に接続されていて前回よりまともそうだ。

avrdude-GUI をインストールすると,ポートリストに
avrdoper
COM3
COM4
COM5
LPT1
LPT2
usb
USB

が表示され認識されていポートが確認できて好感がもてる。以前インストールした avrdude に設定すると,デバイスリストに ATmega8(m8) がある。Programmer リストには,前々回失敗した USBasp が, 

Any usbasp clone with correct VID/PID(clone)
USBasp, http://www.fishl.de/usbasp/(usbasp)

として,さらに目的のは 
FT232R Synchronous BitBang (ft232r) 

がそうだろうと思う。Windows のデバイスマネジャは USB デバイスとして USBasp を認識してはいるが,ポートリストにはそれらしきものが3種ありそれぞれ個別にテストするとなると,結構大変だ。その前に AVRWRT の Zdiag による変換ドライバを消去した方がいいのかもしれない。コネクタ半田付けを Box コネクタに戻して USBasp をリトライするか,それとも FT232RL モジュールで行くべきか。

Zdiag が Windows 10 Home Anniversary に対応しているかどうかも疑わしい。avrdude-GUI が認識したポートのモジュールでトライした方がいいだろう。avrdude-serjtag に同梱されている conf リストには usbasp clone がないので本家 avrdude の最新版を上書きしてみたが,ダメで説明にあるサイトから conf をダウンロードした。

前回および前々回の失敗にこりて,ハードウェアに先がけてソフトの検討から入った。さて配線変更しトライすると,エラー画面が出る。説明にあるように配線の導通チェックを2回やったけどダメだ。ちなみに AVRDUDE のエラー画面は通電していなくても同じだから,大して意味のある表示ではない。

参考
2017/04/25

Zadig は AVRWRT USBasp の署名なしを解消するも書込み不能

Zadig なるソフトが Windows 10 のデジタル署名回避に使えるとのネット情報によりインストールした。ソフトを起動後,目的のデバイスを挿入すると下図に示すように認識する。

Zaidg.png 


ZaidgUSBasp.png
 
デバイスマネジャをみると AVRWRT は認識され,AVRWRT も起動した。やはりダメか。
AVRWRTfail1.png 

USBasp と延長コードを新たに購入して,AVRDUDE と USBasp の組み合わせによるトライもダメだった。
USBaspTrial.jpg 
avrdude.exe: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
avrdude.exe done.  Thank you.

中華製 USBasp クローンの動作を諦め,さらに検索したら,「FT232Rモジュールを使ったAVRマイコンのライターと書き込みソフト」とあり,ヘルプ画面をみたら,ATmega8 にも対応している。トライしてみる価値がありそうだ。

参考
2017/04/21

ADC GND のループ配線

AVR ATmega8 に USBasp ライタを接続しょうとしたら,給電をどうしていたのか忘れている。回路図をみたら半年前だ。差動アンプからの給電ジャンパは Off になっているので USB シリアルコンバータから給電しているのだろう。AVRWRT のジャンパは5Vの給電 On/Off であるのに対し,USBasp は 5V/3V3 の切換えである。
AVRWRTjumper.jpg 

USBaspJumper.jpg 

通電しているかどうか不明だと,不安になるので AVR 基板に電源チェック端子を設けて,DSOで確認する事にした。

ついでに配線をチェックしたら差動アンプからの GND が何と AVR のデジタル GND に落ちている。基板のなかで GND が見事にループになっている。ADC の内部参照電圧の GND をどうしようかとばかり気になって,とりあえず書き込みOKのための配線がそのままになっていた。それと差動アンプからの給電も考えていたので+5V電源線に沿わせたのだろうと思う。

差動アンプの出力電圧を DSO からもモニタしているけど,差動アンプ基板と AVR 基板は 15cm のバラ線で接続されているので,ついでにADC 入力端子電圧のモニタに変えた方がいいだろう。そのためチェック端子2個を取り付けた。

最初は簡単に考えていた充電器回路は泥縄式に計測回路基板が増えてノイズに弱くなっている。検索したら,電源コネクタを介して GND がループになるとある。なるほどと思う。

昔の医用デジタル画像処理基板はA3サイズの大きさがあった。それも複数である。デジタル回路の設計のしたことのない上司がなんでこんな大きさのサイズになるのかと担当者に問いただしていた。基板サイズが大きくなると外注先の実装機に制限があったからかな。それはないか。当時は基板実装は手付けであった。ロットサイズが小さいけれど QFP の実装がどうしようもなくなって実装機に移行した。民生量産品とはあべこべであった。

今なら民生用の集積された画像処理チップが搭載されているのだろうか。その割には医用機器の価格が下がらないな。東芝の医用グループがキャノンに売却された。国内のX線CT(断層装置)は東芝の独壇場である。世界的にみてもGE,ジーメンスおよび東芝くらいの寡占状態になりつつある。フィリップ,日立および横河は生き残れないかもしれない。ハードなら民生用の CPU と GPU を使えばかなりの事ができるだろう。価格破壊の医用画像診断装置を中国とか台湾が出すかもしれない。

ひょんなことから ADC GND のループが発見できた。手元にあるブレッドボードは DIP IC が挿しづらく,つい小さな基板で半田付けして基板の追加を重ねてしまった。もしくは空白だらけの基板になってしまう可能性が大だけれども,余裕のあるサイズの基板に実装しようか。今は実験のための基板サイズを統一しているおかげで,ネジ止め位置が統一されているのでケースの使いまわしが出来ている。基板サイズを変えたら標準ケースも変更しなければならない。どうしょうか。

参考