Yahoo!ジオシティーズ ゲストブック 戻る  

   2008/1/27 (Sun) 18:34:04
[名前] :   ノンノ
[URL] :   
[コメント] :   Kumanさん こんばんは UBRRの計算の事でこっそり質問があります。
どうすればよいですか?
   2008/1/27 (Sun) 19:27:21
[名前] :   ノンノ
[URL] :   
[コメント] :   UBRRの計算、自己解決しました。
表を見間違えていて、見直したら判りました。
ところで
USB-SPIは14.7456の場合どういう結果になりそうですか?
   2008/1/27 (Sun) 20:12:28
[名前] :   kuman
[URL] :   
[コメント] :   ボーレートで考える限りでは。

115.2k、230.4k、460.8k、921.6k など誤差無しで使えることになりますが、senshuさんがいわれるようにUSBコンバータの性能、ケーブルの影響、PCの条件など他の要因が関係してくるのではないかと思います。

ただ、速くなるとともに安定度も悪くなりそうで、私の古いPCでは115.2kが一番安全なようです。
   2008/1/27 (Sun) 20:33:06
[名前] :   ノンノ
[URL] :   
[コメント] :   特に早いほうと言うよりも
MPUのクロックとして有効かなと思いました。

手持ちのクロックは次です。
3.68640 4.00000 7.37280 8.00000
9.21600 10.00000 11.05920 14.74560
16.00000 20.00000

対応表は次でした。
ボーレート UBBR  誤差%
1200 767 0
115200 7 0
230400 3 0
460800 1 0
921600 0 0
   2008/1/26 (Sat) 23:43:45
[名前] :   kawana
[URL] :   
[コメント] :   junctionコマンドによるWinAVRの切り換え
切り換えたWinAVRは、電源OFFしても次のjunction
コマンドまで、保持されるのでしょうか?
   2008/1/27 (Sun) 02:11:08
[名前] :   kuman
[URL] :   
[コメント] :   NTFSのハードディスクに

書かれるものと思います。
メモリ上ではないので、あらためてjunctionコマンドで別のフォルダに結びつけられるまでは残っています。
   2008/1/26 (Sat) 23:02:14
[名前] :   ノンノ
[URL] :   
[コメント] :   Kumanさん

今日あなたのHPを読んでいて2つの発見をしました。
1つは
タクトSWの計数(除チャタリング) 050807

前にATTiny45をATTiny2313に置き換えようとしたら相当機能が違っていて
成功していないのです。
それは2番ピンをADコンにして使っていたのですが、
タクトSWの計数を使わせて貰えれば解決するかもしれません。
★しかしその内部では Timer0とTimer1 を使っています。
何か良い方法はありますでしょうか?

もう1つは
tiny2313の高速PWM 050815  8ビットpwm・4出力
です。
   2008/1/27 (Sun) 02:35:54
[名前] :   kuman
[URL] :   
[コメント] :   ノンノさんへ

>タクトSWの計数(除チャタリング) 050807
2年半も経てば別人ですね。自分で探すのに苦労しました。(物忘れが上手になった)
@タイマーを使って10ms間隔で読む。(記事の方法)
A100ms程度以下のループがあればその中で読む。10msより短ければウエイトルーチンを入れる。
B割り込み入力端子に接続してエッジで検出する。10ms以内は割り込みを無視する。(まだ使ったことはありません)
などの方法が考えられます。

PWMについてはどのようなことでしょうか。
   2008/1/27 (Sun) 12:31:52
[名前] :   すん
[URL] :   
[コメント] :   確かノンノさんのシステムはA/Dの値を読んでDIPスイッチの代わりにしているのですよね? その変動除去ですか?
   2008/1/27 (Sun) 14:51:03
[名前] :   ノンノ
[URL] :   
[コメント] :   >確かノンノさんのシステムはA/Dの値を読んでDIPスイッチの代わりにしているのですよね? その変動除去ですか?

(最初の企画段階で)致命的な欠点が有り、
次のように変更したら使い物になるかなと思っています。
http://nonnno.hobby-web.net/blog/

プログラムや文章などは
もう1日以上覚えていることは出来なくなって、苦戦してます。
回路などは直ぐ出てくるし、何日でも覚えていられます。
   2008/1/27 (Sun) 14:55:55
[名前] :   ノンノ
[URL] :   
[コメント] :   PWMの続き、
こちらによりますと
>今回は1/8分周にしています。約3.9kHzになります。
これを考察しますと

内蔵RCの関係で4か8MHZ
Internal Calibrated RC Oscillator Operating Modes
CKSEL3..0 0010 - 0011 4.0 MHz
     0100 - 0101 8.0 MHz(1)

Clock Select Bit Description CS12 CS11 CS10
001 clkI/O/1 (No prescaling)
010clkI/O/8 (From prescaler)

コマンドレジスタの関係から8ビット
Table 46. Waveform Generation Mode Bit Description
Mode WGM13 WGM12 WGM11 WGM10 Timer/Counter Mode of Operation
1 0 0 0 1 PWM, Phase Correct, 8-bit
5 0 1 0 1 Fast PWM, 8-bit
   2008/1/27 (Sun) 14:57:07
[名前] :   ノンノ
[URL] :   
[コメント] :   覚えていられない分はtxtで残していました。

Table 40. Waveform Generation Mode Bit Description
Mode WGM2 WGM1 WGM0 Timer/Counter Mode of Operation
1 0 0 1 PWM, Phase Correct
3 0 1 1 Fast PWM

4MHzとFast PWM, 8-bit では 4000/256=15.6KHZ
8MHzとPhase Correct, 8-bit では 8000/256/2=15.6KHZ
となり大体目的繰り返し周波数に成ります。

★この場合は OC1B、OC1A、OC0A、OC0Bの出力を得る場合は
4つの OCR1A、OCR1B、OCR0A、OCROB に
それぞれデータをセットしなければならないのでしょうか?

必要とするのは 2ch分だけのデータで
OCR1A、OCR1B のいずれかは 0
OCR0A、OCROB のいずれかは 0
にセットしなければならず、何か無駄なことをしているようで
簡単な設定や PDDR_OC1x DDR_OC0x の操作で 
コントロールできるのでしょうか?
また、全部の出力を禁止する方法は有りますか?
   2008/1/26 (Sat) 18:43:10
[名前] :   すん
[URL] :   
[コメント] :   私はコマンドプロンプトはほとんど使わないので、エクスプローラーからjunctionフォルダとわかるのは
とてもいいと思います。「リンク作成シェル拡張」を教えてもらい安心できました。

 バージョンの質問

ところで、AVR Studio4はWinAVRのどのバージョンから対応になったかわかりますか。

私のレジストリ方式の切り替えにてAVR Studio4.13で試したところ、WinAVRの2007年のものはエラーなくコンパイルできましたが、2006年以前のものはエラーがでました。
   2008/1/26 (Sat) 19:10:00
[名前] :   senshu
[URL] :   
[コメント] :   AVRstudio のHELPで「Release history」で検索してください。

WinAVRはかなり以前からサポートされていますが、どちらも機能拡張を
繰り返していますので、歩み寄りながら現在に至って
いることが読み取れます。

私が見た範囲では、4.13は、2007年以降をサポートしている
ようです。
デバッグなどを除けば、ソースの互換性は保たれていると思います。
   2008/1/26 (Sat) 20:18:22
[名前] :   すん
[URL] :   
[コメント] :   senshuさん

レスありがとうございます。そうですね、デバイスがらみのデバッグでのからみなのでしょうね。

私のレジストリ方法も、古いWinAVRでもコンパイルできました。どのレジストリを使っているかは、WinAVR付属のドキュメントに書いてあるので、抜けていたレジストリを追加しました。

2007.01.26修正
http://ekousaku.web.fc2.com/memo.html
   2008/1/25 (Fri) 21:59:07
[名前] :   kuman
[URL] :   
[コメント] :   junctionコマンドによるWinAVRの切り換え

試してみたことのメモをまとめました。
WinAVRメモ 08.01.25 2つのバージョンを切り換える
http://www.geocities.jp/kuman2600/m4winavr.html#02
一瞬で切り替わります。ドラッグ&ドロップしてリターン。

自分自身には快適です。(自己責任!)
   2008/1/26 (Sat) 06:40:58
[名前] :   kkk
[URL] :   
[コメント] :   お久しぶりです
私もjunctionでWinAVRの切り替えをもう4年ほど使用しています。
下の方でWinXPでエクスプローラでjunctionフォルダを消すと元のフォルダも消える不具合が指摘されていますが回避方法があります。
リンク先でも紹介されている「リンク作成シェル拡張for Windows 2000/XP」をインストールすることでエクスプローラでjunctionしたフォルダを削除しても元のフォルダまで削除されなくなります。
ただVectorでダウンロードできるバージョンは古いので再配布ページから新しいバージョンをダウンロードしてください。
http://www4.point.ne.jp/~numa/lnhdr/index.html
エクスプローラが拡張されて右クリックのドラッグでリンクが作成されたりアイコンが分かりやすくなったりプロパティでリンク情報が分かるようになります。
当然sysinternalsのjunctionとの共存も可能です
間違ってjunctionフォルダを削除してしまっても大丈夫なので重宝してます。
   2008/1/26 (Sat) 08:10:13
[名前] :   senshu
[URL] :   
[コメント] :   kkkさん、良い情報をありがとうございます。

こうした情報は、それほど一般的ではありませんので、
使い込んでいる人に教えてもらうしかありません。

junctionで4年前から使いこなしているとは、、、知りませんでした。

私は、フォルダ名を変更しながら使っていましたが、あまりにも
力技なので、もっとスマートにしたいと考え、junctionに
たどり着きました。

今後もよろしくお願いいたします。
   2008/1/26 (Sat) 09:02:14
[名前] :   senshu
[URL] :   
[コメント] :   kkkさんにお願いです。

有益な情報なので、私の掲示板にも紹介させていただきました。

事後承諾で申し訳ありません。(不適切な表現があればご指摘ください)
   2008/1/26 (Sat) 10:52:52
[名前] :   kkk
[URL] :   
[コメント] :   senshuさんこんにちは
>事後承諾で申し訳ありません。
全然OKですよ。
今後も私の分については承諾は全く必要ありませんのでお気軽にどうぞ。
この件はsenshuさんの掲示板に書こうか迷ったのですが、すんさんが具合例をこちらで書かれていたのでこちらの掲示板に書かせてもらいました。
   2008/1/26 (Sat) 17:07:54
[名前] :   kuman
[URL] :   
[コメント] :   kkkさん、お久しぶりです。
良いご連絡をありがとうございました。
早速インストールしました。
諸先輩のプログラムも書かれた時期によってWinAVRのバージョンが変わります。WinAVRのバージョンの切り替えができればソースを書き直さずにコンパイルできますからとても便利になります。
   2008/1/24 (Thu) 23:05:07
[名前] :   kuman
[URL] :   
[コメント] :   junction と studio4

プログラムをstudioでビルドします。
studio4を立ち上げたままでjunctionでWINAVRのバージョンを変えてみますと(いけないことかな?)hexファイルのサイズが異なります。

4.2.2では大きく、3.4.6に切り換えたときは小さくなります。

もし、studio4がc:\winavrを参照しているのだったら、中身が変わったことを関知しないでビルドしているのではないでしょうか。

とすれば、コマンドプロンプトで切り換えればstudioのavr-gccを切り換えていることにならないでしょうか。
   2008/1/24 (Thu) 23:35:33
[名前] :   senshu
[URL] :   
[コメント] :   AVRstudioは、WinAVRの内容までは感知していないと思います。

avr-gcc などのコマンド名とオプションが同じなら問題は
起きないと思っています。

私の試した限りでは、何の問題も起きていません。
ただし、インストールディレクトリが異なる場合には
この限りではありません。

junctionで内容をすげ替えるのは、的を射た手法と考え
ています。
   2008/1/24 (Thu) 23:37:47
[名前] :   senshu
[URL] :   
[コメント] :   私がAVRstudio起動中に変更しないで欲しい、と書いたのは
コンパイル中は流石にまずいと考えたからです。

コンパイルしていないときには、この限りではありません。
   2008/1/25 (Fri) 15:19:27
[名前] :   すん
[URL] :   
[コメント] :   studio4は起動時に一度、WinAVRのアンインストール情報からWinAVRのパスを読み込んでいます。なので、コンパイル中に、WinAVRフォルダの内容を変えるのは、まずいのだと思います。

どういう方法にしろ、多くの人が検証して初めて安全・確実だといえるのだと思います。
   2008/1/25 (Fri) 16:00:20
[名前] :   すん
[URL] :   
[コメント] :   エクスプローラーでjunctionフォルダを消すと、元のフォルダも消えるという現象も報告されているので、読んでみてください。

windwosのバグ?

http://blog.so-net.ne.jp/fro/2007-07-04
   2008/1/25 (Fri) 16:20:29
[名前] :   すん
[URL] :   
[コメント] :   ↑書いてあるとおり実験してみました。

OS WindowsXP SP2

junctionフォルダを作ります。

junctionフォルダをエクスプローラーで消すか、ごみ箱に入れます。

ごみ箱を空にします。

元のフォルダの内容が消えるのを確認できました。
   2008/1/25 (Fri) 16:27:02
[名前] :   senshu
[URL] :   
[コメント] :   junction で生成したファイルを消すと、そのリンク先も
消える件は、了解です。この現象は Vistaでは発生しない
との事ですから、本来の意図した振る舞いではないようです。

基本的に、junction -d コマンドで削除するのが本来の
使い方だと思います。うっかり削除することの無いように
R/Oの属性を設定するようにしたいと思います。

貴重な情報をありがとうございました。
   2008/1/25 (Fri) 17:20:10
[名前] :   senshu
[URL] :   
[コメント] :   chwinavrコマンドを修正しました。

junctionコマンドの扱いが不慣れな方を考慮し、chwinavr
コマンドのみで必要な操作を可能にしました。

このコマンドの利用にあたっては、解説をよく読み、
ご利用ください。
   2008/1/25 (Fri) 19:13:15
[名前] :   すん
[URL] :   
[コメント] :   senshuさん、早速のsenshuさんのサイトの追加説明ご苦労様です。

junctionはwindowsXPに対応していないので、最新の注意で扱う必要があります。専用のソフトを使うか、senshuさん開発のバッチファイル?だけで扱う必要があると思います。(vistaは対応しているようです)

コマンドプロンプトでもdelコマンドではなく、rdコマンドで消さなければならないようです。junctionの元フォルダは、万が一操作を誤ったときのために、バックアップした方が安全だと思います。
   2008/1/25 (Fri) 19:42:57
[名前] :   すん
[URL] :   
[コメント] :   junction -d で消す必要があるということですね。

といっても1年後の自分は、そのことを忘れているのでやはり注意が必要です。junctionを示すキーワードをフォルダ名に入れるとかの対策が必要でしょうね。
   2008/1/25 (Fri) 20:29:24
[名前] :   senshu
[URL] :   
[コメント] :   時々利用するコマンドは記憶していると思います。

それよりも、重要な変更が簡単なクリックで使える私は抵抗があります。(感じ方の違いですね)

ともあれ、chwinavrコマンド(初期に比べ機能も強化しました)を
改良しましたので、不安な方は印刷し、内容を理解してからご利用ください。(笑)

私は、自分で書いたので、不安なく利用できます。
気に入らない点は、どんどん改良すれば良いと気楽に
考えています。
   2008/1/23 (Wed) 22:50:24
[名前] :   kuman
[URL] :   
[コメント] :   WinAVR 20060421 と 20071221

ともに動作するようになり、簡単に切り換えられるようになりました。
いくつかのプログラムをコンパイルしてみると新バージョンの方がサイズが大きくなるようです。
代わりに何が良くなったのでしょう。
   2008/1/24 (Thu) 00:28:21
[名前] :   senshu
[URL] :   
[コメント] :   了解しました。

上手く動作するようになったとのこと、おめでとうございます。

実は、異なるコンパイラを使うと、隠れていた問題点が見つかる、
などのメリットがあります。

サイズが大きくなるのは、初期化プログラムの性かもしれません。

そこで提案(お願い)ですが、これまでの経過を要約して
いただけないでしょうか。

私も断片的には書きましたが、kumanさんにこれまでの
事をまとめていただければ、大いに役立つ成果だと思います。
   2008/1/24 (Thu) 00:42:21
[名前] :   kuman
[URL] :   
[コメント] :   自分のためにもまとめておきたいところです。
少し時間をください。
   2008/1/24 (Thu) 01:32:25
[名前] :   すん
[URL] :   
[コメント] :   私もWinAVR-20070525 と WinAVR-20071221 をコンパイルを比べましたが、1221の方が大きくなります。もともと、WinAVR-20071221の方がフォルダーサイズも大きいのでライブラリの内容も増えたのでしょうね。

とりあえず、AVR Studio4.13でのavr-gcc.exeとmake.exeの切り替えレジストリを発見して、regファイルで切り替えられるようにしました。
   2008/1/24 (Thu) 09:11:14
[名前] :   senshu
[URL] :   
[コメント] :   WinAVR-20071221は新しいAVRがサポートされています。

kumanさんへ
その他にも、多くの改良点があるようですが、従来のAVRを
使う限り、大きな違いは感じないかもしれません。

すんさんへ

私は、コマンドプロンプトからの利用が多く、PATH環境変数を
切り替えるのが面倒という理由で registory の修正だけでは
上手く使えません。
でも、大変興味深い方法なので、すんさんのページででも
紹介していただけるとありがたいです。
   2008/1/24 (Thu) 12:53:57
[名前] :   すん
[URL] :   
[コメント] :   senshuさん
AVR Studioのパスの切り替えは、レジストリを操作するので、安全のためもう少し調べてから私のサイトにまとめます。実際はアンインストール情報のレジストリをAVR Studioが参照しています。

kumanさん
WinAVR20070525とWinAVR20071221のリストファイルとマップファイルを出力して調べましたが、コードサイズは、同じ-O2の最適化では20071221の方が少ないtextコードになるようです。しかしlibgccというGCCのライブラリは1221の方が大きく、さらにstabと呼ばれるデバッグ用のコード?も1221の方が大きいです。結果的に1221が大きくなります。
   2008/1/23 (Wed) 21:33:29
[名前] :   kuman
[URL] :   
[コメント] :   すんさんへ。 インラインアセンブラのラベルについて。

ヒントが見つかりました。
libcのユーザーマニュアルを見ていましたら、その例題では
ラベル名は「%=」(もちろん半角です)
で終わっています。

まねをしてラベル名に%=を付けましたら、オプティマイズ -O3 でも -Os でも問題なくコンパイルできました。

覚えていないのですが20070525でもコンパイルできなかったと書きとめていました。
20060426でも%=はついていました。
   2008/1/24 (Thu) 00:09:34
[名前] :   すん
[URL] :   
[コメント] :   私もマニュアルを見てみました。
アセンブラマクロはラベルに%=をつけることになっていました。

最適化レベル-O2だと関数形式でコールされる形になりました。関数は1つなのでラベルが重複しません。-Osだとその場所に、べたに挿入されるので同じラベルができてしまうようです。これを避けるのに%=ラベルにすると、違うラベル名を自動でつけてくれるみたいです。
   2008/1/23 (Wed) 20:38:58
[名前] :   すん
[URL] :   
[コメント] :   AVRStudio4.13でもavr-gcc.exeとmake.exeを指定しなおすことで、WinAVRの切り替えはできるのですが、切り替えがスマートでないです。ボタン1つで、さっと切り替えられるといいですね。
AVR-GCCのプラグインのソースがあれば、GUIの変更くらいならきるかもしれないですね。
   2008/1/23 (Wed) 21:10:50
[名前] :   senshu
[URL] :   
[コメント] :   おっしゃるとおり、WinAVRではなくAVR studio で対応すべきですね。

gcc-plugin が複数のWinAVRに対応できる柔軟性を備え
てればベストですが、現状の使い方でも私は問題ないと
思っています。

ボタン操作で実現するようにも考えましたが、時々しか
使わないものに手間をかけるには値しないと考え、簡単
なスクリスプトで代用しています。
   2008/1/24 (Thu) 10:32:36
[名前] :   senshu
[URL] :   
[コメント] :   私の作成したBATファイルを公開しました。

chwinavr バージョン(フォルダにつけた日付)

で切り替えるようにしました。
該当するものが無い時にはエラーになります。

1クリックではありませんが、数秒?で切り替えられます。
   2008/1/24 (Thu) 14:35:53
[名前] :   senshu
[URL] :   
[コメント] :   AvrPluginavrgccplugin.dllは、ATMEL社謹製でした。

そのためか、ソースコードは公開されていないようです。

自分で同等のものを作ることも不可能ではありませんが、
他の方法を考えるのが得策だと思います。
   2008/1/23 (Wed) 00:37:13
[名前] :   kuman
[URL] :   
[コメント] :   senshuさんへ junctionの記述

タイピングずぼら症でバッチファイルにしてデスクトップに置いています。

junction c:\WINAVR c:\WINAVR07

このように書いています。
   2008/1/23 (Wed) 01:02:17
[名前] :   senshu
[URL] :   
[コメント] :   了解しました。

これでも大丈夫だとは思います。

私は、コマンドを打つのが気にならないので、Ctrl+F
などを使いながら、考えて打つようにしています。

BATファイルをデスクトップに置くのは、一見便利ですが、間違えてクリックしたときの痛手が大きいので、
注意が必要だと思います。

この目的に使うなら、問い合わせダイアログを出すよ
うなBATでないと、デスクトップには常駐できないと
いう気がします。もっと洒落たものを考えて見ましょうか。
   2008/1/23 (Wed) 17:56:26
[名前] :   senshu
[URL] :   
[コメント] :   「junction機能を活用し、複数のWinAVRを共存する方法」

説明を追加しました。これで、WinAVRの版の違いに悩ま
されることは減少すると考えています。(短時間で切り
替え可能ですから)

また、極めて便利なランチャー「Launchy」 の紹介も
追加しましたので、ご覧ください。
   2008/1/24 (Thu) 15:38:32
[名前] :   すん
[URL] :   
[コメント] :   私はコマンドプロンプトでコンパイルすることはないので、junctionを使用することはないですが、他のWindows開発環境がないGCCが複数ある場合にsenshuさんの紹介のツールが役立ちそうです。

ご存知のようにAVR Studioでも手作りのmakeファイルを指定してコンパイルできるので、すべてマウス操作でできます。AVR StudioでのWinAVRの切り替えも現在はワンクリックでできるので、私にはあっているかなと思いました。
   2008/1/24 (Thu) 18:29:36
[名前] :   senshu
[URL] :   
[コメント] :   私の公開している方法で、AVRstudioも正常に動作します。

検証が十分ではありませんが、現在公開している方法で

・コマンドプロンプト上でのmake
・AVRstudioでのBUILD

共に、問題なく動作しています。

何かお気づきの点があれば、ご一報ください。
   2008/1/22 (Tue) 22:21:02
[名前] :   kuman
[URL] :   
[コメント] :   ????

奇々怪々、理解困難に遭遇。

junctionでWINAVRを06と07で切り換えています。
デスクトップでコマンドプロンプトを立ち上げて、07に切り換え、makeするとgcc4.4.2が立つのですが、プログラムがあるフォルダでコマンドプロンプトを立てると、07にjunctionしていても、3.4.2が立ちます。
プログラムのあるフォルダからコマンドプロンプトを立てると4.2.2の実行ができません。
   2008/1/22 (Tue) 23:29:07
[名前] :   senshu
[URL] :   
[コメント] :   PATHの設定を確認してください。

PATH環境変数にはどんな設定が書かれていますか?

PATHの中に、WinAVR\bin 以外の設定が登録されていれば、
それが優先されます。

内容を教えてください。
   2008/1/22 (Tue) 23:32:03
[名前] :   senshu
[URL] :   
[コメント] :   which avr-gcc.exe では何と報告されますか。

意図しない動作をする場合には、どのコマンドが有効に
なっているのかを「あわてずに」調べることです。

大抵は、これを調べることで解決できます。
   2008/1/23 (Wed) 00:17:50
[名前] :   kuman
[URL] :   
[コメント] :   senshuさん、ありがとうございました。

@バッチファイルをフルパスで書いてあるから大丈夫と思いこんでいたのですが、フルパスで書いたのはmakeでした。gccは書いていませんでした。当然ですね。

Aコマンドプロンプトをどこから立ててもパスは同じだと思いこんでいました。

Bjunctionでフォルダを変えてもパスまでは行き届かないはずですね。

デスクトップから立てたときはパスはWINAVRになっていたのですが、プログラムフォルダから立てたときはWINAVR06になっていました。これが原因です。

06をアンインストールして(パスのWINAVR06を消すために)、06を再度WINAVR名でインストールしました。このときに気がついてパスの登録を外しました。
その後WINAVRフォルダをWINAVR06に変更しました。

その結果、どちらで立てたコマンドプロンプトもパスがjunctionのWINAVRとなり、07と06のどちらでもコンパイルできるようになりました。

お騒がせしました。

どうしてフォルダでパスが違うのかまだわかっていません。
   2008/1/23 (Wed) 00:56:34
[名前] :   senshu
[URL] :   
[コメント] :   PATHの動的な変更には注意が必要です。

コマンドプロンプトを多用するなら、PATHは非常に
重要な設定項目であり、動的な変更は混乱の元です。
私は、EVEのようなツールを使い、動的な変更は避け
ています。

そうすれば、どこでコマンドプロンプトを起動しても
混乱することはありません。

BATファイルによる設定も最小限にし、どこで起動し
ても同じ動作になるようにMakefileを書きます。
Makefileにもフルパスの指定も必要な時のみとします。

こうすれば、コンパイラの版が変更されても、問題を
生じることはあまりありません。
   2008/1/22 (Tue) 16:40:22
[名前] :   kawana
[URL] :   
[コメント] :   HighSpeedUART Driverのインスト−ル有無を確認したい
”            ”
どこを見れば、分かりますか?
   2008/1/22 (Tue) 17:17:10
[名前] :   senshu
[URL] :   
[コメント] :   「スタート」メニューで確認してください。

「スタート」「HiSerial Driver」「HiSerial.sys Settings」
で確認できます。

このメニューが無ければ、インストールされていないのだと
思います。
   2008/1/23 (Wed) 00:07:18
[名前] :   senshu
[URL] :   
[コメント] :   kumanさんは、junctionをどこに作られていますか?

junction C:\WinAVR C:\WinAVR-200712 のように
フルパスで設定していらっしゃいますか?

これが、
junction WinAVR C:\WinAVR-200712
のようになっていると、単にカレントディレクトリに
JUNCTIONされるので、意図した動作になりません。

WinAVR用の設定には、C:\WinAVR にjunction する
必要があります。

他の原因も考えられますので、dir c:\WINAVR* と
junction C:\WinAVR の結果を教えてください。
   2008/1/22 (Tue) 14:00:29
[名前] :   kuman
[URL] :   
[コメント] :   help me. WinAVR20071221では使えない。

愛用のwaitルーチン
http://www.geocities.jp/kuman2600/c_memo.html#t25
ですが、20060421では問題なく使えたインラインアセンブラで2ヶ所のラベル
CPU_wait_entry:、CPU_wait_lp:
が already defined エラーで使えません。
どのように変わったのでしょうか。
ご存じの方、教えてください。
   2008/1/22 (Tue) 16:05:31
[名前] :   すん
[URL] :   
[コメント] :   うちのもWinAVR20071221ですが。
そのwaitルーチンは使えます。エラーはでません。

もう一箇所、そのwaitルーチンを書いているソースがあるのでは?
   2008/1/22 (Tue) 16:09:37
[名前] :   すん
[URL] :   
[コメント] :   訂正
インラインアセンブラのラベルは同じソースファイル内では同じラベルを使えないですが、別のソースファイルでは同じラベルを使えました。
   2008/1/22 (Tue) 18:38:25
[名前] :   kuman
[URL] :   
[コメント] :   すんさんへ

それはコマンドプロンプトからのmakeでしょうか。
   2008/1/22 (Tue) 19:19:08
[名前] :   すん
[URL] :   
[コメント] :   AVRStudio4.13 SP1にてコンパイルしました。

AVRStudioが作成したmakeファイルもコマンドプロンプトでmakeを実行しましたが、こちらもエラーなしです。

makeはプロジェクトファイルのあるdefaultフォルダーで実行しました。
   2008/1/22 (Tue) 20:19:48
[名前] :   すん
[URL] :   
[コメント] :   最適化を-O2までにしてみてください。
-O3以上だと、kumanさんの言われるとおりのエラーがでます。

コンパイラのバグでしょうか。
   2008/1/22 (Tue) 21:40:45
[名前] :   kuman
[URL] :   
[コメント] :   すんさん ありがとうございました。

OPT=s がデフォルトで、エラーが起こりましたが、
OPT=2 ではエラーなくコンパイルできました。

sも2もサイズは変わらないようですが。

なお、理解困難なことが起こりましたので上に書きます。
   2008/1/22 (Tue) 09:34:44
[名前] :   senshu
[URL] :   
[コメント] :   複数個のWinAVRを切り替えて使う方法

junction機能を使い、効率よく実現する方法の紹介を
書きましたので、ご覧ください。

http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews
   2008/1/22 (Tue) 13:53:33
[名前] :   kuman
[URL] :   
[コメント] :   使ってみました。便利ですね。
   2008/1/22 (Tue) 15:34:43
[名前] :   すん
[URL] :   
[コメント] :   一見するとコピーされているように見えるので、オリジナルフォルダとJUNCTIONのフォルダ名をどれか覚えておく必要があります。

間違ってオリジナルを消すと、中身を共有しているだけなので、消えてしまいます。
   2008/1/22 (Tue) 17:12:59
[名前] :   senshu
[URL] :   
[コメント] :   オリジナルを消すとファイルは無くなります。

これは、実体を指すポインタを用意するだけですから、
仕方ないですね。

dir で <dir>と<JUNCTION>を区別して使ってください。
   2008/1/22 (Tue) 05:39:10
[名前] :   kawana
[URL] :   
[コメント] :   COM-SPI Bridgeで315Kは、Hard,Softどちらの制約?
COM-SPI Bridgeで315Kは、Hard,Softどちらの制約
から出来ないのでしょうか?
   2008/1/22 (Tue) 07:10:04
[名前] :   senshu
[URL] :   
[コメント] :   312.5kが使えないのは、パソコンハードの制約です。

シリアル通信に必要な通信用クロック生成のハードウェアは、
通信規格で決められた速度クロックしか生成できない設計に
なっています。

ただし、ハードウェアによっては 115.2kbpsを超えるクロック
も生成可能になっています。

しかし、任意の周波数ではないので312.5kbpsは生成できな
いのです。例外として、USB-シリアルの変換ICは、これ以外
の通信レートもサポートしているようです。

私は、115.2kbps の4倍の460.8kbpsを試してみましたが、
この周波数なら使えます。そのときには、ファーム側のAVR
クロックは、7.3728MHzにする必要があり、残念ながら動作が
遅くなるようです。

そこで、9.216MHzと230.4kbps(速度の自走設定)の組み合わ
せを推薦しているのです。
   2008/1/22 (Tue) 07:15:23
[名前] :   senshu
[URL] :   
[コメント] :   補足します。

230.4kbpsのように標準では利用できない速度を使うには、
このレートをサポート可能なハードウェアとドライバが
必要です。

詳細は、私のWebサイトに書いていますので参考にして
ください。
   2008/1/22 (Tue) 05:18:05
[名前] :   kawana
[URL] :   
[コメント] :   UBRR計算表使用させて頂きました。
すっきりした色使い、結果に感激しました。
私の疑問にも、的確に答えてくれました。
大変、有益な資料ありがとうございます。
   2008/1/21 (Mon) 22:32:54
[名前] :   kuman
[URL] :   
[コメント] :   senshuさんへ、この掲示板の文字表示について。

この掲示板に削除用のツールがあるのですが(編集はできません)、そこではsenshuさんの消えた文字が残っています。

下記はそのコピーです。−−−この下の行から
Makefileは、ごく普通の構成ですから、じっくり見てください。

私も1222版を使っていますが、以下の行を修正するだけです。

Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -I.. -Wall -gdwarf-2 -ffunction-sections -DF_CPU=16000000UL -O2 -fsigned-char


このように、CFLAGS の行に、-I.. を追加します。

これで私の環境では、コンパイルは正常に完了します。
DF_CPU の指定やMCUの指定も、希望する環境に合わせてください。
−−−この上の行まで。

原因はわかりませんが、半角の#を2つ続けると以後は削除画面にも現れないようです。1つなら普通に書けるようですが。
#この行は半角#で始まっています。
もしお心当たりがあればご連絡ください。
   2008/1/21 (Mon) 23:40:38
[名前] :   senshu
[URL] :   
[コメント] :   #も特殊文字として、場合によっては扱われるのですね。

了解しました。

以前も経験しましたが、書いた内容の一部分が欠落したので、
不思議に思い、そのことを書きました。

長文になるときには、私のWebサイトに書くようにします。(そのリンクを示したいと思います。)

Makefileについては、AVR studio に含まれるGCC plugin が
生成するのですが、一般にGUIでは、フルパスで色々な情
報を埋め込んでくれるので、汎用性が無いことが多く、
わかり難いのが難点です。

自動的に生成されたMakefileではなく、手で書いたもの
が一番理解し易いです。

AVRstudio以外の統合開発環境でも大同小異ですが、
ぜひ、相対パスで書き込んで欲しいところです。
   2008/1/21 (Mon) 21:40:31
[名前] :   kawana
[URL] :   
[コメント] :   USB-SPI Bridge XTAL 10MHz & COM-SPI 9.22MHz
ChanさんのUSB-SPI BridgeのXTALは、10MHzで出来て
senshuさんのCOM-SPI Bridgeは、9.22MHzで動作の違いが
よく解りません。
10MHzを選択したのは、何故か?
(10MHzでは、BAUD RATE誤差が大きいのに?)
10MHzでも、315K BPSならば、許容範囲内に収まると言う事ですか?
   2008/1/21 (Mon) 22:04:47
[名前] :   kuman
[URL] :   
[コメント] :   10MHzと9.22MHz

>10MHzでも、315K BPSならば、許容範囲内に収まると言う事ですか?
10MHz、315k200bpsでは誤差が0になります。FT232はこのボーレートでも通信できるのでしょう。

他方、COMポートは、通常は115k200bpsが限度で、senshuさん紹介のプログラム(ドライバ?)使用のときPCのデバイスによって×2の230k400bpsが使えますが、これ以上は難しいとともに、以下であっても任意のボーレートは取れないようです。このCOMポートのボーレートの誤差が少なくなるためには3.6864/2MHzの整数倍でないといけないようです。そのために×5の9.216MHzを使っています。

市販のXtalには
3.6864
7.3728
9.216
のものがあります。
   2008/1/21 (Mon) 23:50:52
[名前] :   senshu
[URL] :   
[コメント] :   水晶発振子と通信レートの関係

kumanさんの解説のとおりです。

ChaNさんの選択理由は、クリスタルの入手性とUSB変換ICの速度
(230.4kbps程度では、COMダイレクトを越えるのは困難)を考慮
した結果、312.5kbpsを選択したのだと想像します。

しかし、シリアルポートで230.4kbpsが使えるなら、USB経由の
312.5kbpsとほとんど変わりない性能が得られ、低価格で工作も
容易です。

USB-spiは、ChaNさんのようにノートPC用だと思います。私は、
デスクトップPCで使っているので、WSN173で満足?という状況です。
速度関係では、senshuのWebサイトにも関連の情報を書きましたので、
参考にしてください。
   2008/1/21 (Mon) 20:17:25
[名前] :   kuman
[URL] :   
[コメント] :   make

多くの知識をありがとうございました。
プログラムの内容理解に乏しいので、WinAVRをバージョンアップしてみました。

WinAVR20071221に変更してAVRstudioからビルドできました。
kawanaさんのおっしゃるとおり直接makeではエラーになりますが、一度studioでbuildするとコマンドプロンプトでmakeできました。

難解!

さて、20071221はどうなんでしょう。入れ換えたからにはこれから使うことに....
makefileは大丈夫だろうか?Wikiにも情報が出なくなった。
   2008/1/21 (Mon) 23:58:57
[名前] :   senshu
[URL] :   
[コメント] :   WinAVRを複数、共存する方法

私の掲示板に書こうと思っていましたが、簡単に紹介します。

WinAVRのインストーラは、Windows用のアプリとしては珍しく、レジス
トリをほとんど操作していません。つまり、インストーラの働きは、
単純なファイルコピー+メニュー登録程度なのです。

ですから、WinAVRの旧版をアンインストールするのではなく、単に
C:\WinAVR = C:\WinAVR-2006 のようにフォルダの名前を変更します。
次に、希望する版のWinAVRをC:\WinAVRにインストールします。

元に戻したいときには、C:\WinAVR = C:\WinAVR-2007 と名前を変え、
C:\WinAVR-2006 = C:\WinAVRとします。

これで、元の版に戻せます。2007の版に切り替える時も同様です。

この程度なら、BATファイルにするのも簡単です。

試してみませんか?
   2008/1/20 (Sun) 20:23:47
[名前] :   kawana
[URL] :   
[コメント] :   古いAVR Programmerを改修していたら
 
AVRminiProgrammer Dragon 2台
AVRminiProgrammer mk2   1台の3台に成っていた。
   2008/1/20 (Sun) 20:09:47
[名前] :   kawana
[URL] :   
[コメント] :   AVRminiProg Beta (2007-12-22)をmakeしました。

メ−ルで問い合わせしたら、下記返事がきました。
The same source as published. For different AVR, modify Makefile.
If use AVRStudio, choose ATmega88 in AVRStudio and set AVR_PROG_JTAG_EN to 0 in app_cfg.h
   2008/1/20 (Sun) 23:04:05
[名前] :   kuman
[URL] :   
[コメント] :   12-22版は、エラーでコンパイルできませんでした。
どこが悪いんでしょう。
   2008/1/21 (Mon) 09:31:42
[名前] :   senshu
[URL] :   
[コメント] :   Makefileの修正方法

AVRminiProgは、複数のMCU,複数のXtalなどに柔軟に対
応可能な構成です。当然ですが、その都度、ファームを作成する必要が
あります。

Makefileは、ごく普通の構成ですから、じっくり見てください。

私も1222版を使っていますが、以下の行を修正するだけです。

   2008/1/21 (Mon) 09:36:48
[名前] :   senshu
[URL] :   
[コメント] :   記述が漏れました(何故でしょうか)

MakefileのCFLAGS に -I.. を追加します。
>CFLAGS = $(COMMON)
>CFLAGS += -I.. -Wall ...

これでコンパイルが可能です。F_CPUやMCUも希望するハードに合わせ、
../app_cfg.h もADC_VREF_BANDGAPを有効にし、ISPのみを選択します。
現時点では、AVRISP-mkII互換が無難です。
   2008/1/21 (Mon) 10:40:01
[名前] :   kawana
[URL] :   
[コメント] :   ATmega88でCompileの追試
どうしてCompile出来たのか分からないので、追試してみた
1.compile出来たPCで、C:\AVRminiP882 Directoryを新  たに作成
2.AVRminiProgramをAVRminiP882へCopy
3.テントウ虫で、Load後Build(Buildは成功する)
  (この段階で、OKのCompile情報がmakefileに
   Writeされる?makefileのAVRは、ATmega168に)
4.makefileのAVRをATmega88に変更し上書きする。
5.DEFAULT Directoryでmake実行
こんな事していたら出来た。
________________________
makefileのAVRをATmega88に変更して、直ぐにmakeでは
Errorに成った気がする。
   2008/1/21 (Mon) 12:00:19
[名前] :   すん
[URL] :   
[コメント] :   動作したmakefileです。私はmakeファイルを直接書き換えていません。すべて、AVTStudioでおこないました。

kawanaさんのいわれるとおり、最初はAVRStudioでコンパイルする必要があるかもしれません。パスの設定、もろもろを上書きするためです。

http://ekousaku.web.fc2.com/memo.html
   2008/1/20 (Sun) 09:56:28
[名前] :   kawana
[URL] :   
[コメント] :   AVRminiProgをATmega88で再Compile したいのですが

AVRminiProgをATmega88で再Compile したいのですが
一番簡単な方法はどのようにするのですか?
   2008/1/20 (Sun) 16:20:53
[名前] :   kuman
[URL] :   
[コメント] :   mega8用にコンパイルしましたが。

mega8でISP機能を使うだけの目的で(ブートローダは使わない)コンパイルの方法をsenshuさんにお聞きしたところ、Webページに書いたとおり、次のように教えていただきました。

@カレントを\AVRminiProg\defaultに移して、コマンドプロンプトを立てる。
Amakeファイルのmcuを168から88に変える。
B必要ならクロックを変更する。
Cmakeを実行する。

今日、実行しましたら時々エラーを起こしますが原因はわかりません。
しかし、繰り返す内にコンパイルできています。
   2008/1/20 (Sun) 17:25:51
[名前] :   kawana
[URL] :   
[コメント] :   kumanさんお返事有難うございます。
実行すると、下記Errorが出ます。
usbconfig.h No such file or directory
若干file変更の必要有りの気がしますが?
発一で動くなんて期待するのがいけないのでしょう。
   2008/1/20 (Sun) 17:36:27
[名前] :   kuman
[URL] :   
[コメント] :   調べてみました。

最初は2007-11-24
次は 2007-12-04
現在は2007-12-22
のバージョンになっています。今のものはおっしゃるとおりエラーがでます。usbconfig-prototype.hをリネームしても別のエラーが出ました。

それより以前に、
12-04版ではコンパイルできるのですが、サイズが大きくて8kBに納まりません。

8kBに収めるには初期の11-24版でないとダメなようです。

お持ちでなかったらご連絡ください。
   2008/1/20 (Sun) 17:40:01
[名前] :   kawana
[URL] :   
[コメント] :   何回か、実行していたらできました。ご指導有難うございます。
consoleが役立ちました。
   2008/1/20 (Sun) 17:46:59
[名前] :   kawana
[URL] :   
[コメント] :   WinAVR 20071221で5698bytes 69.6%でhex出来ました。
   2008/1/20 (Sun) 17:51:25
[名前] :   kuman
[URL] :   
[コメント] :   どのバージョンでできましたか。

最新版でしょうか。エラーはどのように処理されましたか。
サイズは納まりましたか。

アドバイス1行を書くにも、かなりの時間を費やして確認してから書いています。
どの条件で、どのように変更したらうまくいけたのかそれをご報告いただきたいと思います。
単に聞かれたから答えたとは思わないでください。
   2008/1/20 (Sun) 19:16:17
[名前] :   kawana
[URL] :   
[コメント] :   kumanさんお手数有難うございます。
WinAVR のVerは、2007-12-21です。
特にsourceを変更したわけはないのですが、defaultの
makefileを確認したら、ATmega168になつていたので
ATmega88に変更しました。
何回かmakeしているうちに、hex出来ました。
これと言った理由は、分かりません。
一つ不思議と思っている事があります。
DRAGONのファイルをATmega88でmakeしたのですが、
mkUとして、認識されています。
   2008/1/20 (Sun) 19:21:23
[名前] :   kuman
[URL] :   
[コメント] :   kawanaさん、すみません。

AVRminiProgはいつのバージョンを使われたのでしょうか。

12-22版でしょうか。
   2008/1/20 (Sun) 19:31:56
[名前] :   すん
[URL] :   
[コメント] :   違うものをコンパイルしていたらごめんなさい。

AVRminiProg beta(2007.11.8)というものはコンパイルできました。

WinAVR-20070525
AVRStudio4.13 SP1 build557

Mega88

Build結果
Program 5562bytes
Data 421bytes

Mega8

Build結果
Program 5502bytes
Data 421bytes

かなり苦労されているので、私と違うものをコンパイルしてるのかもしれません。一度もエラーでないです。たぶん違うのですね。
   2008/1/21 (Mon) 00:28:59
[名前] :   すん
[URL] :   
[コメント] :   最適化レベルは-O2でないとサイズによるエラーがでるようです。
   2008/1/21 (Mon) 09:41:43
[名前] :   senshu
[URL] :   
[コメント] :   最近のWinAVRでは不明ですが、20060421版では、-Os でもOKです。

この版は安定していて気に入っているのですが、新しい
AVRマイコンをサポートしていない点が欠点といえます。

そこで、自分で新AVRマイコンのサポートを追加している方も
いるようです。
   2008/1/19 (Sat) 22:22:34
[名前] :   kawana
[URL] :   
[コメント] :   Studio4から、Cプログラムをコンパイルするには
WinAVRを入れ替えていたら、Studio4からBuildできなくなりました。Studio4にWinAVRを関連付けるには、どうするのですか?
   2008/1/20 (Sun) 09:06:08
[名前] :   kawana
[URL] :   
[コメント] :   WinAVR-20071221 Install時、DirectlyをWinAVRと指定
__________________________________________________
WinAVR-20071221 Install時、DirectlyをWinAVRと指定
したら出来ました。
  
▲このページのトップ 戻る  

Yahoo!ジオシティーズ


inserted by FC2 system 1