1 :
774ワット発電中さん :
2008/10/12(日) 11:29:11 ID:H4tjOkkd _____
/ /|
/ ( ゚∀゚) /.∠フ 個人でも手軽に使える
/ /.∠フ || . Atmelの8-bit RISCマイクロプロセッサを
/ __ o/.∠フ || 中心に語るスレッドです。
∠| ̄ ̄凵 ̄ ̄|∠フ || *AAは「AVR H8 etc. マイコン総合スレ Part3」からいただきました。
.|| |_____|/||
Atmel AVR 8-Bit RISC
http://www.atmel.com/products/avr/
2 :
774ワット発電中さん :2008/10/12(日) 11:30:31 ID:H4tjOkkd
3 :
774ワット発電中さん :2008/10/12(日) 11:31:21 ID:H4tjOkkd
4 :
774ワット発電中さん :2008/10/12(日) 11:32:20 ID:H4tjOkkd
5 :
774ワット発電中さん :2008/10/12(日) 11:34:57 ID:H4tjOkkd
独自の判断でリンク修正しました。 問題があったら修正よろ
>>1 乙
最近何も作ってないな・・・なんか楽しそうなネタ無いかな
そろそろクリスマスの準備で電飾(LED)関係とか
電飾見ながらひとりでチキンラーメン食うクリスマス。 死にたくなるからお勧めできない。
9 :
itow :2008/10/12(日) 20:07:43 ID:VqqMSdjX
>8 AVRで彼女作れば良いんじゃね?
12 :
774ワット発電中さん :2008/10/12(日) 21:10:10 ID:YjcX7Vui
AVRで大ヒット商品を開発すれば、彼女なんてオマケで付いてくるよ。 多分だけど。
彼女とAVRでなにか開発するぜ
このスレも来年にはPICスレに吸収合併だな
製品を整理したうえでAVRブランドとして続いて行くんじゃない?
このスレではもう買収は既定路線なのね・・・orz
ぶっちゃけAVRで何ができる? というか何に使われてるんだ 車載用AVRとか出してるけど、採用してるメーカーはあるのか?
AVR、逆に32.768kHzの発振子とか、低い周波数のが 直結で動いてくれれば面白いことできるかな。
>19
TOSC端子が32.768kHz専用で最適化してあるやつは?
mega128がそうなってたけど、他にもあるはず。
あとは適当なパワーセーブモードと組み合わせるなりで。
>6
http://belogic.com/uzebox/ AVR+AD725の2チップで作るゲーム機。
いいなって思うけどどうだろう?
>>17 そう単純にいかないだろうと思ってる人もいるよ。
これだけ株価やら銀行やらおかしくなってる状態だし。
単に大騒ぎする事も無いからレスしないだけで。
だけど、買収が成立するなら、AVRもSAMも8051も保守品種扱いで廃盤になるだろうとは思ってるけどね。
Microchipが欲しいのはフラッシュ内蔵マイコンの知的所有権関連と
関連フラッシュメモリの部分(8pin大容量とか揃ってる訳で)だけだろうと思ってるから。
>>19 >>20 MEGA88系も32.768kHzのクリスタルを使用できるぞ(専用の低周波発振器が入ってるらしい)
それで出来る面白いことと言えば・・・なんだろ?
>それで出来る面白いことと言えば・・・なんだろ? 時計付きの携帯ゲーム?
Game & Watch・・・
12時間使ったら6時間充電するような時計になりそうだな。
かまとおばあさんか!
でもまぁ、なんにも挑戦しないよりはいいよね。
>>20 なつかしい、リンク先、ネスのコントローラのコネクタだw
小学校時代、家の仕事がこの基板の製造やってたなぁ…。
あの時の日本は今の中国のようだ。
今でも覚えてるな、1P用2P用のチェッカー(ICT)もあったな。
AVRで、電圧・電流・抵抗値が計れるテスタを作りたいんですが 解説してるサイト紹介してくれますか? ググったのですが見当たらないんで・・・ また、マイコンは秋月に売っている100円ので十分ですよね?
31 :
774ワット発電中さん :2008/10/15(水) 20:13:44 ID:aNt2hYzL BE:2208544-2BP(1)
>>30 100円のTiny2313はA/Dが載ってないので、250円のMega88の方がいいよ。
内蔵10bitのADCじゃ実質2桁半ぐらいの分解能しか取れないよ。 テスタとして使いたいなら外付けADCにした方が良いんじゃない?
>>31 をを
そこはニキシー管でググってたどり着いたトコだったなw
なつかC
>>33 市販されてるテスタにレンジ切り替えがあるのはなぜだと思う?
>>36 テスタが4桁半とかを自慢しているのは何故だと思う?(最下位信用できるとは限らんが)
>>30 とはいえ、市販の程度の良いデジタルテスタと勝負したいとか言うのじゃないなら、内蔵ADCでも充分だと思います。
AVR限定でなければ、16ビットADC内蔵のMSP430F2013がオススメなんだが・・・
39 :
30 :2008/10/17(金) 15:46:23 ID:sQybT+gk
レスありがとうございます。 電圧と抵抗値はできそうなのですが、 電流が・・・内部抵抗を1Ωにすると内臓のADCだと約5mV刻みなので、5mAごとしか検出できません。 5Ωにすると1mAごとに検出できそうなのですが、内部抵抗がでかくて誤差がひどすぎます・・・
オペアンプの出番じゃ
tiny261or461使いなさい。
>>39 リファレンス電圧の1/1024だから、リファレンス電圧を1Vとかにするってのは
どうなんでしょう?
>>40 の言うようにオペアンプで増幅してから測る方がよいかも。
>>42 >40はI-V変換すべし、って意味で増幅云々の話じゃないと思うけど?
>>43 単なるI-V変換だとシャント抵抗+ADCと変わらない(V=IR)気がするんですけど。
内部抵抗を高くできない電流計用途なら向かないのでは?
45 :
774ワット発電中さん :2008/10/18(土) 00:33:33 ID:T3d+mU4G
picがAVR潰したらmicrochipの営業は蹴り返すことにするわ
>44 測定端子間に電圧(抵抗)がみえるシャント抵抗での測定と違い、 I-V変換では測定端子間は仮想短絡がきいて外からは抵抗が見えないだろ。 抵抗を大きくしても大丈夫。 かわりに高周波特性や大電流特性がまともにオペアンプ依存だが。
>>46 >I-V変換では測定端子間は仮想短絡がきいて外からは抵抗が見えないだろ。
>抵抗を大きくしても大丈夫。
何云ってんの?あんた大丈夫?
>>46 あ、理解しました。
電流増えるとVoutが反転出力で下がり、結果帰還抵抗の電圧低下をキャンセルしちゃうんですね。
>>47 理解したと思ったら・・・
もう少しまじめに考えてみるorz
大元の話に戻ると、
1mAステップ、フルスケール1A電流計と同等なのを作ると、
帰還抵抗5Ωとすれば、0〜-1A入力で0〜5V出力が得られる。
ただ、そんなことしたらOPAMPの出力電流も1A、内部損失が最大5Wになり現実には論外な予感・・・
(電流は帰還抵抗→出力→OPAMP内部→GNDと流れる)
IV変換で理想的には内部抵抗ゼロの電流計はできるけど、
OPAMPの出力電流や内部損失に縛られたものになるので、
現実的にはかなり小さなレンジ(フルスケール10mA以下とか)に限定すべき、
それ以外はシャント抵抗+電圧増幅の方がお手軽と思うのですがどうでしょ?
I-V変換は全ての電流が変換回路に吸い込まれるんだから、 普通の電流計のように対象となる回路を流れる電流を測ることは 出来ないんじゃないの?
51 :
30 :2008/10/18(土) 16:14:54 ID:ipvNY0p8
オペアンプは知らなかったので調べてみました。
で、下記のサイトに辿り着きました。
http://www.geocities.jp/kuman2600/n3dengen.html このサイトを参考に回路を設計しようと思うのですが、
オペアンプなら何でもおkなのでしょうか?
このサイトで使っているオペアンプだとサイズが大きいので、
足が8本のコンパクトなタイプを使用したいと思っています。
また、秋月で売っている高精度タイプというのがあるのですが、
高精度の方がいいのでしょうか?
俺だったらR2R lmc662選ぶな
>>50 I-V変換回路とそれに繋がる表示計などが、測定端子以外で被測定回路から浮いていれば大丈夫じゃない?
ブラックボックスから電線2本なら、電流吸い込むだけで出てこないってあり得ないのですから。
でも先に書いた理由で小電流限定の電流計になりそうですね。
>>51 レールツゥレールなオペアンプであればたいてい大丈夫だと思う。
あと、OUTPUTという表示で分かるように、これ単純な電流計端子じゃなくて、
負荷だけ外で、被測定物と電流計の電圧源が一緒という構造ですので気をつけてください。
電流計の原理とオペアンプの電圧増幅回路の原理が分かれば大丈夫だと思いますが。
>測定端子以外で被測定回路から浮いていれば大丈夫
ナルホド、ナットクしました
>先に書いた理由
というのはコレの事ですね
>>49 (電流は帰還抵抗→出力→OPAMP内部→GNDと流れる)
avrgccにはprintfないんですか?改行とかはどうすればいいんですか?
AVRやる前にC言語の基礎からやるんだ printfは、stdio.hに含まれる関数です
GNDって電池のマイナス極につなげばいいんですか? ATTINY2313使ってるんですが、それで回路を組んでも AVRstudioで認識されません。
>>61 まずは、回路図をどっかにUPしてください。話はそれからです。
あと、ライターは何を使っていますか?
配線チェックしました?
これはひどいw ライタ死んだんじゃね? 15mA程度じゃ死なないかな?
死にはしないとは思うけどRESETをLOWにしきれないかもね。
330Ωとか拷問すぎる
良くわからん俺もワロタ 330Ωを142個直列にしたらいけるんじゃね?
47kΩ→330Ω (;・3・)<アルェー?
二桁も値を変更するなんて大胆だな。
また貴重なTINY2313が一つ失われたか・・・
これからAVR始めようと思うのですが、 でんし研の入門用ライタ(2313使うやつ)の 3300pFのコンデンサが秋月に無いので、 1000pFを3個並列に繋いで3000pFで 使おうと思うのですが、まずいですかね?
>>71 入門用ライタの回路図見ないでカキコ。
>>63 さんもそうだけど、まずいかどうか自分で判断できないときは、
愚直にお手本通りにした方がいいと思います。入手困難な部品というわけじゃないんだから。
そういうことで迷ってるならば 純正MK II てのがあるぜ おれのは自作品だけど
でんし研ならトラ技USBライタがあるじゃないか
>>70 Tinyから見たら別に問題ない気がするんだけど
まあ330Ωくらいならライター側でもなんとかOK(壊れないという意味)だろうねえ。5Vでも15mAくらいだし。 Lowに落としきれないから動かないという問題はあるかもしれんけど。
お遊びで使うだけならresetのプルアップはいらないと思うけど・・・中で吊ってあるし。
>>77 だね。ちょっと作ってみるってときには俺もプルアップしてない。
趣味でも何かに使ってみるときにはプルアップするけど。
79 :
63 :2008/10/21(火) 15:59:03 ID:Nz7aPgbf
ありがとうございました。 47kΩ買ってきます それでも駄目だったらライタが壊れたということでしょうか?
>>79 配線間違い、使用ツールとライタの設定など他に問題がないなら
壊れたと思って良いと思います。
>>79 とりあえず、その抵抗とっぱらって試してみれば?
大抵は、その抵抗なくても大丈夫だから。
図は4.7k-10kΩって描いてあると思う
ついでみたいで済みませんが質問。 まずヒューズビット書き換えて外部発振器を使うようにします。 次にこのAVRのヒューズビットを書き換えるとき、 元のとは違う周波数の外部発振器を付けてても書き換えできますか?
>>83 基本的に外部発振器使用設定は周波数を選ばないので問題はないといえる。
AVRが動作する条件でISP接続条件を満たしていればOK・・・ですけど、
発振周波数によって適する書き込み速度の範囲が決まるので、ライターソフトの設定次第。
詳しくはデータシート(メモリプログラミング)やライターソフトの説明などを参照。
85 :
79 :2008/10/21(火) 19:34:55 ID:Nz7aPgbf
とっぱらいました。 それでもターゲットの電源が入ってないって 言われます。 tiny2313かライタが壊れてるみたいですね とりあえず抵抗と一緒に注文しました。
>>85 >>63 しか書いてないけど、ライターとの接続は本当に間違いない?
単にISP接続が間違ってるだけとか、本当にターゲットの電源が入っていないとかいう落ちではない?
それと、
>>63 の図の通り他には何もつないでないの?
発振子はコンデンサ内蔵セラロック?まさか外付けコンデンサを要する水晶ではないですよね?
>84 ありがとうございます。
>>85 ちなみに、ライターって何を使われているのですか?
>>85 SCKのクロックが早すぎませんか?
使っているライターが分かりませんがSCK=57kHzとか-d10ぐらいで書き込んでみてください。
>>71 > でんし研の入門用ライタ(2313使うやつ) 1000pFを3個並列に繋いで
誤差10%なら問題ないです。
余談ですがPICデュアルはシュミット入力なので指定通りの定数でないとRS-CRで書き込めません。
92 :
ごめんなさい :2008/10/22(水) 00:09:54 ID:ZpOGsp5D
>>86 すいません、isp接続が逆だったのかもしれません。
ケーブルの赤い線のほうをvccにしてみたら
ライタが赤いランプだったのが
オレンジの点滅に変わりました。
今度は
プルアップがどうたか言われましたが、
多分47kが無いせいだと思います。
>>88 mk2です。
ヘルプくらい嫁よ
オレンジの点滅がどういう意味なのか書いてるだろ
>>77 リセットのプルアップ抵抗なしで使ってたら変にリセットがかかることがあったから
10kくらいでプルアップするようにしてるよ
ノイズの酷い環境下で使ってたからかもしれないけど
何にしてもあわてすぎだよ。 抵抗の件も、47k-10kなんて書かないだろうから4.7kΩだよそれ。 でも2313のリセットの内蔵プルアップはデータシートじゃ20k-60kΩ 結果的に47kでも問題なしだけどね。
念のため訂正。 2313→tiny2313 90シリーズじゃないってことで。
プルアップ抵抗無くしたって、Vccに直結してない? リセットラインがグランドに引けなかったら書き込めないよ べつにVccに直結してもマイコンは壊れんがライタ的には困る
97 :
92 :2008/10/22(水) 08:39:48 ID:ZpOGsp5D
ついに書き込みできました。 ありがとうございました。!!
>>94 問題なしっていうより、意味なしっていうやつだろw
>>98 合成抵抗22kΩくらいになるわけだから、意味一応あるけど意味薄いってとこで手を打ちましょう。
>>97 できれば書き込みできなかった原因を教えてもらえないでしょうか。
リセットのプルアップだったのですか?
Vcc直結でよくライタ壊れなかったな……。
リセットラインのプルアップ抵抗が小さすぎると ライタが引けないって事は、シリーズに保護抵抗が入ってるんだと思うよ 一応その程度では壊れない設計って事なんじゃないかな
>>101 うぎゃぁぁぁぁ
ライター丈夫だな。制限抵抗入ってて救われたのかな。
AVRISPmk2ってよくできてるよね 流石4k円するだけある こんな機能がついてるらしい 2.7. 回路短絡保護 回路短絡保護はピンを通して引き込まれる電流が概ね25mAよりも大きい場合にAVRISPmkUからの対象ピンを自動的に切断します。
すげぇ……、考え抜かれてる。
>>105 AVRISPmk2のVCCをターゲットの駆動用電源として
使うことはできますか?
フタあけてジャンパ飛ばせw
最近、レベル低いなぁ。勘弁してくれ。
mega88のADCについて質問です 1.1Vの基準電圧が設定可能みたいですが、 電源電圧が不安定(乾電池2本でレギュレータなし)でも 正確に1.1Vになるのでしょうか? また、内臓のADCの精度はどんなもんでしょうか?
2.56だけかなと勝手に思ってたがあるんだね
>>105 へえ、制限抵抗じゃなくてそういう制御してるのか。結構複雑なんだな。
知らずに使い続けて??するよりきちんと認識してユーザーが知ることができるようにと言うことかな。
>>111 電源電圧と内蔵基準電圧の関係はデータシートには何も書いていないから、
保証されるのは動作電圧範囲内で1.1±0.1Vってことだけなのかね?
心配なら電源電圧を変えつつAREF電圧を実際に測ってみては?
114 :
774ワット発電中さん :2008/10/23(木) 19:04:48 ID:vAxnzXNx
atmelのトップページに、PDFでCEOの買収騒ぎに関してのメッセージが掲載されている…
(´;ω;`)ブワッ
>>111 > また、内臓のADCの精度はどんなもんでしょうか?
例えばLEDの点滅でA/D値が変動したりします。
ADCの精度そのものよりも配線や使い方のノウハウの方が重要。
8bit A/Dで充分だと思うとお気楽
下2bitは捨てろとよく言われるね。 テスタなら数十回連続測定して平均を取るのもいいかな。
自己ノイズもあるので、 一旦スリープしてタイマーで抜けて採取するといい。
>>115 . .... ..: : :: :: ::: :::::: ::::::::::: * 。+ ゚ + ・ どうした?
∧ ∧. _::::。・._、_ ゚ ・ 元気出せよ。
/:彡ミ゛ヽ;)(m,_)‐-(<_,` )-、 *
/ :::/:: ヽ、ヽ、 ::iー-、 PIC i ゚ +
/ :::/AVRヽ ヽ ::l ゝ ,n _i l
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄E_ )__ノ ̄
分割買収の提案を、ついに受諾すると発表したわけか。 AVRが消えないことを祈るより他に、もはや対処方法がない...
>119 お前にだけは励まされたくないぞ、この張本人が。ってイメージですな?
AVRが無くならないなら個人ユーザーのサポートが良くなりそうだ。 でもモスバーガーマークがなぁ。
>>114 買収を受け入れたんじゃなくて、買収の提案を受けて検討してるってことじゃないの?
買収の提案は受けたけど、まだ何も決まってないし、普段通り営業してるからよろしくね。
これからマイコン始めようと思ってC入門サイトを見てる俺はどうすればいいんだー
>>125 C言語なら他のマイコンでも似たような物だからAVRでやっていても問題ないかと。
1つのマイコンに固執せずにいろんなマイコン使った方が腕も上がる。
>>120 受諾しちまったのか!と慌てて読んだら
そういう話が来たのは本当だ。検討している。
株主様お客様に悪いようにはしないからヨロシク
しか書いてなかったぞ!
だよなあ。 不得手の英語を自動翻訳かけて読んだから、意味を取り違っているのかと思ったよ。
マイクロコントローラとマイクロコンピュータ って単にポート数が多いか少ないかの違いだけですか? あと処理能力。
>>129 今調べたら、
AVRはスタックマシンで
特殊みたいですね。
>>129 コントローラとして便利なように割り込みなどが設計されて、
コントローラとして追加部品最低限で済むように電流取れるポートが用意されていて、
あとはコントローラとして使ってもらえるように安い最低限速いうまいついでに消費電力少ないってとこか。
電源オフと言いつつ電源ボタン押し待ちスタンバイで待機してたりもするから、待機電力の少なさも大事でしょうか。
>>129 単に呼び方の違いだけで、厳密に違いが定義されてるわけじゃない。
>>130 AVRは特にスタックマシンということはない。スタックマシンというと例えば
Javaのバイトコードインタプリタみたいなもので、レジスタがなくてスタックしか
ないアーキテクチャのことを言うのが普通だ。
>>131 主語がないので何が言いたいのか分からん。一般的に言うと、何がしたいかに
よる。消費電力が問題になる使い方をしたいなら消費電力が問題になる。
そうでなければどうでもいい。それだけ
え〜
今の経済クラッシュがどっちに働くかねぇ・・・ Mにしてみれば買収のための資金に余裕が無くなる点はネガティブ。ただAの株価が 下がる分は買い取りやすくなるのでポジティブ。 Aの株主にしてみれば、これ以上株価がさがるようなら買値しだいではMに売り払った 方が得と考える。 うーん。解らん。経済のこと考えるよりAVRで何つくるか考えてた方がラクだし楽しいw
損得以前にMが買い取ったら、AVRの将来が無いと考えるのが普通じゃないのか? AVRユーザーなら断固反対すべき。
どうせMはAVRを窒息させるのが目に見えてるから、他の部門と一緒に どこかに転売してくれるといいんだよな。 落ちぶれたZilogあたりが買ってくれませんか? これならMとしては恐れる必要ないし、Zには少しは家計の足しになるだろ。
AVRの将来性って言っても、最近はAVR32やXMEGA とても個人のホビーユースには向いていないものばかりだよ。 最近TinyやMEGAシリーズの新製品なんて出した? 今のままでもTinyやMEGAシリーズはそのうちディスコンとか 会社傾いてサヨナラだってありえる。いっそMicrochipに 買われて既存のTinyとMEGAだけでも安定供給してくれるなら それもいいんじゃないか。
まあローエンドからハイエンドまでどこにも食い込めていないという AVR/Atmelの現状が、この買収になったわけだけどな。 中途半端に目障りだったのでMに的に掛けられた。 もっと強ければ撃退できたし、もっと弱小だったならスルーされて 生きながらえたろうに。
ATMELの強みってなんだろ?
AVRの強みならいろいろいいたいのだけど・・・
ホームページをちらっと見た感じだと、ATMELにあってMicrochipにないものは ・RFID ・セキュリティチップ ・携帯電話用チップ ・FPGA ・ミリタリ、航空機用半導体 くらいかな
ARMコア
日本メーカー買ってよ日本メーカー
じゃあ、オレらでカネ出し合って買わね? ブランドは2chで、CIはギコネコなんてどーよ ちょっと古いか?
皆はTinyやMEGAシリーズをほっぽって、AVR32やXMEGAシリーズに 力を入れる今のAtmelでいいの? ホビー用途など儲かるわけ無いから、企業としては間違っていないが 個人のホビーユーザーにそれは必要な会社なの 1)Atmel存続、Tiny&MEGAの新規開発あり 2)Atmel存続、Tiny&MEGAの新規開発終了 3)Atmel存続、Tiny&MEGAディスコン、流通在庫のみ 4)Atmel解体、MicrochipでTiny&MEGAの新規開発あり 5)Atmel解体、MicrochipでTiny&MEGAの生産・販売は継続 6)Atmel解体、MicrochipでTiny&MEGAの生産なし、流通在庫のみ 現状2なら5でも変わらん。6になる可能性もあるが、3だってありえる 1の可能性は全く無いが、万が一4とか
あと10年位したらFPGAでみんなマイコン作るようになって、 AVRとかあったよねという時代になったりして。 趣味の工作だとコストがあまり問題にならないから、300円で 16bitマイコンが入るくらいの28ピンFPGAとかが出てきたらホビー向け マイコンチップは終わるな。 電子工作の作業史: 1980:74系を集めてきて論理回路から積み木のように積んで頑張る 1990:素のMPUにメモリとかポートとか外付け配線するとこから頑張る 2000:色々入りのMCUに外付け回路ちょこっと足して完了 2010:FPGA上で全部作りこんでアナログだけ外付けして完了 2020:FPAAも復活して全部バーチャルに作りこんで焼いて完了 2030:インクジェット回路が一般化し、作った後印刷して完了 こんな感じ?
AVR32やXMEGAの何が悪いのか分からん。
マイコンに関しては、使用言語の問題があるのでそう簡単にはいかないでしょ。 少なくとも、コンパイラは必要になるだろうし、簡易インサーキットデバッガも欲しい。 どちらかというとPSOCのようにマイコン+FPGAもどきが1チップになったイメージの 製品になるんじゃないかな。
>147 コスト、入手性、作例。 ホビーユースに向いていないだけで、悪くは無いと思うが そのクラスのマイコン市場に今更 参入できるとは思えん。
tiny2313にはどうしてADCがないんだ コレさえあれば・・・・・・ ちくしょう・・・ちくしょおおおおおおお
>>150 tiny26じゃだめなの?
2313とのピン互換性はないけど、ADC必要な時点で互換じゃないし。
tiny2313にはどうしてハードウェアUARTがないんだ
コレさえあれば・・・・・・
ちくしょう・・・ちくしょおおおおおおお
(USIでできんことはないけどマンドクサイ)
tiny26を安く売ってる店教えて? 秋月はないし・・・マルツは高いし・・・
>>151 ×tiny2313にはどうしてハードウェアUARTがないんだ
○tiny26にはどうしてハードウェアUARTがないんだ
ディスコン早杉
156 :
Atmel :2008/10/26(日) 12:32:21 ID:eAII1aZE
会社もディスコンされそうです・・・
ピン変化割り込みってピンがオープンだと常に発生するものですか? VCCかGNDにつければ落ち着くのですが・・・
プルアップ プルダウンは必須じゃ 抵抗はかませてね
>>158 オープンだと、いんぴーだんすが高いから
ちょっとのノイズでふらふらして
その度に割り込みかかる。
>>158 というか使うピンならオープンはありえるのかな?
使わないピンなら内蔵プルアップという便利なのがあるからそれ使って。
不確定要素を組み込むというのには良い手段かもしれない
>>162 ワロタww
機会があったら使わせてもらうわw
>>159-162 ありがとうございます。
DDR:0、PORT:1にしたピンは〜100Ωぐらいで
プルアップされるらしいので(これが内蔵プルアップ?)
これでオープン時に安定するか試してみます。
AREFやAVCCもAD変換を使わないので
オープンのままですが影響あるでしょうか・・・
AD使わなくても繋げろって書いてなかったっけ? 内蔵プルアップは50kくらいだったような
データシートくらい読もうよ……
処理が良くわからないピンがあるのに とりあえず電源入れるなんておそろしいと思うけどな AVCCは電源へ AREFは少なくともGNDには繋げない てか、データシートもだけど 簡単な電子回路の本を読んだがいいよ。 なんでオープンのときにピン変化割り込みが発生するかが 解らないなら回路はくめないよ。
169 :
774ワット発電中さん :2008/10/30(木) 19:39:47 ID:lhYZfLgx
170 :
Atmel :2008/10/31(金) 01:30:30 ID:xGEmbslN
ウチの言い分はこうだ! ・固定費が高くて経営は無能ってことはないぞ! ちゃんとラインアップの見直しと工場閉鎖をしてて、コストは激減中 ・会社全体は低成長だったがマイコン事業は絶好調! 例えばMicrochipの5.5%に比べて、ウチのマイコン部門は20%成長した。 ・お前らの提案は現実性が無い! 部門毎に転売・吸収って、技術・生産部門そんなきれいに分割できるか! ・お前らの提案には金の裏付けが無い! LBOの上、ONが出す金も外から借りるって赤字まっしぐらだろ 株主様に置かれましては、こんなあからさまな競合潰しの仕掛けに 乗ったりせず、我々が来期きっちり利益出しますんで支持よろしくね。
めでたいが、この機会にハイエンドAVRの乗り換え先とCortex-Mの資料を集め始めたところだったのにぃ... ま、勉強は続けるけどね。はやく一般向けにチップがおりてこい。
めでたいことはめでたいんだが、 >ちゃんとラインアップの見直しと工場閉鎖をしてて 利益の出ないラインアップって、やっぱり・・・
AVR好きだから1株買いたい。 どこで買えるの?
小売はしません。Lot単位で買ってくりょ。
>>174 普通は1000株単位だっけ?
あまり買う気はないけどw
気が付けばTQFP44&64のAVR32も増えてるな… Mega系はそろそろAVR32系に移行かね…
C++で暮らすとか使って組む人ってあまりいない?
>>177 Mega使いで速度に拘りがあまり無い人とかならいるんじゃね?
UML書く人ならクラスでパターン使った方が、という連中もいる筈。多分。
mega168で乱数生成と浮動小数点演算とを組み合わせて処理を重くして sprintf使って液晶に浮動小数点表示させて自己満足してた俺なら……。
何でCってsprintfなんてクソ関数が標準なんだろうなぁ。 標準にすべきなのはsnprintfだろJK
AVRstdioでF7キーでビルドはできるのですが、 AVRに書き込むやつを起動するショートカットキーは 無いのでしょうか? ライターはでんし研さんのAVRISPを使っています。
何事もなかったかのようにスレが流れてるなw
>>179 そこ、さすがにCで多態はあんま使わないけど
参考になるところは多かったな
sprintf使うよりprintfの出力先をLCDに向けてやった方がRAM食わないし簡単だよ。 snprintfは、大して需要ないかと。%sを入れなければサイズは大体見積もれるし。 それより抹殺すべきはgetsだな。
>>185 組み込み用で出力先を変更する方法を教えて。
以前から調べているけど、方法がわからなくて。
>>187 vfprintf_P()ってフォーマット文字列にはフラッシュメモリ文字列を指定するものだよね?
vfprintf_P(stdout, PGM_P("data=%d "),65);とするべきではないの?
vfprintfの出力が変だと書かれているけど、リンカオプションどうなってるのかな?
vfprintf()はリンカ指定でサイズや機能が変わるようだから。
AVRでパワーMOSFETをスイッチングしたいのですが、 AVRの出力を直接MOSFETのゲートにつなげてもドライブできますか?
MOSFETのデータシートに答えが書いてある。 それが全て。
データシートは読めても回路の知識が無いビギナーもいるしな。
>>189 直接つながず150Ωくらいの抵抗を間に入れとけ。
FETのゲートはコンデンサと等価だから、抵抗が無いと
突入電流で絶対最大定格を超える。
容量は微々たるもので現実には壊れないだろうがそれが定石だ。
スイッチング周波数次第ではドライブ回路をくまにゃならんと思うよ。 PWM出力なんかに繋ぐつもりならもうちょっと考えないといけない。
>>182 > AVRに書き込むやつを起動するショートカットキーは
AVRstudioに一発書き込みは無さそうです。
AVR-ISPの起動に1クリック、書き込みに1クリック。が最短かな
AVR-ISPを閉じるのに1クリックで合計3クリックですね。
適切なスレが見当たらないのでここで質問します。 以前液晶のSC1602を使っていて、そのソースを流用して 今回SC2004を使うと初期化すらできません。代わりにネットのソースも使ってみました。 初期化コマンドを送り、コントラストを調整しても全ドットが黒く表示されます。 ビジーフラグをチェックしても常にビジー(H)が返ります。 電源のピンが違うのは承知しています。 この2品種の意外な違いをご存知でしたら教えてください。
QA 内部アドレスを40Hにして、表示させても表示されません。 [2005-04-04 09:24:19更新] 正しく初期化されていないように思われます。正しく初期化しないと1と3行目のみ濃くなります。 16x2行で動作したプログラムでも、ばらつきがありますので、タイミングチャートを正しく守っていないと動く動かないがあります。
秋月液晶なら 電源ピンだけ入れ替えたら全く同じプログラムでも動いたはずだが
>>188 vprintfは、間違っていて以下の様に直さないと正常に出力されません。
vptintf_Pは、どのように直せばよいかわからないので保留(^^;
void data_out(char *format, ...) {
va_list p;
va_start(p, format);
vprintf(format, p);
va_end(p);
}
char *fmt1 = "\r\n";
char *fmt2 = "Hello, world!\r\n";
char *fmt3 = "data=%d ";
char *fmt4 = "%x ";
char *fmt5 = "%c\r\n";
char *fmt6 = "%05d\r\n";
data_out(fmt1,NULL);
data_out(fmt2,NULL);
data_out(fmt3,65);
data_out(fmt4,65);
data_out(fmt5,65);
data_out(fmt6,123);
>>197 SC1602で動いたプログラムで、SC2004で動かすと真っ暗です。
VoをGNDに接続して使うと真っ暗なので、
5Vを抵抗で分圧してVoに繋いだら表示されました。
メモによると1V位にしている。
>>195 初期化時間どこかが1602より長かった記憶がある。
データシートに忠実に(余裕を持って)wait入れてみては。
>>201 タイミング問題かもね。
有効なE=High時間が最低230nsecとなっている。
lcd制御ライブラリでよくある、データセットのあとEをhiにしてすぐLowにするコードでいくと、AVRのクロックが早ければこの時間とれないかもしれない。
このタイミングチャートのように、RS/RW/Eをセットしたあとでデータをセットし、その後Eを立ち下げるようにすれば時間稼げるかも。
全周期時間も500nsecとなっているので、Eを下げたあと次のデータを準備する時間が早すぎればこっちもひかっかるかもしれん。
特に4bitインタフェースだと、4bit送った後次の4bitはすぐ準備できるので時間がとれずにやっちゃうかも。
確実にするにはEを操作する時に0.5μsec待ち→E=Hi→0.5μsec待ち→E=Loみたいな感じにしてみては?
WinAVRならdelay_usでも使えばわかりやすくできる。
・例として、ATMEGA88 のout命令は1CLKcpu、sbi, cbi命令は2CLKcpuで実行 ・20MHzで動作させた場合、CLKcpuの前置分周を1として 1CLKcpuで50ns sbiでEnable立ち上げ (100ns) outでデータをポートに出力 (50ns) cbiでEnable下げ (100ns) なんて事してると、150nsしか稼げてないので LCDが「ちょwwww信号待ってwww」状態になるんね。 いつも10MHz程度でしか動作させていないから、知らずに「運良く動いてくれてた」 状況に助けられてたんだと痛感、勉強になった。
204 :
195 :2008/11/06(木) 22:44:21 ID:CZXVj0va
tiny2313のデフォルト発振(1MHzのはず)なので、1クロック1usとなり どうやってもパルスが短すぎるということはないはずなんですよね… 挙句の果てにポート操作にすべて10msのディレイを入れてみてもうまくいかず。 結線チェックも何度もしているのに…謎です。tiny2313のポートDには変な機能があるのでしょうか?
一休みしてから見てる資料が間違ってないかとか、 配線チェックはテスターで断線、隣との短絡を確認してみてはどうでしょう。
>>204 バラック組んで試してみたよ。こんな感じの初期化で動きましたよ。
全く表示されないんで焦りましたが、DDRD =0xff; を追加したら表示されました。
void lcd_init(void)
{
DDRD =0xff;
LCD_PORT &= ~LCD_RS;/* RS = L */
lcd_put_4bit( 0x3 ); /*Function Set Mode */
lcd_wait(5);
lcd_put_4bit( 0x3 );
lcd_wait(5);
lcd_put_4bit( 0x3 );
lcd_put_4bit( 0x2 ); /*Function Set Mode=4bit */
lcd_put_ch( 0x28 ); /* Mode=4bit / Line=2 / Font=5x7dot*/
lcd_put_ch( 0x0E ); /* Display=ON / Cursor=ON / Blink=ON */
lcd_put_ch( 0x06 ); /* Cursor=Increment / Display_shift=OFF */
lcd_put_ch( 0x01 ); /* Display Clear*/
lcd_wait(2);
LCD_PORT |= LCD_RS; /* RS = H */
}
USBaspを作ろうと思うのですが 回路図の12MHzの発振器は秋月に売っている11.776MHzのオシレータでも大丈夫でしょうか?
>>208 プログラム中のパラメータ変えれば大丈夫だと思うよ。
俺の場合、セラロックで作ったけど、実用上は問題ないみたい。
212 :
774ワット発電中さん :2008/11/07(金) 11:56:19 ID:ZK15BCCm
"秋月に売っている11.776MHzのオシレータ" で問題なかったやつ、おらんのか。 もう!
>>213 12MHzの発振器ぐらいケチらずに買えば良いだろ…(w
215 :
774ワット発電中さん :2008/11/07(金) 14:12:26 ID:6xjnNykj
>>213 確か動かなかったはず。
ただ、小型で安価なので、AVRライタでヒューズビット書き換えて
認識しなくなったチップのの外部クロックとしては使いやすい
>DDRD =0xff; を追加したら表示されました。 これの意味わかってないだろ?低he
218 :
774ワット発電中さん :2008/11/07(金) 15:39:21 ID:7LZrhWJK
>>213 誤差なしで発振しても、USBの基準クロックから2%近くずれているからな。
普通なら12.000MHzのクロックを使うだろう。それでも12.000MHzピッタリ
で発振することはまずない。
x16クロックでサンプリングする非同期通信ならそれでも構わないかも
知れないが、クロック同期通信、それもソフトでエッジを拾おうという
のに、最初からそのズレがあるのはどうかな?
レスありがとうございます。 12MHzのセラロックでいこうと思います。 セラロックは外部にコンデンサ付けなくてもおkですよね? また、でんし研さんの入門用AVRISPライターでヒューズビットの書き換えは可能でしょうか?
出力はOutにきm(ry
最近、質問のレベルが低すぎるだろ。 電電のみんなが優しいのは分かるが、甘いのと優しいのは違うと思うぞ。 あんまりなのはスルーした方が、本人の為じゃないか?
225 :
774ワット発電中さん :2008/11/08(土) 13:51:28 ID:s5nsBykc
扱いやすさ、性能、拡張性などの面で、数あるマイコンの中で AVRが一番優れてる? もしそうならAVR挑戦しようかな
>>225 性能・拡張性は他にいいのがいっぱいあるだろうけど、
素人にとってのわかりやすさと取っつきやすさではダントツじゃないかと思う。
227 :
774ワット発電中さん :2008/11/08(土) 14:00:02 ID:s5nsBykc
>>226 さんks。
最初PICやろうと思って色々試したんだけど、なんかAVRの方が後発で扱いやすい
って聞いて移行しようか悩んでた。
ライタもPICと比べるとめちゃくちゃ簡単な構造で驚いた。
そいや、自作のライタでプリント基板から作ってる人いないかな?
プリントパターン公開してるとことかない?
>>227 プリント基板起こす必要自体ないほど簡単だと思うが?
229 :
774ワット発電中さん :2008/11/08(土) 14:07:28 ID:s5nsBykc
>>228 そうなんだけど、見た目的な問題でww
ちなみにライタは何使ってる?
>226 俺も含めてAVR使ってる人はもはやまったく気にしてないことだろうが、 ROMとRAMが同じ空間に無いという点は最初は気になった。 アーキテクチャとしては少数派だと思う。 さらに特異なPICが人数的に多数派のせいで無視されてるポイントだけど。
Atmelは持ちこたえ、三洋が去った・・・
>230 ROM用、RAM用でアドレス空間を分けるCPUは、けっこう前例はあったぞ 空間を分けずに使う事例が大半だったから知られてないだけで、MC68000もROM/RAMなど4つの空間に分かれてたはずだ。(各16MB分あった。)
>>229 俺の場合は・・・最初秋月ライタ、次に共立ライタ(プリンタポート版)、
その後Chan氏のSPIブリッジ+USBシリアル変換の自作で落ち着いた。
>>230 プレインクリメントなIDおめ。
自分はそっちは気にならなかったなあ。
むしろ「お、メモリアドレスが倍に増えるってことじゃん!(・∀・)イイ!!」と思った。
それよりはRAM空間にIOがあるのに、IO操作命令が別にある(ようにみえる)こと、
操作範囲によってできることが違い、使う命令も違うのは慣れるまでは違和感あった。
使用場面を考え、うまく短いコードを割り振っていることがわかればむしろ萌えの対象になったがw
できれば汎用RAM空間は0から始まっていて、8bitアドレスで扱える命令がある256bytesRAMな
石があればよかったのにと思う。レジスタやI/Oは上位アドレスに置いて。
たぶん石の設計の問題で難しかったんだろうとは思うけど・・・
KB単位あたりまえの今となってはどうでもいいけど。
>>230 プログラムとデータが分離されたバスになってる
ハーバードアーキテクチャって奴ですね。
>>232 MC68000はハーバードアーキテクチャじゃないです。
コンパイラ使う限り余り気にならんけど、AVRの良い点は
PICみたいにWレジスタに振り回されない事だと思うw
>>235 PIC18はちょっとは気になっている。PIC16ほど変態さんじゃないんですよね?
といいつつ、AVRがあるのになんでわざわざPIC18に手をださんといかんの?
ライター用意するのめんどくさい〜で、そのまんま。
製品になったコンピュータを除けば、AVRとH8以外さわってないなあ。
EzUSBとかPSoCとか、特徴があるものには手を出したいけど。
>>235 一応0から始まる8bitアドレスだけど、128Bytesのバンクじゃないかぁ〜
パワーアップしながらも変態さんは健在だった・・・
PIC24だと普通に8bitアドレスできるSFR+RAMアドレス空間があるんだね
>236 アドレスバス23本の他に、アドレス空間を区別するためのピンが2つあって、 これをアドレスバス同様にデコードしたらアドレス空間が区別される(メモリ空間が64MBになる)と MC68000のプログラムマニュアルに書いてあった。 マイクロアーキテクチャとして、ハーバードアーキテクチャを採ってないのは事実だが。
>>238 PIC18では普通に256Bytes/bankだよ。
bank指定レジスタ(BSR)の下位4bitと合わせて
12bitアドレスで(256x16=)4kBytesのRAM空間になってる。
I/Oや特殊レジスタ群は最上位bankだけど
access bankとしてbank切替え無しにアクセスできる。
241 :
774ワット発電中さん :2008/11/08(土) 18:21:33 ID:m3o8Re19
>>239 そのマニュアルを本気にするとまともに動かないコンピューターが出きあがる。
ちょっと考えればそんなデコードしたら使い物になrない事位わかりそうなもんだが
>>239 ,241
ずいぶん昔の記憶なのでまちがっているかのも知れないが。
その信号は本来ICE用の信号で、CPUの内部状態を外部からモニタするために
あったと記憶している。Z80のM1信号(第一命令フェッチ)みたいなものだったはず。
秋月のmega88売り切れって誰か100個買いでもしたんかー ホビーユーザーの自分としては是非再入荷して欲しい DIPであること、容量、価格、お手頃で助かるんだ
>234 議論みてて、俺が気になったのは実は「プログラムとデータが同じ空間に無い」ことではなくて、 C 上でその事実を陽に扱わなきゃいけないことだったんだなと思た。 関数ポインタと const ついた奴を暗黙のうちにプログラム空間に置いてくれれば それで良いんじゃないかと思うんだけどな。 IOがどこにあってどの命令なら使えるかはCからは気にしないこともできたから、 そういうのはスルーできた。 68000の空間分けとかもユーザーサイドからは気にしなかったよね。
>>240 あーごめん、すべてのバンクはバンク0(アクセスバンク)の様にしか
アクセスできないと勘違いした。
バンク1〜14ではフルに256Bytesアクセスが8bitアドレスでできるんだな。
>>245 Cだとそこで属性付けたり変なマクロ使ったりということになりますね。
確かにこの2つだけ暗黙の了解でプログラムメモリアクセスにしてしまっても問題は起こらないですね。
constとしている以上RAMに置く必要はないしROMの方が容量は多いし。
RAM上でプログラム実行できない以上関数ポインタもRAM上を扱う理由は確かにないですね。
最近、型番末尾に(P)の付いた物を見かけるのだけど(ATmega88Pとか) 末尾の(P)って「picoPower(TM)Technology使こてるよ」の意味で合ってる?
>>244 だよな。
100個買うなら、DigiKeyでAtmega88Pが@246.99000だから、それを買えよと。
(1個なら379円)
>>252 あー、確かにプログラム領域はそんなに要らないけど
RAMが多いと、出来ることが格段に増えますからねぇ。
AVRは1クロックで1命令ということは データシートとかに書いてあるClock数は無視していいんですか?
"ほどんど"の命令が・・・・
1回しか命令しないなら無視でいいと思うけど、何万回もするなら無視できないでしょ。
258 :
774ワット発電中さん :2008/11/09(日) 15:28:58 ID:Ft638d8V
>>254 何をさせるかによる。
ソフトでUSB接続するなど、シビアな対象もあるし
>>254 が作るLEDチカチカの様にいいかげんでも問題ない物もある。
>>254 大部分の命令が1クロックと言うだけで、一部2クロックや3クロック要するものがある。
データシートに書いてあるとおり。
>>249 USBコネクタはMiniBにした方がいいんじゃないか?
あんまりISP側を伸ばすとトラブルの元になるし。
>>207 そのままコンパイルすると2313のメモリに収まらなくないかな。
lcd_waitで_delay_msに変数を渡しちゃってるからゴニョゴニョするためのマクロが展開されてる?
void lcd_wait( int m )
{
while(m--) _delay_ms(1);
}
としたところ460byteになったよ。
多少のオーバーヘッドが出るけど、こっちの方がいろいろ実用的でないかな
アセンブラにしちゃえば簡単なのに。
アセンブラで割り込みについて解説してる ページありませんか?
AVRwiki
データシート
アセンブラがavrasmかgasかによって違う。
>>207 >>261 _delay_ms()や_delay_us()は定数を渡すのが原則だね。
>>207 のように変数を渡すと、たしかint mをdoubleに型変換してそれを実数演算したあと
整数化して_delay_loop_2()ループ関数に渡すなんて言うすごいコードを吐いたはず。
それと、_delay_ms()などはCPU周波数にもよるが上限値が結構厳しい。
10MHz駆動のAVRだと、_delay_ms()は26msec、_delay_us()は76usecが限界。
あと、本来LCDユニットは電源投入後15msec待つという動作もいる。
>>201 参照。
AVRとLCDの電源が共通だと、
>>207 のままだと初期化失敗する可能性がある。
20MHz駆動だとdelay_ms()で13msecしか実現できない。
ここでも
>>261 の方が望ましいかなと思う。
>>207 ついで。
メインループの_delay_ms(100)もたぶんうまく働いていない。8MHz駆動では100msウェイトできないから。
あと、lcd_put_4bitだけど、無駄にLCD_PORT読み書きしていると思う。
こんなのじゃだめですか?
void lcd_put_4bit(char bitdata)
{
char portdata;
portdata=(bitdata&LCD_DATMASK)|LCD_E;
LCD_PORT =(LCD_PORT & ~LCD_DATMASK) | portdata;
//明示的にE=hiとしたほうがいい。XORだとEがhiだった場合動かなくなる
lcd_wait(1);
LCD_port &= ~LCD_E; //上に同じく、明示的にLoに オリジナルのコメント、逆ですよね?
//それと、XORでポートのビット操作すると、sbi/cbi命令を使ってくれないと思う
lcd_wait(1);
}
LCD_PORTの最初の書き込みが &=での書き込みなので、不定となっているビットがある。
どこかで初期化した方がいいと思う。
たぶん初期値=0なのでこのままでも問題ないとは思うけど・・・・
269 :
249 :2008/11/10(月) 02:07:58 ID:M2QIbKK0
>>257 ありがと!
>>260 ノートPCで使ってるからISP側20cm程度で十分で、経験上
tiny13 tiny45 mega8 mega88 tiny2313 mega48 tiny26 90S2313
全てOKでした、基板側条件など一概に言えないですが…
完成品が会社だから見せれないけど、
ttp://buffalo.jp/products/catalog/network/wli-uc-ag/ こんなのに入れてるからこういうデザインにした。
あと、USB延長ケーブルってものもあるわけだしw
自作品、褒めてもらうとすっげーテンション上がるw
>>LCD等のウェイト
自作でGCC呼び出し用アセンブラ関数作ったこんなんじゃだめかな。
約1msec〜約65535msecまで対応。
//最終更新日:2008-10-16
#include <avr/io.h>//必須らしい。<avr/signal.h>や<avr/interrupt.h>は不要らしい
#define WAIT_CPU 8000000 //CPU周波数を記入
#define MSEC_COUNT_H (((WAIT_CPU/4000)-6)/256) //4000なのはSBIW,BRNE4clk 5はSBIW,BRNE,LDI
#define MSEC_COUNT_L (((WAIT_CPU/4000)-6)%256)
/*----------------------------------------------------------
void Wait(uint16_t msec)
r25:r24
【概 要】0[ms]〜65535[ms]のNOPによるウェイト
WAIT_CPU[Hz]の周波数設定依存
【容 量】11words
----------------------------------------------------------*/
.global Wait
.func Wait
Wait:
PUSH r24
PUSH r25
WAIT_LOOP:
;計数用レジスタに1msec値のコピーr27:r26 はPUSH不要
LDI r26,MSEC_COUNT_L ;1msec分のカウント値を代入
LDI r27,MSEC_COUNT_H ;1msec分のカウント値を代入
;1msecループ
MSEC_LOOP:
SBIW r26,1 ;16bit減算 r25 = r25 - 1
BRNE MSEC_LOOP ;直前の結果 != 0 ならジャンプ MSEC_LOOP
;1msecループした、もう終わり?
SBIW r24,1 ;r24 -= 1
BRNE WAIT_LOOP ;r24 != 0ならまた1msecループ
POP r25
POP r24
RET
.endfunc
>>269 >自作でGCC呼び出し用アセンブラ関数作ったこんなんじゃだめかな。
1msループルーチンはwinavrに_delay_ms()があるんだから素直にそれ使った方がいいかもね。
流れぶった切りで悪いんだが・・・ _delay_xxの内容や癖を調べるよりタイマカウンタユニットの 使い方と割り込み調べるほうがよっぽど簡単だと思うんだが・・・・ 汎用ライブラリ使えばハードに依存しないけど、AVRLibcはAVR専用だよね? 例えばただ単に時間を待つんじゃなくて、スイッチが1秒間押され続けたか なんてのはみんなどうしてるの?
typedef struct { ・・・・ long pressed_time; }Btn_t; てな構造体と long get_Now(void);//起動からの時間をmsで返す。 みたいな関数でも用意してやって何とかするかな。 んで、ソフト的にかハード的にかキー変化割込みでも作って間隔とる。 もし、1秒経過時点でアクションが要るなら ソフトウェアタイマでも実装してワンショットでイベント起こす。
スイッチ入力はタイマ割り込みで見るのが普通じゃね?
>>267 アドバイスありがとうございます!
>メインループの_delay_ms(100)もたぶんうまく働いていない
動きには気が付いていたのですが、ちゃんと動いていることと、時間精度までは確認していませんでした。
真っ暗だった人がどうなったのが気になりますが・・・
>>272 >>273 だよね
割り込み覚えちゃえば_delay_xxの知識なんて要らないでしょ?ってことよ
まぁタイマ使い切ってる場合はしょうがないけど
>275 ちょっとした時間待ちのためのものだからこそ delayも長く待つことができるようなコードになってないんだと思う。 そんなに長い間なんもすることがないなら さっさとスリープするなりクロック落すなりする場面。
だな。 ms単位のディレイならタイマ割り込みでソフトウェアカウンタ回して時間を取るからいくらでも伸ばせるけど、 I/Oウェイトのような割り込み周期より短いものはdelay()が重宝する。
277のような用途ならわからんでもない ちなみに俺はms以下のウェイトにnop数回以外の状況になったことが無いが しかしスレの流れは「150msをいかにdelayでやるか」になってたから おいおいちょっと待てよって思ったんだ
>>271 それほど正確さも要求せず、試作(待ち時間の消費電力気にしない)で、
タイマの使いこなしにまだ至らないお勉強中のプログラムならお手軽ディレイループ、
それ以外はタイマとスリープ使えってとこか。
その条件で、_delay_msも
>>261 のようにすれば簡単に使えるってことでいいかなと思う。
>>278 俺はLCD初期化での15ms(150msではない)ならありだとは思ったけどな。
電源投入後最初の1回だけしか使わない、表示器のセットアップ中だからループで待っててもいい。
これが何度も反復使用するウェイトならできればタイマでしょうけど。
お勉強中の人にディレイの制限は難しいだろうって事じゃない?
俺もたった一回のウェイトループにあれだけメモリ食われるのは嫌だな。
>>261 のやり方は見つけにくいけどwikiにもあるね。
このスレで吟味された推奨お手軽ループの見本として長所短所の解説付で
誰かアップしてくれないかな?
他力本願だけどwikiへの書き込み方がわからない・・・
winAVR って、余計なツールがいろいろ bin に入ってるんだね。 インストールした覚えのない wget が起動できて驚いた。
>>281 おまけで、TCNTにウェイト値の補数入れてOVF待つウェイトも紹介した方がいいかな?
284 :
774ワット発電中さん :2008/11/11(火) 18:15:08 ID:kQophPM1
AVRをこれからはじめる初心者にオヌヌメなライターってありますか? 環境は ・パラレル、シリアルポート有 ・デスクトップwinXPとノートwin2000の二機 です 自作できて回路が簡単なものがいいです^^^^^
ChanN 氏のパラレルライターつかっとる
>>283 今見たらタイマーの解説で紹介されてた。
287 :
774ワット発電中さん :2008/11/11(火) 18:24:20 ID:kQophPM1
とりあえず、パラレル直結のケーブルでUSBaspでも焼いたらどうか。 USBaspは回路が簡単なのがよい。そこそこ早いし。 USBブートローダを書いとくのを忘れずに。セルフISP配線をちょっとだけ省略できるし、 ファームアップが楽。
289 :
774ワット発電中さん :2008/11/11(火) 18:32:37 ID:kQophPM1
>>288 パラレル直結ってトラ技かなんかに載ってましたね。
>USBaspは回路が簡単なのがよい。そこそこ早いし。
USBブートローダを書いとくのを忘れずに。セルフISP配線をちょっとだけ省略できるし、
ファームアップが楽。
ふんふん、おそらくボキには出来ないですね^^^^^^
そういえば、AVRライタってなんでAVRの足を直接ハンダ付けしてるの?
ISPってのはボードに乗っけたままのAVRの足にジャンパ線とかで信号送れば
書き込めるってのは理解したけど、ライタにソッケトがない事情が良くわからない。
PICなんかはゼロプレッシャソケットとか使ってたのに。
なんで^^^^^^
>>289 ゼロプレッシャソケットが実装されているAVRのライタもありますよ。
あなたが見たことあるAVRのライタがISP専用のライタなのでしょう。
>>287 共立はパラレルポートライタの時も安いの提供してくれたから好きだ。
ブレッドボード用ケーブル用意しているところもナイスだと思う。
あとはライターソフトの出来次第かなあ?説明書見る限りでは悪くなさそうだけど、
同じことを繰り返す場合はコマンドラインで使えるライターが便利。そこだけ気になるな。
その点ではChaNさんの簡易ライターで同じくChaNさんのSPIブリッジライターを作るのをお薦めする。
292 :
774ワット発電中さん :2008/11/11(火) 18:45:23 ID:kQophPM1
>>290 パラレル:ゼロPソケット有り
ISP:ゼロP無しだが、ブレッドボードなどにサクッとさしただけのAVRの足に信号線を
繋ぐだけで書き込めるからゼロP不要
こういうことなんすか?
>>291 >ブレッドボード用ケーブル用意しているところもナイスだと思う
つまりそれはISPってことでFA?
>>287 鬼のように高かったころに全然売れなかった過去があると思うw
バージョンアップで対応も増えてきたようだし、入門にはいいかもね。
ちなみにコレの裏にFT232RL載ってる。構造はChaNさんのUSBapi
に似てると思うから改造できたりして?(根拠なし)
295 :
774ワット発電中さん :2008/11/11(火) 19:38:38 ID:kQophPM1
>>294 それも非常によさげなんだが、書き込み確認とか一切無いんでちょっと不安。
実際どうなん?
>>295 これの一番の問題は
>※USBシリアル変換では使用できません(当社のUSBシリアル変換モジュールも含む)PC本体に内蔵されているシリアルポートでお使いください。
ここですね。やっぱり今時これはきつい。
COMポート内蔵しているPCを常用して、当分使い続けるなら、当分はOK。
USB経由でやりたいならうーむ。
うお、同じ時間に書き込んでる。 シリアルポートやパラレルポートやUSBaspタイプは操作がDOSコマンドの知識が必要なので分からないなら共立の2100円のライタ使った方がいいぞ。 USB接続だしシリアルポートの相性問題無いし。
299 :
774ワット発電中さん :2008/11/11(火) 20:08:53 ID:kQophPM1
>>298 さんks
おとなしく共立ライタ買っとく。
ちと疑問に思ったんだが、共立ライタってAVRstudio使えるのかな?
あとよく、コンフェグレーションでクロックをイジルとAVRが使えなくなるとかいう
そういう「やっちゃいけないこと」的な注意点ってなんかある?
tiny2313 は要注意 リセッター使えば復活できるが、持ってないので使えません
秋月のmega88来週再入荷するみたいだね
302 :
774ワット発電中さん :2008/11/11(火) 20:37:36 ID:kQophPM1
>>300 tiny2313ってヒューズビット(だっけ)を書き換えると使えなくなるアレ?
逆にtiny2313を使わなければデジットのUSBライタだけでも十分?
気をつけなきゃいけないのは 特定のビットだけだよ
>>299 心配なし。使えます。
ターゲットに給電しない状態のISPですけど、基板にジャンパがあるので、ショートさせるとUSBからデバイスに給電して書き込めるです。
今回はじめてAVRを使うことになったんですが、SPI接続で 困っています。 複数のATtiny2313をSPIでバス接続をしたいんですが、 データシートを見てもSS端子が見当たりません。 tiny2313では複数台の接続はできないんでしょうか? 何かのヒントだけでも教えて頂けると助かります。m(_ _)m
>>306 チップセレクト端子は、適当なGPIOを当てれば良いんじゃない?
SSを下げてから十分な時間を置いて通信を始める様にマスタ側で気を付ければそれで問題ないだろ。
>>307 レスありがとうございます。
やっぱりそういう方法しかないですよね・・・。
バスバッファ用のIC(Enable付き)とか、下手に入れない方が
いいですよね?
送信と受信でクロックを共有するようなので、バッファで遅延
するとおかしなことになりそうな気がしています・・・。
あまり回路設計の経験がないので、いろいろ心配です。
>>308 SPIを通常に使用する環境ならバッファ入れる程度の遅延は問題にはならないよ。
SPIは比較的小規模で同一基板またはごく至近距離での通信を想定したものだから
その範疇で使う分には問題にはならない。
>>287 俺共立USBライター使ってるよ。
書き込み速度も申し分無く、普通に良いですハイ。
ライター自作も結構だけど、最初の1台は動作保証されたものを買うべし。
でないと作ったライターが悪いのか、ISPの配線が悪いのか全く予測が付かない。w
ところでAVRISPmkIIってどうですか?
AVRStudioからキー1発で書き込みたいだけなんですが。ww
311 :
774ワット発電中さん :2008/11/12(水) 13:49:04 ID:4yBHvL9p
>>310 貴重なご意見さんくs
そのライタ本体以外に何か一緒に買ったりしたほうがいいものある?
それと、デジットのHPの写真みるとマイコンが乗っかってるけど、
そこにマイコンを乗っけてそのマイコンに書き込むの?それとも普通にISPだけ?
>>311 共立のサイト見てきたんなら、そこに PDF って書いてあっただろ。
マニュアルが見られるよ。
>>311 ライタの動作にマイコン使ってるだけ。
4〜12MHzのクリスタルオシレータとセラロックか水晶振動子がほしいかも。
ICソケットでライタのアダプタ作ったとき内部クロック以外にしたときに必要なので。
あとは接続するピンヘッダーとかLEDとかタクトスイッチなどなど実験に必要なのを。
314 :
310 :2008/11/12(水) 18:07:50 ID:VOR+VVdW
>>311 >>312-313 の通り。
ISPケーブルが付属してたかどうか思い出せないww
無いなら一緒に買うか作る。
どうせ共立で注文するなら、MIL6Pのコネクタも何個か買っておけば良いかと。
単純にピンヘッダだけ付けておくのも良いけど、逆刺しする可能性もあるので。
それとブレッドボード使うなら、MIL6Pソケット→1Pピン×6本という便利なのもあるので、一緒に買うか作(ry
>>315 >500kHzサンプリングUSBオシロスコープの製作
>■ 最大8個のAVRを2μsずつずらして動作させることで,サンプリング周期をシステム全体で2μsまで高速化しました.
>このテクニックで製作した500kHzサンプリングのUSBオシロスコープを紹介します.
な、なんて力技・・・w
高速なAD変換ICつけた方がいいんじゃ...
でもちょっとやってみたいかもw
清清しくていいと思います。
無理にやらなくていいのに、あえてやる精神ですね。
しかしデータシートのADC解説を見ると、fADC/2より高い周波数成分を入力するなとあるけど、 これは大丈夫なんでしょうか? ・・・あ、だから500kHzが上限なのか(fADCの上限が1MHz)
>>321 いや、一個のAVRのADCは16us間隔(62.5kHz)でサンプリングしているってことでしょ。
それを2usづつずらして8個ならべ後で合成すれば、等価的に2usでサンプリングしたことになる。
原理的には良くわかるけど、なんつぅー馬鹿なことを(褒め言葉)
>>322 いやそれはわかっているんだけど、ADC自体に限界はないのかと思ったわけ。
サンプルホールドにかかる時間がμs単位だとか(それはないか)
想定外の周波数成分があるとADCが妨害されるとか(それはあったけどその限界ぎりぎりを狙ってるっぽい)
ああいうオシロ波形の画面を作る時はどういうアプリで作成すればいいですか?
>>314 概要に AVRWRT本体、USBケーブル、ISPケーブル、CD-ROM。ってかいてある。
店頭だと袋から6ピンのISPケーブルが見えてるよ。
AVRStudioに書き込み一発キーは無いのでクリック、クリック。
>>316-322 トラ技にしては珍しく面白そうな記事だね、今月と来月号は気合い入ってると思う。
ATtiny2313の低電圧版なんですが、 12MHzのクリスタルでも動作可能でしょうか? 分周すればおkなのでしょうか? 手持ちが12MHzしかないんで、、、
サンプリング周期は短くても、帯域が広く取れない良い例。
Tiny2313でA型7セグメントLEDを点けようと思ったのですが、 まったく明かりが点りません。 ちなみにそのポートの配線をLEDに変えたらしっかり点きました。 7セグの故障ですかね?
アノードコモンかカソードコモンの違いだろう
331 :
774ワット発電中さん :2008/11/13(木) 11:35:47 ID:xhuGYOT9
>327 規格外だが多分使える。 もし使えなかったら、fuse書き換えのために外部クロック を用意すること。
ヒューズビットはISPで書き換え可能ですか?
>>330 7セグLEDのVCCの部分にトランジスタをつけてたのですが、
直結でVCCつけたら電気つきました。
ありがとうございました。
>>332 条件付きで書き換え可能。
条件1:ISP禁止ビット(ISPEN)が0(ISP Enable)である事
条件2:動作クロック源選択ビット(CKSEL)が適切に選択されていて
MCUが電源印加後に動作可能である事
条件3:リセットピンがIOに割り振られていない(RSTDISBLが1)事
早い話が、ISPでフラッシュが書き換え可能なフューズビットに設定されていれば
フューズビット自身も書き換え可能。
で、調子に乗ってフューズビット(CKSEL)を不用意に書き換えて
パラレル(12V)プログラムで無いと動かなくなったMEGA88 4個を前に呆然としている俺がいる・・
ckselはクリスタルつけるとかすればいけるんじゃないの
>>334 細かいことだけど、
条件1「:シリアルプログラミング」「許可」ビット(「SPIEN」)が0(ISP Enable)である事。
ヒューズビットは0がONですので、これは禁止ビットではなく許可ビット。ややこしいけど。
>>334 俺も最初の頃mega48か168を2個やっちゃったな。
手持ちのコネクタと74HC244で復活させたが買い直した方が安くて早かった。
阿漕な仕組みだな>Atmel
>>336 うぉおお!指摘thx
自分で[ENable]て書いておいて「禁止」はない鰐。
341 :
308 :2008/11/14(金) 00:56:15 ID:RwVozdPj
>>309 アドバイスありがとうございます。
バッファを入れることにしたいと思います。
SPIのマスターを担当する基板の回路図を書いてみました。
(AVRマイコン・リファレンス・ブックを参考にしました)
ttp://www.uploda.org/uporg1782491.pdf.html 最終的には複数の基板をつくって、PCとのRS232通信をしつつ、
SPI通信で他の基板を制御するつもりです。
他の基板(予定)
・表示機(キャラクタ液晶+AVR)
・温度・湿度計(センサ+AVR)
何かアドバイス頂けると嬉しいです。m(_ _)m
>>336 訂正
条件1「:シリアルプログラミング」「許可」ビット(「SPIEN」)が0(ISP Enable)である事。
↓
条件1「:シリアルプログラミング」「許可」ビット(「SPIEN」)が0(SPI Enable)である事。
スペル似てるから俺も間違えちゃった。
ISP(In-System Programming)じゃなくて(ISPじゃないシリアルプログラミングもあるわけで)
SPI(Serial Peripheral Interface)経由プログラミングなんだよな。
>>341 回路図流れちゃってるのでよく分からないんですが、
マスターでバッファを入れるんですか?理由がよく分からないのですが。
SPIって基本的に基板内通信用だと思うので、速度はかなり余裕を持った方がいいと思います。
バッファの有無で動作が云々という速度で転送するのはやめた方がいいんじゃないかと思うのですが。
外部クロックで発振したいのですが、 セラロック、クリスタル、クリスタルオシレータの使い方がいまいちわからん マイコンのXTAL1、XTAL2につなぐってのはわかったけど、オシレータは出力1本だし・・・
>>344 データシートのシステムクロックの項を参照。つなぎ方の概略も書いてあるよ。
>344 使い方というより区別が付いてないんだな。 クリスタル…水晶発振子。発振させるための回路が必要。 その回路はAVRに内蔵されているので、 あとは発振用にコンデンサ2個付けてXTAL1,2につなげばよい。 クリスタルオシレータ…水晶発振器。クリスタル+発振回路。 電圧かければ発振するので、XTAL1につなげばよい。 セラロック…水晶ではなくセラミックを使った発振子。村田製作所の商標。 発振用コンデンサ2個が内蔵されている。 XTAL1,2につなげばよい。他に部品は不要。 「オシレータは出力1本だし」の理由もこの説明でわかるはず。 精度の違いとかあとは自分で調べてくれ。
クロックついでに interanal RCのクロックはなんでジッタが大きいだね? チャン氏のHPで書かれているけど、正確なタイミングが取れないぞなもし・・・
>オシレータは出力1本だし もし発信器がKTXO-18Sだったら、直結しても動作しないからくりがあったような気がする。
セラロックでコンデンサなしもあるし、水晶でコンデンサ付きもある。
レスありがとうございます。あとは自分で調べてみようと思います。 どうしても分からないことがあったら、また来ますね^^f
外部発振子使うときってダンピング抵抗かます必要あったりする?
354 :
308 :2008/11/14(金) 22:27:53 ID:RwVozdPj
一部のクリスタルオシレーターは直流成分を落とすから 電圧持ち上げないとダメだったような気がする。 嘘だったらゴメス。
>>354 えーと、
PD2〜PD6のプルアップいるかなあ?内蔵プルアップじゃだめですか?
RESETについているR4(10kΩ)は余分で、まずいかも。
リセット内蔵プルアップ抵抗は30〜60kΩとあるので、最悪の場合RESETSW押しても
RESETピン電圧はVcc/4までしか落ちず、tiny2313の外部リセット電圧min値である0.2Vccに
達しないので問題が起こる可能性があります。
ISPコネクタにライタがついている状態でSWを押したときのことを心配されているかも
しれませんが、まともなライターならたぶんHi-ZかLowになるようにできていて、Highを
与えることはないと思います。
357 :
308 :2008/11/14(金) 23:46:33 ID:RwVozdPj
>>356 さっそくのアドバイスありがとうございます!!
>PD2〜PD6のプルアップいるかなあ?内蔵プルアップじゃだめですか?
すみません、自分では判断付かないです。 orz
内部でプルアップされてたことすら知らなかったです。
安全な方を取りたいんですが、どうでしょう?
R4は、JP2をつないだ状態(通常動作時)で、リセットSWを押すと、
5Vがショートする気がしたので・・・。
参考にした回路図になかったのに私が追加しました。orz
外したいと思います。
やっぱりICの内部回路を想像できないといろいろと辛いですね。orz
何が問題なのかが理解できてないです。
またご意見聞かせてください!
JP2の存在意義がわからん RESETをVCC直結にしたらISPから書き込めないぞ
359 :
308 :2008/11/15(土) 00:48:47 ID:h9+ptW26
>>358 ISPから書き込むときは外して、普段はつなげておく必要があると
思っています。
根拠は、AVRのResetピンがLになるとリセット動作がトリガされるので、
リセット時以外はHに保つ必要があると思うからです。
ただ、5VとResetピンの間に制限?(プルアップ?)抵抗を入れた方が
良いのかもしれないと思っています。
初心者なので間違った認識で回路図を書いている可能性が高いです。
なんでもいいのでどんどんご指摘お願いします。m(_ _)m
360 :
308 :2008/11/15(土) 01:40:52 ID:h9+ptW26
>>359 ResetピンもI/Oピンの一つなので
オープン時は内部プルアップが使えたりしないのでしょうか?
マニュアルには、
>>356 が言われているように30〜60kΩぐらいで
プルアップしてくれるようなことが書いてあります。
>>359 J2要らないよ。リセットピンはプルアップされている。
ヒューズビットでRESETピン無効にしたらこのプルアップは外れるが、
その場合はRESETピンじゃなくなるので関係ない。
心配なら、10k抵抗経由でプルアップ。普通必要ないとは思うけど。
>>357 >内部でプルアップされてたことすら知らなかったです。
データシートじっくり読んだ方がいいね。
AVRのIOポートには、プログラムでIOポートを操作することで制御できるプルアップがあります。
スイッチ入力のような簡単なものなら、このプルアップで用が足ります。
>>360 この先につながるスレーブ機器ってSPI制御機器じゃないの?
それなら普通にシリアル3線+対応するSSを各スレーブにつなげば
いいんじゃないかと思うんだけど??
スレーブがSS制御できないものなら、
>>354 の139と合体した方がいいと思う。
PB3/PB4を2to4デコーダー(139)に入れて、GにSCKを入れれば、1つだけにSCKを出せます。
MISO/MOSIはそのまま分岐し、SCKはこの出力を配れば、それでうまくいくと思います。
オモコって、ビックリハウス世代かよ!w リセットピンにプルアップが入ってるAVRと入ってないのがあるから、汎用にするなら入れるべきだね。コンデンサはノイズ除けのおまじない。
366 :
308 :2008/11/15(土) 11:22:44 ID:h9+ptW26
367 :
308 :2008/11/15(土) 11:28:46 ID:h9+ptW26
>>361 ,362,364,365
了解です!
後追いになりますが、しっかりDataSheetを読んでいきたいと思います。
>>363 スレーブ側もATTiny2313を想定しているんですが、これにSSピンが
無いようなんです・・・。
SCKクロックの件、さっそく取り入れさせてもらいます!
>>367 うーん、思い直した。あまり変なことしないで、普通にSPIにした上でスレーブ側でSSを実現する仕掛けにしたほうがいいかな。
>>363 後半は撤回します。
>>360 式でSCKとMISOだけをSSで制御でもいいんじゃないでしょうか。MOSIは放置で。ちょうど139が1個でいけるし。
もしくは、slaveの2313ではSSをAVRのINTにつなぎ、SSがLowに引かれたらUSIをSPI動作設定し、SSがHighに戻ったら割り込みでUSIを停止にしちゃう。
10クロックくらいで送受信体制取れると思う。マスター側でこの時間を取らなければなりませんが。(SSセットしてからSCKを動かすまで少し待つ)
スレーブからデータを返すことがないなら、かなり単純化できそうです。
MOSIはつながない。時々SSをチェックして、SSがHighならUSIカウンタクリア。
常時受信体勢にして、受信し終わってからSSをチェック、SSがHighならデータを捨ててUSIカウンタクリア。SSがLowなら処理に入る。
TWI (I2C)にしちゃうというのも手かも。
なんでここは初心者質問スレになってるんだ? 専用のスレがあるだろう
372 :
308 :2008/11/15(土) 15:23:16 ID:h9+ptW26
お騒がせしてます・・・ orz
スレーブ側を書いてみました。
16x2のキャラクタ液晶の制御を担当する基板です。
http://www.img5.net/src/up7401.png >>368 ご提案ありがとうございます!
ただ、のちのち温度・湿度センサーからの情報をSPIバスで
マスターに送りたいので、バスは送受に対応させたいと思ってます。
今更ですが、設計は汎用性重視ということで!
またマスターとバスの回路図を書きなおしますので、
ご意見聞かせてください。m(_ _)m
373 :
308 :2008/11/15(土) 15:54:40 ID:h9+ptW26
新しい電池として パナソニック アルカリ乾電池9V形 (型番:6LR61XJ/1B) をレギュレータで5Vにして配線したのですが、 AVRの全てのポートが不安定になって 勝手につなげているLEDが点滅したりしてしまいます。 電流が強すぎるってことですか? こんなときみなさんはどうしてますか? (昔 秋月でかった9Vの電池では正常に動きました。)
レギュのアウト側にパスコンいれろ 話はそこからだ
377 :
375 :2008/11/15(土) 18:56:35 ID:KtqNebFC
レギュのアウトに抵抗いれたらちゃんと動きました。 ありがとうございました!
抵抗?
抵抗って万能なんだな…
レギュレータが発振してるだけだろ。
電池の内部抵抗で発振が変わってくるんだ そりゃそうか・・・
試しながら学ぶAVR入門の61ページのプログラムを下記の通り入力しAVRStudioでコンパイルすると、 warningと出てしまいます。もう一度コンパイルするとwarningは出ません。それをATtiny2313に書き込んでも 何も起こりません。割込みを使わないプログラムは正常に動作します。割込みを使うときに何かオプションが 必要なのでしょうか? 回路はPORTBの0〜3に抵抗とLEDをつないだものです。 #include<avr/interrupt.h> #include<avr/io.h> unsigned char x=0; ISR(TIMER0_COMPA_vect){ x++; } int main(void){ DDRB=0x0f; TCCR0A=0x20; TCCR0B=0x05; OCR0A=125; TIMSK=0x01; sei(); while(1){ PORTB=x; } } Build started 16.11.2008 at 13:18:01 avr-gcc.exe -mmcu=attiny2313 -Wall -gdwarf-2 -std=gnu99 -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT test.o -MF dep/test.o.d -c ../test.c ../test.c:6: warning: return type defaults to `int' ../test.c: In function `ISR': ../test.c:6: warning: type of "TIMER0_COMPA_vect" defaults to "int" ../test.c:8: warning: control reaches end of non-void function avr-gcc.exe -mmcu=attiny2313 -Wl,-Map=test.map test.o -o test.elf avr-objcopy -O ihex -R .eeprom test.elf test.hex avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex test.elf test.eep || exit 0 avr-objdump -h -S test.elf > test.lss AVR Memory Usage: ----------------- Device: attiny2313 Program: 192 bytes (9.4% Full) (.text + .data + .bootloader) Data: 1 bytes (0.8% Full) (.data + .bss + .noinit) Build succeeded with 3 Warnings...
RESET端子は、通常使用時はプルアップ抵抗をつけておいた方がいいんでしょうか つけなくても突然リセットがかかるようなことはないんですが
>382 >TCCR0A=0x20; ここはTCCR0A=0x02;でしょ。
TCCR0Aは0x02でした、、、 書き直しましたが結果は同じです。
>382 int main(void){}だから、main()の最後にreturen 0;を書く。
× returen 0; ○ return 0;
試しながら学ぶAVR入門の61ページのプログラムを下記の通り入力しAVRStudioでコンパイルすると、 warningと出てしまいます。もう一度コンパイルするとwarningは出ません。それをATtiny2313に書き込んでも 何も起こりません。割込みを使わないプログラムは正常に動作します。割込みを使うときに何かオプションが 必要なのでしょうか? 回路はPORTBの0〜3に抵抗とLEDをつないだものです。 #include<avr/interrupt.h> #include<avr/io.h> unsigned char x; ISR(TIMER0_COMPA_vect){ x++; } int main(void){ DDRB=0x0f; TCCR0A=0x02; TCCR0B=0x05; OCR0A=125; TIMSK=0x01; sei(); while(1){ PORTB=x; } return 0; } こう書き直しコンパイルしたのですが、結果変わらず・・・
>388 warningメッセージは>382と変わったのかい? warnningが出た、だけじゃ誰も何も分からないよ。 あと、unsigned char x;を volatile unsigned char x;にしてみたらどうか。 最適化オプションは -O0で。
いろいろ調べてみたら、winAVRが2006から割り込み関連が変更になっていたみたいです。 現在使用中のバージョンは2005年のものでした、、、 書籍は2008年発売で書籍で使用しているバージョンは2008年の最新版のようです。 今、最新版をダウンロードしています。
WinAVRはてっきり書籍掲載バージョンか最新版だと思ってそこは言及しなかったんだがw 最新版なら問題なく動くよ。
最新版をインストールし、コンパイルしました。 正常に動きましたヾ(o゚ω゚o)ノ゙ 2日間も無駄にしてしまった・・・・・・
>>392 そういうもんです、でもこれで何かの時に似たようなことがあった時の
自分の対処法の引き出しの一つが増えたわけだから。
めげずにがんばっていきましょ。
>>392 資料書いた人が卒業しちゃって完全に浮いてる大学のプロジェクトとかよりはマシ!
>>383 なんか、定期的に出てくるねこの話題。
・ 普通に使うなら外部プルアップ抵抗不要
・ 信頼性を求める場合やノイズがひどいところでは入れた方が無難
・ あまりでかい抵抗(50kΩ以上)は無意味
・ ものによって違うが内部プルアップ抵抗(等価抵抗)は30〜60kΩ(tiny2313の場合)で
他の一般ピンのプルアップ(20〜50kΩ)に対して大きめに設定されている。
・ 初期の90ATシリーズなどではリセットの内部プルアップだけ(なぜか)数百kΩと大きく、
誤動作が多かったので「リセットは外部プルアップしとけ」が定石だった。
396 :
195 :2008/11/16(日) 21:11:18 ID:DD6aFNnm
遅くなりましたが
>>207 のプログラムでうまくいきました。ありがとうございました。
表示座標設定を4行に対応するように改良したものを載せておきます。よければサイトのプログラムに追加してください。
void lcd_position(char tx ,char ty)
{
switch(ty)
{
case 0:
ty = 0x00;
break;
case 1:
ty = 0x40;
break;
case 2:
ty = 0x14;
break;
case 3:
ty = 0x54;
break;
}
LCD_PORT &= ~LCD_RS; /* RS = L */
lcd_put_ch(0x80 | (tx + ty)); /* Address = 0 */
LCD_PORT |= LCD_RS; /* RS = H */
}
winavrでビットシフトの命令って <<= なんだろうけど これってlslなの、rolなの?
398 :
Atmel :2008/11/16(日) 22:39:14 ID:Ck9Jk/CO
lsl
ROLしたいときはインラインアセンブラをご利用ください
C言語にキャリーやボローという概念は無いからねぇ。
すんさんの掲示板が香ばしくなってるなあ。
周囲はスルー、口出しても終了しろしか言わないというのはいい掲示板ですね。
>>399 ハハハハ、ローテート命令なんて在るわけ・・・
アッタヨ・・しかも1cklcpuダヨ・・
今までビットシフトと論理和で計算させてたけどコッチニ切り替えさせて頂く。
404 :
Atmel :2008/11/17(月) 15:25:59 ID:8jxbwNze
LOLしたいときはAAをご利用下さい。
0blolololo
chanさんの所もひどいよね。
AVRでリアルタイムOS使ってる人いますか?
TINY2313でモータ、サーボの制御をしようと思うのですが、 オススメの本や資料ありますか?
>>407 >>279 のサイトのOSをつかってる。
mega128か2561、もしくはARMでうごくよ。
>>409 解りやすそうだし大学のメカトロニクスの授業の
勉強にもいいと思うので購入してみます。
ありがとうございました。
>おい、ぱど、いいかげんにしとけ >カーッとなっていつの間にやらキャラ丸出しにしてんじゃねえw >お前のような典型的モヒカン族は、2ちゃんとスラドだけで手斧もって暴れてろ >ここでなら幾らでも遊んでやるからさwww
>>413 どっかの掲示板晒し?
そういうのは他所で頼む。
LCD制御に挑戦したいのですが、 送信待ち時間は正確じゃないとダメですか? 内臓RCだと厳しいの?
>>415 長すぎる分にはたいした問題ないから、最悪でも不足しないようにすればいい。
仕様の2倍の時間奢ればまず問題ないでしょう。
>内臓RC
腹時計はクロック進みがち。
レスありがとうございます。 内臓RCでも大丈夫なんですね。 仕様だと4msの待ち時間なら、余裕を見て10msくらいにすればいいんですね。
マイコン初めて数カ月、ようやくIOポート、タイマ、割り込み等を使って、 サーボモータ、ステッピングモータの制御や、LCD表示、アナログのセンサ信号入力が できるようになりました。2313とATmega168を使っています。 お尋ねしたいことがあります。EEPROMはどのような用途に使うと便利なのでしょうか? 正弦波の数値テーブルはどうかと思ったのですが、普通にプログラム中に埋め込んで フラッシュに書き込んでも実現できるのでイマイチな気がしています。 皆さんの用途をいくつか教えて頂けないでしょうか?
マイコンとグラフィックLCDでデジモンやたまごっちを作ったとして、 電池を交換するときなんかに育てたデータが消えないようにするための バックアップとか、、、
>>418 以前の動作のバックアップやレジューム。
用途が浮かばないなら無理して使う必要もない。
>>418 設定値を覚えなければいけない用途。
たとえば、設定項目がいくつかあるような機器を作って、いちいちセットするのが大変だから覚えさせるとか、
使う前に調整が必要なもの(測定器とか)で調整設定値を覚えさせるとか、
何かの値を積算していくものとか。
FLASHとの違いは、プログラム自体から書き換えが比較的容易であること、
書き換え可能回数がプログラム用フラッシュよりも多めであること。
>>418 >>420 の回答がベスト。自分がやりたいことを考えて、それ時合うものを
使えば良い。EEPROMはデータや操作の継続性が必要な用途に向くが、
そんな用途に使わないなら必要ない。
フラッシュとの比較では、書き込みの手間(制限)や書き換え回数で優位性があるが、
本質的な問題ではない。
EEPをデータ読み込みで使えばROMが節約出来るだ〜ね。 良いことに気づかせてもらった。
その回答がベストってことはない。こういうときは前向きに行ってみよう。 「用途が浮かばない」ではなく「用途に気付かない」人へヒントを送る話題だとしたら。 「何だ、それEEPROM使えば良かったのか。次はそうしよう」と 面倒な実装を終えた後からでも気付けば、その人の役に立つ。 逆に、自分では気付かなかったEEPROMの用途から 何かそれを活かした面白い物を作り出す人がいるかもしれない。
お!早速
>>424 みたいに、ほら!
(ヤラセじゃないよ、サクラじゃないよ)
プログラムからフラッシュを書き換えることってできるんだ? なら、EEPROMで足りなくてフラッシュが余ってるなら使えるってことか。 I2Cで増設しなくて済むかも?
>>427 ATTiny、ATMegaあたりからできるんじゃなかったかな。
AVRのピンの入力インピーダンスはどれぐらいですか?
押しボタンスイッチのチャタリングを防ぐには スイッチと並列にコンデンサを入れればいいんですか?
>>430 チャタリング 防止
とかでぐぐればいろいろ出てくると思うけど
ハード的には
フリップフロップ使う
シュミットトリガ使う
とかあるけど
最近はソフトで処理するのを良く見る
何回か読み込んで 何回か以上値が同じなら取り込む
一定時間置いてからまた読んで 値が同じなら取り込む
スピードが必要なければ これでいいわけだな
初めて見たとき感心した
>416-417 個体誤差が±5%に温度係数(動作温度によるクロック変動)あわせても、 十数%の余裕を見たら大丈夫だろ? 4msなら、5ms程度でも大丈夫と思う。 が、低い確率でダメかもしれんから、余裕を見て6ms、ってレベルだろう。 いや、ひょっとして10%ぐらいだったっけか?
>>432 まーいちいち何パーセントまで変動しうるか気にしつつ設定するよりも
倍にしておけば確実に問題ないから、支障ないならそれでいいわって感じだ。
ついムラっとしてポチった 今は反省している
>>436 その下のやつね。
自分もみたとき「なんじゃらほい!」って思ったw
>>436 2端子2色LEDを使ったら面白そうだ。
そろそろ、クリスマス用イルミを作りたくなるシーズン。
441 :
418 :2008/11/19(水) 22:08:53 ID:OY8+U4fE
>>418 です。
皆様のレス、拝見しました。おおよその雰囲気が分かり非常に参考になりました。
とにかくEEPROMに一度チャレンジしてみます!
ありがとうございました。取り急ぎ、お礼まで。
>>441 うーむ、EEPROMって使うのは確かにややこしいから
無理してまで使わなくてもいいと思うよ。
EEPROMを使うこと自体が目的ならいいけど。
>>440 作りたい!
AT90USB1287だからOTG対応なのでは?
>>444 !!
OTGじゃないのは1286だった…orz
446 :
卍 :2008/11/20(木) 17:20:55 ID:Qn+oEXEP
AVRで24ビットのI2S信号を出力できるものはありますか? 自分としては24Bitの信号を出力してAD1852をコントロールしたいです。
オンセミが買収から降りたね。
>>446 >AD1852
これってSPI機能で8bitずつ送れば済まないの?もしくは全てソフトウェア的にとか・・・
L/RCLKはソフト的に生成すれば・・・
つまり、マルチ氏ね
こういうときはマイコン総合スレで聞けばいいのにな。
452 :
774ワット発電中さん :2008/11/21(金) 00:56:13 ID:l8fY1GrH
WinAVR使おうよ
454 :
卍 :2008/11/21(金) 09:55:25 ID:hh7kbU5s
>>451 なるほど、そういうことですか。ありがとうございます。
とりあえずルール違反をしてしまったので、質問は取り下げます。
455 :
774ワット発電中さん :2008/11/21(金) 10:17:17 ID:m1xsxSo0
ルールじゃなくて適・不適判断のレベルでしょ…。
>>454 誘導されて書き込むならマルチではない。
堂々と総合スレに行けばいいと思うよ。
PICスレに書き込んだレスにもその旨コメントするのをお忘れ無く。
PCカードでAVRと通信した例ってあるかな ファンコン付きPCカードとか三軸加速度センサやAVRライタとか作れたら 面白そうなんだが
USBが主流のこの世の中でなぜPCカード? ExpressCardならUSBの線が出てるけど.
PCカードタイプのUSB2.0への変換カードでOK?
460 :
774ワット発電中さん :2008/11/22(土) 08:08:02 ID:SKAmbFPG
AVR→PCカード型AVRライター→AVR ですか? 当然、AVRライターは、AVR内蔵だよね
AVRマイコンの種類について解説してるサイトないですか?
ありましたすいません!!
あ、PCカードってPCMCIAカードとかCardBUSとかか・・・・勘違いorz
466 :
Atmel :2008/11/22(土) 09:49:05 ID:AlaDKklH
PCMCIAカードなら無線LANカードをAVR(だったかな?とにかく同程度の チップ)で制御する話がどっかの日記にあったような。どこだったかな。
467 :
Atmel :2008/11/22(土) 09:52:45 ID:AlaDKklH
>>457 って
PC[PCカード] <====> AVR
のことかなって思ってた。
そういうことで合ってるんじゃないか。 PCからPCMCIAカード通してその先に配線したAVRを制御する、 センサ類を付けたAVRからPCMCIAカード通してPCへ送る、 ってことだと解釈したが。
そうなのか、俺は、AVRをPCカードスロットに直接繋ぎたいという意味だと解釈したけど。 もしその場合は、PCカードスロットは殆どISAバスのようなものなので、 一部のマイコンのように、他のCPUのバスに繋いでスレーブとしてアクセスされるための インターフェースを内蔵してるものでないと、マイコン単体で繋ぐのは難しい。 勿論、間にFPGAを挟むとかすれば可能。
あ、そうそう。PCカードの信号線を直接制御するってことで。 >469のPCMCIAカードってソケットというかケースというかそういう物をイメージしてた。 自分でもわかりにくいと思う。スマン。 で、実際どういう意味なの?w >457氏
よってたかって好き勝手解釈 いつものパターンだねえ・・・ それがいいんだがw
473 :
774ワット発電中さん :2008/11/22(土) 15:44:54 ID:mWl6nvGZ
つまり質問が悪い。
474 :
457 :2008/11/22(土) 22:09:04 ID:HkSgJ+fj
正直すまんかった ノーパソのPCカードスロットがいつも開いてるから それが有効活用できないかなぁと思ったのが発端なんだ PCカードに薄いファンつけてるのを見て、それならついでに信号線もつないでPC側からコントロールしたりとか あとAVRで無線カード使ってるのもあったから、ホストになれるならデバイス側にもなれるんじゃないかなと わかりにくくてすんません
電源だけ取れればいいファンと、信号まで取るのとはだいぶ違うからねえ コントローラみたいな部分がないとダメなような気がするけど・・・ どうなんだろ
ドライバも作らないといけないし面倒だろうな。
>>474 PCからコントロールもできるファンコンPCカードってあった気がするが、
コントロールは外からUSB接続でやってたなあ。
赤外線リモコンの受信機作りたいんだが、 クリスタルは必須?内臓RCじゃ無理?
前NECフォーマットの読むやつ作ったけど、送られてくる信号の誤差も 大きいから余裕だったよ。
俺も内蔵発信で作った。 受信はキャリア作る必要ないしね ただし、送信側のビットレートはかなり変わるので 追従するためにソフトに工夫がいるよ
>>478 自分も内蔵発振でOKでした。
同じくNECフォーマットで
tiny13V電池駆動→tiny45V電池駆動で飛ばして問題なし。
実は拙者も・・・
実は我が輩も……
オレも内臓…
今日はモツ鍋バーティなのか?
487 :
Atmel :2008/11/23(日) 23:56:40 ID:5oif00Z0
俺は腹時計でやったから堂々と内臓したと言える!
>>487 ATMELが空腹なのはよくわかった。
モスバーガーに釣られなかったのはえらい(のか?)
トラ技の挿絵で、チップを中華なべで炒めてるのがあって、 なぜかめちゃくちゃうまそうに思えた
>>489 それって油で基板を揚げてチップを取り外す技じゃ・・・
おれの内蔵も内蔵・・・アレ?
おら、表面実装はホットプレートで焼いてます。 240度でクリームがトロ〜リ溶けたら、さっと冷ますのがコツで オーブントースターで調理する方法でももおいしく頂けます。
プラバンのシュリンクバッチもそんな作り方だな
また懐かしい記事を。 そうそう。ぱ研さんです。 Treva解析記事は大変参考になりました。
鉛中毒になりそうだ
ウチはリフロー通s(ry
AVRでNECフォーマットの赤外線リモコン受信機の制作が 紹介されているページを御存知の方おりますか?
USB関係のわかりやすい説明のってるところってないかな HID対応のJoystick作ってみたいんだが
ATMega32U4っておもしろそうだけどデジ鍵までリール扱いなのね…
割り込みの処理中に割り込みって入れられますか? 具体的には、ピン変化割り込みの処理中にタイマー割り込みで変数のカウントアップとかです。
没有問題
>>500 割り込みを許可すれば、入れられる。
ただし割り込みは特にC言語などで書かれた場合はスタックを豪快に消費するので、
予想以上に時間とスタックメモリを使ってしまうことに注意。
>>501 まさにそんな感じ?w
>>500 チャタリングなどで、ピン変化割り込みに対しさらにピン変化割り込みが多重に何度もかかるかもしれんことにも注意。
>>500 何回もすまんです。
タイマーのカウントアップについては、割り込み禁止中でそれを見たい場合、
それを解釈する時点でTCNTレジスタとカウントアップ変数と共に、TimerOverflow割り込みフラグも見ればいいのでは。
TCNTが0を通過して間もない(例えば8bitで128未満とか)場合で割り込みフラグが立っていれば、
カウントアップしそこねていると考え、割り込み禁止+カウントアップ処理+割り込みフラグクリア+必要なら割り込み許可を行い、
TCNTが0を通過する前と思われるタイミング(例えば8bitで128以上とか)の場合でフラグ立っている場合は、
カウンタ値を取得した後オーバーフローしてまだカウントアップ処理されていない考え、TCNTとカウンタ変数はそのまま処理、
割り込みフラグもさわらずにおく。
もちろんタイマー周期より充分短い(最悪でも1/4くらい?)時間の割り込み禁止時間しかないことが前提。
めいよ〜まんたい
メイヨーウェンティ
北京語でおk
割り込み中に割り込みは入らないよ 割り込みが入ってもフラグが立つだけで、retiされるまで次の割り込みには行かない
>>500 の用途からすると多重割り込みは必要なさそうだけどね。
>>498 PS2/3用のコントローラーは作ったことある。
AT90USBでだけど。
AT90USBKEYは参考になるよ。
あと、バスアナライザは必要かと。
レスありがとうございます。 赤外線リモコンの受信機を作るために、 受信モジュールのピン変化割り込みをかける ↓ ピン変化割り込み中にタイマー割り込みで時間を数えて信号を読む みたいなアルゴリズムを考えたのですが、別のやり方を思いついたので上記のやり方は却下しました。 そのやり方でプログラムを書いて見たのですが、上手く動きません・・・ NECフォーマットの信号を読みたいのですが、参考になるサイトや書籍を御存知ないでしょうか? また、過去に赤外線リモコン受信機を制作された方がいましたら、 ソースを見せていただけませんか? 参考にさせて下さいますと幸いです。
>>500 具体的にどんなことをしたいのか書いた方がいいね。
一般的には許可しないでどうにかするほうがいいと思うけど、何をしたいかわからないとなんともいえんし。
AVRを2個使うとか
赤外線リモコンの受信ならタイマ割り込みで周期的にポーリングする方法でも良いんじゃないかな。
>512 「AVR 赤外線 リモコン」でググれば参考になるサイトがいくつも見つかる。 NECエレクトロニクスのサイトではフォーマットをズバリ解説してる。 自力で作れるくらいの情報は集まると思う。健闘を祈る。
俺もリモコン壊れそうだしつくりたくなってきた
IRリピーター作りたくなった。
ストアー&フォワード型だとできそうだけど そのまんまだと離れてないとできなそう
IHヒーター作りたくなった。
522 :
512 :2008/11/26(水) 07:10:40 ID:w83P+aJR
質問なのですが、 シャープのリモコンはNECフォーマットですか? また、受信モジュールからの信号はばたつきがあるのですか?スイッチのチャタリングみたいな現象。 仕事が終わったら制作の続きをしようと思います、、、
>>522 シャープ違ったはずだぞ。
外乱光(蛍光灯とか)で信号がバタついた事がある。
えーシャープ違うんですか・・・ ずっとシャープで実験してたのに・・・
シャープなら家電協フォーマットでは?
NECフォーマット != 家電協 TRUE?FALSE?
NECも昔は家電やってたんだが NECの洗濯機、NECの冷蔵庫、NECの掃除機・・・
帰宅して東芝のリモコンで実験したら動きました、、、 ふぅ・・・
えっ、今はやってないの? うちの冷蔵庫はNEC製(多分他社のOEMとは思うが)
NEC カラーテレビ「太陽」、高橋秀樹がCMに出てたな
NECが三洋を買収すれば、再び家電に復帰できたかもな スレ違いスマソ
三洋買収はGSがごねてとん挫しそうだとか スレ違いスマソ
534 :
774ワット発電中さん :2008/11/27(木) 02:13:46 ID:UL+mPHTT
なんかGHQの命令で分離したらしい。 軍事がらみの日本電気、民生用の新日本電気。
モーターの回転数を計る回路を作りたいのですが、 モーターにつけたギアが一回点するごとに スイッチをONにするギミックを作って スイッチON割り込みでカウント するしか方法はありませんか?
536 :
774ワット発電中さん :2008/11/29(土) 21:28:26 ID:mO/HpuyD
・汎用レジスタって、その番地 = 変数 でプログラムするとレジスタに変数を記憶できるの? ・特殊レジスタって、結局なんなの? ・入出力とかのpin設定を何もしないと、pinはどういう動作をするの?(pinの初期値ってあるの?) ・0xFFとか$3Fとかの表記ってなんぞ? こんな初歩のお話で恐縮です。初歩過ぎて手持ちの教本は教えてくれないとです。 どなたか回答ください
537 :
774ワット発電中さん :2008/11/29(土) 21:29:23 ID:mO/HpuyD
>>535 ホール素子?だっけ、ギアの波を数える部品ありますぞ
>>536 ・そう
・特定用途や特定効果を出すのにしか使えない専用レジスタのこと。
スタックの自動管理用とか、シリアル通信の通信速度設定用とか。
・初期値がある。データシートに書かれてる。
・1,2,3,...と同じ数の数え方で、表記方法だけが違う。
10進法:0 1 2 3 4 5 6 7 8 9 10
2進法:0b0000 0b0001 0b0010 0b0011 0b0100 0b0101 0b0110 0b0111 0b1000 0b1001 0b1010
8進法:00 01 02 03 04 05 06 07 10 11 12
16進法:0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xA
どの表記法かの判定は頭の書き出しで変えるルールが一般的で、
10進法なら普通にそのまま、8進法から0をつける、16進法なら0xをつける
などする(使うコンパイラなどによって異なることがある)。
540 :
774ワット発電中さん :2008/11/29(土) 22:09:53 ID:mO/HpuyD
>>539 非常に分かりやすい回答サンクス。
特殊レジスタってのは書き換えて使うの?
教えてくれた例で言うと、たとえば通信速度なんかは
その部分の数値を増減して設定するとか?
それと、pinの初期値ってのは、データシートのpin配置図で描かれている
()書きのされていない方
例:PA1(XTAL2) だったら PA1が初期値
ってことですか?
541 :
539 :2008/11/29(土) 22:21:10 ID:4BJmHJO7
うぉ、8進法の所まちがえた 8進法:00 01 02 03 04 05 06 07 010 011 012 です。 なんで表記方法を変えるかというと、人間がその数値の意味をわかりやすく するため。たとえばピン6本のLEDの状態なら 0b001010 の方がどれが点灯しているか直感的にわかる。16進数はコンパクトに 表記できる、2進数と相互変換が楽、2進表記は実はソフト側であまり 対応していない、などの理由で頻繁に使われる。8進数は16進数ほど メリットがないためあまり使わない。 なんで8とか16なのかというと、8進数なら0b000の3ビットを、16進数なら 0b0000の4ビットを表現できるから。0b00の2ビットじゃいかにもパワーが 足りないし、0b00000の5ビットだと32進数になって"W"までアルファベット 使わないと表記できず、そんなの人間の方が覚え切れん。
今日千石行ったらAVRを見つけた 種類と価格は覚えてないけどmegaとtinyが10種類くらいあって値段もそこそこだった
>541 8進数は人がデフォで四則暗算可能なので、昔よく使われた。 ケタが増えて4桁区切りの必要性が増し、すたれただけ。 頭に'0'をつけるだけというとっても楽な表記法はそのなごり。 16進数のが本当に便利なら16進数表記のほうを'0'つけるだけにするがな。
544 :
539 :2008/11/29(土) 22:37:00 ID:4BJmHJO7
>>540 うぉ本当に初心者モードですね。ガンガレ。
> 特殊レジスタってのは書き換えて使うの?
書き換えて、というかデータシートに「115.2Kbpsで通信したければ
$1FをレジスタHOGEREGにセットしろ」とか書き換え方法も含めて指定されます。
大抵は普通のレジスタ同様にLDとかMOVとかするだけだけど、たまに「まずAの
レジスタをセットしてからBを」みたいな手順縛りがある。増減てのがADDとか
演算して操作するのかという意味なら、そういう操作は特殊レジスタは
サポートしてないことが多い。
どのレジスタにどの演算(マイコン命令)ができるか、というのは
マイコンの設計(つか配線)の制限で、これもデータシートに書かれてる。
専用の命令が必要だったりする場合もある。
> 例:PA1(XTAL2) だったら PA1が初期値
これは間違い。上のは PA1 ピンと XTAL2 ピンは共用ですよ、って意味。
PA1: PortA という8bit単位で入出力できるポートの #1 ピン
XTAL2: 外部クロックの接続ピン
で、共用なので、外部クロックをつなぐなら入出力用にPA1、そして
おそらくPortA全体も使えませんよ、と読む。
初期値や初期状態はPA1の説明か、PortAの説明か、ポートの全般解説かの
どこかの章に書かれてるはず。
こういったPA1(XTAL2)などの表記・用語や、説明がどこに書かれてるかは
マイコンによって違うので、データシートはマイコンごとに読み方が微妙に
違う。これも初心者ははまりやすい。
545 :
774ワット発電中さん :2008/11/29(土) 22:48:23 ID:mO/HpuyD
>>544 鬼のように初心者です。
>$1FをレジスタHOGEREGにセットしろ
アドレス1Fのレジスタを1にしろ ということでFA?
>で、共用なので、外部クロックをつなぐなら入出力用にPA1、そして
おそらくPortA全体も使えませんよ、と読む。
なるほどなるほど。この辺は一応分かったつもりです。
>8bit単位で入出力
1CPUクロックの波が終わるまでに8回ONとOFFを繰り返せるの?
>初期値や初期状態はPA1の説明か、PortAの説明か、ポートの全般解説かの
どこかの章に書かれてるはず。
ATtiny2313の日本語訳とまたにらめっこしなきゃな・・・
>>545 > >$1FをレジスタHOGEREGにセットしろ
> アドレス1Fのレジスタを1にしろ ということでFA?
ちがうちがう この言い回しだと
ラベルHOGEREGのレジスタに値$1Fを入れろってこと
アドレスに関しては言及していないが、データシートに書いてあるし、
アセンブラやCのヘッダで定義されていてそのままプログラム中でラベルを使える
547 :
539 :2008/11/29(土) 23:11:07 ID:4BJmHJO7
ううむ。データシートを読むためにはいろいろな前提知識が必要なんだな。 >> $1FをレジスタHOGEREGにセットしろ > アドレス1Fのレジスタを1にしろ ということでFA? いやいや。上は「Atmelのアセンブラで書く場合」 MOV $1F, HOGEREG でセットできるよ、という説明。 レジスタHOGEREGの実際のアドレスがいくつなのかは、データシートの アーキテクチャ解説の章にあるであろうメモリマップ一覧にたぶん書いてある。 で、「Atmelのアセンブラの場合」というのがポイントで、別のアセンブラや コンパイラでは "HOGEREG" とは書けないことがある。Atmel 以外のベンダも 同じにしようとはするけど、"HOGE_REG" だったり、 set_sfr_register(<実際のレジスタアドレス>, 0x1F); とかかもしれない。データシートはあくまでマイコンメーカが直接提供する HW/SWの中で通用する用語がベースなので、アセンブラ・コンパイラの ベンダが別なら、そこでのやり方も合わせて覚えなくてはならない。 これも初心者がはまる理由のひとつ。どこでも HOGEREG じゃないの?と 勘違いするわけだ。 >> 8bit単位で入出力 > 1CPUクロックの波が終わるまでに8回ONとOFFを繰り返せるの? ちがーう。PortA という8ピン束ねた入出力ができる。つまり、 MOV 0b10101010, PA などとして8つのピンをまとめて操作できる。何クロックかかるか、とか、 「同時に」変わるのかどうか、はマイコンによって異なる(まあAVRだと 1クロックで同時に変わるだろうけど)。 なお、PA1とXTAL2が共用だと、 MOV 0x10101010, PA は PA1 が XTAL2 に干渉するのでできない。その場合 SBI PA2 とかPA1を除いた他のピンを個別に操作していく必要がある。つまり、 PortAの残りのピンの入出力を「同時に」行うことは不可能になり、 「同時に」制御する必要がある外部回路を接続できなくなり、設計に 影響してくる。 #書いてるアセンブラは最近遠ざかってるので適当です
548 :
539 :2008/11/29(土) 23:17:48 ID:4BJmHJO7
補足: >・・・は PA1 が XTAL2 に干渉するのでできない これは XTAL2 としてそのピンを使う場合ね。
549 :
774ワット発電中さん :2008/11/29(土) 23:35:01 ID:mO/HpuyD
>>546-548 激しくさんks。゜(⊃Д`。)゜。
すごくよく分かりました。ありがとうございまつ
まさに手探りの勉強だけどがんばります
550 :
539 :2008/11/30(日) 00:33:02 ID:KhIQvc3r
まあデータシートを完全に読みこなすより、LEDチカチカから実際に やってみたほうがいいよ。 ・LEDチカチカでコンパイラ/アセンブラでのソース書きと書き込み作業ができるようになる ・キッチンタイマーを作ってみて特殊レジスタと割り込みの基本を学ぶ ・シリアルポート入出力で外部とのデータ交換方法を学ぶ ・LCD出力で外部デバイスの制御の基本を学ぶ ・外部ADCとかで規格化されたバス(SPI/I2C/...)の?
551 :
539 :2008/11/30(日) 00:33:58 ID:KhIQvc3r
あれなんか切れたので再投稿: まあデータシートを完全に読みこなすより、LEDチカチカから実際に やってみたほうがいいよ。 ・LEDチカチカでコンパイラ/アセンブラでのソース書きと書き込み作業ができるようになる ・キッチンタイマーを作ってみて特殊レジスタと割り込みの基本を学ぶ ・シリアルポート入出力で外部とのデータ交換方法を学ぶ ・LCD出力で外部デバイスの制御の基本を学ぶ ・外部ADCとかで規格化されたバス(SPI/I2C/...)の使い方を学ぶ ・外部スイッチ入力でチャタリング除去などの物理デバイスの使い方を学ぶ マイコンの基礎の基礎だとこんなところか? さらに先にはDMAだとかタスク管理だとか仮想メモリとかがあるけど、 もはやAVRの世界ではないな。
>>542 結構昔から千石はおいてなかったか?
千石で買おうと思ったこと無いからはっきりとは覚えてないけど
>>542 なぬ!それって大阪店でしょうか?
もしそうなら俺の千石への貢献度Upかもw
>>535 回路だけでやるとなると一時的にモータをOFFにして慣性で回ってるモータの起電力を測定するとか?
センサ入れていいならタコメータとかロータリーエンコーダとか・・・
スイッチだとチャタリングでひどいことになりそうだな
チャタリング処理入れたら回転数上限ができるし
>>535 ボールマウスばらしてフォトセンサーむしって使うとか
凹形をしてて、へこんでる部分にLEDとフォトダイオードが向かい合わせに入ってる奴
2回路入ってるけど回転方向検知しないなら片方でおk
まあチャタリング処理は必須だが
556 :
774ワット発電中さん :2008/11/30(日) 18:19:22 ID:4bQsnhXn
tiny2313で今からはじめてのプログラムを作ります。 赤色LED一つと適度な抵抗を使って、1秒毎にLEDが点いたり消えたり するプログラムです。 こんなクソ簡単なプログラムを解説してる本も無ければHPもないので お知恵をお借りしに来ますた。 条件:PB0→抵抗(470Ωくらい?)→赤色LED→電池マイナス配線 電池プラス配線→Vcc GND→電池マイナス配線 プログラム要件:1000ms毎にLEDを点滅 #include <avr/io.h> int main(void) { /*以下pinの初期設定*/ DDRB = 0x1; /*以下点滅に関わる部分*/ portB = 0x1; wait(1000); portB = 0x0; wait(1000); return; } 素人頭で頑張ってこんな感じです。 絶対に間違ってる自信あります。 どこをどうしたらいいか、どこが分かってないか 教えてくださると助かります。おながいします 環境:デジット製USB WRT(ライタ) AVRstudio4 AVR-GCC
知らんけど、それで点滅を「繰り返す」と思う?
コンパイルとシミュレーションはしたわけ?
>>556 1)電池のスペック(種類と電圧とメーカーと購入場所と賞味期限)が不明
ループが……いや何でもない
561 :
774ワット発電中さん :2008/11/30(日) 18:43:05 ID:4bQsnhXn
562 :
774ワット発電中さん :2008/11/30(日) 18:49:07 ID:9mt/Fqji
wひぇ(1) { 云云間ぬん } って知らん?
>>561 なんでreturnでメインに戻るのだ?
マイコンの勉強の前にCのお勉強が必要じゃね?
565 :
774ワット発電中さん :2008/11/30(日) 20:03:03 ID:4bQsnhXn
>>562 わからんです^^^^^
>>563 勘違いしてました。サブルーチンからの復帰ですね^^
>>564 同時進行で頑張ってます^^;
結構前に勉強してたのですが、時間が経ってて忘れてるWWW
てか疑問なんですが、c言語の関数は全て使えるんですか?
>サブルーチンからの復帰ですね^^ それはBASIC……
>>565 >>556 のコードじゃ点滅が1回しか実行されないのおわかり?
while(1)/*繰り返処理*/
{
/*以下点滅に関わる部分*/
portB = 0x1;
wait(1000);
portB = 0x0;
wait(1000);
}
LED点滅とかむしろ最初にやるだろ。 探し方が悪いんだよ。 俺なんていつもLEDなんて光らせて何が面白いんだちくしょおおおおおおおおおおみたいなこと言ってるし。
569 :
774ワット発電中さん :2008/11/30(日) 20:28:27 ID:4bQsnhXn
>>567 あれ、もしかして見当違い?
自分はプログラムはリターンまで行くともう一度最初から繰り返すものだと
思ってましたけど、リターンで戻るとそこで終了する?
WHILEってのは繰り返し処理なのは分かりました。
()の部分が真の間だけ繰り返し続けるらしいのですが、これを
一定回数繰り返し後、偽にする例文を作って頂けませんか?
同時進行せず、Cのお勉強からした方がいいぜ。 マイコンとその付属ライブラリって結構制限が有るから。
>>569 どこの誰だか知らないけれど、そこからmain()呼ばれて
どこの誰だか知らない所へreturnすると
どこの誰だか知らない所しか、その後の動作は判らない。
AVRはスリープじゃなかったっけ?by AVR未経験より
573 :
774ワット発電中さん :2008/11/30(日) 20:37:21 ID:4bQsnhXn
>>570 AVRで扱える関数ってどっかに一覧見たいのないですかね?
釣りなんだろうな・・・ 初心者スレにもおかしなCのソース貼ってそれっきりのヤツいたし
>>573 avr-libcのドキュメントにあるだろ。
つかCも分からんのにそんなの気にしてもしょうがないだろ。
>>569 #include <stdio.h>
int main()
{
printf("hell world!\n");
return;
}
を実行したら、
延々とhell world!
が表示されるとでも?
577 :
774ワット発電中さん :2008/11/30(日) 21:11:55 ID:4bQsnhXn
>>571 親切にありがとうございます^^
forの存在も知ったわけですが、forと同じ動作をWHILEで
やるとどういう構文になるのかしらーと思ったわけです。
リンクさんks
>>575 あーなんというか、C言語の本で勉強しても
AVRで使える部分と使えない部分ってのが出てくると思うんですが、
そこの線引きが出来れば無駄を省いて勉強できるから効率いいなと
思ったわけです。
578 :
774ワット発電中さん :2008/11/30(日) 21:15:17 ID:4bQsnhXn
>>576 ええ、もちろんです^^^^^^^^^^^^^^
>>578 まず、LSI C-86 v3.30c 試食版 をダウンロードしてドスプロンプトで使って
C言語を勉強しろ。 まずそれからだ
>>556 まずはC言語のお勉強が必要ですね。
>>578 みたらどうもネタで釣りしているような気がしてきたけど。
wait()関数どこで定義しているんだ?
>>577 基礎の基礎も出来ていないのに、省くとかしても意味が無い。
というか結局全部おぼえることになる。
あれか?上司に来週までに全部やれるようになれとか、卒論の締め切りで死にそうとかそういうオチか?
>>577 whileなら
int i = 10; // 10回繰り返す
while(i--){
// 何か
}
で、いいんじゃない
>AVRで使える部分と使えない部分ってのが出てくると思うんですが、
>そこの線引きが出来れば無駄を省いて勉強できるから効率いいなと
そういうことして手を抜くからわからなくなるんだよ
基礎の基礎だけでもちゃんとやろうよ
関数とはいいから構文や制御構造とかは調べればいくらでも資料あるんだしさ
583 :
539 :2008/11/30(日) 23:54:18 ID:KhIQvc3r
最初がC言語だとスタートアップルーチンとかmainとは何かとは知らないで マイコンのプログラムが書けてしまうのが欠点だな。 まあ、こんな話は1980年代に散々やったと思うのでいまさらだし、 とりあえずCで動くものを触りながら入門したほうが現代ならいいだろうから しょうがないんだけど。
584 :
774ワット発電中さん :2008/12/01(月) 00:29:54 ID:R4xq5Kx/
Cがどうこうよりも、まずプログラムの流れとか 動作とかそういうのをわかっていないと思われ 基本の構文は、覚えないとだめだろ?
>556 >こんなクソ簡単なプログラムを解説してる本も無ければHPもないので この時点で釣りじゃないのか。 LEDチカチカを説明しない本なんてあるのかい。 調べる態度も見えないし、このスレで何でも教えてもらおうってか。
どこかで宿題で出されて丸投げしてるんだろうさ
マイコンを理解しようとするならCからじゃないだろw
マイコンの内部動作を理解するという意味ではアセンブラが向いてるだろう。 マイコンで何かを制御する方法を理解するという意味ではCでも構わない。
>>589 うーむ、言いたいことは分かるけど、
マイコンの内部動作と言っても、スタック制御やメモリ管理(レジスタの使い方とか)などはお任せで、
SFRの操作による各種機能の実現を学ぶだけなら、Cもアセンブラもかわりないのでは?
それはマイコンの理解じゃなくてマイコンの周辺機能の理解であって、
「マイコンで何かを制御する方法」ということかもしれんけど。
スマン、そんなに深く考えて書いたわけじゃなくて Cでもいいんじゃない?って言いたかっただけです。
そもそも件の主は、"C/C++"でAVR弄る前に 構造化プログラミングの基礎とかを学んだ方が良い気がしてきた。
こんな簡単なプログラムのことでウダウダいってる糞スレw
>>593 プログラムの中身はほとんどの人が放置じゃん。
Cの勉強しろでFA。
596 :
774ワット発電中さん :2008/12/01(月) 15:50:53 ID:Jye3wL+2
プログラムの中身はほとんどの人が放置じゃん。
もしや・・・この流れ・・・覚えがあるぞ・・・ エンコーダのプロの方だろ!wwwwwww
598 :
774ワット発電中さん :2008/12/01(月) 20:57:38 ID:WleQblo2
wwwwwww
>>593 アセンブラ一択のPICユーザーの方ですね、
悩みがなくていいですね。
彼らは古いチップに固執するマゾだから、そっとしてあげようよ。
あ
アレは「コンピュータ」に周辺機器が乗ってるって考えるからダメなんだ! 周辺機器に「制御用の何か」が乗ってるって考えないと頭がおかしくなる。
>>602 マイクロコントローラなんて所詮シーケンス制御の後継みたいなもんだし、そういうものでは。
周辺機器の制御部が高性能化しただけ。
604 :
774ワット発電中さん :2008/12/05(金) 15:10:17 ID:0YEdsJ5I
低周波発振回路について質問! とりあえず、32.768kHzのクリスタルつないで低周波クリスタルモードにしたんだけど、 オシロスコープで発振波形を観察しようと クリスタルの足(ICのXTAL2)にプローブあてたけど波形が出ないのなんで? プローブのGNDをVCCにつなぐと観れるんだけど、何得できないんだけど…。 ICは秋月とかで売ってるMega164P-20PUの40ピンのゲジゲジICです。
インピーダンス変換
オシロ(プローブ)の使い方が悪い
単純に考えると・・・トリガレベル?
オシロのプローブから見た入力インピーダンスがどんだけかと・・・
>>604 >プローブのGNDをVCCにつなぐと観れるんだけど、何得できないんだけど…。
あの、まさかその前はプローブのGNDをどこにもつないでないとか?
32kHzくらいの周波数では、プローブだけつないでも何も出ない気がする。
だからあれほどFETプローブを使えと
611 :
774ワット発電中さん :2008/12/05(金) 18:28:27 ID:fGfgID1d
マイコンといえども水晶近辺だけはアナログ発振回路だから 安易にプローブ繋げればいいってものでもない
アンバッファードのゲートを噛ませばオシロでも見られるのかね?
614 :
774ワット発電中さん :2008/12/05(金) 21:55:08 ID:yF5jK0Bo
特定のpinの状態(hi,low)を見るにはどういう文を使えばいいの? 自分はint b=PINDって文でpinDの状態をbに代入してたんだけど、これだと pinDが全て入力プルアップされてるとおかしいことになるよね。 だれかおしえてくださえ
615 :
774ワット発電中さん :2008/12/05(金) 22:05:59 ID:yF5jK0Bo
>>614 すまん、日本語おかしすぎた。
PINDの状態をdに代入する為に
int d = PIND っていう文を使っていたんだけど、これだと
複数のPINDに入力が合った場合とかに対応できませんよね?
そこで、特定のpinだけの状態を見れる命令ってありませんか?
ということです( ゚д゚)
>>614 入力が全てプルアップされている状態での適切な値がちゃんと入力されますよ。
618 :
774ワット発電中さん :2008/12/05(金) 22:11:45 ID:yF5jK0Bo
>>617 ビットは分かります。
それを命令文にしたときに、どういう構文にしたらいいのかわからんのです( ゚д゚)
>複数のPINDに入力が合った場合とかに対応できませんよね? なんて書くからだろ 「PINDに入力ビットが複数合った場合とかに対応できませんよね?」 なら、まだ日本語が分かるけど… 本当に分かっているなら 「PINDの特定ビットの状態を変数へ値(1 或いは 0) として代入したいのですが」 とか書くとか
620 :
774ワット発電中さん :2008/12/05(金) 22:21:12 ID:yF5jK0Bo
おれPIC勉強中だからAVRは分からないけどPIND.3とか書くんじゃないの?
622 :
774ワット発電中さん :2008/12/05(金) 22:23:58 ID:yF5jK0Bo
>>621 つーかアンタ多分何か初心者用の本5,6冊買って読んだ方がいいと思うよ。
>>621 そのへんは言語次第。
>>620 というわけで、どんな言語使っているかをまず明らかに。
C言語らしいが、いろいろあるから・・・
勝手にWinAVRということにして書くと、この場合は普通にマスクとandを取ればいい。
たとえば、PINDのPD3の状態を知りたいのなら、
d = PIND & (1<<3);
とすればいい。(1<<3)は3番目のビットに対応する8になり、これとPINDをand演算すれば、
結果はPD3=hiなら8、PD3=loなら0になる。
C言語ならifなどの条件分岐文は単に0か0以外かで動作を変えるので、たとえば、
d=PIND;
if (PIND & (1<<3)) hogehoge();
とすれば、PD3=highの時関数hogehoge()をコールするようにできる。
複数ピンもOK.
d=PIND;
if (d & (1<<3))
{
PD3=hiの処理
}
else if (d & (1<<2))
{
PD2=hiの処理
}
なんて感じでいける。
>>624 >d=PIND;
>if (PIND & (1<<3)) hogehoge();
まちがい
>d=PIND;
>if (d & (1<<3)) hogehoge();
626 :
774ワット発電中さん :2008/12/05(金) 23:02:17 ID:yF5jK0Bo
>>623 AVRの初心者用の本が5,6冊も発刊されているなんて知りませんでした!!!!!!!111
>>624 うおおおまさにこれですよ。
例文で頂けて恐縮です。感激です。さんksです
1ビットだけ調べたいなら bit_is_set() / bit_is_clear() も有りかと if ( bit_is_set(PIND, PD3) ) { /* Port D の bit 3 が Hi の時の処理 } if ( bit_is_clear(PINC, PC4) ) { /* Port C の bit 4 が Low の時の処理 }
ビットフィールド定義しろ
つ共用体
gccでは使えるんだな。 でも面倒なんで旧来の方法でやっちゃうな(^^;) マクロは見やすいけど、いつどうなるかわからんし。
>>626 AVR関係ない。ビット・バイトといった基本とC言語の基本から
おさらいしてみろって言われてるんだよ。
v |= HOGE_MASK;
v &= ~HOGE_MASK;
if (v & HOGE_MASK) ...;
は超基本だから覚えとけってこと。
WinAVRのgccなら、二進法を 0b00001111 っていう風に0bサフィックスを付けられることも覚えておくと役に立つ。
最近この手の話題多いなあ。 まあ他のネタもないからいいか・・・ 本当は 「マイコンのためのC言語質問スレ」 なんてのをたててそこでやるべきなんだろうか?
I/Oレジスタのビット 直接見ればいいじゃん
>>634 Cの基本ならスレ立てるものでもないと思うし
マイコンごとの方言部分は各スレで良いんじゃないかな。
637 :
774ワット発電中さん :2008/12/06(土) 20:02:20 ID:YLoCEtZ8
ATtiny2313のPD3をINT1にしたいのだが、その場合 GIMSK=0x80とすればいいんですよね?
>>637 うい、多分Win-AVRでの話しだと思うけど、
関係ある部分の流れとしては、
ISR(INT1_vect)
{
//INT1割り込みきた!
return;
}
main()
{
cli();//とりあえず、全割込み不許可
DDRD = 0xF7;//PD3(INT1ポート) だけ入力に
PORTB = 0x04;//PD3プルアップ設定に
MCUCR = (1<<ISC11) | (1<<ISC10);//立上がり割込み
GIMSK = (1<<INT1);//INT1割り込み許可
sei();//全割り込み許可
・・・
}
こんな感じかな?
639 :
774ワット発電中さん :2008/12/06(土) 23:10:40 ID:YLoCEtZ8
>>638 詳しくさんks。
ところで、MCUCRのところを設定しようとして間違えてMCUSRの値をいじくってしまったwww
そんで初期値に戻そうと思ったけども、データシートに初期値が無い。
MCUSRってリセット関係のレジスタだからそのままほったらかしても
問題ないような気がするんですが・・・どうなんしょ
Default: 0x64 0xDF 0xFF low hight ext Default Low Byte value is 0x64 Divide clock by 8 Internal RC Oscillator (8 MHz)? This means default speed is 1 MHz 要検索努力
>636 マイコンごとの方言といえば。 STmicro系(またはCortexM系?)の、 「ビット演算がないマイコンでビット単位入出力を可能にする仕組み」が面白そうだったな。
Cでこういう風に書くと v |= HOGE_MASK; v &= ~HOGE_MASK; Read-Modify-Writeになるんじゃないの? コンパイラがうまいことビット操作命令にするの? コンパイラの仕様とか設定によるか・・・
WinAVRについて、 フラグビット関係では、その書き方しないほうが良いとか どこかのサイトで見た気がするね。うろ覚え。 いずれにせよ、makeしたあとlssファイル覗いて確認して、 場合によってはインラインアセンブラでちまちまコツコツ やるのがいいんじゃないかな、俺のやり方だけど…。
>>639 MCUSRの初期値は0x00。某日本語データシートの23ページあたりに書いてあります。ちなみに
レジスタはヒューズ値のように記憶されてなくて、リセットで固定値がセットされます。
>>642 AND/ORが1bitならcbi/sbi命令に変換されちゃいます。
今日千石(秋葉原店)で見つけたAVR ・ATMEGA1281 ・ATMEGA32 ・ATMEGA8 ・ATMEGA8515 ・ATMEGA168 ・ATTINY2313 ・ATTINY861 ・ATTINY12? 値段は秋月よりは高いがマルツよりは安いといった感じだった
>>643 AVRの唯一気になる点として、「1を書き込むとクリアされるフラグビットがある」
っていうのがあるね。 利点は理解しているつもりだが、
やはりそれでも違和感だな。
>>646 >「1を書き込むとクリアされるフラグビットがある」
割込みコントローラーとかでは一般的な仕組みですが何か?
ビットを立ててクリアフラグはよくある。
>>642 >Read-Modify-Writeになるんじゃないの?
cbi,sbiにできる低位のIOレジスタについては、コンパイラがビット操作命令に変換します。
しかし、AVRに関しては結局同じことかな・・・
ビット操作命令cbi/sbiも内部的にはread-modify-writeらしいし。
例外はSREGのビット操作命令か?これは1クロックのようで、ビットだけを操作してるっぽい。
>>643 割り込み要求フラグとかが並んでいるレジスタについてはまずいね。
フラグAだけをクリアするつもりで該当ビットを
>>642 のようにセットすると、
その時フラグBも立っている場合、フラグBに1を書き込みこっちもクリアしちゃう。
他にも割り込み要求フラグと通常の機能設定のためのビットが混在しているもので、
通常部に書き込みたい場合、read-modify-writeで書こうとすると同じことを引き起こす可能性有り。
問題ない場合も多いだろうけど、この手のレジスタは極力
IOREG = 初期値 | 設定値; /*1書き込みでクリアされる部分はマスクした値を与える*/
で書き込んだほうがいいですね。
昔は優秀度が AVRユーザー>PICユーザー だったが、最近 AVRユーザー≒PICユーザー 敷居が低くなるとそうなるってことで
そこに抱合関係は成り立っても近似・比較関係は成り立たないような気がスルメ。
652 :
605 :2008/12/08(月) 12:51:13 ID:foHuSL/e
>>606-613 色々ありがとうございました。
プローブあててオシロスコープで波形見るのは無謀みたいですね。
FETプローブも試しましたが、同じでした。
というより、LEDを点滅させるプログラム入れて動かしながらみたら、
プローブあてると発振が止まるみたいです。
そういうものなんですね・・・。
>>649 Read-Modify-Writeとcbi sbiは違うよ。
00~1Fまでのレジスタは、ビット操作命令で直接触れる。
以前、megaシリーズでソフトSPIのポートをポートFに変えたら
cbi sbiが使えないエリアだったから微妙にタイミングがずれた。
>>653 どうやらAT90Sシリーズとmegaシリーズで変わっているのかな?
データシートのIOレジスタ末尾で、AT90Sシリーズに関してはSBI、CBI命令の問題点が注意書きされているが、
MEGAシリーズの場合はそこに独立して操作できる旨が書かれている。
AT90S2313: Some of the Status Flags are cleared by writing a logical “1” to them. Note that the CBI and SBI instructions will operate on all bits in the I/O Register, writing a “1” back into any flag read as set, thus clearing the flag. The CBI and SBI instructions work with registers $00 to $1F only. ATmega48/88/168: Some of the Status Flags are cleared by writing a logical one to them. Note that, unlike most other AVRs, the CBI and SBI instructions will only operate on the specified bit, and can therefore be used on registers containing such Status Flags. The CBI and SBI instructions work with registers 0x00 to 0x1F only.
>>651 包含関係じゃないよ。優秀度って書いてあるからレベルを比較してんだよ。
657 :
774ワット発電中さん :2008/12/08(月) 17:34:15 ID:wZoPLL9O
これからAVR始めようと思うんだけど ライターはどれ買えばいいの??
DIY
いきなりDragonなどを買うのもいいだろうが、パラレルケーブル一本とかでお試しできるんで まず安くて作りやすそうな奴でAVRを動かしてから決めたら?
ボタン押してLEDチカチカするならSTK500がイイじゃないの? CPU挿せばテストボードになるお! ジャンパがめんどいけど。
>>657 買うってことなら、純正のAVRISP mk2が秋月で4000円だ。
>>657 パソコンにシリアルポートついてますか?
>>662 PCスレで付いてるPCの機種を確認すればいい。
ノートPCでコムポートついてるの最近少ないな、 安いのだと富士通のビジネスモデルくらいか del、コンパックとか嫌だし
ノートもデスクトップももうCOMは考えない方がいいかもしれないな。 ただ、最近ブームのAtom搭載mini-ITXはCOM付きが割とあるので マイコン開発専用マシンを組むということならCOMでいいかも。 と言ってもUSBが4個は付いてるけどな。
AVRISPmk][ は、USBだからいいよね
ラトック製のRS-232C CF Card持っているのでAspire oneで使えると思ってたら 穴に入らん。よく見たらコンパクトフラッシュのスロットなんか無かった。
ChaNさんのライターがmega325P/3250P/324PA, PWM216,316にも対応したそうです。 644Pですら使ったことないけど。
そういえば夏ごろにUSBaspの基板の設計してた人はどうなったのかな。 頒布するか否かくらいは続報ずっとまってます。 そろそろパラレルライタから抜け出したい…
670 :
774ワット発電中さん :2008/12/09(火) 08:28:14 ID:5IZfhPyN
USBaspいいよ。最初に別の書き込み機が必要だが…。 基板なんてなくても自分で作ればいいさ。 自分で100均のUSBケーブル切って、 100均のLEDイルミネーションのLED使って不要になった電池ボックスに入るように ユニバーサル基板をノコギリで切って作った。 蓋してしまえば見た目はカッコイイよ。 ただ、安いUSBケーブルだと通信線の白と緑が逆になってることがあるので気をつけたほうがいい。
ChaNさんところのUSBspiをATtiny2313/FT232RLにちょっとだけ変更 &片面基板(秋月C基板と同サイズにして底板の代わりにC基板使ってたりして) 起こして使っているけど快調! ところで、こうしたFT232とか使ったISPケーブルって結構見かけるけど、FT245とか を使ったパラレルライタ(CPLDダウンロードケーブルとかも)ってあんまり見かけない ような気がするんだけどなんでだろ。
パラレルと言ってもプリンターポートとは全然違うからね。
明日はトラ技発売日
最近話題のAtomマザーはレガシーポートフル装備だね。 さすがは産業向けだ。
>>670 これにBootloadHID仕込んだらさらに幸せになれる
AdultVideoRecoder
イオシスDNRH-001使ってる人いる? ドライブを160Gの2.5インチに換えてVB6とオフィス2003入れたけど 実際全く使ってない、Atom欲しい
>>674 トラ技の組込み系の広告、今年各社ほとんどAtom+XPになったね。
>>677 ソフマップのXP付きのやつは買ったな。会社のサーバー用。
イオシスのは知り合いが買ってやっぱりサーバー用。
私事だが自宅メインPCは、GA-C7V7-CSI-RH-SIを使ってるな。
パラレル、COM 2ポートあるぜ、M/B上に3と4もあったような…。
そしてUSBは6個付いてるw だが、1時間番組DivXエンコードに
9時間かかるwww AtomPC出る前、去年11月だったからなぁ…。
俺もAtom欲しいぜ。
トラ技買って来た 使用CPU: A/D部:ATmega644P、 制御部:ATmega644P、ATtiny2313 2ch入力 もう少し簡単にならんもんかね
面倒なのアナログ部だけで簡単だとは思うが しかし644だけで計9個か
おまいらAVRで何作ってるの? mega88が余ってるから何か作りたいんだがアイデアが浮かばない
LEDチカチカ
OSD
今はGPSロガー(車載)
685 :
774ワット発電中さん :2008/12/10(水) 21:27:30 ID:JET2T++a
>>681 学習リモコン
・・・に将来なる予定のリモコンリピーター
いいね リモコン壊れかけで 全く同じの考えてるんだが
>>681 マイクで入力するmidi機器とか
前どっかでmidiテルミンをpic+ADCで作ってた奴いるな…より着想
や、まてよ 音階で操作するリモコンとかってどうよ? midiもリモコンも結局シリアルじゃん
とりあえず、AVRライター
>>690 mega88のライターってどんだけ豪華なw
って思ったけど、mega88使えばアセンブラ内蔵のプログラマぐらいは作れるね。
LCDやキーボードつけて、プログラムの作成から書き込みまでスタンドアロンで
できるやつ。
ちょっと上に出てるUSBaspってmega8のライターだし 豪華ってこともないのでは。 超音波で烏避け、猫避けするもの作ってみようかと思ったが 雨の対策が大変そうでやめた。
俺もMEGA88でライタ作った。 作業効率上がりまくり、その案件終息…orz
昔ネット情報鵜呑みにしてmega8を1000円近くで買ったのも良い?思い出 今は88もかなり安いからな
SuicaとかEDYカードの残額を表示する装置を作ってくれ
ついでに残額を増やす装置を(ry
>>689 微妙に関係ないが、昔特定の音階の口笛を一定時間吹いたら返事するキーホルダーがあったな
部屋の中で鍵とかリモコンとかなくしても安心みたいな。たまに誤動作するが
マジレスするとかなり工夫しないと待機電力で電池切れな予感
>>697 電池か…忘れてたorz
スイッチがあると手っ取り早いんだけどな。でなきゃカラオケ端末みたいに充電前提で作るか…
そういえばpicのコンテストかなんかで手を叩くと音がなるキーホルダーってのもあったな<口笛ホルダー
ATmega644PのI/Oピンに流せる電流は 40mAと記述がありますが、 32本合計で1,280mAってことはないですよね。
もうちょい下のNote欄を読むと ポート○○の合計出力は100mAを超えないで、など書いてあるよ。
>>699 Absolute Maximum Ratings*
“AbsoluteMaximum Ratings” may cause permanent damage
to the device. This is a stress rating only and
functional operation of the device at these or
other conditions beyond those indicated in the
operational sections of this specification is not
implied. Exposure to absolute maximum rating
conditions for extended periods may affect device reliability.
Storage Temperature ..................................... -65°C to +150°C
Voltage on any Pin except RESET
with respect to Ground ................................-0.5V to VCC+0.5V
Voltage on RESET with respect to Ground......-0.5V to +13.0V
Maximum Operating Voltage ............................................ 6.0V
DC Current per I/O Pin ............................................... 40.0 mA
DC Current VCC and GND Pins................................ 200.0 mA
絶対最大定格は「一瞬たりとも越えてはいけない」とされていますので、
40mA流せる(パッケージで200mA) というより
40mA流すと壊れる
と読んだほうがいいです。せいぜいこれの70%くらいで使うべきでしょう。
40mA流したら、多分、電圧もかなり下がるはずですし。
ありがとうございます。 DC Current VCC and GND pinsがトータルの 最大定格なのですね。 はっきりした表現ではないと感じたので質問してしまいました。 確かPICと違って、ソースでもシンクでも同じでしたよね。 32本同時に電流を流す可能性があるならば、 100mAをMAXと考えたら1本当たり3mAですね。 駆動回路をTD62083APGでドライブすると、 入力抵抗が2.7kオーム入っているので、 電源5Vなら1ピンに流れる電流は2mA未満。 これで安心、という考えでいいでしょうか。
16本のI/Oにそれぞれ40mA流し込んで、残り16本から40mAずつ吐き出せば、VccとGNDには負担がかからないからOKじゃね?
703 そんな使い方が出来るなら教えてくれ!
>>703 なるほど、
コンセントに電熱器をつないでも、一方の端子から出た電流は必ずもう一方の端子に帰ってくるから、
家全体でみた場合には、その家には電流が流れてないことになりますね。
その家で大量のフラッシュメモリに書き込んだりしたら、一部の電子は帰ってこない
>>703 流し込んだ電流が吐き出されるわけじゃないし
>>703 VccとGNDの制限(200mA)がクリアできるだけ。
電流に制限を与える場所(電流流しすぎると困る場所)はそこだけではないから
他の制限はそのまま生きている。
この場合はたぶんポート部分の損失による温度上昇が40mAあたりが限界なんでしょう。
どっちにしても4ポート分でも160mAなわけで、Vcc/GNDの電流制限が先に問題になることはなさそうですが。
>>705 その例はおかしい、がいい例が思いつかない
>>709 あ、あさからぼけてた・・・・ポート1本あたりだw
ポート全体での制限値は注釈に書かれているね。こっちはポートグループ(完全にポート単位ではない)で
ソース/シンクそれぞれ100mAだな。40mA流せば、3本/ポートグループでもうオーバー。
30mA×3本ずついくとして、4グループ×ソースシンクで24本いける?
ということでVcc/GNDラインだけなら、出力ピンをソース・シンク適当に混ぜれば減らすことはできそう。数字上は。
内部損失の絶対定格って表現はないんだな。
30mA流した場合、内部電圧降下が代表特性から見ると5V駆動で0.7Vくらいありそうなので、
ピン1本あたり21mWの内部損失。24本で0.5W。
チップ温度上がればさらに損失は増える方向なので、実際に上のようなことをすれば結構大変なことになりそう・・・・
やっぱり外付けドライバが無難なんでしょうね。
ADCの基準電位の保護などの都合上、GNDピンに負荷をかけないために 電流を食うLED等を吐き出しで駆動することはあるが… >707もボソっと述べてるが吐き出す電流は Vdd から Pch FET を経由して出力、 流れ込んだ電流は Nch FET を経由してそのまま GND へ、 なので >711のような考えかたで Vdd や GND の負担が減ることはないぞ。 入力ポートはハイインピなので電流を流しこむことはできないし。
>>710 じゃあ、AVRを電池で駆動します。
入出力端子間に電球つけて光らせても「VccとGNDには負担がかからないから」
電池からはAVRの内部動作用の電流しか流れない。
諸君!永久機関の完成だ。
>>703 ピンからの吸い込み電流はそのままGNDへ
ピンからの吐き出し電流はVCCからくるんじゃないの?
>>714 電力回生してる高機能マイコンなんだよ。きっと。
誰ぞヒートシンク付けてトライする猛者はおらんか。
>>714 そか、そーだな・・・・
ちょっと寝不足で頭しんでたか、もともと死んでたか・・・
>>711 は忘れてください、長文ゴミ失礼した。
>>706 というか電子帰ってくるってどれくらい大電流流しているのやら
>>720 大電流???
電源から見たら、電子は出て行って帰ってくるもんでしょう?
711,709含め言ってることの意味が全然解らない
なんか
>>705 読んで
キルヒホッフの第一法則思い出した…
>>721 家に入ってきた電子"そのもの"が家から出て行くのには相当電流流さなきゃいけない、と言うことだと思うぞ
入ってきた電子の代わりに電線に詰まってた別の電子が押し出されて出て行くんだから
アレ?交流だったらほとんど出て行かないことになるのかな・・・。
トランス通してたら、フラッシュに書き込んで不足した電子はどこから補充されるんだろ
書き込んでフラッシュ内の電子の総量が増えるんじゃなく、電子のトラップ場所の外から中に移動するって形なのかな
などと徒然と書いてみた
なるほど。 だから、電気の流れと電子の流れは逆なのか。
>>724 それは関係ない。流れが逆なのはコイン投げの結果だから。
726 :
新人くん :2008/12/14(日) 14:02:45 ID:IBhi+s8Z
Dragon + AVR Studio4 + ATtiny2313で、教えて下さい. デバッグは、正常動いていますが、ISPによる書き込み、ヒューズの 書き込みができません。 教えて頂けないでしょうか。 Uartのプログラムをテストしています。Dragon経由のテストは、正常 に動作していますが、単体では、取り込みエラーが出ているようです。 どうもボーレートがおかしい気がします。クロックが怪しいと見て いますが、どうでしょうか Message--- Setting device parameters OK! Entering programming mode FAILED! Leavingprogramming mode OK!
デバッグワイヤーが有効のままなので プログラミングモードに入れないのです 「デバッグ」メニューからのオプションでDWを切ることが出来るはずですが?
728 :
新人くん :2008/12/14(日) 16:41:16 ID:IBhi+s8Z
早速のアドバイスありがとうございます。 AVR Studio 4.15のDebugメニューにそれらいいものがありません。 Internetで調べると、DWの指定のダイアログがありますが、見あたりません。 DebugメニューにSelect debug platform and deviceがあり、そのダイアログに Open Platform option ... がありますが、グレー表示状態です。 見方が悪いかもしれません。 よろしくお願いします。 UARTは、グランドが浮いていました。すみません。
AVR Dragon Option この中に Degug Wire Disable がありませんか?
730 :
新人くん :2008/12/15(月) 12:27:01 ID:2JltmGzI
度々すみません。AVR Dragon Option は、どこにあるのでしょうか。 AVR StudioのTools、Debugには、見あたりません。根本的な間違いを しているかも知れません。 AVR Studioは、通常にインストールした だけです。何か別なソフトをインストールしなければならないのでしょうか よろしくお願いします。
>>730 こっちは読んでます?
USBがらみでインストール時注意が必要のようです。
733 :
新人くん :2008/12/15(月) 21:19:03 ID:+wIzisk8
みなさまありがとうございます。 Debug commandを実行した後、Debug のメニューに AVR Dragon Optionが 出てきました。 Debug する前に指定するものと思い込んでいました。 735:URLのページの説明書に書いてありました。 皆様のアドバイス感謝致します。
Atmega8のAD変換ピンは負DC電圧が入力されると、壊れたりしますでしょうか? データシートに定格が載っていないようなので、質問させてください。 -2Vもいかない位なんですが。 その時は$000を返してくれればいいので、 故障のみが心配です。
>>734 定格は載っているとおもうが。絶対最大定格を越えてる時点でだめでは?
ピンの設定について何も触れずに、RESETとそれ以外について-0.5Vまでとなっているわけで。
おそらく保護ダイオードはどういう設定しても(デジタル入力や出力を切り離しても)繋がっていると思うので、
保護ダイオードに電流が流れ始めるVcc+0.5V越えと-0.5V未満についてはアウトなのでは。
>>734 直列に4.7kオームの抵抗をつなげば保護ダイオードが焼けるようなことは無い
AVRにNICを繋いでログ送信とか考えた場合、 どれぐらいの速度が期待できるでしょうか? PICNICよりマシでしょうか?
PICNICがどうゆうふうにNICに接続されてるかは知らないけども、
LANのパケット単位って結構デカいので、AVRやPICでは扱いにくいのは確か。
両者ともRAMが劇的に少ないので。
AVRのアドレス/データのBUSで接続するのであれば、
かなりPICNICよりもマシになるけど、I/O経由はあまり期待できない。
ttp://www.ethernut.de/en/software/index.html ココでAVRを使ったマイクロサーバーがあります。
回路図等参考にするといいと思います。
Xportがもうちょっと安けりゃ多用するんだけどな。
せめて2kB以上のRAMが使えないと、NICと接続して使うには厳しいんじゃないかなあ。 転送するデータ単位が小さいモノに限られるような用途だったら、 必ずしも使えないわけじゃないだろうけど。 手軽さを考えたら、シリアルポート・パラレルポートの方が絶対に上だ。
PICNICはNICのRAMを利用していたと思う。 UDPで通信するだけならAVRで作っても速度もできることも一緒なのでは。
>>739 Xport 程お手軽じゃないけど、SPI 接続のStack内蔵Chip搭載サブボードがある
結構安いからまとめ買いしたw
>>744 それ!、W5100の乗った奴(WIZ811MJ)
SPI/メモリー空間マッピング兼用なのでピン数が多いのが難かな
メーカーサイト直販で $15位だったかな
国内で小売しているとこもある
そこはチップ単体も販売しているし、SPIだけに絞ったボードを開発している模様
>>745 評価用ボードがmega168 なので、メーカー提供Driver(雛形)はmega168用のみ用意されている
修正の必要な箇所はSPIの制御箇所だけなので、他のAVRへの移植は容易
AVRでAVRつくるお
750 :
774ワット発電中さん :2008/12/18(木) 01:09:29 ID:uuxmvnH+
>>750 ありがとうございます。
あまり安定しないという噂もあったんで少し心配。
まだ旧マシンは使えるので、ファーム書くのは問題無し。
とくに新マシン移行は急いでないし、
ゆっくりやるか・・・
趣味パソコンだけどOSにアプリ、各種SDK等々果てしなく面倒だ・・・
>>747 工事中だった日本語ページがいつの間にか出来てたんだ
送料が安いな…買った時36ドル(海外発送一律)も取られたのにw
753 :
752 :2008/12/18(木) 07:22:00 ID:8UPLb3/b
まだ工事中みたいだな… ユーザー管理も英語ページとは違うみたいだし
C++でちょっと大きなクラス作っていざ宣言したらSRAM占有しまくってまともに動かず みんなクラス使わないわけがちょっとわかった気がする
755 :
774ワット発電中さん :2008/12/18(木) 13:06:42 ID:ZokcEyH9
全角野郎の時点でダメダメゆとりカスだろ
ぬあ〜にぃ〜!やっちまったなぁ〜! 男は黙って ハンドアセンブル 男は黙って ハンドアセンブル
ハンドアセンブルなんて8080以来やってないな Z80はハンドアセンブルと言うよりダンプを直接読み書きしてたし
758 :
739 :2008/12/18(木) 20:44:10 ID:rwKmE8ss
W5100やW5300はPICNICに比べたらかなり安いですね。 ネットワークスタックも不要?みたいなのでAVRのポート叩くだけなのかな? 検討してみます。 ありがとうございました。
>>754 クラスがいったいどのようにして実現されているのかを調べてみれば
良く分かると思うよん
760 :
737 :2008/12/18(木) 20:56:25 ID:rwKmE8ss
AVR初心者ですが、BASCOMってどうなの? 4kまで使用できるらしいけど
>>761 4kなんてすぐだよ。
WinAVRがおすすめ。
WinAVRってasmですか? 僕にはとても使えそうに無いのですが、 これからの勉強にお勧めのサイトありますか?
ぐぐればすぐわかるだろうに
初心者なら、なおさらアセンブラから始めるべきかと・・・ アセンブラを全く使えないと、ワンチップマイコンを使いこなすのは難しいよ。 大きいプログラムを書くのじゃなければ、むしろアセンブラの方が単純だから覚えるのも楽。
>763 最初はBASCOMでいいと思う。 限界を感じたらCやASMをつかえばいい。 BASCOMもASM文使えるし。
>765,766 ありがとうございます。 少しずつ勉強していきます。
ホビーユーザーの「喰いつき」にすばらしいツールだと思います<Bascom だれか解説本書けば、PICの後閑さんクラスにすぐ追いつけるアーキテクチャかと。 土井先生、がんばって。
AVRならアセンブラ経なくてもC言語でいいだろ。 制御なんてタイマー割込みとポート叩くくらいだし。
なら4Kで十分じゃね?
2Kでじゅうぶんですよ わかってくださいよ
>>771 No, two,two, four kilo-byte. And noodle.
強力わかもとが通りますよ
PICよりAVRの方が分かり易いね。 バンクとかないし。 日本語マニュアルあるし。
>>774 gcc亜流のクセに、ヘンな制限のついたC使わなくてもいいしな。
グーグルで"PIC GCC"と入れて検索したときの絶望感といったら・・ 「位置独立コード」の話題しか出なくて笑い転げた後にAVRを使うことに決めたおもひで。
BASCOM-AVRをこれから使ってみたいのですが、 最新版などお奨めを教えてください。 BCD⇔バイナリ変換できますか? BCDは9桁、バイナリは28bitでどちらかに乗算を含みます。 用途は 数十MHz 0.1Hz刻みの周波数データを、 DDSの分化能に合わせて変換しセットしたいのです。 合わせて使う書き込み器は自作したいのでLPTか232Cのお奨めも よろしく。
AVRのgccも十分変だよ。ROM領域の参照とか。
テーブル化したいときのPROGMEMか。 命令体系が違うから苦肉の策かな。
AVRでもプログラム全体をアセンブラで開発って結構多いのかな? Cで書く分には、PICもAVRもそれ程変わらないと思うんだが。 今時アセンブラ使う必要性って何があるのか疑問に思う。 部分的に使うなら分かるんだが。
>>778 mikroCならごく普通に定義参照できる件
>Cで書く分にはPICもAVRもそれ程変わらないと思うんだが。 実用レベルでは全く違うんだが、PIC20以降は知らんけど。
>>781 ポインタ渡しの関数が混乱する件について。
constが付いたら自動的にflash領域と判断するとか?
マイコンのABC A:アセンブラ B:ベーシック C:コボル
ATtiny2313でAVR同士の通信用にソフトウェアUARTを作ってます。
ピン変化割り込みとウェイトでタイミング取る方法でやってます。
MAXQ3210にソフトウェアUARTを実装 - マキシム
http://japan.maxim-ic.com/appnotes.cfm/an_pk/4041 ↑を見ると、タイマー割り込みでも作れる感じなのですが、
AVRでタイマーを使ってソフトウェアUARTを実装した人っていますかね?
ググってもウェイト調整するものしか見つかりませんでした。
(タイマーにするメリットはない?)
タイマ方式 送受信中も別の処理ができる。 static uint8_t send_data; static uint8_t bitcount; int sendSUART(uint8_t data) { if(bitcount) { } send_data = data; startTimer(); } timerItr() { }
途中で送ってしまった。 まあ、気持ち的にそんな感じ。
>>778 あー >775は、「PICのC(C30)はgccの亜流のクセに、無料バージョンは、ヘンな期限制限(最適化)をつけているケチ根性」
といいたかっただけです。
けどAVRも下手に最適化するとうまく動かなかったりするよね。
それは文字通り下手なんだろ
>789 それ、単にバグがどうとか言う問題だけでなくて、 gccは4.xになって壮絶な行入れ換えをやるようになって、 その方針がおおむね writeアクセスする命令だけをできるだめ早めにまとめて、 readアクセスする命令だけをできるだけ遅めにまとめて、 なのでトータルでバスの使いかたがとっても窮屈になってる。 ポートのビットの上げ下げ等でgcc3では適度にバスをゆったりと使ってたのが、gcc4だと 目一杯速い速度で上げ下げ上げ下げ... 休み〜 ... 上げ下げ上げ ... 休み な感じになる。つまり周辺デバイス的にはとっても苦しくなる。 gcc4で最適化かけたら注意な。
4系で最適化して動かなかったから初めてvolatileを使ったわ
volatileとかこの世界の常識だろ
この世界は初めてですわ
でもPICのほうが人気度高いね。検索すると。 本とかもPICの方が多いし。
そりゃ歴史が古いからだろう。
>>792 逆に、割り込みを使ったプログラムで volatile 無しに動くほうがマレ
>>796 だね。 トラ技と秋月に同時にPICとAVRが上がっていたら、AVRの天下だったよな。
PICの12Fと16Fは古すぎて使いにくいしな、メモリがバンクで分割されてるとかもう………dsPICはよかったけど。 AVRは日本語データシートが優秀すぎて、よっぽどの初心者向けの入門書しか必要ないよね。
>でもPICのほうが人気度高いね。検索すると。 検索で出てくる分、難儀なチップでもある訳で。 人気なのかは分からんだろ。
PORTCの1つのピンをAD変換に使用したら、 PORTCの残りのピンは普通のIOとして使用可能? あと、同じようにI2Cで使ったときの残りの ピンもIOに使えるのかのう?
データシートの兼用ポートの項とかに書いてあるよ 大抵は専用レジスタをマスクして使うから関係ないポートは使える
>>800 この付録おいらも使ってるけどすごく便利。
鶏でも卵でもかかってこいって感じ。
マルツのページみたけど2000円くらいだった。本もCDも付いてないなら
デジットのAVRライタ買った方がいいかも。
805 :
785 :2008/12/24(水) 21:40:32 ID:lBx67fDO
>>786 タイマを使ってC言語で組んでみました。
ATtiny2313の内蔵クロック8MHzで
PCとの通信で57600bpsまでは確認できました。
ウェイトで待つ方法よりも文字化けが少ない気がします。
ありがとうございました。
>鶏でも卵でもかかってこい なんかワロタ
>>805 受信はx1のクロックでやったら、文字化けする可能性が高いと思う。
809 :
785 :2008/12/25(木) 20:59:18 ID:XQZVYwdB
>>807 タイマのプリスケーラ設定のことでしょうか?
確かにclock/1ではうまくいかないので、送受信ともclock/8でやってます。
小さいと誤差が大きいんでしょうかね。
結局、内蔵8MHzで115200bpsからは正常に通信できませんでした。
8000000 / 115200 = 69クロック間隔の割り込みだと
SRAMと頻繁にやりとりが起こるC言語レベルでは厳しいみたいです。
8MHzで、115200bpsじゃ、割り込みの負荷が大きすぎるんじゃないかな? 57600bpsが動いたのが不思議?
>>805 日本語としては「じっぽん」が正しいが、レッドブックの「とおほん」(×とうほん)も間違いではない
ただ朝鮮人や一部の関西人が良く使う「じゅっぽん」は明らかに間違い
これを使っていると日本人である事を疑われるので気を付けるように
8Mなら115kは余裕。 3.68Mで115k送受信割り込みも、まぁ桶。
割り込み内ではグローバル変数の使用を極力避ける。 グローバル変数はローカル変数にコピーしてから使うなどすればSRAMアクセスは減ると思う。 割り込み内はできるだけ軽量にした方がいいね。 はき出されたASMファイルをみてクロック数えて69クロック以内におさめれば 取りこぼしはないと思う。
814 :
785 :2008/12/25(木) 23:55:57 ID:XQZVYwdB
出力コードを確認したら、割り込み時のpush popがそれぞれ10個程あるので、 それだけで40クロックは取られます。その時点で115kは無理だと感じました。 57600bpsでは8000000 / 57600 = 136クロック、 残り90クロックぐらいの範囲で処理してることになります。 自分でも納得できました。
ソフトウェアUARTで115kは辛い罠。 割り込みルーチンをアセンブラで書いて、ワーク用にいくつかレジスタ変数をグローバル宣言しておけば殆どpush/popしなくてすむよ。
>ワーク用にいくつかレジスタ変数をグローバル宣言しておけば これってフラッシュ量削減とスピードアップにきくね。 みんなよくつかうのかな。
すみません質問させてください winavr-20081205でstrtod関数やatof関数を使おうとするとリンカで 下記のようなエラーが発生してしまします。対策等をご存知の方が いましたら教えてください。 よろしくお願いします。 懼懼以下がエラーです懼懼 c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5\libc.a(cmpsf2.o): In function `__lesf2': (.text.fplib+0x0): multiple definition of `__ltsf2' c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/avr5\libgcc.a(_lt_sf.o):(.text+0x0): first defined here c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5\libc.a(floatsisf.o): In function `__floatsisf': (.text.fplib+0x4): multiple definition of `__floatsisf' c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/avr5\libgcc.a(_si_to_sf.o):(.text+0x0): first defined here make: *** [foo.elf] Error 1
libc.aとlibgcc.aを一緒にリンクしようとしてるってこと。 Makefileに矛盾があるのでは。どっちか消せばいいと思う。 その他の対策:浮動小数点数を使わない
>>818 回答ありがとうございました。回答をヒントにAVR Studioの
「Project Options」の「Libraries」で
「Link with These Objects」に「libc.a」を追加したら
コンパイルが通りました。動作も問題なく動いています。
本当に助かりました。ありがとうございました。
>>820 リンク先を見ると新しいチップだと4800bpsにしろとあってそれだとちょっと厳しい。
トラ技は本屋で頼めば1000円くらい。まだあるかは不明だけど。
>>821 AVRチップの新品は内蔵低速クロックを使うようにヒューズビットが設定されているので
最初に4800ビットクロック(2400bps)でつないで高速クロックを使うようにヒューズビットだけ書き換える。
後は-Bオプションを外すと,230400ビットクロック(115200bps)で動く。
avrdudeに被せるGUIが↓あるので,こっちで制御するのが楽。AVR-Studioで直接動かせるかどうかはやったことないので不明。
ttp://yuki-lab.jp/hw/avrdude-GUI/
>>822 丁寧な説明どうもです。理解できました。
最初の選択肢として十分ですね。
AVRマイコンを使った電子工作の制作記事を掲載するホームページを作ってみました。
自分がAVRマイコンを始めるときや困ったときに、このスレの方々に助けてもらいました。感謝しています。
レベルの低い作品の記事ですが見にきてくれたら嬉しいです。
http://oku.bakufu.org/
紹介してもらった下記のサイト、
ttp://suz-avr.sblo.jp/article/4438871.html 説明が物凄く理解し辛い。フォローして栗。
まず大前提として…
FT232RLはUSB->シリアル変換チップで、
FT245RLはUSB->パラレル変換チップ。
「どちらか1つ」買えばAVRライターになると言う話だよね?
>FT232RL USBシリアル変換モジュール(950円)・FT245RL USBパラレル変換モジュールを用意するだけで、
>AVR へ書き込みができるようになる。
この書き方では両方要るかと思う。
>ものは、serjtag-0.3.tar.gz と serjtag-0.3.zip。
「と」と書いてあるので2つ必要かと思ったけど…
どっちも同じ物でしょ?「か」が正解?(公開は1つにすべきだろ…)
>この avrdude.exe を使えば、
上記アーカイブ内のavrdude.exeがAVRライターで、その他のファイルはJTAGライタ?
>ちなみに、ピン配置は次のようにした。
下の配線図が訳解らない。「chip pin# BitBang bit」とかも意味不明。
(実は私としては解ってるんだけど…)
>>820 の「これ↓が応用例。」(実体配線図だとちゃんと書くべき)で、
全てを語ってる気がするけど、それは初心者には解らない事。
鶏卵って「初心者の最初の一歩」に困る事を言うんだよね…
BitBangModeって聞いて解る人がライター持って無いなんて有り得ないでしょ。
ここに書くことじゃなくてそのサイトの管理人に聞くべきことでしょ?
> 下の配線図が訳解らない。「chip pin# BitBang bit」とかも意味不明。 > (実は私としては解ってるんだけど…) > 全てを語ってる気がするけど、それは初心者には解らない事。 余計なお世話だろう... 初心者に読んでもらうためにまとめられたページじゃないし。 自分はわかってて他人がわからないに違いなくて、そのことが惜しいと 思うなら解説ページでも作ったら。
まあ、ブログなんてそんなもん。「独り言」って宣言してるんだし、オナニーしたいやつにはさせておけ
829 :
820 :2008/12/28(日) 15:41:20 ID:GdMDXIfJ
うへ,怒られちまった。もう来ません。サヨナラ〜
>鶏卵って「初心者の最初の一歩」に困る事を言うんだよね… 違う。 AVRライタを作るのにAVRを使ってて、そのAVRは何で書き込むのって問題のこと。
卵が先か鶏が先かってことね。 さすがに鶏卵とか変な略し方するのはどうかと思うけどな。
初心者が何が判らないか判るようになるには初心者を脱出しないといけない。 これを鶏卵問題という。
ネタのつもりだろうけど対比がおかしいような。 卵が先か鶏が先かを鶏卵問題と呼ぶのはググっても結構あるね。 AVRライタの話から大分逸れてきたか。
とりあえず親子丼食ってくる。
AT90USBのDIP品でもあればね・・・ USB DFU使えばUSB経由でファームウェアの変更くらいならできるから 入門にはよさそうなきがするんだ。
少し情報集めれば結線すりゃいいだけと判るんだし、
想定する初心者レベルが低すぎると思うけどなあ。
>>835 苦労してAVR自身でUSB対応させる必要はあんまり感じないんだよね。
ソフトウェアだとLowSpeedが限界だし、USB付きは高い上に仰る通り。
現状USB環境を安く済ましたいって事になると
PICにした方が・・って話になるし。
(USB-FullSpeed対応の28DIPが500円、その完成品が1000円、
焼く環境は別途必要)
>>835 >>836 ラベルが高いってば、理解可能スレスレだよ…
AT90USBってシリーズのチップなら、チップからUSBコネクタに直の配線だけで
「FLIP」ってソフトを使って書き込み出来るぜ…という話だよね?
それってUSBブートローダーが書き込まれて無いとダメだよね?
AT90USBKEY(評価マイコンボード)なら買った時から書き込んであるから
ライターが不要なんだと思ってたけど…
もすかすてチップ単体でも工場出荷時にUSBブートローダー書き込み済みって事?
それならdegikeyで大人買いしちゃいますが…
>836 >ソフトウェアだとLowSpeedが限界だし、USB付きは高い上に仰る通り。 素人お断りチップとはいえ、USB付は8051,PIC,AVR,ARM,H8,FTDI通しての 最安値はAT90USB82-16MUの341円(digikey)だと思う。 QFPのAT90USB162-16AUでも397円。 だから>837あたりが大人買いしようかなって話になるんだろうけども。 SSOPのFT232RLの作例がけっこうあるんだし、 これで高いとか難しいとかは言い訳だと思うなぁ。 データシートが日本語化されてて油断しがちだが、 >838みたいなのが周知されてないのが難点なんかね。
そうやって敷居が上がっていくわけだ。 ブレッドボードに差せない時点で使わない人も、 ここにいるぞ!
あ、つまりDIP変換基板で売ってたら問題なくね? 評価基板みたいに余計なのいらんから安くして欲しいわ。 1000円以内だったら買うかも。
USBコネクタはブレッドボードに挿せたっけ?
844 :
837 :2008/12/29(月) 13:58:34 ID:AD1zr+aa
まぁUSBとかになると下手なチップはPLL時定数外付けだし基本水晶でセラロックお断りだから ある程度の周辺コミで基板起こした方が良いからねぇ…
>>839 ブートローダ書き込み済みって意外に知られてないんでしょうかね。
FLIP自体はUSBだけじゃなくてUARTとかI2Cにも対応してましたよね。
kumanさんのホームページで紹介されているUSBaspを製作しています。 必要最小限にしたものって書いてある回路図に従って部品を半田付けし、 ファームを書き込みパソコンにさしましたが、認識されませんでした・・・ いろいろ調べたら一部のノートパソコンでは認識されない不具合があるそうです。 もしかしてと思い、安定化電源の電圧を5Vから3.3Vに変えてパソコンにさしたら、 認識されました。avrspxという書き込みソフトでtiny2313にプログラムを書き込み LEDをチカチカさせることができました。 しかし、ターゲットの電圧が5Vのときに使用できません。 対策法として3.9kと2.2kの抵抗をいれれば良いようですが、持っていません。 この対策法は抵抗分圧により3.3Vを作りだしていると解釈し、手持ちの10kΩの 可変抵抗を使って分圧できるんじゃないかと思い実装してみました。 テスターで電圧を測り3.3Vを確認してから、パソコンにさしたのですが、認識されませんでした・・・ 助けてください・・・困っています・・・なにか良い方法は無いでしょうか?
ちょうど自分もHidaspxが今さっきできあがって動いたところ
850 :
848 :2008/12/29(月) 18:28:49 ID:u9TUqNHB
携帯からなんでID違いますが、 手持ちの部品は、1kΩ、10kΩ、4.7kΩ、1.5kΩ、47Ω、100Ωです。 秋葉原は遠いし、通販だと送料高いので、手持ちの部品で解決したいのですが、何か良い方法はないでしょうか?
>>848 USB端子の2ピンと3ピンのことなら3.3Vのツェナーつけてみたら?
もってないなら
緑LEDとダイオードを1個直列にしてつけたらしたらどう? 30mAくらい流れると3Vちょいくらいになると思う。
うちのHidaspxはこれでなんとか動いてる。
>>850 >>3.3Vを確認してから、パソコンにさしたのですが、認識されませんでした・・・
これでだめだな理由はよくわからないけど。
10kの可変抵抗に4.7Kを並列にしてもう一度かな。
853 :
848 :2008/12/29(月) 19:18:17 ID:u9TUqNHB
ツェナーは持っていません。 4.7kを並列にどこに入れるんでしょうか? VCCと可変抵抗の中央ピンの間?可変抵抗の中央ピンとGNDの間?VCCとGNDの間? ふと思ったのですが、1kを直列で2kと4kを作れば良いんじゃないのか・・・
>>853 抵抗がたくさんあるならそれでいいと思う。
普通のダイオード6個(0.6V*6=3.6V)相当になる。 電流で変わるけど分圧よりは良いと思うよ。
1kで2kと4k作ってやってみました。 ダメだた・・・ D-、GND間の電圧は3.31Vだったのに・・・ 電源電圧を5Vから4.5Vに下げたら動いた。 ダイオードで電源電圧降下させれば行けそうだけど、 乾電池4本の6V電圧のにも書き込む予定があるしなぁ ターゲットとライターの電源電圧に0.6Vの差ができるのもまずそうだし・・・
というやりとりが複数散見されて面倒そうだったので、 HIDaspxを作るに当たり 3.5Vのツェナー100本買ったおいらが通ります。 今後USB直結の作品って多くなりそうだし。 でも、何で3.5V指定なのか分かってない。
>>857 よかったら数本譲ってくれませんか?
無理ですよね・・・
青や白色LEDでツェナー代用にならんかな。
>>858 いいけど、送料はただじゃないしなー。
俺んちくるならあげる。
あるいは半蔵門線沿線なら車両に貼っておいてあげる。
大抵の人にとって交通費より送料の方が安いから、
通販でばばっと買う習慣を付けた方がいいよ。
あと、抵抗は安いから全部買うといいよ。
全部持っていることの安心感は異常。
セット売りというのもあるし。
やっぱり無理ですよねぇ(笑) 通販で買うとしたら、3.6Vの買えば良いんですかね? 秋月に売ってないからマルツか・・・ マルツだと1本52円なんだよな。高いよ・・・
なんか解決してしまいました!! USBハブを介して接続したら5Vで認識し、書き込みも出来ました。 6Vにしても動きました。 ハブ最強ですね。
ところでUSBハブを通すと書き込みが速くなったりするけどなんで?
鶏卵問題は卵が先。 なぜなら鶏は卵から生まれるが、卵は鶏じゃなくても生む可能性があるから。 よってこれより先鶏卵問題の話題禁止。
866 :
774ワット発電中さん :2008/12/30(火) 00:32:56 ID:g/BPs5C7
>>865 つっか、遺伝子突然変異説からいうと、卵に決まっているんだが。
>>866 ちゃんとレベル変換すべきトコじゃないの?
プロが設計するなら不具合の原因は徹底排除する事考えるよ。
しかもレベル変換IC1つケチッて抵抗数本で済まないか?とか、
どんなけオナニーなんだよ…
それとも難しい言葉使って大人ごっこしてんの?
senshuさんのような氣がする
>>868 なにムキになってるの?
別にプロじゃないでしょ?
素人が趣味の世界で楽しんでるだけだよ?
趣味だから少ない予算で上手くやりくりすることの何が悪いの?
趣味でやる分には責任ないしな
アップル][の回路図なんか見たら気絶するんじゃないのか?
873 :
774ワット発電中さん :2008/12/30(火) 07:42:39 ID:xE6QXPHF
初心者で無知であればあるほど、自ら不条理な事をして「うごかねー」と騒ぐ。 動作を理解してればチェックポイントもわかるし押さえるべき所はおさえる。 理解してコストダウンの為に省略した回路と、ど素人が闇雲に弄り回し、部品を とっかえひっかえしてたまたま動いてる回路では信頼性はもとより方向が179度位ちがう。 まあ、スレを無駄に消費する位でたいした害は無いが。
今頃コンポジット色差基準信号の話題なんか持ち出すなや。
ツエナー強えぇなぁー
鶏卵問題は避けて通れないから。 お金があれば4000円くらいの書き込み機をポンと買ってしまえばいい でも、もっと安く済ませたいんだ。 これ以降、鶏卵問題は「ニワタマ問題」として解禁します。
ワニタマにすっか。
新しいマシン買ったから、シリアルポートがなかったんで、 取り敢えず色々ある方法のどれにしようかと、 USBシリアル変換ボード購入。 本屋でトラ技8月号見つけて購入。 ついでにPCIのシリアルx2ボード見つけて購入。 合計\5800 普通に純正書っておつりくるじゃん・・・ まぁシリアル2ポート+パラレルポートも使えるので ちょっと後悔してるが良しとする。(USB書き込みはお休み) 早速AVRSPで書き込んだらIOポートが直接指定してあって、 外部シリアルを認識しない・・・ AVRSPのソースがついてたんで、ポートを書き換えて visualstudio expressでコンパイルしたら、 givio.sysを見つけてくれない。 原因調べたらなんか名前が上手くおくられてない? さらに原因しらべたらvisual studioの文字設定がunicodeに なってたからでした・・・ こんなこと初めて。 express2008の嫌がらせ?
>>824 のサイトで紹介されている、でんし研の入門用ライターと
秋月のUSBシリアル変換ケーブルなら1500円ですんだというのに
古いPCを残しとけば50円ぐらいで書けるのにな
PICスレでは「さっさと純正買っとけ、たった4000円だぞ」 と言われるのにおまえらときたら オレモナー
これをきっかけに電子工作始めますって人には数千円なら安心料として けして高くないと思います。 皆さんのような歴戦の兵には不要だとしても。
シリアル&パラレル拡張ボードあるよ 誰かいる?
ツールから作ることに意義がある
ツール作って満足する人も多い気がするw
初めにライターを作って、そのライターを使って新しいライターを作って、 今度は高性能なライターを前に作ったライターを使って作って、 どんどんライターの完成度を高めて行くんですね。
マイコン工作は、ライタに始まり、ライタに終わる。
やっぱり1000円ていうのが一つのヤマだと思う。
ツールから作ってトラブル起ったとき対処しやすかった経験あるよ。
結局は鶏卵問題をいかに安く切り抜けるかにかかっている。
>>894 秋月 USBシリアルのAVRライタ化の詳細
>>894 めちゃめちゃいい人だねこのひと。
どんぶりにして食ったって感じ
ちゃんと使うなら純正買えみたいなこと書いてあるけど、 使ってると不具合とかあるんだろか? 遅いとか、不安定とか・・・ いまはELMさんのシリアル書き込みをなんの 問題もなく使ってる。
新規デバイスへの対応とか、 ヒューズビットの解釈とかモロモロでそ。 満足してるなら問題ない。
AVRライターを作るのがゴールです。 HEXファイルが書けるようになったらそれで満足です。
>>894 の秋月USBシリアルのライタ
ハンダ付け不要 製作3分 インスコ5分 対応デバイス多い 書込み早い
これで十分 純正不要
実際マイコンへの書き込みって、 なんか楽しいよね。 エンジン付きラジコンの始動に似た感じ。
マイコンよりFPGAをプログラムしてJTAGデバッグしてるときの方がwktkするな
さて、何を作るかな。
とりあえず、始めようと思い、共立のUSBライタを年末に発注し届きました。 しかし、秋月の通販発注が年末の締め切りに間に合わず。 AVRStudioをインストールして通販が再開するのを待っています。 ということで、皆さん今年からよろしくお願いします。
秋月のチラシの情報量って大抵のAVRより 大容量(何が?)だよなと思った。
>>904 よろしく(´・ω・`)
まずは何をつくる予定ですか?
>>906 3x3x3のLED CUBEチカチカから始める予定です。
あと、共立で値段合わせに一緒に買った12ドットLEDドライバがあるので、
どうにか見栄え良く組み合わせられないかも考えてみる予定です。
bit man つくってけろ
>>907 3×3×3だと立方体ですね。LEDをつけるのに苦労しそう
マイコンは立方体の中に組み込むのか
SOICなんかのパッケージも 入手性がよくなるといいな。
>>911 これを1024x1024x1024ぐらいにすれば、完全な3D映像が・・・
LEDが1つ0.1円でも1億円以上掛かるな。
高密度にしたら内側のLED見えないだろw
人を映すのに内臓まで表示するのか?
>>913 むかし、ニンテンドーのバーチャルボーイというのがあってだなあ…
透明なLEDを使えばいいんだよ
AVR ISP mkIIとavrdude-GUI (yuki-lab.jp Version)を使って書き込みしようとしたんだけど 「avrdude.exe: ser_open(): can't open device "USB": 指定されたファイルが見つかりません。」 ってエラーが出ます。AVR Studioを使えば書き込みできるんだけど…。 初心者なので基本的なこと見落としてる気もしますがググっても分からなかったので助けてください。 どうしたらavrdudeで書き込みできますか? avrdude.exeはGUIと同じゆきの研究室さんのところにおいてあるものです。
秋月のusbシリアル使ったライターの話題があったけど 俺はなぜかusbパラレルのほうを買ってしまい、すこし悩む いま、LEDチカチカまででけた
パラレルの方は、まじめに通信させるアプリ作れば FT232Rより転送速度稼げるし、後々それなりに意味はあるんじゃまいか
>>922 avrdudeで書き込んでいます
工作初心者なので速度は良くわからないけど
早くなるならいいのかなぁ
いまからLED増やしてチカチカさせてみようと思います
楽しいですw
AVRISPmk][でAVRstudioでリードシグネイチャーエラーなるものが出てしまいやす 何処がおかしいのかなぁ
advancedのタブでシグネチャーをデバイスから読み込んでも そうなるの?
AVRで電子工作を初めてから、いろいろなものを工作しました。 今、目の前に16文字×2行のLCDとmega88が3個あります。 これで何か作りたいのですが、作りたいものが思い浮かびません。 LCDを使ってつくる面白いもののアイデアがあったら教えて下さい。
>>927 さん
全体的な回路の構成はPB0~PB7までにスイッチをつけ
スイッチを押すと、その情報が赤外線LEDに伝わって発光し、受信側のLEDの光り方を変わらせるというものです。
>>930 プログラムが既にあるものならそれに合わせて接続する。
プログラムをこれから開発するなら、空いているポートにつなげ
プログラムはそれに合わせれば良いんじゃないでしょうか。
>>331 あ、なるほど。
プログラムはまだ作っていません。
逆の発想は思いつきませんでした。
ありがとうございました。
LEDを増やしてチカチカを作ってみた ボリュームをつけて速度調整をしようと思ったけど 2313ってA/Dがないのねorz
LCDと言えば、akibou氏のライブラリがリンク切れになって久しい…
>>933 1,A/D付きの26系に変更する。
2,A/Dを外付けする
3,2313のコンパレータでなんとかする
PCからシリアルとかで制御すればボリュームとか不要 SPIとI2Cの読み書きができるようになれば世界が広がる
ほんとはAVRにもNICが欲しい。PCと直接繋がず手軽に通信できるように。 (そういう意味でUSBは比較的どうでもいい) AVRで使えそうなNICを調べると次の2つ。 ・SPIイーサ → キット2300円、完成品3800円 (ENC28J60エラッタ問題でマイコン側16MHz以上必須?) ・WIZ811MJ → 3千円〜ぐらい?これもSPI接続。詳細不明 どちらにしろ、AVR自身が通信部分にかなり食われそうで、モデルも選ぶ。 手間を考えると、I/F付録や秋月のH8/3069F完成品でも買って繋いだ方が早い。 なら情報量と入手性の良いH8/3069Fでいいや、となってしまう。 そろそろAVRでもLAN接続について、まじめに考えてみないか?
Ethernut とかいうのなかった?
>>937 少し調べれば分かるが…
>・SPIイーサ → キット2300円、完成品3800円
>(ENC28J60エラッタ問題でマイコン側16MHz以上必須?)
現在販売中のはクロック制限なしのB7シリコン(ENC28J60)
>・WIZ811MJ → 3千円〜ぐらい?これもSPI接続。詳細不明
H/W支援のおかげで負荷は低い、価格も直販なら安い
NIC内蔵PICも結構使い難いと思う(パッケージや付加回路とか)
あまり売れてないからかシリコンが初版のままだし
いづれにせよ TCP/IP Stack がネック
イベントドリブン or (RTOS下で)プリエンプティブマルチタスクのどちらかをを選ばないといけない
価格がネックだが Xport が一番楽かと
>>939 Xportが2千円ぐらいで手に入れば最強なんだけどなぁ〜
mega88ぐらいでxportのクローンできないかな
ENC28J60+AVR+uIPの事例はいくつかあったと思うよ。
uIPってマクロの塊だからデバッグできないんだよなぁ
DD-WRT入れたLa Foneraも用途によってはいいよ。 UARTが付いていて、コンソールの daemonを落とすと、 TTLレベルのシリアルポートとして使える。 AVRが直結可能。 シリアルをTCP/IPにリダイレクトする serproxyやJermを使うと、Wi-Portの出来上がり。 価格は1,980円。
mega88でLCD動かしてるだけで消費電流が20mAくらいなんだが、 こんなもんなのか?LEDは1個も付いてない。
>>946 データシート次第&LCD次第。
LCDにLEDバックライトとかついてない?
抵抗値小さいプルアップとかしていない?
>>933 まぁ、そこは安いロータリエンコーダでお茶を濁すという手も
秋葉でSPIイーサ見てきたけど、キットは作れる気がしない程
小さかったので、そのまま帰ってきた。
WIZ811MJのW5100は、Arduinoイーサネットシールドの中身と
同じみたいだから、こっちがお手軽そうに見える。
Ethernutは値段も難易度も高い。
AVR32は興味ないし。
>>944 La Foneraいいね。
情報も多いし、現実的にはこれだね。
>>949 LANの規格があるのは知らなかった。
ただ、秋月で売ってるリモコンの赤外線受信モジュールは
パルス幅が標準で600μs間隔だから、
1秒÷600=約1666bps程度になるよ。
IrDAだと速度は稼げるけど通信距離の問題がある。
リンク先の事例を見ると、やはり近距離でしか通信できないっぽい。
秋月の32×122ドットのグラフィックLCDが面白そうなんだけど、 使ってるやついる? それで何を作ったかkwsk教えれ
ソレ使ったことあるけど、 圧倒的に128x64の奴を薦める。 こっちの方が全然扱い易いし、表示範囲も広いし。 スピードメータ作る為のデバッグ表示器として使ったな。 グラフ表示したり、波形表示したり、文字表示したり・・・
全画面相当のバッファ作って、10fps程度でバックグラウンドで全画面更新。 んでVRAMに対する描画関数(drawLineとか)てライブラリ作った。 Mega644使ってたから、2byte文字のビットマップフォントも プログラムメモリ上に格納出来たけど、2バイト文字そのものの gcc上でのうまい使い方が解らなくて困った。
USBasp作ろうと思うんだけど、ATmega644に書き込みできる? 今使ってるライタが8kBのROMまでしか書き込みできないから、 新しくライタ作ろうと思っています。
イーモバなんでID変わりました。644でなくて、644Pでした・・・ 644と644Pは何が違うのですか?
あとシグネチャバイトも644と644Pで異なるので 書き込みソフトが対応していないと書き込めないでしょうね。 とりあえずavrdude5.5ではまだ未対応っぽい。 まあシグネチャバイトだけの違いならちょこっと変更すれば 対応できるとは思うけどね。 詳細はデバイスのデータシートでも見てください。
>958 5.5 付属の avrdude.conf には 644P の記述があるんだが、 未対応だと思う理由は?
>>959 ごめんマニュアルに記載がなかったもので・・・
>960 確かにねーわ。うーむ。古いマニュアルそのまんまならまだしも ちゃんと5.5と記述があるくせに肝心のリスト足りないってなんだかなぁ〜
色んなサイトで定番扱いされてる168より644Pの方がいいよね? 秋月 644P 550円 + 秋月丸ピン40p(600mil) 100円 → 650円 千石 168 470円 + 秋月丸ピン28p(300mil) 80円 → 550円 100円足すだけでフラッシュとSRAM4倍だよ。 機能的に見ても上位互換があると思うんだけど、 40ピンというのがネックなのかな?
ピン数が違う168と644を比べる意味が無いだろ。 必要に応じて最適なチップを選ぶのが正しいと思うが。
28ピンなら168じゃなくて328Pじゃないのか? 今ならマイクロファンでATmega328Pが\420だ。
オレも644Pがいいな。 でもDIPは却下。
>>953 952じゃないけど、128*64を進める理由って表示範囲が
広くて表示機としての使い易さ以外はなにかあるの?
煽りとかじゃなく、真面目に。命令体系とか特殊だったり?
丁度122*32買おうかなと思っていたので、よかったらお聞かせ下さい。
128*64ってアドレスが真中で千切れてるんだろ? 64*64とか無い物ねだりしてみる
122*32は外付け発振が必要。 これが地味に面度いんだわ。
せっかくマイコン使うんだからPWMで2kHz位作ればいいのに。 Timerが1本つぶれるのがもったいないといえばそうだけど。
>>966 表示器を選ぶのに、表示サイズじゃなくて、命令体系で選ぶのか?君は?
人それぞれだろ
>>970 アキュムレータをクリアする命令が無いのでZ80は使わない
っていうのと同値だな。
XOR A
SUB A
>広くて表示機としての使い易さ以外はなにかあるの? 上にも書いてあるが2kだの信号が必要。 あと、初期化プログラムがいる。 128x64の方はリセットプログラムがいらない。 一度つくってしまえばどってことないけど、 初めて使うなら初期化プログラムのタイミングでハマルよりは ない方が楽かなと。 今の時代いくらでもサンプルは落ちてるんで、問題ないとは思うけど、 オレはタイミングで少しはまったので・・・ 小さい奴が欲しい人は122x32でいいんじゃない?
>>966 122*32が自分の用途には十分です。ですが、
ヘンコ命令とかあるくらいなら、128*64で普通(?)命令な
ものの方が、無闇な悩みもないかなって思ったからです。
自分、やっぱ変でしょうか…。
>>968 ,975
H/WでもF/Wでも128*64に比べ面倒な点あるわけですね。
納得できました。ありがとう。
出力ピンから過大な電流が流れたときに出力を止めたいのですが、 マイコン内部でそういう事故を検出することは可能ですか?
電流値をある程度正確に測定したいなら数Ωの負荷を入れて 差動のADCで測定するとかですかね。 過大な電流が流れることで出力電圧が下がるなら コンパレータかなにかで電圧で検出しても良いかも。
>>978 やはり外部に何らかの素子が必要ですか。
ソフトウェアでなんとか検知できないものかと考えていたんですが、ちょっと無理そうですね。
他の方法を考えます。ありがとうございました。
リセッタブルヒューズとか言う名前の部品が有った気がするけどあれってそう言う用途で使えないのかな? 端子一つ一つに付けてたらマイコンより高くなるけど
保護抵抗じゃだめなん?
>>977 実際にどういう負荷がつながっているか書かないと適切なレスはつかないと思うよ。
>>979 どうしてもAVR機能とソフトウェアでというなら、どの程度の電流で止めたいかにもよるけど、
たとえばmega88では、5V電源で20mAを突破すると電圧降下が0.5Vくらいになる。
これをADCに突っ込めば配線1本で(ADCポートと出力ポートを一緒にすれば配線も不要)で
おおざっぱな判定はできるのでは?
どれくらいの間隔でやるのかが問題だけど・・・
外付けの部品で電流制限するようにした方がよさげ。
デジタル出力使用中は同じピンにアサインされるADCって使えないんだっけ? それはともかく、異常判定するようなところでADCで電圧判定してソフトで 遮断というような時間かけていいかってことがいちばん気になる。 出力過大の状態のチップでADCが正しく動くのかっていう問題もあるし。
>>982 AVRって、出力ピンをADする事が出来るの?
基準電圧とコンパレーター何のために内蔵されていると・・・・
つか、マイコンの出力をショートというか最大定格超えるような設計するなよ、根本的に使い方が間違ってるだろ。
>>985 あ、Vccの分圧とコンパレータだけでいいな・・・
そんなことせずに、保護付きの外付け回路に供給させた方がよさそうだけど・・・
ショートや過負荷が避けられないなら、それしかないと思う・・・
ショートしたときの電圧降下でブラウンアウト検出すればおk
プルアップレジスタは内蔵されていてソフトで制御できるのに、プルダウンレジスタがないのはどうしてですか?
回路設計(デジタル)ではプルダウンがあまり一般的ではないからね、 プルダウンが内蔵されてるチップってあるのかい?
PSoCなら両方内蔵されてますね。
ARMとか。
>990 TIのMSP430、最近売り出し中のCortexM3も。STMicroのとかLuminaryMicroのとか。 それと、FPGAにはおおむねあるよね。 今見てSiLabsのC8051に無いのは意外だったなぁ。
>992 Atmel ARMに無いからARM7TDMIには無いもんだと思っていたが、 STMicroの711にはあるのな。CortexM3系の面倒見が良いわけではないのか…
ほぅ、以外とあるもんだね。 特にプルダウンの必要は感じてなかったんだけど。 プログラマー視点だと、スイッチを負論理で繋ぐのがイヤな人が多いのかね?
I/Oの先にNPNトランジスタとか使ってHiアクティブな回路をつなげたとき プルダウン内蔵だと1個抵抗を省略できるとかな。
997 :
989 :2009/01/11(日) 22:02:56 ID:ucBuDF4j
AVRしか使ったことがないので勉強になりました。他のマイコンのスペックシートも読んでみます。
確かxmegaにはプルダウンがあったような気がする。 バス保持とか何とか、ポートのモードは多彩だったはず。
梅
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。