前のトピックを表示 :: 次のトピックを表示 |
投稿者 |
メッセージ |
リセット
登録日: 2013.06.17 記事: 10
|
日時: 2013-06-17(Mon) 23:30 記事の件名: Arduinoでオーディオ機器コントロール! |
|
|
初めまして、リセットです。
リモコンが付いていないオーディオ機器にIRリモコンやBluetoothコントロール、
Wifi経由でのコントロールなど、色々な事をやっています。
よろしくお願いしますー |
|
トップに戻る |
|
 |
senshu Site Admin

登録日: 2009.06.01 記事: 2820
|
日時: 2013-06-18(Tue) 08:39 記事の件名: |
|
|
リセットさん、おはようございます。
Arduinoを使って試作を行っている件、了解です。
ただし、Arduinoボードはそれなりの価格になので、機器に
埋め込むのは得策ではありません。
ISP方式のAVRライタがあれば、可能性は拡大すると思います。
AVRライタは1台あれば通常は十分ですから、その後の進展をお知
らせいただければ幸いです。 |
|
トップに戻る |
|
 |
リセット
登録日: 2013.06.17 記事: 10
|
|
トップに戻る |
|
 |
senshu Site Admin

登録日: 2009.06.01 記事: 2820
|
日時: 2013-06-18(Tue) 22:37 記事の件名: |
|
|
リセットさん、今晩は。
具体的な取り組みの紹介をありがとうございます。
Arduinoをベースに、これほど凝ったものを製作される方がいるとは思い
ませんでした(ISP用のコネクタが見当たりませんが、、、)。
こうした報告を拝見すると、ツールの提供し甲斐があります。
ところで、 Apple REMOTEとはこれ(↓)のことでしょうか。
http://store.apple.com/jp/product/MC377J/A/apple-remote
また、製作したAVRライタと利用環境(OS)を教えてください。 |
|
トップに戻る |
|
 |
リセット
登録日: 2013.06.17 記事: 10
|
日時: 2013-06-19(Wed) 18:31 記事の件名: 雑記と利用環境について |
|
|
そうなんですよ、ISP用のコネクタを付けていません。
ライタに差し替えてプログラム更新を行っています。
頒布を考えているのですが、内容としては基板と AVR のセットを考えています。
頒布先でライタを用意される可能性は低いだろうという発想です。またメンテナ
ンスが必要になった場合は、AVR を送ってもらい個別対応する予定です。
ですので、添付した写真のようにゼロプレッシャー付き ROM ライタを作成し、ROM
をひたすら焼いていく という事を行っています。また、この手法を実現するた
めには千秋さんのツールが無いと無理でした。(なにより、パフォーマンスが凄
い)改めて感謝です。
AppleREMOTEはそのリンクの通りです。
手に持った感触とクリック感、必要最小限の機能で、大変重宝しています。
フォーマットはNEC方式で、受け側の難易度も低いです。
参考にしたURLはこちらです。
http://hifiduino.wordpress.com/apple-aluminum-remote/
作成したライタはこちらを参考にしました。
http://www.geocities.co.jp/arduino_diecimila/avr-writer/index.html#top
Programmerには、【AE-UM232R:FT232R BitBang】を使用しています。
ボーレートは300Kを指定していますが、実に快適ですね。
OS は、Windows7 Ultimate 64bit を使用しています。現在の所、問題は発生して
いません。
|
|
トップに戻る |
|
 |
senshu Site Admin

登録日: 2009.06.01 記事: 2820
|
日時: 2013-06-19(Wed) 18:54 記事の件名: |
|
|
リセットさん、今晩は。
FT232RLを使って書き込まれているのですね。これは、単なるBitBangライタではない
ので、かなりの書き込み速度が得られます。Arduino IDEとは速度や自由度に大きな
違いがあります。
実際に使ってみれば、性能の違いはすぐに実感できます。また適切な設定を行えば、
AVRISP-mkII と同等の書き込み速度が達成できます。
>Programmerには、【AE-UM232R:FT232R BitBang】を使用しています。
>ボーレートは300Kを指定していますが、実に快適ですね。
300kbps という指定は無効なので、内部的には 230400 bps が割り当てられます。
あるいは、最速の 3000kbps を選択しているのでしょうか。
>OS は、Windows7 Ultimate 64bit を使用しています。現在の所、問題は発生して
>いません。
了解です。どの Windows でも、x64 環境で快適に動作するライタは限られます。
幸い、このサイトで紹介しているものは全て x64 環境で動作することを確認しま
した。
Quote: | 頒布を考えているのですが、内容としては基板と AVR のセットを考えています。
頒布先でライタを用意される可能性は低いだろうという発想です。またメンテナ
ンスが必要になった場合は、AVR を送ってもらい個別対応する予定です。 |
頒布先が使うかどうかは無関係です。私はマイコン開発の効率から、ゼロプレッシャ方式
の採用はお勧めしません。抜き差しの間にMCUのピンを折るなどのトラブルも生じるのです。
(QFPのMCUでは抜き差し自体が不可能であり、抜き差し方式はDIP限定の開発方式です)
ISP 方式に変更するのは難しくありません。せめて開発用のボードだけでも ISP コネ
クタを取り付ければ、MCU を抜き差しするという作業は不要ですから、効率は格段に
向上すると思います。
ISP 用のピンが他の目的に使われているなら、スイッチなどで電気的に開放でき
る工夫をすればよいと思います。
Quote: | ですので、添付した写真のようにゼロプレッシャー付き ROM ライタを作成し、ROM
をひたすら焼いていく という事を行っています。また、この手法を実現するた
めには千秋さんのツールが無いと無理でした。(なにより、パフォーマンスが凄
い)改めて感謝です。 |
ROM ですか、AVR マイコンは ROM ではないと思うのですが、、、。ISP 用のコネ
クタは安価ですが、コストが優先されるなら実装をオプショナルすればよいのです。
でも必要に応じて取り付けが可能になるように、ISPコネクタ用のホールは用意し
て欲しいと思っています。
ISP 方式ならMCUの抜き差しは不要で、デバッグへの移行も瞬時です。
開発者の勝手と思うかもしれませんが、ぜひご検討ください。
最終編集者 senshu [ 2013-06-20(Thu) 19:09 ], 編集回数 3 回 |
|
トップに戻る |
|
 |
リセット
登録日: 2013.06.17 記事: 10
|
日時: 2013-06-19(Wed) 19:35 記事の件名: おお、ありがとうございます! |
|
|
色々とご助言ありがとうございます。
300Kではなく確かに3000Kですね、ゼロの数え間違いです。
ROMでもありませんしね
マイコンを始めて半年くらいで、ISP 端子についてはつい最近まで単語自体意識したこと
もありませんでした。(ライタを作る前は、Arduino を使ってブートローダー書き込み、
Arduino に差し直してプログラムのビルドを行おうと考えていました)
動画にもありますように、直前まで Arduino ボード上で開発を行っていましたので、抜く
ことも無く、不便さも感じていなかったのです。
しかし、助言頂いたように抜き差しにはいろんなリスクがあります。次回の開発時には、
対策しておきたい問題です。スイッチで切替えればいいじゃん!のアイデア頂きます。
しかし、Arduino は面白いです。マイコンでもオブジェクト指向的な開発ができるのは、
大変刺激的でした。 |
|
トップに戻る |
|
 |
senshu Site Admin

登録日: 2009.06.01 記事: 2820
|
日時: 2013-06-20(Thu) 08:24 記事の件名: |
|
|
リセットさん、お早うございます。
>300Kではなく確かに3000Kですね、ゼロの数え間違いです。
>ROMでもありませんしね Wink
了解です。数値が大きく'0'が連続するため、誤読の可能性があるようです。
avrdude-GUI では、選択した値をそのまま avrdude に渡すため、表示を 3000000から
3000k に変更するだけでは機能しません。今朝は頭の回転が鈍く、早期の修正は諦める
つもりでした。
しかし昼ごろに修正方法を思いつき、修正作業を行いました。追加は10行程度です。
修正版の実装は、「kを含む値を登録して表示させ、選択して得られた表示データを実
際の値に変換」します。これ以外は今まで通りです。
別の方法もありそうですが、このメニューはライタによって三種類の異なる値が登録
されるので、決め打ちで変換することはできません。
なお FT232RL では、大きな値を指定しても性能が頭打ちになるため、1000000 以
上の指定はあまり意味がありません。1000k を超える指定は、高性能な FT232 後
継チップ用と考えてください。
1000kを指定して16kBのFlashを読み出し、FT232RLとFT2232dの速度差を比較しました。
Code: | FT2232dでmega168をDump # HEX dump of flash (OK), 00:00:01.25
FT232RLでmega168をDump # HEX dump of flash (OK), 00:00:02.39 |
FT2232dは約2倍の速度ですが、1秒の違いですから高性能といっても誤差の範囲です。
AVRライタとしても利用するなら、I/O電圧の柔軟性を備えたFT232RLが最適です。
※ このテストで、FT2232d指定時に、BaudRate指定に切り替わらない不具合を発見し
たので、avrdude.confファイルも併せて修正しました。
値を変えて Dump などを行ってみれば、実行時間を表示するので簡単に性能評価
ができます。
なお、avrdude-GUI-130620.zip に含まれる avrdude-GUI.exe は BaudRate 表示
を修正しただけです。その他の機能変更はありませんが、BaudRate 値を読み間違
うことは無くなったと思います。
利用してトラブルが無ければ、次回の更新時はこの仕様とします。
最終編集者 senshu [ 2013-06-21(Fri) 18:19 ], 編集回数 19 回 |
|
トップに戻る |
|
 |
senshu Site Admin

登録日: 2009.06.01 記事: 2820
|
日時: 2013-06-20(Thu) 14:54 記事の件名: |
|
|
>マイコンを始めて半年くらいで、ISP 端子についてはつい最近まで単語自体意識したこと
>もありませんでした。(ライタを作る前は、Arduino を使ってブートローダー書き込み、
>Arduino に差し直してプログラムのビルドを行おうと考えていました)
意外ですが、専用基板まで起こされているのですから電子回路には精通されてい
るのではと思います。AVR マイコンの多くは、インサーキットでの Flash 書き換
えが基本です。DIP で入手できる AVR マイコンも限られる時代となり、ISP 方式
しか使えないことも増加しています。
>動画にもありますように、直前まで Arduino ボード上で開発を行っていましたので、抜く
>ことも無く、不便さも感じていなかったのです。
そうですか。私は Arduino IDE の書き換えの緩慢さが耐えられず、avrdude-GUI
を Arduino IDE にも対応できるように拡張しました。
>しかし、助言頂いたように抜き差しにはいろんなリスクがあります。次回の開発時には、
>対策しておきたい問題です。スイッチで切替えればいいじゃん!のアイデア頂きます。
了解です。現状でも、ISP コネクタを追加した補助ボードを作成すれば、開発作
業を格段に効率化できます。開発用のボードだけ、ISPコネクタがあれば十分です。
量産?時は、今までのゼロプレッシャソケット方式が使えます。
>しかし、Arduino は面白いです。マイコンでもオブジェクト指向的な開発ができるのは、
>大変刺激的でした。
AVR マイコン程度のメモリでは、オブジェクト指向を導入しても制約が大きいと
感じていました。メモリ制限の厳しい場合も効果がある、ということでしょうか。
ぜひ、その利点と考える使い方を紹介してください。 |
|
トップに戻る |
|
 |
senshu Site Admin

登録日: 2009.06.01 記事: 2820
|
日時: 2013-06-21(Fri) 18:19 記事の件名: |
|
|
Download用の板に、avrdude-2013-RC15b.zip を置きましたので
そちらを使ってください。 |
|
トップに戻る |
|
 |
リセット
登録日: 2013.06.17 記事: 10
|
日時: 2013-06-24(Mon) 23:37 記事の件名: |
|
|
早速のbitrateのドロップダウンメニューの修正対応ありがとうございます。
読み違えることはこれで無くなります。
また、動作確認も行いました。特に問題なく今まで同様使えています。
1回の書き込み+ベリファイで、おおよそ11秒ほどですね。
以下、抜粋
Code: | Writing | ################################################## | 100% 6.36s
Reading | ################################################## | 100% 4.43s
# Wrote to flash ... Verify=ON (OK), 00:00:11.12 |
あと、基板を担当しているのは他のメンバーですので、電子工作自体はマイコンに輪をか
けてド素人です。期待に応えられず、申し訳ないです。
色々 ISP に関して頂いた助言は、千秋さんのこれまでの経験則からくるアラートであろう
と考え、対応を考えています。今の基板に設置するのは僕のスキルでは困難なので、DIP
ソケットとスイッチ付きの基板のようなものを作ろうと考えています。 |
|
トップに戻る |
|
 |
senshu Site Admin

登録日: 2009.06.01 記事: 2820
|
日時: 2013-06-25(Tue) 08:39 記事の件名: |
|
|
リセットさん、お早うございます。
ハードウェア設計に関しては詳しくない件は了解しました。
それならなおのこと、ISPコネクタを設けることをお勧めします。
ソフトウェア開発時のハードウェア操作が不要になります。
また、オブジェクト指向の利点をお聞かせください。 |
|
トップに戻る |
|
 |
リセット
登録日: 2013.06.17 記事: 10
|
日時: 2013-08-20(Tue) 12:55 記事の件名: ご無沙汰しています |
|
|
senshu wrote: | リセットさん、お早うございます。
ハードウェア設計に関しては詳しくない件は了解しました。
それならなおのこと、ISPコネクタを設けることをお勧めします。
ソフトウェア開発時のハードウェア操作が不要になります。
また、オブジェクト指向の利点をお聞かせください。 |
ご無沙汰しています、リセットです。
先日無事に頒布を開始しました。色々なご指導ありがとうございます。
ISP は確かに楽になりました。
さて、具体的に書くのは難しいので、抽象的に質問へ返答しますね。
今回のプロジェクトでは状態遷移が色々あり、振る舞いを手続き型で書くと複雑
度が上がりまくることから State パターンを採用しました。
リソースに制約が多く全てをオブジェクト指向で記述はできないため、適宜採用
しています。
これにより、一部のソース複雑度の低下と品質向上、開発効率 UP が得られ、マ
イコンでも利点を感じました。 |
|
トップに戻る |
|
 |
senshu Site Admin

登録日: 2009.06.01 記事: 2820
|
日時: 2013-08-20(Tue) 15:11 記事の件名: |
|
|
リセットさん、こんにちは。
>先日無事に頒布を開始しました。色々なご指導ありがとうございます。
>ISP は確かに楽になりました。
AVRマイコンは、ISPでの書き込みを前提に設計されています。ソケットから
取り外しながら書き込むのは、例外的な使い方だと思います。
>今回のプロジェクトでは状態遷移が色々あり、振る舞いを手続き型で書くと複雑
>度が上がりまくることから State パターンを採用しました。
>
>リソースに制約が多く全てをオブジェクト指向で記述はできないため、適宜採用
>しています。
>
>これにより、一部のソース複雑度の低下と品質向上、開発効率 UP が得られ、マ
>イコンでも利点を感じました。
状態遷移の実現は、C言語の場合は関数へのポインタのテーブルを用意すれば、
シンプルに実現できます。ただし、あまり読み易くないのが欠点です。
どの言語を使っても、(腕次第で)読み易くも、読み難くも書くことができます。
優れたプログラマは、アセンブリ言語でも読み易くて高機能なコードを書けるよう
です。私には無理ですが、、、。 |
|
トップに戻る |
|
 |
リセット
登録日: 2013.06.17 記事: 10
|
日時: 2013-08-23(Fri) 08:29 記事の件名: |
|
|
senshu wrote: | リセットさん、こんにちは。
状態遷移の実現は、C言語の場合は関数へのポインタのテーブルを用意すれば、
シンプルに実現できます。ただし、あまり読み易くないのが欠点です。
どの言語を使っても、(腕次第で)読み易くも、読み難くも書くことができます。
優れたプログラマは、アセンブリ言語でも読み易くて高機能なコードを書けるよう
です。私には無理ですが、、、。 |
発言の意図がわかりません。 |
|
トップに戻る |
|
 |
リセット
登録日: 2013.06.17 記事: 10
|
日時: 2013-08-23(Fri) 12:54 記事の件名: |
|
|
リセット wrote: |
発言の意図がわかりません。 |
これだけでは、私の発言自体も意図が分からないですね。
不躾な発言お許しください。
まず関数ポインタを使うという箇所について。
千秋さんがどのような使い方を想定しているのかが、分からないのです。
例えば、Stateパターンを置き換える方法についてだとわかったと思います。メリットに
ついては、そこを抑えないと論議できないと思います。
またソースの可読性については、メンテナンスのコストを含め、当たり前の非機能要件です。
僕はそこにオブジェクト指向としてのメリットを見出していません。
なにを使っても汚いソースは作れるのです。たとえデザインパターンを適用してもです。
可読性の高いソースは、当たり前の話なんです。メリットとは関係ありません。
複雑度と可読性を混同されていますか?
そしてアセンブラの話は、メリットの話から逸脱していてわかりませんでした。
前回オブジェクト指向についてメリットを記述しましたが、ご返答頂いた内容はこちらが
想定していたStateパターンの置き換えになっていなかったため、意図がわからない、と
いう返答に至りました。 |
|
トップに戻る |
|
 |
リセット
登録日: 2013.06.17 記事: 10
|
日時: 2013-08-23(Fri) 21:43 記事の件名: |
|
|
senshu wrote: | リセットさん、こんにちは。
>先日無事に頒布を開始しました。色々なご指導ありがとうございます。
>ISP は確かに楽になりました。
AVRマイコンは、ISPでの書き込みを前提に設計されています。ソケットから
取り外しながら書き込むのは、例外的な使い方だと思います。
>今回のプロジェクトでは状態遷移が色々あり、振る舞いを手続き型で書くと複雑
>度が上がりまくることから State パターンを採用しました。
>
>リソースに制約が多く全てをオブジェクト指向で記述はできないため、適宜採用
>しています。
>
>これにより、一部のソース複雑度の低下と品質向上、開発効率 UP が得られ、マ
>イコンでも利点を感じました。
状態遷移の実現は、C言語の場合は関数へのポインタのテーブルを用意すれば、
シンプルに実現できます。ただし、あまり読み易くないのが欠点です。
どの言語を使っても、(腕次第で)読み易くも、読み難くも書くことができます。
優れたプログラマは、アセンブリ言語でも読み易くて高機能なコードを書けるよう
です。私には無理ですが、、、。 |
もしかしてと思い、千秋さんの作られたWindowsソフトのソースを拝見しました。
C#をお使いな事と、ソースの可読性にこだわられていらっしゃるので期待していました。
しかし実態は、千秋さんの言葉を引用させて頂くと、例外的な記述です。
具体的に、例外的な記述だと考えるに至った経緯について記述します。
•関数の責務が不明瞭である事、それによる複雑度の上昇。ざっくりいうと、色々やり
過ぎててわけがわからない。修正するとバグが発生するレベルで触るな危険。
•無駄なコメントと必要な場所にないコメント。最初の長いリマークの後工程は何?
ソース管理で適切にリビジョン管理をすればよくないか?
関数に責務を記述したコメントが無いのは何故?
•長すぎる関数。再利用が不可能で、何をしたいのか不明瞭。リファクタリングが必要。
•記述の無い関数が残存。意図があるならば何らかのコメントが必要。この関数は、何も
しない事が責務というものもありうる。
•1本のソースが長すぎる。コメント、空行込みで7Kあるソースがあり、全体を俯瞰で
見渡す事は不可能。
•テキストボックスの内容を構築するメソッドが無く、設定されているものを置換して
構築している。これにより責務が分散され、あちこちでReplaceを行っている。
•Checkとプレフィックスに付いている関数は、リターン値がFalse,Trueどちらが期待値
なのか不明確。isやhas,didなどわかりやすくした方が良い。
などなど、色々とツッコミどころがあります。
また、上記に挙げた実装は、全て顕在化している問題で、リスクではありません。
千秋さんがISPについて、しつこくそんな利用は想定外だ!と仰られている事は、他者に
真似をさせないためにしつこくしつこく言わざるを得なかったと解釈しております。
それと同じ視点で、ソースの見直しもご一考下さいませ。 |
|
トップに戻る |
|
 |
リセット
登録日: 2013.06.17 記事: 10
|
日時: 2013-08-24(Sat) 02:57 記事の件名: 補足資料について |
|
|
客観的な資料も添付しておきます。
MainForm.csについて、ソースの評価を機械的に行った結果です。
いわゆる閻魔帳的な存在の図ですね。
では、図をご覧ください。
円の上部から左回りに順次確認しましょう。
-------------------------------------------------------------
・コメント割合 :平均
・平均複雑度 :描画エリア外
・平均階層数 :グリーン外
・最高階層数 :描画エリア外
・最大複雑度 :描画エリア外
・クラス内の平均メソッド数:描画エリア外
・ソース内ドキュメント割合:グリーン内
-------------------------------------------------------------
全ての評価項目がグリーン枠内に入るのが、好ましい という具合に見てください。
また、各指標についてはGoogleで検索してみてください。
この資料と現物確認でソースコードレビューを行った結果、残念な結論に至りました。
千秋さんは、問題に気がついたらすぐに対処される方と認識しています。
それは、ISPに関して私にアラート頂いたコメントを見て確信しております。
ソースコードの見直しを行ってください。
開発者の勝手と思うかもしれませんが、ぜひご検討ください。
また、関数ポインタを使用するメリットが私には良く分かりません。
是非紹介してください。
可読性の高いソース例についても、興味があります。紹介してください。 |
|
トップに戻る |
|
 |
|