トップ 新規 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

雑談3

雑談場所3

雑談をする場所も必要でしょー(それがメインになるのも考えすぎだが)
新規の話題を書き込めなくしました。
古い話題は雑談雑談1雑談2でお願いします。

 ここでいいや。 - 通りすがり (2007年02月12日 00時38分01秒)

uint8_t DispMenu(void)
{
//4択-4択(計16選択肢)のメニューサンプルプログラム
	const uint8_t U_MENU[4][8] PROGMEM = {
//上位メニュー。1つのメニュー名は半角8字以内とする
		"setting",
		"record",
		"play",
		"poweroff",
	};
	const uint8_t D_MENU[16][8] PROGMEM = { 
//下位メニュー。1つのメニュー名は半角8字以内とする。
		"menu1","menu2","menu3","menu4", //settingメニュー内
		"menu5","menu6","menu7","menu8", //recordメニュー内
		"menu1","menu2","menu3","menu4", //playメニュー内
		"menu5","menu6","menu7","menu8" //poweroffメニュー内
	};
	char i = 0;
//上位メニュー選択中
	for(;;){
		lcd_print(U_MENU[i >> 2]); /*	文字列を表示する関数 */
		if(down_button){
			if(i != 12) i += 4;
		}if(up_button){
			if(i != 0) i -= 4;
		}if(enter_button){
			break;
		}
	}
//下位メニュー選択中
	for(;;){
		lcd_print(D_MENU[i]);
		if(down_button){
			if((i & 0x03) != 3) i++;
		}if(up_button){
			if((i & 0x03) != 0) i--;
		}if(enter_button){
			break;
		}
	}
	return i;
}
  • 通りすがり さん早速ご丁寧にありがとうございます。大変勉強になります。メニューを表示して選択結果をリターンで受け取り、処理を分ければ良いのですね。当方思いもよりませんでした、勉強不足です。ありがとうございました。 - やま (2007年02月14日 00時22分38秒)

 LCDを使ったMENU表示について - やま (2007年02月11日 22時14分00秒)

こんにちは。マイコン初心者です只今C言語&AVRの勉強中です。そこで相談なのですがC言語でLCDを使用したメニューの構築方法で良い実装法はないでしょうか?avrfreaks.net でTinyMENUという物を見つけたのですがRAM使用量が大きく使う気になれません。SWITCH文で作るのが無難なんでしょうか?皆さんならどうします?

  • 仕様によりますね。使用デバイスと、メニューの内容によるということです。 - 通りすがり (2007年02月11日 23時10分16秒)
  • ありがとうございます。mega48を使います。メニューは4択で2〜3階層位です。プリンタに付いているモード設定やステータス確認みたいな物を想像してください。 - やま (2007年02月11日 23時49分04秒)
  • 2階層なら最下位層のメニューに4bitのアドレスを振って、上位2bitを上位層メニューのアドレスとみなす。上位メニューの選択中に下ボタンが押されたら+4、上ボタンが押されたら-4して、決定ボタンが押されたら下位メニューを表示。下位メニューではインクリメント/デクリメントして…って感じですかね。文章で説明してもわかりにくいですが。 - 通りすがり (2007年02月11日 23時58分03秒)
  • 通りすがり さんありがとうございます!なるほど!わかります、その方法ならエントリーも十分取れますね。早速試してみます。 - やま (2007年02月12日 00時11分37秒)
  • 簡単なサンプルコードを書いてみたんですが(書いてみたかったんで)どうやって晒すんでしょうかね - 通りすがり (2007年02月12日 00時35分45秒)
  • Hi! - glory (2007年08月26日 14時12分58秒)
  • wow nice!! - ahmed (2007年08月28日 03時51分45秒)
  • Very good site! I like it! Thanks!t - samuil (2007年08月29日 11時43分15秒)

 無題 - M16做的简易示波器 (2007年02月11日 17時57分36秒)

http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=702504&bbs_page_no=1&bbs_id=1000armok01139537.rar

  • simple but quality, thanks!/ - Hillari (2007年08月28日 23時31分42秒)

 mega8からmega48へ - dacha (2007年02月11日 16時04分50秒)

改行が消えてしまったのでもう一度投稿します(すみません)
AVRUSBを弄っています。HIDKeysをmega8に対応させようと、
TCCR0 → TCCR0B
TIFR → TIFR0
と書き換えて書き込みましたが、「不明なデバイス」になってしまいます。
usbdrvを06/3/14版、06/3/26版、06/7/18版にしてトライしても結果は同じです。アドバイスお願いします。
  • mega8はmega48の間違いです。すみません - dacha (2007年02月11日 18時53分31秒)
  • 自己解決しました。#define USB_CFG_SAMPLE_EXACTの値を変えてみたら動きました。 - dacha (2007年02月12日 03時46分20秒)

 だんだん遅くなる…? - ひろあきん (2007年02月07日 07時00分07秒)

こんにちは。お知恵を拝借したく存じます。

動作速度が次第に遅くなる(というか待ち時間が伸びる)現象に悩み、書き込みをさせていただきます。

内部発振のATTiny2313ー20PUでタイマーもどきを作りました。機能としては一定の間隔で順次ポートを開き、マトリックス配列になっているトランジスタ8個を駆動させる単純な回路です。

実際に順次トランジスタが駆動し、後につながるソレノイドが動くことを確認しました。

しかし、連続通電させていると、次第に待ち時間が長くなり、トランジスタ駆動の間隔が伸びてしまっています。プログラム(BASCOM-BASIC)上では1秒に1回、100msだけ通電を8回繰り返し7秒間待つ、ということをしているのですが、実際には待ち時間が15秒ほど、通電のタイミングも数秒に1回、といった形になってしまいます。

使用していないポートは2kオームの抵抗でGNDに落としてあります。原因がつかめず、困っております。何かチェックする点や気をつけねばならない点などがあるのでしょうか?

よろしくお願いします。

  • BASCOMのソースは短いと思いますので、ここにソースを開示してみてはいかがでしょうか。 - senshu (2007年02月07日 20時33分56秒)
  • 自己完結しました.プログラムに書いた周波数と、ヒューズビットでのクロック分周があっていませんでした。暴走状態に入っていたようです。 - ひろあきん (2007年02月09日 08時33分52秒)

 Atmelのホームページ - kkk (2007年02月07日 04時14分12秒)

いつのまにか「日本語」が選択できるようになっている。文字化けするページもあるけど。http://www.atmel.com/jp/default.asp

 AVR-gccのAssemblerを使用したいのですが - K (2007年02月06日 21時27分37秒)

インスト−ルの方法、アセンブルの方法、アセンブルのバッチファイルなど、教えて下さい。

 INTn割り込みのレスポンス - ぱど (2007年02月03日 03時40分34秒)

はじめましてぱどともうします。

AVRについて勉強中の身なのですがINTnのレベル割り込みのレスポンス時間について資料を見ても良くわからない点があり詳しい方にお尋ねしたく。

知りたいことは、INTnのLowレベルで割込みを行いベクタ位置に埋め込んだIN命令でINTnのPORTを読み込む場合最低何CLK分のLowパルス幅まで外付け無しで検出できるのかということです。

HERO'SさんのサイトのAVRsup.pdfの記述ではINTnのLowレベル割込みは速いように読めるのですが何CLK前のRISE,FALLいずれでLowレベルになっていればよいのでしょうか?

 HEXファイルのサイズ - Writer (2007年02月01日 18時44分17秒)

いつもお世話になります、やりたいことがあります。

AVR Studio4を使用してHEXファイルを作成し、そのHEXファイルのサイズをマイコンのフラッシュ領域に書き込む

っというちょっと特殊なことをしたいのですが現在、調査中ですがわかる方いらっしゃいましたらご教授下さい。

?まずHEXファイルのサイズを出力するリンカオプションがわかりません。?サイズをGETしたら、それをフラッシュの固定アドレスに書く為の記述方法がわかりません。(フラッシュの固定アドレスに配置する方法はわかりますが、ビルド後のサイズGET後にフィードバックさせ、もう一度ビルドする方法)言葉足らずで申し訳ありませんが宜しくお願い致します。

  • HEXファイルを加工するプログラムを自作するのはどうでしょう(avrspxのソースやデュアル書き込みRS-CR式にあるHEX2RSCR.Cを参考にして)。HEXをバイナリに変換して最終番地データを追加する様なプログラムを作成。プログラムの自作は大変ですが、バイナリ・HEX変換のソフトはインターネット上にあるので利用できるかもしれません。 - TAD (2007年02月01日 23時51分17秒)

 AVRSPでの発振校正値の読み込みについて - furuta (2007年01月24日 17時17分40秒)

AVRSPを使って発振校正値を読み込みたいのですが、AVRSPで読み込めるのか。できるのなら、どうすれば読み込めるのか全くわかりません。どなたか知っている方お教えください。

  • -rf で表示されませんか? - kkk (2007年01月24日 18時21分48秒)
  • ヒューズを読むときに一緒に読むことができるわけですね。解決しました。ありがとうございます。 - furuta (2007年01月24日 18時26分11秒)

 mega8とtiny2313の書込みについて - としお (2007年01月20日 06時47分29秒)

ちかごろ Sシリーズから megaシリーズにデバイスを変えて
mega8やTiny2313に書込みを試みていますが 一向に書けません。
 どちらさんか アドバイスをください。お願いします。
  E-mail: nanohana_007@mail.goo.ne.jp

  • どんなライタを使っているのかも書かないと、アドバイスは不可能だと思います。 - senshu (2007年01月20日 10時37分15秒)

 FLASH上にアドレス指定して定数を定義するには - Writer (2007年01月19日 20時26分27秒)

いつもお世話になります。件名の通り、FLASH上にアドレス指定して定数を定義するにはどう記述すればよいのでしょうか?ご教授願います。

  • 自己レスです - Writer (2007年01月22日 13時25分50秒)
  • あれっ?!編集ができなくなったみたいですね。。。自己レスです。Flashの固定アドレスに定数や変数を指定する方法ですがソース上には、例えばunsigned char ver_tbl attribute((section(".test"))) = 0x1234;っと定義し、あとはStudio4上のConfigurationファイルのMemorySettingの中でFlash .test 0xXXXX(←配置させたい固定アドレスをワードアドレスで指定)すればできました。 - Writer (2007年01月22日 13時29分28秒)

 ATmega88デバッグ方法、コンバ−トミス - 名無しさん (2007年01月13日 22時38分15秒)

分かりかけてきました。AT90S2313-->ATMEGA88の変更にともない、SCK,MOSI,MISO,RESをPB7,PB6,PB5,PB4-->PB5,PB4,PB3,PB2に変更しただけではだめで、WRPORT,RDPORTで、Bit POSITION変換が必要な事、完全には理解していないが、(TAD氏から戴いたソ−スを眺めて見て)

 ATmega88デバッグ方法 - kawana (2007年01月13日 17時10分50秒)

ChanさんのSPI-BridgeをATmega88で作成しようとして、ATmaega88にコンバ−トして、Debuggしていますが、なかなか上手くいきません、効率てきなDebugg方法はないのでしょうか?アイデアなど教えて下さい。TADさんよりトリプルライタ−のソ−ス戴き検討をしているのですが割り込みテ−ブルの変更、プログラムの、命令(OPC)、レジスタの変更をして一応、Assembleは出来ています。SCK,MOSI,MISO,RESにLEDを付けモニタしています。これが動作していない、Debuggerで1step実行など、できるのですか?

 Hexファイルのチェックサム - Writer (2007年01月09日 16時13分40秒)

Hexファイルの各行にチェックサムが入っていますが

他マイコンのようにFlashにWrite後にトータルチェックサムみたいな機能はATMEGAにはないのでしょうか?宜しくご教授お願いします。

  • 通常はライター側で書いたデータを読み直してベリファイしています。このときHEXのチェックサムはパソコン内で使われているだけでマイコンには送ってないので、デュアルライターのchsum_flashサブルーチンのように自分で作るしかないと思います。 - TAD (2007年01月09日 23時08分34秒)
  • 御回答ありがとうございます。いろんなマニュアルを見ましたがやっぱりそういう機能はないんですね...有難うございました。 - Writer (2007年01月10日 17時06分54秒)
  • トータルチェックサム機能のあるマイコンを私は知らないのですが、マイコン自身が計算しているのではなく、パソコンの書き込みソフトがチェックサムを表示しているのではないでしょうか。 - TAD (2007年01月10日 22時36分20秒)
  • ご指摘の通り、マイコンの機能ではなくFlashライターの機能になりますね。 - Writer (2007年01月19日 20時27分54秒)

 割り込み禁止状態で使うかもしれない関数での割り込み禁止 - samsara (2007年01月04日 17時47分35秒)

Getting Started Notes』の『割り込み禁止状態で使うかもしれない関数での割り込み禁止』に書かれている事で質問があります。

SREG = save_sreg; によって、SREGの全割込み許可(I)ビットを元に戻すのは理解できましたが、他のビットを上書きしてしまっても良いものなのでしょうか?

C言語でプログラムを書いている為に、SREGの他のビットがどのように使用されているかわからない為に、質問させていただきました。

  • あとは全部演算結果のフラグですから、C言語の場合変更しても問題ないと思います。 - UKEI (2007年01月08日 03時21分04秒)
  • 回答ありがとうございます。 - samsara (2007年01月15日 09時58分44秒)

 AVRが吐き出すインテルHexファイルのCheckSum計算方法 - Writer (2006年12月25日 20時49分28秒)

連続書込み失礼致します。

件名の通り、AVRが吐き出すインテルHexファイルのCheckSumの計算方法を調べたのですが・・計算とあわない行があります。

計算式:?各行のバイトカウント〜チェックサムの前までのデータを加算?上記、和が例えば123hだとしたら200h(下位1バイトの値が00h)になるような値を算出?その値が各行のチェックサムとなる。

上記計算式である行はAVRが吐き出すチェックサムと同じ、しかしある行はAVRが吐き出すチェックサムと違います。

行によって計算式が違うのでしょうか?宜しくお願い致します。

  • チェックサムの計算はどの行でも同じはずです???。計算が合わない行をここへ貼り付けてみてください。(「AVRが吐き出す」とはWinAVR/avr-gccのことですよね?) - kkk (2006年12月26日 07時13分41秒)
  • いつもありがとうございます。

下記の行のチェックサム値が上記計算式と違う値となっています。宜しくご教授下さい。

:100000000C942A000C9445000C9445000C94450077
:100010000C9445000C9467050C9445000C94450025
:100020000C9445000C9445000C9445000C94460A31 ←この行
:100030000C9445000C94C0000C9445000C944500B1
:100040000C9445000C9445000C9445000C9445001C
:100050000C94450011241FBECFE5D8E0DEBFCDBF14 ←この行
:1000600011E0A0E6B0E0ECE7F8E302C005900D92E5 ←この行
:10007000AA33B107D9F713E0AAE3B1E001C01D929A ←この行

- Writer (2006年12月26日 09時20分15秒)

  • 計算してみました。あっているように思えますが・・・
  例えば3行目
10+00+20+00+0C+94+45+00+0C+94+45+00+0C+94+45+00+0C+94+46+0A+31=0400

- kkk (2006年12月26日 22時58分27秒)

  • !? 確かに計算するとあってました。実は2つのHexファイルを1つにするHexファイルに結合するソフトを作成してもらって、AVRの出力Hexファイルと値が違う結果で計算式があっていたのでこちらにあげさせてもらいましたが・・・・ご足労お掛けし大変申し訳ありません。再度見直してみます。 - Writer (2006年12月28日 14時03分54秒)

 電源断による不具合 - Writer (2006年12月25日 20時39分17秒)

ATMEGA32を使用しているのですが下記現象がでてるのですが、こういった事象があったかご存知の方いましたら教えて下さい。

現象:boot_page_erase_safe()を使用するプログラムを作成したのですがプログラム動作中の電源断時に、boot_page_erase_safe()を実行してしまってFlash先頭ページを消去してしまってるようです。尚、boot_page_erase_safe()のコールする所には入っていませんので、直接アドレスを叩いてる感じです。ご教授下さい。

  • 同様の事はFlashだけではなくEepromでも起こります。それらは電源断の時にCPUが暴走してFlashやEepromの書込みルーチンや消去ルーチンを実行することにより起きるようです。5V又は3Vの電源を使用している場合はヒューズのBODを有効にすることで避ける事が出来ます。もしBODの設定をしていないのであれば試してみてください。 - kkk (2006年12月26日 07時08分14秒)
  • 御回答有難うございます。BODは設定しておりましたが違う設定値でもためしてみましたがだめでした。マイコン仕様書を読み返しましたが”電源電圧が不安定な時にはRESETをLoにたもたなければいけない”っとありましたがNMIがないと防げない???ような感じもしますがどうなんでしょうか? - Writer (2006年12月26日 10時15分48秒)
  • BODでもだめならNMIがあっても全く役に立ちません。ちなみにBOD-4Vで外部クリスタルの時はヒューズの下位バイトは0x1Fとなると思います(セラミック振動子の時は0x2E)。BOD-4Vを有効にした状態でCPUが不安定になる事は考えにくいですので他に原因があるのかも知れませんね。 - kkk (2006年12月26日 23時20分27秒)
  • いつも有難うございます。なんともまぬけな話しですが、BOD LEVELの設定はしてあったのですがENABLEに設定しておりませんでした。ENABLEにすることによって現象はみられなくなりました。本当にいつも有難うございます。 - Writer (2006年12月28日 13時59分47秒)

 エラーが多くて読めません - kuman (2006年12月16日 17時29分07秒)

サーバが変わってからでしょうか、何度もアクセスしないとTOPページが開けません。リンクをたどるとまたエラーで参っています。どうしたのでしょう。

  • 本当に困りましたね。。。 このまま改善されないようならどこへ引越し検討でしょうか。。 - あしざー (2006年12月16日 19時05分49秒)
  • 私も10回に1回くらいしかTOPページが表示されません。この不具合は何とかならないでしょうか。 - senshu (2006年12月18日 22時10分17秒)
  • サーバの問題でCGIではどうしようもないので、引っ越しできる先がありましたらAttleeまで連絡ください。ソース全部お渡しいたします。 - Attlee (2006年12月19日 09時00分21秒)
  • もしよろしけば私のサーバーを使ってもらえますか?http://himitsu.jpn.ph/avrwiki/wiki.cgi - ゆーけい (2006年12月23日 13時41分49秒)
  • http://www7a.biglobe.ne.jp/~attlee/avr/data.lzh - Attlee (2006年12月26日 01時55分21秒)
  • ↑にdataフォルダとattachフォルダを纏めておいておきました。FSWikiみたいだからこれでOK? - Attlee (2006年12月26日 01時56分13秒)
  • 入れてみたのですが、表示されないタグがあります。何かプラグインを使ってらっしゃいますか? - ゆーけい (2006年12月26日 18時11分51秒)
  • それから管理については、私が引き継ぐという形でよろしいでしょうか? - ゆーけい (2006年12月26日 18時15分34秒)
  • brで整形したい人がいたのでtag2プラグインを導入しました。で、管理については引き継ぎでお願いします。 - attlee (2006年12月26日 19時29分48秒)
  • 多分これで移行完了できたと思います。 - ゆーけい (2006年12月27日 18時37分59秒)
  • ゆーけいさん、ありがとうございます!好調に閲覧できるようになりました。新サイトへ引越しした旨を旧サイトに記述(リンク)しておけば完璧ですね。 - あしざー (2006年12月28日 01時56分50秒)
  • ようやく、本来の状態に戻りましたね!どうもありがとうございます。 - senshu (2006年12月28日 08時05分23秒)
  • この場所は適当でないかもしれませんが、Menuへ行けるように左上の「メニュー」に「Menu」を追加してください。 - kumn (2006年12月28日 10時54分19秒)
  • 挨拶が遅れてしまいましたが ゆーけいさん,今後ともよろしくお願いします。attleeさん,お疲れさまです、お世話になりました。 - TAD (2006年12月28日 21時24分29秒)

 外部メモリの使用 - samsara (2006年12月13日 14時01分42秒)

お世話になります。ATmega128/AVRStudio4/WinAVRを利用しております。現在使用しているマイコンボードに外部SRAMが接続されているます。外部SRAMに変数を配置する場合には、どのように設定を行うのでしょうか?AVRStudioのConfigrationOptionで、MemorySettingsでSegmentを設定はしましたが、どうもMAPファイルを見てもSegmentに追加されていないように見えます。変数Aは外部、変数Bは内部というように細かく設定できるのでしょうか?宜しくお願い致します。

各変数を細かく指定することは出来ませんが、全ての変数を外部RAMへ移動するには、リンカオプションで、『-Wl,-Tdata,0x801100』を設定する事で解決しました。

 ゆっくりしたVCC電圧立ち上がりによる障害 - グーグー (2006年11月24日 20時40分07秒)

再度お世話になります。ATmega162-16MHzを使用した基板を設計したのですが、5VのVCC電源をゆっくり立ち上げるとCPUがハングアップしたかのような状態になることを発見しました。(たまたまVCC電源に実験用電圧可変型安定化電源を使用していて発見しました)。このままRESETピンをLOWにしても、RESETされません。ちなみにRESET ICを使用して4.5V以上にならないとリセット解除できない回路を組んでいるので、RESETが原因の不調ではないと思います。クロックは12.8MHz水晶です。FUSEビットもデータシートの指定通りに書き換えました。5V電源の立ち上がりが速いと、この症状は発生しません。5V電源の立ち上がり時間でCPUが動作したり、しなかったりなんてことはデータシートも書いてありませんし、ATMELのWebサイトのAppNoteを見てもそのような記事はありません。どなたかわかる方教えてください。※過去にAT90S8515を使った基板を設計していたことがありますが、こんなトラブルはありませんでした。megaシリーズ特有のものなのでしょうか。

  • 自己レスです。AVRのAppNote:AVR190-POWER UP CONSIDERATIONS に AT90S8515,AT90S1200は100msec以内にVCCを立ち上げないとCPUが動作しない、一旦この状態になったら外部からのRESET信号でも解除できない、CPUのVCC電圧を一度0Vにする以外解除する方法はない、云々という注意書きがあるのを見つけました。今回のこの症状はこれと非常に似ています。試しに2.2Vまでは直ぐに立ち上げて、その後ゆっくりと5Vまで電圧を上げるような実験をしたらちゃんとCPUが立ち上がりました。ATmega162もこの注意が当てはまるのでしょうか?同じような問題を経験された方よろしくお願いします。(ちなみにこの問題は共立エレショップのWebサイトでもレポートされていました)
  • 結局自己レスです。ATMELのテクニカルサポートとえんえん1ヶ月やり取りしてました。結果をお知らせします。同様の問題で悩んでいる方は参考にして下さい。なおATMELに電源電圧の立上り時間に対する注意書きを今後データシートに掲載して欲しい、ということを要請しておきました。From Atmel Techical Support:この問題は全てのAVR CPUで発生するわけではない(発生するものとそうでないものがある)が、問題が発生した場合は電源電圧の立上り時間を 0.3V/msecより早く立ち上がるようにして使いなさい

 ウォームリブートとクールリブートの違い - Writer (2006年11月24日 15時02分12秒)

電源断によるリセットと、ソフトウェアリセットによる違いはあるのでしょうか?

(ATMEGA32にて)ブートローダにてアプリケーションプログラム書換え後、ブートローダからアプリケーション領域にジャンプさせアプリケーションプログラムを起動させたのですが・・動作が不安定になります(特に通信がうまくできない模様)

ブートローダーからのジャンプは

cli();

全割込み禁止処理;

GICR = 0x01;	// Enable interrupt vector select

GICR = 0x00;	// Move interrupt vector to flash

asm	volatile("push r1" "\n\t" 
	         "push r1" "\n\t" 
        "ret"     "\n\t"::);

にてさせております。上記処理で抜けがあるのかアプリケーションのスタートアップ処理に何か抜けがあるのか?御教授下さい(書き換えるアプリケーションプログラムは、書換え前のアプリケーションプログラムと全く同じものを試しにつかっており書換え前のアプリケーションプログラムは動作上、全く問題ありません)

 USBasp書き込み時のエラーについて - 石原 (2006年11月23日 14時58分09秒)

石原です。はじめまして
USBaspを作成してみましたが不思議なエラーで困っています。
・USBの認識は出来ています。読み込みも問題ないようです。
 (avrdude -p 2313 -c uspasp -v で確認)
 ・AT90S2313の書き込みで以下のエラーメッセージが出ます。
 (ホスト機はノートブックです。
 ターゲットのクロックは10MHzの水晶です。
 書き込みは高速でも低速でも同じエラーです。
 エラー後は書き込みのLEDが点灯したままになります)
・dumpしてみると、アドレス0xc7までは書けているようです。(それ以降は0xff)
 (短いプログラムで実行出来ることをを確認)
・ターミナルモードで 0xc8 以降に writeしてdumpしてみると書けています。
使用したのはuspasp.2006-09-16です。なにが原因なのかわかりますでしょうか。
------[エラーメッセージ]-----
C:\AVRsample2>c:\avr\avrdude-5.2cvs\WinAVR\bin\avrdude -p 2313 -c usbasp -U  flash:w:test.hex:a
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9101
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
        To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "test.hex"
avrdude: input file test.hex auto detected as Intel Hex
avrdude: writing flash (146 bytes):
Writing |                                                    | 0% 0.00savrdude:
error: usbasp_transmit: usb_control_msg: sending control message failed, win err
or: スレッドの終了またはアプリケーションの要求によって、I/O 処理は中止されました
。
  • uspasp.2006-09-16のHEXは正常に動作しないと思われます。SandBox?に少し説明しています。一つ前のバージョンusbasp.2005-11-14ではどうでしょうか?あるいはSandBoxで公開しているavrspx_b10_10.zipの中のusbaspx113を利用してみてください。2006-09-16バージョンが必要であれば作成します - kkk (2006年11月23日 16時46分06秒)

 AVRのクロックの限界について - グーグー (2006年11月22日 08時26分06秒)

クロックプリスケーラの機能を使った場合の、AVRに入力できるクロックの上限の考え方について教えて下さい。データシートをよ〜く見たんですが、分かりません。例えばATmega162を出しますと:1)ATmega162の動作周波数は 4.5V〜5.5Vレンジでmax16MHzとなっています。2)ATmegaシリーズはクロックプリスケーラ機能があって、デバイスに入力されたクロックを決められて分周比で分周できる機能があります。3)ここで疑問です。ATmega162を外付けクリスタルで動かすとします。例えば分周比を 1/8 に設定した場合、64MHzの水晶をつけてもよいのでしょうか。64MHZのクリスタルでも分周機能で1/8されれば,内部の動作周波数は16MHzとなりますよね。

データシートのクロック分周機能の説明のページを見ると、「デバイスに入力されるクロックがデバイスの動作周波数を上回る場合は、クロック分周機能を使って適切なデバイスの動作周波数まで落とさないといけない」という趣旨の説明があり、この説明だと、クロック分周機能を使えばデバイスには動作周波数以上のクロックが入力出来る、というように解釈できるからです。よろしくお願いします。

  • 8分周設定のTiny13V-10PIに40MHzの外部クロックを入れたら5MHzで動きました。しかし、分周無しでも40MHz動作したので真の上限クロックは解りませんでした。尚、水晶振動子は24MHzを超えると基本波ではなく3次オーバートーンになりますので発振しにくいと思います。 - TAD (2006年11月23日 23時18分55秒)
  • アドバイスありがとうございます - グーグー (2006年11月24日 13時20分01秒)

 BLS領域への書込み - Writer (2006年11月20日 18時42分01秒)

ブートプログラムを作成しBLS領域へWriteしたいのですがどうしても先頭番地0x0000からWriteをはじめてしまいます。御教授下さい。

/*--- 環境 ---*/

マイコン:ATMEGA32

ライター:ATMEL純正USBライター(ISP MK?)

ソフト:AVR Studio4

当方のやり方はAVR Studio4のAVRISP mk?画面よりProgramを実行しフラッシュの内容をダンプすると0x0000よりWrite。但しサイズはあっていました。

AVR Studio4のConfigurationOptionsのMemorySettingにはFlash .bootloader 0x3800を追記設定しておりますが、ブートローダソース上では、section指定はあえてしておりません。っというのは以前、avrsp改.exeによりブートローダーを書き込んだ時にはMAKE Fileだけの対応だけでBLS領域へWriteできた為です。

  • ソースにもよりますがAVRStudioのMemorySettingにはFlash .textの方に設定してみてはどうでしょうか? - kkk (2006年11月20日 20時24分06秒)
  • ありがとうございます。早速ためしてみましたが0x0000からWriteしているようです。もうちょっと色々試してみます。 - Writer (2006年11月21日 09時33分42秒)
  • 成功例です。。。。Studio4のConfigrationOptionsのMemorySettingsにFlash .text 0x3800追加、CustomOptionのAllFilesに-Wl,-section-start=.text=0x3800を追加したら一旦BuildしMakefileに反映されてれば0x3800よりWriteされてました。 kkkさんいつも有難うございます。 - Writer (2006年11月21日 13時24分06秒)
  • おめでとうございます。気になる点・・・CustomOptionのAllFilesに-Wl,-section-start=.text=0x3800は特に指定しなくてもMemorySettingsにFlash .text 0x3800で十分のような気がします。仮に-Wl,-section-startで指定するのであればワード単位のアドレス0x3800ではなくバイト単位のアドレス0x7000を指定する必要があるように思われます。またこの場合はリンカオプションですのでCustomOptionのAllFilesの方ではなくCustomOptionのLinkerOptionの方に追加することになります。AVRStudioのBuildメッセージのコンパイル&リンクの情報を確認してみてください、何か情報が得られませんでしょうか。 - kkk (2006年11月21日 15時12分22秒)
  • AVRStudioのProjectOptionを変更した場合は念のため[Build]->[Clean]でゴミ掃除をしておいてから再度ビルドしてください。Makeを使用する場合は Make Clean の後 Make を実行します。 - kkk (2006年11月21日 15時28分52秒)
  • kkkさん、御指摘ありがとうございます。全く持って御指摘通りですね。。。削除しても0x3800からWriteできました。いつも勉強になります有難うございます。 - Writer (2006年11月21日 20時29分53秒)