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

雑談1

雑談場所1

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

 シリアル液晶ファームのサンプルプログラムの件 - 試作中 (2006年05月07日 07時34分27秒)

サンプルプログラムシリアル液晶ファームのserial-lcd.asmの下記の箇所ですが、

>.equ	LCD_E = 4	; PB4
>.equ	LCD_RW = 5	; PB5
>.equ	LCD_RS = 6	; PB6
は誤りで、
>.equ	LCD_RS = 4	; PB4
>.equ	LCD_RW = 5	; PB5
>.equ	LCD_E = 6	; PB6

が正解ですよね?もしくは、回路図が誤っているのか。あと、serial-lcd3.asmにも1箇所typoがあるみたいです。

  • ガーン、改行が消えてしまった。見難くてすみませんorz - 試作中 (2006年05月07日 07時35分21秒)
  • とりあえず作ってみます・・・orz - serial-lcd3.asm書いた人 (2006年05月17日 02時12分52秒)

 MikroElektronika社のPascalコンパイラ - kuman (2006年04月26日 19時03分01秒)

使ってみました。使い勝手はおもしろそうですが、とても大きなコードを作ってくれます。tiny2313ではLCDにhelloと書くことができません。これを書くだけで2kバイトを超えるROMが必要です。

 なぜ、書き込めないのだろう。 - 初心者 (2006年04月26日 15時41分02秒)

マイコン搭載ロボット製作入門という本を購入して、
ライタ:STK500
ソフト:BASCOM-AVR(製品版)も同時に購入しました。しかし、本の通り(サンプル
プログラムをダウンロード)操作しても、書き込みがおこなわれず(途中で終了して
いる状況)、困っています。ご指導していただけてらと思います。
※1コンパイルは成功してHEXファイルなどは生成されています。
※2プロジェクトは作成せずにコンパイルしました。
※3アトメルのスタジオ4.0は特に何も設定していませんでした。
※4BASCOM-AVRのほうは、COM1、周波数、ライタの指定しました。
ソフト:?BASCOM-AVR(製品版)
    ?アトメル、スタジオ4.0(STK500使用のためインストールが
          必要と本に書いてあったため)
    ?チップは90S2313
    ?ライタ:STK500
    (配線、スイッチ設定はしました)
状況:チップに書き込む画面(AVR\STK500.EXE画面)が出て、以下の途中で終了
している感じです。
STK500 V1.42 (C) 2000-2002 AtmelCorp

Detecting..STK500 found on com1
Reading FLASH inputfile..ok
Setting device parameters ,serial prorgammingで消えてしまいます。
本当はまだ続きの画面がでるのですが・・・。 
  • もう少し状況を教えてください。STK500はAVRStudioから呼び出しているのでしょうか?それともコマンドラインでStk500.exeを呼び出しているのでしょうか?errorメッセージの類ももう少し教えてください - kkk (2006年04月26日 16時15分33秒)
  • kkkさんいつもありがとうございます。Stk500.exeを呼び出しているようですが、本にはAVR studioをインストールすると書いてありましたので、その通りにしました。その画面で上のような、英語が出た後に、FAILED!とかが出て消えてしまいます。もし、よろしければ、添付ファイル等で説明したいのですが・・。ご教授お願いします。 - 初心者 (2006年04月26日 19時45分29秒)
  • Stk500.exeを呼び出しています。 - 初心者 (2006年04月26日 19時47分05秒)
  • コマンドラインでStk500.exeを呼び出しているようです。 - 初心者 (2006年04月26日 20時40分31秒)
  • すいません。その本を持っていないので全く検討がつきませんがどのプログラムからSTK500を呼び出しているのでしょうか?AVRStudioを起動してその中からもSTK500を呼び出せますがそちらはどうでしょうか? - kkk (2006年04月26日 22時29分18秒)
  • STK500のバージョンも古いようですね。STK500付属のCDの中のAVRStudioはバージョンが古いのでAtmelのホームページから最新版&サービスパックを落としたほうが良いですよ。でも新しいAVRStudioにするとSTK500のファームウェアもアップデートする必要がありますが。現在のSTK500.EXEのバージョンはV2.2です - kkk (2006年04月26日 22時33分29秒)
  • KKKさんありがとうございます。BASCOM-AVRでもそうですが、Cプログラムには問題ないようです。BASCOM-AVRでデバイス(チップ90S2313)を見ようとすると、FAILEDとでます。スタジオ4.0でもヒューズ設定にいくと下の方にSetting device parameters, parallel programming mode ..FAILED!と出ます。STK500にデバイス(90S2313)は実装済みです。 - 初心者 (2006年04月26日 22時43分18秒)
  • STK500はISPモードとパラレルモードと2種類あってそれぞれでジャンパの方法が異なります。AVRStudio上でもProgrammingModeで切り替えてあげる必要がありますがその辺は大丈夫でしょうか? - kkk (2006年04月26日 22時50分36秒)
  • BASCOM-AVRのSample版を落として確認してみました。[Option]->[Programmer]でProgrammerはSTK500 extendedを選択する。F4キーでSTK500ダイアログを出す。ProgrammingModeをParelleかSerial(ISPモード)に設定する。[Read Signature]のボタンを押すとSTK500にさしているCPUのSignatureがリストに表示されました。ただ新しいバージョンはサポートしていないのか枠内には表示されませんでした。 - kkk (2006年04月26日 23時28分11秒)
  • kkkさん親切な回答あちがとうございます。やはり、STK500のバージョンアップが原因だったようです。無事書き込めました。 - 初心者 (2006年04月27日 15時15分13秒)

 PWM制御について - 真面目に勉強したい (2006年04月20日 23時04分21秒)

AT90S 2313で1つのスイッチで1つのモータをPWM制御したいと考えています。言語はBASICです。この場合、PWM出力されるポートはあらかじめ決められているのですか?それともプログラムで設定すればいいのですか?どなたかお願い致します。

  • 矩形波のON時間の割合(デューティ比)を普通はデジタル値で制御して平均電力を制御するのがPWM制御です。1つのスイッチでデジタル量をどのように決めるのかよくわかりませんが、ソフトウエアでポートのON,OFFをするなら自由に設定できます。デバイスが持っているタイマ/カウンタ機能と連動したPWM機能を使うなら専用のポートになります。データシートをよく読まれることを勧めます。 - kuman (2006年04月21日 01時12分29秒)

 なぜ、プルアップが必要か? - 真面目に勉強したい (2006年04月20日 22時57分35秒)

よくポートの入力にプルアップを設定していますが、それはなぜですか?また設定しないと誤動作を起こしやすいですか?どなたかわかる方お願い致します。

  • chanさんのぺージに解説があります。http://elm-chan.org/docs/tec/te05.html - kkk (2006年04月21日 08時31分43秒)
  • ここ(AVR-Wiki)のGetting Started Notes [サンプル-基本] 周辺回路も参考になります。AVRを使う人は原書やHEROさんの訳書を見ただけで使える方が多いので本が少ないです。とりあえずマイコンの基礎はH8やPICの本を読んでください。返答してくれる方は何十冊も読んでおられるはずなので自分で何も調べずに聞くのはちょっと・・・。 - mikuru (2006年04月21日 10時37分07秒)
  • プルアップは、外部につなぐ回路がショートかオープンかを判定する時に使います。プルアップなしでは無理ですよね(笑。また、プルアップなし入力ポートに何もつながっていないと、ポート電圧が定まらずふらふらします。これは消費電力の増大などを招くことがあります。そのため、使っていない・何も綱がないポートは入力+プルアップするといいもようです。 - akibow (2006年04月21日 18時41分57秒)

 STK500について - 初心者 (2006年04月20日 10時59分30秒)

最近、STK500を購入しました。すると、ボートに最初からマイコンチップが実装されていました。これって、他のチップに書き込みする場合、取り外してかまわないのですよね?。どなたか、宜しくお願い致します。(ちなみに、同じようなチップも別に付いてきました)

  • ソケットにささっているものはおまけです。他のCPUに書込みをする場合は取り外してください。 - kkk (2006年04月21日 08時33分25秒)
  • kkkさん、いつもありがとうございます。 - 初心者 (2006年04月21日 23時11分24秒)

 違いについて - 初心者 (2006年04月05日 15時57分48秒)

AVR-LibCとGUN−gccはどう違うのでしょうか?回答お願い致します。

  • ググっても、誤字(GNUのまちがい)っぽいのしか出てきませんね。もしGNU-gccのつもりならごめんなさい - akibow (2006年04月05日 16時10分54秒)
  • GNU-gccとAVR-LibCということなら、まずC:\WinAVR\avr\libディレクトリをご覧ください。ここにはlib*.aという形式のファイルがいくつかあります。これらはgccに関数を提供するライブラリ(lib)です。一般的な関数はlibc.aに納められています。そこで、avrgccのうち関数ライブラリ分をAVR-LibCと呼んでいます。間違いが有ればだれか突っ込んでください。 - akibow (2006年04月05日 16時48分55秒)
  • AVR-libC は GNU Compilier Collection (略称 GCC) とは無関係です。サイト名も "nongnu" だし...。OS 使わないAVRではglibcが動かないので、その代わり。ライセンスもBSDライセンスです。 - かみき (2006年04月05日 23時29分45秒)
  • akibow さん、かみきさん回答ありがとうございました。GNU-gccの間違いで記載してしまいました。 - 初心者 (2006年04月06日 15時36分39秒)
  • akibowさんに質問ですが、つまり、GNU-gccで使える命令の一覧?がlibCなのですか? - 初心者 (2006年04月06日 15時38分54秒)
  • 命令じゃなくて関数ですね。初期化ルーチンなども含んでいるかも。 - akibow (2006年04月06日 19時21分05秒)

 AVR ATtiny15L について - 初心者 (2006年04月04日 10時16分56秒)

工作をするため、ATtiny15Lを購入しようとしましたが、型番が同じでも、次のような使用があることが分かりました。この4種類の違いは何ですか?ソニックとDIPは分かるのですが・・・・宜しくお願い致します。ATTINY15L-1PCATTINY15L-1PIATTINY15L-1SCATTINY15L-1SI

  • 動作温度範囲とパッケージの違いです。PCとSCは0〜70℃の一般用、PIとSIは-40〜85℃の工業用です。またPCとPIは8pin-DIP、SCとSIは8pin-SOPのパッケージです。データシートの最後の方の注文情報に記述があります。最近ではさらにRoHS対応しているかでもサフィックスが違います。 - kkk (2006年04月04日 18時48分11秒)
  • 新規に設計するのであればATtiny45Vの方をお勧めします。ATtiny15互換モードも持っていて機能もメモリ容量も増えています。価格もtiny45の方が安いと思います。(ソフトは多少修正が必要です) - kkk (2006年04月04日 18時56分20秒)
  • アドバイスありがとうございました。また何かありましたら宜しくお願い致します - 初心者 (2006年04月05日 15時53分15秒)

 雑談 - kkk (2006年04月02日 22時14分23秒)

雑談」の量が多くなったせいか表示に時間がかかるようになってきましたね。古いのを削るのもあれだし・・・管理人さん何か方法はないでしょうか?

  • Wiki外に掲示板を置くのがいいでしょうねか?と、思ったけどこの掲示板って全体をWikiとして編集可能ですね。管理人または有志で定期的に古いログを別ページに移動して(可能なら追記禁止にして)やれば充分かな。[雑談引っ越しのテスト]にここの一部を移動してみました。実際には添付ファイルも移動しなければならないですね。 - akibow (2006年04月03日 11時04分21秒)
  • 現在、話題が途切れているので新しい話題だけ雑談2に移行しちゃいましょう。akibowさん、実験有難うございます。引越しテストだと手間が掛かりそうなので、この方法でどうでしょう? - 管理人 (2006年04月07日 17時14分04秒)
  • 意外な解決法でした。なるほどこれなら手間がかからないですね。現時点ではベスト?ですよね・・・ - kkk (2006年04月07日 20時36分55秒)

 はじめまして - は (2006年03月31日 17時16分28秒)

最近AVR関連のWebページを立ち上げましたご挨拶かたがたお知らせいたしますhttp://workshop.accela.jp間違いも多々あると思いますがよろしくお願いします

  • 入門者にやさしいページ作りですね。素晴らしい。 - kkk (2006年03月31日 17時53分41秒)
  • 掲示板へ行ったのですが....書けなかった。 - kuman (2006年04月21日 12時17分39秒)
  • すみませんでした - は (2006年04月28日 09時39分17秒)

 外部RAM - TREX (2006年03月30日 00時54分46秒)

AVR Studio の外部メモリーの設定がわかりません。教えてください。AVRは atmega64です。

  • avr-gccを使うのですよね?使用するメモリの配置によって設定の仕方が変わります(.dataセクション/.bssセクション/スタック領域/ヒープ領域の配置)。セクションの定義は [Project]->[Configuration Options] の [Memory Settings].[Memory Segments]で指定します。スタックも同じ画面で指定できます。ヒープ領域を外部にするのであれば [Custom Options]->[Linker Options]で__heap_startや__heap_endのシンボルの値設定が必要となります(例えば、-Wl,--defsym=__heap_start=0x802000,--defsym=__heap_end=0x803fff)。またheapは使用せずに単純にバッファとして使うだけ等の場合は、例えば[Memory Settings]で .xdata=0x801100と設定してプログラム内で
char buffer[256]  __attribute__ ((section (".xdata")));

とすればbufferは外部メモリに配置されます。(.xdataはgccで使用していない適当なセクション名)ただしこの場合はgccのスタートアップルーチンで初期化されません。とりあえずはakibowさんとこのavr-libcの日本語マニュアルの[関連ページ]->[mallocの使い方]や[メモリセクション]の説明を参考にしてみてはいかがでしょうか。- kkk (2006年03月30日 03時14分32秒)

  • Memory Segmentsでheapを割り付けるのはどうしたらいいのでしょう。リンカーオプションの設定だけでは割り付かないみたいなので? - TREX (2006年03月30日 12時35分42秒)
  • 追加すれば、このリンカオプション設定はmfileで簡単に設定できます。

[Makefile]→[External RAM options]から、

    • 拡張領域を使わない/ヒープだけ動かす/変数領域とヒープを動かす
    • 拡張RAMの始端
    • 拡張RAMのサイズ

を指定できます。 - akibow (2006年03月30日 13時16分19秒)

  • 食わず嫌いでmakeのコマンドラインでやっているんですけど、kkkさんのおっしゃるのはどのソフトに対する指定なんでしょうか?Programmer's NotePad? - akibow (2006年03月30日 13時22分36秒)
  • akibowさんへ。質問者の方がAVR Studioと書かれてますのでAVR StudioのGCC Pluginについて書きました。 - kkk (2006年03月30日 20時44分26秒)
  • TREXさんへ。ためしに[Custom Options]->[Linker Options]で-Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x8090ffとリンカオプションを指定してみましたがmalloc()でちゃんと外部メモリの領域を返してきている様です。もしヒープ領域でなく変数領域を外部メモリに置きたいということならMemory Segmentsで.dataセクションを設定してください。 - kkk (2006年03月30日 21時06分50秒)
  • GCC Pluginのリンカオプションについて。[Project]->[Configuration Options]->[Custom Options]の画面でCustom Compilation Optionsで[Linker Options]というところをクリックして入力します。そのままですと[All files]としてリンカオプションではなくコンパイルオプションとして入力したことなります。 - kkk (2006年03月30日 21時20分29秒)
  • やっぱりだめです。アドレスを読みにいくのですが、読み書きが出来ません。GCC Developer Liteではうまくいくのでハードは問題ないと思います。 - TREX (2006年03月31日 00時40分12秒)
  • 単純に外部メモリであればAVRStudioのSimulatorでデバッグできますので追ってみたらいかがでしょう?AVR SimulatorはMenuの[Debug]->[Select Platform and Device...]でAVR SimulatorとAtmega64を指定します。その後デバッグを開始してMenuの[Debug]->[AVR Simulator Options]で[Enable external Memory]にチェックを入れます。あとはMenuの[View]->[Memory]でMemoryViewを表示して外部メモリを表示するようにすると良いと思います。 - kkk (2006年03月31日 02時44分40秒)
  • もし可能であればMenuの[Build]->[Rebuild All]をしたときのBuild Messageを貼り付けていただけたらよいのですが。 - kkk (2006年03月31日 02時56分54秒)
  • 失礼。だとすれば私とんでもなく的はずれな回答した? - akibow (2006年03月31日 08時29分51秒)
  • AVRStudio経由でavrgccを動かすなんて習慣がなかったので・・すみません - akibow (2006年03月31日 08時33分21秒)
  • いえいえ私もAVRStudioでgcc使うようになったのはつい最近です(AVRStudio4.12でサポートされたばかりだし)。現在もメインではコマンドラインからMakefileで使用しています。でもデバッグをする時(SimulatorやJTAGICEmkII)はAVRStudioとの組み合わせは非常に便利です。 - kkk (2006年03月31日 17時41分54秒)
  • outp(inp(MCUCR)|(1<<SRE),MCUCR); - TREX (2006年04月02日 01時41分39秒)
  • 済みません。↑ダブりましたoutp(inp(MCUCR)|(1<<SRE),MCUCR);を入れたらアクセスできるようになりました。GCC Developer Liteでは入れなくてもアクセスできるのですがなぜでしょう? - TREX (2006年04月02日 01時45分49秒)
  • Best TechnologyさんのGCC Developer Liteもavr-gccは同等のものが添付されていますので基本的に違いはないと思います。Atmega64はベステクさんのAtmega128用を変更して使用されているのでしょうか?スタートアップルーチンでinitmcu.cの中でMCUCRの初期化が行われているようです。 - kkk (2006年04月02日 02時44分03秒)
  • MCUCR=0x80;をsection (".init1")で設定するように変更しました。GCC Developer LiteでAtmega64は128の設定で変更なしで動くみたいです。ブートローダーだけは番地を変えて、古いGCCでビルドしないとダメですが。 - TREX (2006年04月02日 11時37分30秒)
  • ベステクのgccはインストール時に環境を聞いて来ますが、このとき外部RAMありATmega128を選択すると、C:\Program Files\BestTech\GCC Developer Lite\TARGET\ATmega128\ATmega128EXRAM.DEFが読み込まれます。これに従ってTARGET/ATmega128/initmcu.cが読み込まれ、.init1でMCUCR=0x80;のセットが行われるようです。 - akibow (2006年04月02日 21時27分08秒)
  • Atmega64と128の違いはAD関連が少々違う位で後はフラッシュ&EEPROMのサイズが異なる程度ですのでAtmega64のメモリ範囲で使用する分には64でも128でもソフトは組めると思います。ただbootloaderはアドレスが異なるのでリンカオプションはそれぞれ異なります。 - kkk (2006年04月02日 21時38分45秒)
  • ブートローダが古いGCCでないとビルドできないとのことですが、これはGCCのバージョンが違うためではなくてavr-libcのバージョンが古いもの(deprecated macro)を利用するようにbootloaderのソースが書かれているためです。新しいavr-libcでもコンパイルできるように一部変更したものを添付しておきます。stk500mon.c(104) - kkk (2006年04月02日 21時44分07秒)
  • 上記stk500mon.cをAVRStudioでコンパイルするには、[Memory Settings]->[Memory Segments]で.textの開始アドレス設定してください。ただしAVRStudioはバイトアドレスではなく(2バイト単位での)ワードアドレスを指定するようになっていますのでベステクさんのAtmega128での例をとると0x1F800ではなくて半分の0xFC00を指定します。Atmega64用にはアドレスを適宜変更してください。AVRStudioでProjectを組む場合はConfigurationを複数登録できるのでMega64用,Mega128用とConfigurationを用意しておけば切り替えてコンパイルできるので便利です。([Project]->[Configuration Options]->[Edit Configurations]) - kkk (2006年04月02日 21時50分59秒)
  • ご指導いただき、ありがとうございました。 - TREX (2006年04月04日 01時23分34秒)

 C言語の本を紹介していただけませんか? - 真面目に勉強したい (2006年03月25日 21時36分34秒)

C言語の初歩的な操作はできますが、AVRを制御できるほどの知識がありません。(使える命令の制限も含む)そこでどなたか、勉強のために良い本を紹介していただけないでしょうか?また、サイトも教えていただけたら嬉しいです。ソフトはWinAVR-20060125を使用してAT90シリーズのチップを使用したいと考えています。無線か赤外線でPWM制御によるモーターの回転速度を制御したいと考えています。宜しくお願い致します。

  • 最近AVR関連の書籍がCQ出版より複数でています。例えばhttp://www.cqpub.co.jp/hanbai/books/37/37331.htm とか(Cではないですが)- kkk (2006年03月25日 22時09分52秒)
  • 本ではないですがkuman氏のサイトなどかなりわかりやすくていいですよ。ごちゃごちゃ細かいことを覚えずまずは模倣しながら覚えるのに適しています。http://www.geocities.jp/kuman2600/ - akibow (2006年03月26日 11時27分17秒)
  • AVRを制御するために必要なのはIO関数だけですね。本当に必要なのはAVRのIOの動作を知ることです。そういう意味ではhttp://reef.path.ne.jp/%7Ehero/hero.htmにあるデバイスの資料をしっかり読んで動作をおぼえることが大切だと思います。 - なべさん (2006年03月27日 21時28分57秒)
  • みなさん、ありがとうございます。よい情報、アドバイスがありましたら引き続き、書き込みお願い致します。 - 真面目に勉強したい (2006年03月27日 22時20分39秒)

 シリアル垂れ流し型プログラマ - なべさん (2006年03月17日 22時41分53秒)

AT90S1200+4MHzOSCで57600BPSで通信できるシリアル垂れ流し型プログラマを作ってみました。8MHzOSCを使えば115200BPSも可能かも・・・http://nabe3.no-ip.org/avrprg/

  • ELMさんとこでもコメントしましたが、これはおもしろい。目から鱗でした。 - akibow (2006年03月22日 16時37分40秒)

 UARTのプログラムについて - kal (2006年03月14日 01時12分59秒)

はじめまして。WinAVR20050214、MCUはtiny2313で、http://avrwiki.jpn.ph/wiki.cgi?page=Getting+Started+Notes+%2D+UARTの「割り込みを使った送信」をコンパイルしたのですが、warningが2つ出ました。usart.c:9: warning: `SIG_UART_DATA' appears to be a misspelled signal handler

usart.c:36: warning: passing arg 1 of `uart_putstr_pgm' discards qualifiers from pointer target type

1番目のwarningは割り込みハンドラの名前が違うからだと思うのですが、2番目のはどういう意味なんでしょう?

  • 1番目はその通りです。avr-libcのバージョンによって定義が異なるのですが、WinAVR20050214のものですとtiny2313の送信割り込みはSIG_USART0_UDREとなっています。 - kkk (2006年03月14日 03時20分47秒)
  • 2番目は引数の定義が違うため警告が出ています。サンプルのソースはRAM上のメモリを指すポインタで記述されています、それをFlash上のメモリを指すポインタに変更します
// 8行目 volatile char *tx_s;  /*a[]をコピーして使うポインタ*/
volatile PGM_P tx_s; 
・・・
//20行目 void uart_putstr_pgm(char *ss)
void uart_putstr_pgm(PGM_P ss)
・・・

とすればOKです。PGM_Pは <avr/pgmspace.h>で

#define PGM_P const prog_char *

と定義されています - kkk (2006年03月14日 03時22分36秒)

  • 2番目の警告は、正確にはconst指定がついていないためです。上記の PGM_P の代わりにconst char *としても警告は出なくなります。 - kkk (2006年03月14日 04時01分04秒)
  • ↑ありがとうございました - akibow (2006年03月14日 13時48分49秒)
  • ありがとうございました。FlashへのポインタはRAMへのポインタと違うんですね。 - kal (2006年03月15日 18時03分39秒)

 AVR製作記事 - TAD (2006年03月11日 20時33分27秒)

"でんし研" http://homepage2.nifty.com/denshiken にAVR入門用ライターを追加しました。冗談みたいな方法の専用書き込みデータ付きです。

  • 相変わらず面白い発想ですね。見ていて楽しいです。 - kkk (2006年03月12日 18時40分55秒)
  • DUALライター書き込みのRS232-C方式は会社にWindows XPのパソコンがありましたので試した所、書き込みできました。又、DUALライターを製作中にSCK周期が間違っていることに気付き、AVR-ISPのプログラムを修正しました。 - TAD (2006年03月14日 00時04分17秒)
  • WAV式は一度はトライしてみたいと思っていたのですが、先越されました。おめでとうございます(笑 0.6Vと比較のコンパレータでも入れたら小音量でも安定した動作するかも。 - akibow (2006年03月17日 21時00分31秒)
  • そうですね、WAV式は被害者が出そうな方法なのでもう少し安全な回路にしたい所です。来月は手堅い作り方と個人的なライターを予定していますので又の機会に良い案があれば改善してみます。 - TAD (2006年03月18日 01時16分17秒)
  • AVR入門者です。書込み方法に感動して、早速RS式を試して見ました。"DUAL_RS.BIN"がインテルHEXフォーマットであることに気づかず手こずりましたが、バイナリーファイルに変換することで書き込む事が出来ました。早速DUALライタを作って見ようと思います。 - MOR (2006年05月19日 23時58分53秒)
  • 申し訳ありません、バージョンアップの時に変換ソフトの操作を間違えてファイル名だけが.BINになっていました。ご指摘の所はバイナリ形式に訂正しました。他にも不具合や不明な所がありましたらお尋ねください。 - TAD (2006年05月20日 01時52分12秒)
  • 遅くなりましたが、アップされている回路図の通りDUALライタ作成し、無事動作しました。AVRStudioから書き込めるので便利です。ありがとございました。 - MOR (2006年06月07日 21時34分08秒)

 WinAVR-20060125の設定について - 真面目に勉強したい (2006年03月08日 18時55分06秒)

C言語を用いて、AVRのプログラムをしていきたいと考えWinAVR-20060125をダウンロードしてインストールしましたが、その他どのような設定をしたらいいかわかりません。Programmers Notepadはプログラムを書くために必要だと思うのですが、MFileはどう使えば良いかわからないし、その他設定方法がわからません。回路 STK500を買いました。当方初心者ですアドバイス宜しくお願い致します。

  • Mfileはmakefile作成ツールです。ショートカットアイコンをダブルクリックして起動して、プルダウンメニューの[Makefike]から必要な設定をすれば望むmakefileができます。File-saveAsでソースファイルを置くディレクトリにセーブすればOKです。あとはソースファイルを整えて、コマンドラインからそこをカレントディレクトリにしてmakeコマンドでコンパイル可能です。まずはそこまでやって、あとは疑問が出たら質問してみてください。 - akibow (2006年03月10日 15時59分52秒)
  • 今なら Atmel社のAVRstudioと組み合わせて使うのも悪くない使い方だと思います。 - senshu (2006年03月10日 23時09分43秒)
  • 補足:STK500とWinAVR, AVRstudioを組み合わせれば、快適な統合開発環境を構成可能です。私はこの構成で使っています。ぜひ、お試しください。 - senshu (2006年03月11日 08時11分26秒)
  • AVRStudio4.12とWinAVR20060125の組み合わせはAtmel betaサイトのServicePack2をあててみてください - kkk (2006年03月11日 11時22分57秒)
  • WinAVRについては、ここのWikiで紹介している各種のパッチ?を入れていることを追記しておきます。kkkさん、SP2の紹介をありがとうございます。早速入手しました。 - senshu (2006年03月12日 08時14分47秒)
  • SP2をインストールしたところ、終了時にエラーが起きるようになりました。仕方が無いので、アンインストール後、再度SP2までアップデートしたところ、エラーが解消しました。GCC用の暫定版のプラグインなどが悪さしていたみたいです。 - senshu (2006年03月16日 23時15分00秒)
  • 2006-03-16にSP2がさらに更新されています。ということは前回のSP2には何か不具合があったということでしょうか。 - kkk (2006年03月17日 06時12分13秒)
  • SP2が再度、リリースされたのですね。想像するに、正しく交信できない可能性が合ったのではないでしょうか。Atmelのフォルダを消すなどの荒療治を行わないと、更新できない現象が起きていましたから。 - senshu (2006年03月17日 20時41分26秒)
  • 仕切りなおしのSP2は、問題なく使えています。(↑交信でななく、更新ですね) - senshu (2006年03月17日 20時55分55秒)
  • SP2が3/20に更新されました。β版ですから、頻繁に更新されるのでしょうけれど、どこが変わったにかな? - senshu (2006年03月21日 15時24分15秒)
  • みなさん、アドバイスありがとうございました。 - 真面目に勉強したい (2006年03月27日 22時21分42秒)

 トップページ更新 - kkk (2006年01月24日 12時09分38秒)

トップページの更新が出来ないような気がしますが・・・

  • avr-libc-1.4.3が公開されています - kkk (2006年01月24日 12時25分36秒)
  • 申し訳ない。禁止文字を掲載ので当然のように更新できなくなっていました。 - admin (2006年01月24日 19時29分24秒)
  • 有難うございます。トップページはOKでした。でもAVRFAQのページも更新できないみたいです。 - kkk (2006年01月24日 22時18分45秒)
  • それとログアウトしても編集がが可能なままですが良いのでしょうか? - kkk (2006年01月24日 22時23分01秒)
  • ログインしないでも編集可能なようにしました。荒らし対策は特定フレーズを入力すると編集結果が反映されないようにして対処したのですが、自動荒らし判別は結構難しいです。今度のフレーズは大丈夫だと思います。 - admin (2006年01月24日 22時43分25秒)
  • 了解しました。有難うございます。 - kkk (2006年01月26日 00時42分09秒)
  • お疲れ様です。禁止文字列がよくわからないのですが、とりあえず一般的なURL先頭のhttpは大丈夫なんですね? - akibow (2006年01月26日 07時36分18秒)
  • たいした問題ではありませんがファイルのダウンロードのカウンタが更新されないようです。 - kkk (2006年01月27日 00時12分17秒)
  • 3.6.9からのダウンロードカウンタの仕様に対応しました。 - admin (2006年02月12日 18時03分56秒)

 WinAVR20060119 - kkk (2006年01月20日 22時03分23秒)

やっとでた新版ですが問題点が多そうです・・・
WinAVRバグ情報にも対策を書きましたがまだ原因不明なものがあります
AvrStudio4.12SP1を使用してavr-gccを使うと固まります。現在原因を確認中です。

  • とりあえず対策したものをアップしました - kkk (2006年01月21日 02時29分28秒)
  • なぜか、ダインロードのページが更新されていないようです。直接 http://prdownloads.sourceforge.net/winavr/WinAVR-20060119-install.exe?download をするとダウンロードできました。 - senshu (2006年01月21日 11時50分18秒)
  • AVRStudio4.12SP1でフリーズする件で止めているようですね。<Bug情報>。現在ダウンロードはここから出来ます。やはり[gcc-3.4.3-c-incpath.patch]が問題ありそうです - kkk (2006年01月22日 01時52分30秒)
  • WinAVR20060125が出ましたが不具合は相変わらず残っています。 - kkk (2006年01月26日 21時46分54秒)
  • WinAVR20060125に期待して入れ替えてみましたが、kkkさんに同じく不具合を確認しました。ここで公開されているファイルに差し替えて使っています。 - senshu (2006年01月26日 22時39分12秒)
  • WinAVR20060125でavr-gccのwarningなどが文字化けする現象について。コマンドプロンプトでchcp 437とすることで言語のコードページを日本語から英語にすると、直りました。 - どな (2006年02月01日 23時38分41秒)
  • フリーズする件をなんと!Atmel側で対処してくれるようです。http://www.atmel.no/beta_ware/ からパッチが入手可能になっています。 - senshu (2006年02月02日 19時59分50秒)
  • 当方でもWinAVR20060125を新規インストールからやり直してみましたがGCC Plugin Upgradeでもうまく動きません。固まらなくはなりましたがコンパイルできません。Wikiで公開している物では問題ありません。(現在のWinAVR SP2のPluginでは大丈夫の様です:2006-03-20) - kkk (2006年02月02日 20時23分47秒)
  • うーーん、根はもっと深いのか、、、。私も実はここで公開されているものを使っているのですが。もしかすると、日本語環境だとNGなのでしょうか。 - senshu (2006年02月02日 20時51分18秒)
  • 日本語環境とは多分関係ないと思います。http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=35240&start=15 でもやり取りされていますが、開発者の環境ではc-incpath.patchを当てないとgccがうまく作成できないらしい。Wikiの分はc-incpath.patchなしで構築しています。 - kkk (2006年02月02日 22時26分57秒)

 delay.hの問題点 - senshu (2006年01月20日 12時48分25秒)

avr-LibCのバージョンは 1.4.2で avr/delay.h をインクルードすると、極端に大きなライブラリ(フローティング?)をリンクするようです。S2313のように乗除算機能を持たないチップでは、アプリ用のコードが記述できなくなります。deley.h の内容を参照し、真に必要な部分のみを取り込む必要があるようです。

  • avr-libc-1.4.2ではavr/delay.hはutil/delay.hに変更になっています。_delay_us/_delay_msの引数に変数を使用していませんか? - kkk (2006年01月20日 17時29分56秒)
  • 変数を使用したい場合には
void delay_ms(uint16_t _t)
{
     do {
         _delay_ms(1);  // <-定数にしないと浮動小数点ライブラリがリンクされる
     } while (--_t);
 }
 volatile uint16_t t1;
 void test(void)
 {
    t1 = 100;
    delay_ms(t1);
    t1 = 200;
   delay_ms(t1+10);
 }

の様に定数で回るルーチンをかましてください。 - kkk (2006年01月20日 17時37分56秒)

  • 追伸)定数にすれば _delay_ms(1.2) のような使い方でも問題ありません。 - kkk (2006年01月20日 17時48分56秒)
  • このへんは1.2.3から同様です。delay_msマクロの定義をdelay.hから見ればわかりますよ。もろ浮動小数点演算ですから。定数即値を指定したときだけ結果が確定して最適化で_delay_loop_1()などへ整数値を渡すコードに変換されるので小さなコードが得られます。 - akibow (2006年01月20日 18時39分19秒)
  • avr-libc documentより。Note:When using _delay_us() and _delay_ms(), the expressions passed as arguments to these functions shall be compile-time constants, otherwise the floating-point calculations to setup the loops will be done at run-time, thereby drastically increasing both the resulting code size, as well as the time required to setup the loops. - akibow (2006年01月20日 18時44分25秒)
  • 参考としてオリジナルをもっと高機能にしたものをおいておきます。 ちょっとしたタイミングを作成するのに便利(_delay_cyclesを追加)になっています。delay_x.h(101) - kkk (2006年01月20日 22時52分03秒)
  • 引数を変数にしていました。参考になるアドバイスをありがとうございます。 - senshu (2006年01月21日 11時33分59秒)

 itoa関数の不具合 - senshu (2006年01月18日 23時45分58秒)

90S4433を使ってコードを書いていますが、itoa()の不具合に出会いました。

itoa(val, buff, 10); のようなコードで val=123 の時にbuff[] に {'3', '1', '2', '\0'} がセットされたような表示(UARTによる出力)となる。

  • uint16_t val; val=123; char buf[8]; itoa(val,buf,10);で次の行でブレークポイントで止めてbuf[]を覗いてみましたが、ちゃんと'1' '2' '3' '\0'になりました。全コードをどこかにあげてみませんか? - akibow (2006年01月19日 00時36分19秒)
  • 一晩寝てから、AVR STUDIOのシミュレータで試すと、問題なく動作するようです。ただし、実機で試すと、123 => 312 と表示され意図した結果を得ることが出来ませんでした。そこで、ここのWikiで紹介されている itoa_small に切り替えたら正常になりました。時間の関係でこれ以上の追求は出来ませんでしたが、こういった事例もあったことを報告しておきます。(avr-gcc ver 3.4.5を使用) - senshu (2006年01月19日 09時22分00秒)
  • avr-LibCのバージョンは何になるの? SRAMは足りてます?(不足してもエラーださないし) - akibow (2006年01月19日 13時15分46秒)
  • avr-LibCのバージョンは 1.4.2です。SRAMは足りていると思いますが、itoa()を使った時に足りているかは自信がありません。シミュレータでスタックをチェックする限りは問題が無いようです。 - senshu (2006年01月19日 14時39分03秒)
  • レポお疲れ様です。新しいLibCのバグですかね??単純な関数なんですけど・・・ - akibow (2006年01月19日 17時39分54秒)
  • ito関数には問題は無く、不具合は別のところにありました。Getting Started Notesで紹介されている「UARTを割り込みで送信」を修正して、SRAM上のデータを送信する場合、連続して送信を行うと、文字列が上書きされてしまうことがあるようです。何らかの形で上書きを避ける工夫が必要です。とりあえず、ポーリングに変更し問題を回避しました。 - senshu (2006年01月23日 18時54分52秒)
  • 「割り込みを使った送信」ですか?うーむ、1文字送信前後にUDRIEがクリアされて上書き阻止が破られる瞬間があるのかな?フラグ変数を用意してこれで上書き阻止した方がよさそうですね。 - akibow (2006年01月24日 17時31分24秒)
  • strcpy(buff, ...); のような形でデータをセットすれば、簡単に上書きが出来るので、割り込み関数の改良だけでなく、別の工夫が必要なようです。itoa関数の処理時間によって結果が異なったのは、この上書きが起こるためでした。
  • オリジナルは書き換え不能なプログラムスペースだけの対応なので、どういうプログラムかわかりませんが、作業バッファが書き換えられるようなプログラムならそれ自体が問題だと思います。「割り込みを使った送信」は読み出しオンリーの文字列だから成立します。バッファをもたせてこちらにコピー、呼び出し元からはこのバッファは決して直接操作しないというのがよいかと思われます。 - akibow (2006年01月25日 10時39分09秒)
  • 現在作成しているのは、A/D変換した値をUART経由でパソコンに送信するものです。したがって、計測の都度、値は変化します。また、1秒間に50回程度の変換を行っています。一回の転送に要する時間よりも計測時間が短い場合に問題が起きていたようです。 - senshu (2006年01月25日 17時35分11秒)
  • ちょっとでっちあげて勝手に練習(非公式)に入れてみました。 - akibow (2006年01月25日 20時16分00秒)
  • 2番目の例を試しましたが、これなら問題なく動作します。アドバイス、ありがとうございました。 - senshu (2006年01月26日 09時54分03秒)

 Login Password - akibow (2006年01月16日 15時45分57秒)

ATmega88/ATmega88でログインできなくなっているようです。誰かが悪戯してパスワードを変更してしまったと思われます。これ、変更できないようにする方法ないでしょうか?書き込む人全員がID/Passを取るというのは管理人の負担が増えるし。難しいなあ。

  • パスワードを戻しておきました。念のためATtiny13もIDとして使えるようにしておきました。 - admin (2006年01月16日 20時46分51秒)
  • お疲れ様です - akibow (2006年01月18日 09時44分34秒)
  • 残念ながら悪意がある人がいるようですね。両IDとも×になっているようです。(GSNにむちゃひどい間違い見つけたので直しにきたんだけど・・・・) - akibow (2006年01月19日 17時37分29秒)
  • 一時復活したけどまたアウト。もしかしてログアウト忘れるとおかしくなる? - akibow (2006年01月20日 08時52分59秒)
  • お手数ですが、Getting-Started-Notesを一時メインページからのリンクを外していただけますでしょうか?複数の大きな間違いがみつかったのですが、なぜかログインできず修正も削除もできません・・・ - akibow (2006年01月21日 19時30分15秒)
  • ログイン関連はログアウトしないで終了させると30分はセッションを維持するのでその関係だと思います。 - admin (2006年01月24日 01時14分33秒)
  • それっぽいですね。失礼しました。ログアウトボタンがどこにあるか最近知りました(^^;) - akibow (2006年01月24日 11時36分21秒)

 AVR製作記事 - TAD (2005年12月08日 00時16分00秒)

AVRの製作記事を増やそうと思い、微力ながらホームページを開設しました。http://homepage2.nifty.com/denshiken "でんし研"です。個人のサイトなのでどれだけ更新できるか分かりませんがよろしくお願いします。

  • 8pinAVRに萌えて燃えてますな。貴重なサイトになりそう。 - NANASHI (2005年12月14日 13時01分06秒)
  • はい、8pin好きです。大作を作る程の余裕がありませんので月1更新とさせてください。 - TAD (2005年12月16日 23時32分26秒)
  • プロトコルVer2に対応したAVR-ISP互換ライターを作りました。簡単に作れます。 - TAD (2006年01月09日 19時00分37秒)
  • 色々工夫されてますね。面白いです。 - kkk (2006年01月10日 04時30分22秒)
  • アイデアは先月思いついたんですが、プログラムにまる4日掛かってしまいました。正月中にできてよかったです。 - TAD (2006年01月12日 23時05分21秒)
  • でんし研を2月8日に訪問された方、更新日の後でごめんなさい。Tiny45・13リセッターと即席1200OSC切り換えの参考図を追加しました。 - TAD (2006年02月09日 21時20分21秒)
  • いろいろなカラクリを見て楽しんでいます。 - kkk (2006年02月10日 00時05分40秒)
  • kkkさん他ご覧の方、私のつまらない妄想に付き合っていただき、ありがとうございます。 - TAD (2006年02月10日 01時12分47秒)
  • AVR界のお笑い担当のはずなのに妄想などと寒い発言をして済みませんでした。某BBSなべさんさんの1200 Signature先頭の件で思い当たる所があり、即席1200OSC切り換えTiny2313版のプログラムを修正しました。 - TAD (2006年02月12日 11時41分58秒)

 ブートローダーで受信割り込み - Writer (2005年12月02日 17時53分02秒)

下記"BLS領域への書き込み方法"で質問させてもらったものですが(Atmega16で)ブートローダー(プログラム)で受信割り込み処理を作成したのですが動作が不安定です(ICEがないのでなんともいえませんが現象的にはプログラムが暴走してるような感じです)

原因かどうかわかりませんが

ブートローダー(プログラム)がスタートした状態のヒューズ上位バイトの
セットベクタ(BOOTRST)が, 1 (応用領域)のままです。

→応用プログラムから、jmp命令によってブートプログラム開始アドレスに飛ばしてブートプログラムを走らせるのですが、その時、外部(シリアル、パラレル)からヒューズを変える事が仕様上の問題でできません。

今回の暴走とリセットベクタはなにか関係ありますか?

  • リセットベクタはヒューズのBOOTRSTで切換えますが、割り込みベクタはGICRのIVSEL(+IVCE)で切換えます。割り込み禁止にしてブートプログラムにjmpした直後に設定変更すれば良いと思います。 - kkk (2005年12月03日 05時21分07秒)
  • 応用プログラムからjmpする前に使用しているすべての割り込みの設定をクリアしておくべきです。そうでないと・・・ - kkk (2005年12月03日 05時26分03秒)
  • kkkさんいつも有難うございます。割り込みベクタの移行はやってたのですがjmp前の全割り込みのクリアはやってませんでしたので早速やってみたのですがそれでもまだだめで・・ブートローダを応用領域用に改造して応用プログラムとしてやった結果は割り込みは問題ありませんでした。 結局の所、応用プログラム→ブートローダーに移行する際に、仕様上の問題でクズデータかノイズがのり1発目の受信データがフレーミングエラーを起こしてた模様です。すみませんもうちょっと教えてください。通常、ロックビットバイトはプログラムの中では変更しないものなのでしょうか?

例えば)

    • 応用プログラムのイニシャライズ時に0x23
    • ブートプログラムに移行した際に0x0F

と設定しようとしたのですがこのロックビットバイトの設定でも動作が違ってきてました。

  • ロックビットバイトの設定で割り込みの動作は変わります。またロックビットはソフトで0にすることは出来ますが1にするにはソフトからではなくチップ消去が必要だと思います。 - kkk (2005年12月06日 17時32分30秒)
  • ・・・・・・。仕様書で確認しましたが間違いなくそれの問題ですね上記の問題は・・・。聞いてよかったです、有難うございました。 - Writer (2005年12月06日 18時18分27秒)

 Windows上でavr-gccの構築法 - yamaguchi_yo (2005年11月27日 18時17分13秒)

Windows上でavr-gccのソースからの構築法が、なかなか書いていないのでまとめてみました。最近では、AVR Studioからavr-gccも正式にサポートされたようで(知らなかった)、便利になりました。本家WinAVRもその内更新されるでしょうが、いち早くavr-gccで新しいデバイスを使いたい方は参考になれば幸いです。何か、間違い等が有りましたらご指摘下さい。

http://d.hatena.ne.jp/yamaguchi_yo/20051127