AVR H8 etc. マイコン総合スレ Part3
620 :
774ワット発電中さん :
05/01/11 13:56:19 ID:62KiCPTK 高卒wGYQ/EIqの妄言:「サンプリングでは帯域制限なんか絶対されないんだ!AAFが帯域制限の原因なんだムキー!!!」 一流院生によるチェックメイト: 「ほう、ならAAFを外せばCDは60KHzの音も記録・再生できるというわけか。乙。」 高卒wGYQ/EIqの断末魔:「サンプリング定理に帯域制限されるなんて書いてない!ムキー!!」 一流院生によるとどめ: 「サンプリングで帯域制限されるとは何度も書いてるがサンプリング定理で帯域制限されるなどとは 一度も書いた事がない。日本語すら読めない高卒哀れ。マジ哀れ。」
つーか、一寸花を植えたいのだが?と質問したらユンボが良い!!それ以外を使う奴は高卒と 叫んでるようなもんだ。
622 :
774ワット発電中さん :05/01/11 14:03:00 ID:62KiCPTK
高卒wGYQ/EIqの妄言:「フーリエ変換もウィナーフィルタも世の中にあるものは全て偽物だ!疑似だ!そんなものは実現不可能だムキー!!!」 一流大学大学院生によるクリティカルヒット: 「離散化とは高卒以外にとっては帯域制限以外の何物でもない。 よって高卒以外で離散化を疑似フーリエ変換とか疑似ウィナーフィルタなんて言ってる奴は世界に一人もいない。 ググっても0件だ。」 高卒wGYQ/EIqの妄言:「周波数領域ではデータが全部そろわないと計算できないんだ!実現不可能なんだムキーー!!」 一流大学大学院生によるクリティカルヒット:「有限長カーネルのコンボリューションは帯域制限付き窓つき短時間フーリエ変換と等価であり、有限長カーネル・窓のコンボリューションを使った実時間周波数領域フィルタは幾らでも実用化されている。 そもそも世の中のDSPのほとんどがこの目的で使われている事すら知らないとはあまりにも哀れ。」 高卒wGYQ/EIqの妄言:「サンプリングでは帯域制限なんか絶対されないんだ!AAFが帯域制限の原因なんだムキー!!!」 一流大学大学院生によるチェックメイト: 「ほう、ならAAFを外せばCDは60KHzの音も記録・再生できるというわけか。乙。」 高卒wGYQ/EIqの断末魔:「サンプリング定理に帯域制限されるなんて書いてない!ムキー!!」 一流大学大学院生によるとどめ: 「サンプリングで帯域制限されるとは何度も書いてるがサンプリング定理で帯域制限されるなどとは 一度も書いた事がない。日本語すら読めない高卒哀れ。マジ哀れ。」
623 :
774ワット発電中さん :05/01/11 14:03:45 ID:62KiCPTK
荒らしのレスなんて相手にする必要が無いと証明されたんじゃないの? こんなゴミを板中に貼り付けて回るなんざとてもまともとは思えない。
>>623 発言には「高卒」を入れてくれ
NGワードで消えないじゃねーか
626 :
774ワット発電中さん :05/01/11 14:13:15 ID:62KiCPTK
PNMUJOuA=wGYQ/EIq乙。 次はどのIDにする?プククククククク
>>619 まともっぽいのですぐには気づかなかったけど、さっき別スレで同じID見たから知ってるよ。
しかし(内容はともかく)このスレでは普通に発言しているのをつけ回して煽って発症させている
お前の方がこのスレでは最低。
たのむからいい加減にしてくれ。
同一人物じゃないの?>62KiCPTKとwGYQ/EIq
○| ̄|_・・・・
何というか2chブラウザで透明あぼーんして完全に消し去ったら終わりじゃないの? 漏れはかなり前からそうしてる。 そうでもしないとスレッドがゴミだらけで見難くて仕方ない。
ついでに言うとまともっぽいことを行っている場合でも余所を荒らすような輩は 人に何かを教える資格など無い。
634 :
774ワット発電中さん :05/01/11 14:32:07 ID:62KiCPTK
>>629-630 んな訳ねーだろ。
論破されたらID変えつつ自作自演か?
哀れなものだな。
>>627 知ってるならOK。他意は無いよ。でも相手するにふさわしいかどうか目安にはなるでしょ。
>>629 >>630 それは違う。潰してもいい過疎スレだからやっただけ。ここではやらないから。
636 :
774ワット発電中さん :05/01/11 14:38:28 ID:62KiCPTK
>>634-635 まあ同類には違いないと認識。できれば隔離スレで仲良くしてくれ。以後スルーします。
>>638 勘違いするなよ。
62KiCPTKが普通に書き込んでいれば普通に相手するからね。あなたにもね。
>>639 >普通に書き込んでいれば普通に相手するからね
それはどうぞご自由に。
>あなたにもね。
どうもありがと。
スレ趣旨と関係ないこと書いてる俺の ID:wGYQ/EIq はスルーしてもらっていいよという意味ね。
sinは単に三角波で近似しても、案外うまくいく、、、、事もあります。 なんつったって計算が速いし単純だし。 まず三角波でやってみてダメならちゃんとテーブルSINっていうアプローチでもいいんでは? テーブル作る必要がなければ、ATMega48で入るかもしれないし。
>>643 なんか通信のオーバーヘッド見て使う気失せたのを覚えている・・・・
>>642 三角波はどうかわからないが、10°刻みで10点くらいのデータで±0.2%
(有効桁9bit)くらいでは得られるようだ。これくらいで充分なら楽だし。
三角波で誤差の増える頂点部分を少し曲げた折れ線で近似する (六角波?近似)というのも手かもね。
646 :
774ワット発電中さん :05/01/11 21:18:53 ID:BjmBz8V8
>643 なんかPICみたいな気がするのでつが スピード的にどうでつか?
648 :
774ワット発電中さん :05/01/11 23:05:57 ID:ss6zK9Yj
やっぱPICぽいね。
>>647 浮動小数点でもどうだろ・・・話題のsinなど、数msかかる演算が並びますね。
うまくこいつと同期して演算できるといいんだけど。
その引用レス書いたの俺だ・・・
1チップマイコンで複数個(2〜6個位)のフルカラーLEDの各色、各LEDの明るさを自在に変えたいのですが コンパクトに実現する何か良い方法があれば教えてください
>>651 6個のフルカラーLEDをコントロールって事は18個のコントロールですね。
足(出力ポート)の多いマイコンでソフトウェアPWM手っ取り早いと思う。
ダーイナミーックドリャーブってのはどうか 電流制限抵抗は小さめで ポート少なくてすむぞ
>>653 あーそうか、ダイナミックでも行けるかなあ。
赤青緑で制限抵抗値は異なるから、2つのフルカラーLEDを6本で制御して、
これをダイナミックで3セット駆動って感じ?
デューティは最大1/3になるんで、暗くなるのを補うため多少電流高めにしてもいいかな。
>>654 赤,青,緑それぞれにPWM出力を割り付けて、コモン側を1/6の時分割駆動でも問題
ないと思うが?
3本のPWM出力をハードウェアで同期制御できるマイコンでないと、タイミング的に
厳しいかもしれんが、ATmega8程度の処理能力があれば、0.15mS間隔のタイマー
割込とソフトウェアによる擬似PWM出力(1/16分割)とダイナミック点灯方式でも
十分いけそうな気がする。(RGB各4bitで4096色)
ダイナミック点灯の場合、電流補強で大概ドライバーを追加する けど、隣のビット同士でターンオン・ターンオフのオーバーラップ が発生するので正直にデューティを1/6にはできない点に注意。
>>656 多桁の数字を表示するんじゃなく色を制御するんだから、オーバーラップは気にならんと思う。
>>655 3本PWM×3バンクと6本PWM×3バンク。
3to8デコーダーなどを使わなければどちらも必要な出力ピン数は9本。
あとは、ドライバ(トランジスタ)が3つで済むがソフトウェアPWMを6つ制御せにゃならない、最大Dutyが1/3の前者と
ドライバが6ついるがPWMは3つでいい、最大Dutyが1/6に制限される後者との比較かな。
この場合のPWMだけど、たとえば16階調で単純に1/16〜16/16とするより、もうちょい細かく(6bitくらい)して、
対数的(たとえば約√2刻み)にしたほうが見た目にはリニアに明るさが変わっているように見えます。
平均電流でリニアに変化させると暗い方で明るさの変化が目立ってしまいます。
フルカラーLEDだと色の合成的にはどっちが有利かな・・・
これを10MHzAVRのTMR0オーバーフロー割り込みでやるとなるとプリスケーラなし、6本PWM×3バンクで
点滅周期200Hz、3本PWM×6バンクで100HzってとこなんでかろうじてOK?
660 :
655 :05/01/13 10:27:41 ID:LQQCv6by
>>656 セグメント切替時に...
(1) 全セグメントOFF
(2) PWMデューティ比(R,G,B)再設定
(3) 次セグメントON
といった処理を行ってセグメント切替時にデッドタイムを設けることで、オーバー
ラップは回避できると思う。
また、内蔵タイマでPWM(任意のデューティ比の任意周波数パルスを出力する)モード
がサポートされていなくても、ワンショットモードに設定した3ch(または6ch)の
タイマを、(2)の処理で出力パルス幅の設定と、起動トリガを掛けるようにして、
一連の(1)〜(3)の処理を別のインターバルタイマ割込ルーチンで呼び出すといった
方法も可能だと思う。
>>659 PWMのデューティ比が、リニア制御ではなく、対数制御の方が好ましいのは判るが、
ソフトウェアPWMではタイマの割込周期の設定が難しいのではないかということで、
あえて簡単なリニア方式とした。MCU内蔵周辺回路のハードウェアPWMが使えるなら
対数換算テーブルを使うのが手っ取り早くて、CPU負荷も少ないと思う。
> これを10MHzAVRのTMR0オーバーフロー割り込みでやるとなるとプリスケーラなし、6本PWM×3バンクで
> 点滅周期200Hz、3本PWM×6バンクで100HzってとこなんでかろうじてOK?
バンク数が多い方が、バンクあたりの点滅間隔を短く(全体の周期を早く)しな
ければちらついてしまう。
3バンクで点滅周期200Hz(バンクあたり200/3=約60Hz)は問題ないと思うけど、
6バンクで点滅周期100Hz(バンクあたり100/6=約16Hz)は明らかに遅すぎで、
400Hzの間違いでは?それとも点滅周期の言っている意味と漏れの理解が違う?
>>660 えーと急いで書いたので何か間違ったのかも。
点滅周期はバンクも考慮して書いたつもりです。
つまり6バンクの値は10ms間隔で0〜1.6msecの点灯ってこと。
60msec間隔0-10msec点灯ではありません。それは流石にチカチカでしょう。
100Hzでもきついかな?と思ってるので6LED*3バンク,Max200Hzの方がいいかな?と思ったんです。
megaでも奢って20MHz駆動したらどっちでもいいんでしょうけど。
検算ついでにもう一度書いてみる。
10MHzAVRでプリスケーラーなしTMR0をフリーランで突っ走らせると25.6us毎。
64bitPWMならPWM周期は25.6*64=1.6384ms
でもって、6バンクなら点滅周期はその6倍で9.83ms、約100Hz
3バンクなら点滅周期はその3倍で4.92ms、約200Hz
って考えました。
バンク数が多いほど点灯時間も短いので周期を短くしたいってのはその通りなんですが、
バンク数が多いほどソフトウェアPWMで可能な周波数も減少していくと言うわけでこの値がデマした。
まあリニアなら4bitで済むわけで、2bit=4倍楽だからリニアって解もありだと思うんですけど、
ついつい欲張って考えてしまいました(笑
しかしmega8ってPWM3つ持ってるな。これですませた方がいいかも。
デューティ比と見た目の明るさは直線的にはならないので、 PWMにはもっと分解能が欲しいな。
ハードウェアPWMが使えるなら8bitで無問題だから楽できそうですね。 PWM周期も20MHzなら8bitで78kHzがOKだし。
>>664 たぶん、6chは8bitと16bitが混じっていると思われる。
まぁLEDだからかなり遅くしても大丈夫でしょー
666 :
655 :05/01/13 12:35:59 ID:LQQCv6by
>>661 > 10MHzAVRでプリスケーラーなしTMR0をフリーランで突っ走らせると25.6us毎。
> 64bitPWMならPWM周期は25.6*64=1.6384ms
> でもって、6バンクなら点滅周期はその6倍で9.83ms、約100Hz
> 3バンクなら点滅周期はその3倍で4.92ms、約200Hz
これって、25.6uS毎(39kHzで)にタイマ割込が発生させるってことですよね?1命令
実行あたり2クロック、割込のオーバーヘッドを無視して単純計算しても、1回の割込
でたった128命令しか実行できません。実際には、メイン側の処理や2クロック以上
かかる命令条件分岐もあるから、かなり厳しいのでは?
LEDの発光くらいならまだマシですが、モータなんかが相手とかだと無駄にPWM
周波数を上げても、駆動する相手が追従してくれないんで、コギング(滑らかに
回転せずカクカク回る)などの他への影響がない範囲で可能な限りPWM周波数は
下げた方が効率がいいです。
それによって、駆動回路のターンON/OFF時の遅れやパワーロスがPWM全体に占める
影響も少なくなりますし、単位時間あたりの割込回数が減るので、CPU負荷(占有)
率も下がります。
で、ちらつかない点灯周期(バンクあたり50〜60Hz以上)から逆算して、3バンクなら
150〜180Hz、6バンクなら300〜360Hz程度が推奨ってことで。割込の周波数はさらに
×PWM分解能(16階調なら×16倍)なのは、言うまでもありませんが、ハードウェア
PWMがあれば素直にそちらを使うべきでしょうね。
>>662 何らかの方法で素子のばらつきを補正しない限り、PWM分解能を上げても机上の
空論、エンジニアのオナニーで終わる。
>>665 さすがに16bitにしたら256分周の8bitと同等だから
>>661 と同程度遅くなるぞ
16bitタイマのPWMでもWGM13-0設定でカウンタ上限を$00FFにすれば8bitとして使えるじゃないの?
>>666 >1命令実行あたり2クロック、割込のオーバーヘッドを無視して単純計算しても、1回の割込
>でたった128命令しか実行できません。
ん?分岐などを除けばほとんど1クロックじゃない?
レジスタ退避(Zと2レジスタあればOK) 4*2=8クロック
lds命令でZレジスタロード=3*2クロック(カウンタ変数とPWM値があるレジスタ)
カウンタ変数をload=2クロック
カウンタ変数をinc=1クロック
カウンタ変数のsave=2クロック
PWM値をld Rn,Z+でロード、カウンタ変数と比較、結果によりポート操作:(2+1+2+2+1)*6=48クロック
レジスタ復帰:8クロック
割り込みオーバーヘッド:4クロック
ってな感じで80クロック程度で行けるかなと思ったのですが。
あ、SREG退避復帰忘れた。4クロック追加ね。
mega8のUSARTの送信実験をしようとしてるのですが マニュアル通りに UBRRH = (unsigned char)0; /* ボーレート設定(上位バイト) */ UBRRL = (unsigned char)51; /* ボーレート設定(下位バイト) 9600 8Mhz*/ UCSRB = (1<<RXEN)|(1<<TXEN); /* 送受信許可*/ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0); /* フレーム形式設定(8ビット,2ストップビット)*/ と初期化してその後仮にAを送信しようとして data = 0x41; NOP(); while ( !(UCSRA & (1<<UDRE)) ); /* 送信バッファ空き待機*/ UDR = data; /* データ送信(送信開始) */ という具合にやってPC側ポーレート9600で受信させてるのに認識してくれませんorz 何か思いつく原因あったらあげてもらえないでしょうか? あ、U2X=0としてます
UCSRCにアクセスするには何かおまじないが必要じゃね? ボーレートは UBRR = 51; でいけるかと(avrgccの場合)。
>>670 まんまデータシートのサンプル通りですね。問題はなさそうだけど、
PC側要因
*受信側が9600bps/8bit/2stopbitになっているか?
*PC側の受信ソフトが接続しているCOMポートではなく別のCOMポートを見ていることはないか?
接続要因
*接続が間違っていないか?マイコンのTxDがPCのRDにちゃんと行っているか?
*232Cレベルコンバータは使っているか?使っているなら接続は正しいか?電源は行っているか(w だけどありがち)
ソフトウェア・AVR側要因
*DDRDは・・・・設定不要のはずですねえ。
*つけたクロックはホントに8MHzか(瀑)
*そのルーチンは確実に実行されているか?適当なところにLED点滅操作でも挿入してみよう
全部大丈夫なら、232Cレベルコンバータの向こう側でRxDとTxDをつないで、
UDRで0x41が読み取れるかテストするプログラムを作ってみてはいかがでしょうか?
スマソ。勘違いしてたorz....
>>671 URSELビットさえ立てていれば書き込みに関してはちゃんとUCSRCに書き込めると思う。
読み込みは2度読みしなければいけないようですが。
> *つけたクロックはホントに8MHzか(瀑) ダウンロードに成功していれば、クロックは発振しているんでわ?いずれにしろ、 mega8が動いているか確認していないなら、まずはそっちから追うべきだろうね。 (1) ダウンロード後、ISPモードのまま。(ありがち?) (2) リセットが掛かりっぱなし。 なんて可能性も。 それと、送/受信を許可するのは、ボーレートや通信フォーマットなどを設定した 一番最後の方がいいと思う。オシロがなくても、一時的にボーレートを110bps位に 下げて、TxD出力にLED+プルアップ抵抗を付けておけば、送信データが出ているか どうか、目視確認できると思う。
ATmegaの命令クロック数を把握してないんで、大雑把に計算しただけなんだが、
元記事の
>>651 がフルカラーLEDの制御の他に何をやりたいか判らんけど、CPUの
処理能力をほとんど割り込みにとられてしまうのはどうかと思っただけ。
例えば、外部からシリアル通信経由でフルカラーLEDの色や輝度をコマンドで
制御するとか、6個のフルカラーLEDが時計になってるとかね。
処理時間を節約するなら、変数をRAMに格納せず、CPUの汎用レジスタをワーク
に使うとかって手もある。漏れの仕事ではないがRAMを一切使わない8085Aを
使ったLED表示付きテンキーパッドとか実際あった。
679 :
651 :05/01/13 16:17:10 ID:8BoXsD5T
たくさんのレスありがとうございます。 少し説明不足ですみません。 使用目的はサイリュームの電子バージョンみたいなのをフルカラーLEDを使って作りたいのですが そのフルカラーLEDの制御です。 PWM、ダイナミック駆動で実験してみようと思います。使用中にLEDが動く物なので結構高速に 切り替えないと光跡が点々になってしまいそうですね LEDの制御以外に行う処理は基本的に無いのでCPUはLEDにかかりっきりでも問題はないんですが あまりCPUを使うと電気を食うかな…?バッテリー駆動なんで消費電力はできれば抑えたいので…
>>677 >フルカラーLEDの色や輝度をコマンドで制御
そうだね、勝手に秋月のAVRホタルみたいなのを想像していたよ。
そういう用途ならやりすぎですね。
>>676 >ダウンロードに成功していれば、クロックは発振しているんでわ?
いやこれは、実は10MHzセラロックがついていたってことはないでしょうね?という意味。
> 110bps
これもいいアイディアですね。LEDを振ればビットパターンが見えそうだし
>>679 >使用中にLEDが動く
厳しいな・・・できるだけソフトウェアじゃないPWMがおすすめですね。
>あまりCPUを使うと電気を食うかな…?
まあそうですねえ。mega8の20MHz,5V動作で25mAってところみたいですね。LED1個分以上あるか。
周波数下げるか、SLEEPをうまくつかうか・・・
皆さん回答ありがとうございます。 現在クロックにはセラロック8Mhzを使用しています。(表記が8,00Tの秋月の物) ルーチン確認のためにLED点灯プログラムをつけてみましたが正常に動作しています。 デジタルオシロがあるのでデータが出ているかどうかも確認してみましたが方形波 できちんと出ているようです。 PC側の状態確認としてTERATERMというソフトで確認していますが きちんと9600、STOP2bitdata8bitになってることを確認しました。 RS232C変換としてADM232ANを使っていますが確認してみましたが配線ミスではないと思います。 むしろRS側のポーレートを適当に変えるとxとか噛とか出てくるのでデータは来ていると思います。 これからUDR側で読み取れるかちょっとやってみようと思います。
>>682 あ、お城もあるんですか。
それじゃ問題がAVR側かどうかは一発でわかるんじゃない?
どんな波形ですか?AA力を駆使して(w書いてみて。
データが行くことがあるってことは少なくともTxDはつながってるのね。
もちろんGNDどうしはつないでますよね?
____ ___________ ____ _____ | | | | | | | | | | | | | | | | | | | | | | | | _____| |___| |___| |_____| |__ シリアルポートRXDの波形がのこんな感じです、振幅が-8から+9位ですね 5番のGNDとAVR側のGNDも繋いであります ちなみに念のためと思って水晶発振子4.9152MHZ繋いで27pのコンデンサ繋いで UBRRL = (unsigned char)31にしてみました 結果はひたすら を出すようになっちゃいましたorz
__ ____ __ _____ || | | | | | || | | | | | || | | | | | || | | | | | __||_| |___| |_ | A、AAって難しいです・・・とりあえずこんな感じです、形は見た感じきれいです
>>684 ずれててわかんねーーー
とりあえず0x41なら、104usecごとに
 ̄ ̄ ̄ ̄ ̄s_0 ̄1_2_3_4_5_6 ̄7_s_s_| ̄ ̄ ̄ ̄
って感じだと思うのだけど、(sと数字はそれぞれ右側がstart/stopbit,bit0〜bit7)
>>685 各パルスの幅がわからん・・・・
んじゃ、Hiが何uS,Loが何uS・・・って感じで書いてみない?
>>686 ごめん、違っているかも。もう出勤だからまたあした。
>>688 S01234567ss = 0-10000010-11 、232C上は0が+12V、1が-12V で、
____| ̄|_| ̄' ̄' ̄' ̄' ̄|_| ̄|_._.__
でいいかな。
>>685 となんとなく似てるけど。
すいません、かなり返信遅れましたm_m えっと、間隔としては スタートビットからH0.5msec、L0.5、H2.5、L0.5、H0.5、Lになって終了です 波形の形としては689さんのと一緒だと思います って・・・ん?これはまさか送信速度がおかしいのかやっぱ?
>>682 文字化けしながらも何らかのデータが受信できているようだし、mega8側PC側とも、
単独では問題なさそうですね。
もしかして、TxD/RxD信号だけ繋いで、端末(PC)側のシリアルポートのGND(25Pin
D-Subなら7番,9Pin D-Subなら5番)と、mega8ボード側のGND同士を繋いでいない
とかないですかね?
>>679 ダイナミック点灯は人間の目の残像現象に依存しているから、表示ユニット自体が
移動するなら、ダイナミック点灯(PWM)周期を短くして回避するか、移動速度が
あまり速いようだと、ダイナミック点灯方式は使えないかもしれません。
>>690 19200bpsだね・・・
U2Xはほんとにクリアされてます?
>692 初期状態が0になってるので大丈夫だと思うのですが・・・ 念のためcbi(UCSRA, U2X)と書いてみましたがやっぱりだめです・・・
>>690 >スタートビットからH0.5msec、L0.5、H2.5、L0.5、H0.5、Lになって終了です
...ひょっとして、0x41 を1回送るだけで繰り返し送信はしていない?
>683
再度チェックしてみましたがきちんとGND同士繋がってました
>694
う、確かにそこの書き込みだけ見るとそう見えますね
でもfor(;;)で囲んであるのと
実際
>>682 の通りLED点灯←点滅のプログラムも入れてますのでそれはないです。
>>694 while行の最後にセミコロン(;)があるから、そうだね。っていうか、それはわか
っていると思っていたんだが?
while(1)
{
if((UCSRA & (1<<UDRE)) ) /* 送信バッファ空き*/
UDR = 0x41; /* データ送信(送信開始) */
}
とかしないと、連続で送信しないわな。
9600boudってことは1秒のビットレートが9600って意味じゃないのけ? ちゅうことだと、1/9600だからH/Lともに0.1ms強じゃね?
698 :
670 :05/01/13 22:59:40 ID:Yzyi0oHz
うう、ちょっと自信なくなってきたので今のメイン部分のリスト張っちゃいますね int main(void) { char data; cbi(UCSRA, U2X); cli();/* disable global interrupt */ nop(); UBRRH = (unsigned char)0; /* ボーレート設定(上位バイト) */ UBRRL = (unsigned char)31; /* ボーレート設定(下位バイト) 9600 8mhz*/ //注: このコード例はデバイス定義ファイルがインクルードされることが前提です。 //初期化コードと併せられます。 outp(0xff,DDRD); outp(0xff,DDRB); for(;;) { nop(); data = 0x41; outp(0x01, PORTB); wait100ns(1000); outp(0x00, PORTB); wait100ns(1000); nop(); UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); /* 送受信許可*/ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0); /* フレーム形式設定(8ビット,2ストップビット)*/ while ( !(UCSRA & (1<<UDRE)) ); /* 送信バッファ空き待機*/ UDR = data; /* データ送信(送信開始) */ data = 0x41; UDR = data; /* データ送信(送信開始) */ sei();/* enable global interrupt */nop();nop();nop(); } }
699 :
692 :05/01/13 23:12:13 ID:E5P0wGSN
>>697 ほんまや、1桁間違えた。
そうすると、2000bps??わけわかんない・・・・
>>698 とりあえずOKだね。
UBRR=31ってことは、今は水晶発振子4.9152MHzなんですね。
これで2000bpsになっちゃうってことは、1MHzで動いているって事だ。
・・・・もしかして内蔵RCオシレータが動いていませんか??
>>670 BPSの値から言うとやっぱりそうなっちゃいますよね・・・
書き込みにはELMさんのISPライターを使っててhex書き込む際に
Device: ATmega8
Mode: Both
Low: 76543210
||||++++-- CKSEL[3:0] クロック源選択
||++-- SUT[1:0] - Startup Time選択
|+-- BODEN (1:BOD無効, 0:BOD有効)
+-- BODLEVEL (1:2.7V, 0:4.0V)
とあってそれとマニュアルを見ると
CKSELは1111でいいと思うので
avrss /fl01101111 test.hex
のような形で書き込んでいるのですがこれではだめなのでしょうか?
avrssはヒューズビット設定はHEX値だよ avrspだとBIN値でもいけるが。
avrxsは確か16進入力のはずだよ。 32bit版でいつの間にか2進入力になっているのに気が付かないで リセット無効にしちゃったよ(w
>>701 >>702 な、なんだってーorz
今日はちょっともう実験できそうにないんで明日報告しますね
皆さんどうもありがとうございましたm_m
704 :
699 :05/01/14 07:15:49 ID:cnpbuEOB
>>703 とりあえずヒューズビットを読み込めばはっきりしますね。
EZ-USBとか、8051とか、やってるスレないの?
ここでどうぞ。
707 :
670 :05/01/14 17:08:01 ID:kxVRx72Q
結果報告です、やっぱりヒューズを2進数で書いてたのが原因でしたOTL 16進数で書き直した所一発でAの表示が返って来ました・・・ みなさんどうもありがとうございましたm_m
>>707 オシロが役に立ったね。
はじめっからクロック周波数を疑って確認プログラム(LEDピコピコ)でも走らせれば良かったな。
H8MLのワサビいくら何でも鬱陶し過ぎる。 ML止めました。
>>709 そういうのはML止める前にMLに書け。ここに書くな。
711 :
651 :05/01/14 21:21:55 ID:ZLzdcmG/
埼玉県在住なんですが秋葉原でATmega8とかATmega48とかを売っている所ってどこがありますか? mega48はITプラザで扱っているようですが4個セットなのでできれば単品で売っているところを探しています
おまえら! ATmegaとかATtinyとかどうやって書き込んでますか? やっぱりchan氏のライターですか? 万能のライターとか無いのかな・・・ 秋月ライター使ってたがアップデート無いし見限るべきか・・・。
>>712 最初は秋月ライタ買ったけど、今はSTK200互換ライタ。
AVRがライタと基板を行ったり来たりするデバッグなんてありえない。
>>712 俺もSTK200互換ライターだな。
メジャーなのでライティングソフトが選べるのがうれしい。
書き込みソフトウェア部分が完全にPC側なので、書き込みソフトウェア
だけアップデートすればいいので面倒がないのがうれしい。
でもそろそろUSB-serialに移行したい。共立のでも飼うかな。
715 :
ど素人 :05/01/14 23:04:31 ID:VGy+cuVB
2313もTiny26もmega32もAVR-ISPでやってるけど、 Tiny26のリセットピンをIOピンに書換えた時はあせった リセット→IOにはできるけど逆はできないと気づいた しかたなくSTK-500のパラレルで戻したけど
>>717 そこが更新してくれて最近のデバイスも焼くことができればいいんだけどなぁ・・・。
STK200互換のが今は一番汎用性あるのかな。
>>711 http://www.wakamatsu-net.com/biz/ にatmega8がありますね。945円だそうです。
まー男ならDigi-Keyで大人買い(25個で@260円)だが。(25個までは@415円)
ATmega48はDigi-keyの大人買いで@192円。
Digi-Keyの送料は2000円なので
945*n = 2000 + 415*n により4個以上買うならDigi−Keyの方が安いし。
なんで秋月にATMegaシリーズを置いてないのか、誰か大人の事情を教えてください。
720 :
774ワット発電中さん :05/01/15 13:00:10 ID:dXu0FvTc
古いヤツの在庫が捌けなくなるから、ではないかと あまり売れてないのかなぁ
秋月は、不良在庫化した4433が無くなればmega8あたりを始めると思われ。
724 :
651 :05/01/15 14:33:27 ID:boWzm+LJ
>>719 ,721
レスありがとうございます。
単品だと結構良い値段しますね…orz
ITプラザでmega48を4つ買って使わなかった分は後で使い道を考えます…
みんな、rsコンポーネンツのリクエストシートに「ATMEGAシリーズも取り扱ってくれ」って入れてくれ。 (AT90S8515-8PCとかはあるんだがーしかも@1900円(-_-メ)
ATmega48をDigiKeyで100個 単価176.94000で買って17694円。送料2000円で19694円。消費税入れて 20678円。 これを単価500円(送料別)で売れば、50000円で、30000円の儲け。誰かやらないか?
90Sシリーズはほぼ全滅でつか。
>>727 最後の砦2313も、tiny2313が容易に入手できるようになればどうですかねえ。
設定がややこしくない分2313だけはしばらく人気あるような気もしますが。
そういえば相当前だけどPICのセミナーに出たことがある。 技術の人がH8は設定が面倒でしょと逝っていましたね。
>>729 PICだって16F628とかは、まず”CMCON”に”アナログコンパレータOFF”を書き込まないと
ポートが使えないぢゃないかー
あとVRCONもOFFにするとか。
>>728 tiny2313とtiny26Lって、どう住み分けするんでしょか?UARTをとるか、ADをとるか、ですかね?
だったらATmega48あたりにしとけ、という事になる。
mega8の仲間ってバランス取れてて使いやすいね。 AVRの中でも人気あるのはそのせいかと。
もしかして、RESETピンを入出力に使うようにした場合、シリアルプログラミング不可になるのか。 orz...
ATmega48をまとめ買いしようOFF。 Digikeyから到着する日辺りで秋葉に集まって購入者に分配する・・・とか?
737 :
774ワット発電中さん :05/01/16 19:39:21 ID:UyFCEmD3
このスレだけ異常に流れてないか?なんか変
なんだっけ、どっかの人数集めれば要望を出してくれるサイトがあったじゃん あれ使ってどっかにお願いしてみたら?
っていうか、路上で売ってくれよ、ここで予告して
>これを単価500円(送料別)で売れば、50000円で、30000円の儲け。誰かやらないか? >726がやってみれば良いんじゃないか?
100個分の梱包費用と梱包&発送の人件費がたったの3マソ? 配送トラブルでも起こったら大赤字だな。
>>726 >>663 のリンク先で4個1500円で売られてるから、
それ以下で売らなきゃ買い手が付かないだろ。
>>736 10個とか買うから地方発送頼む
(´・ω・`)
>>741 同意だな。やるとしても4個か5個単位で手間をへらさんと。
>>742 というか
>>663 がその役割担ってるって事かもね。仕入れ先はどこか分からんけど。
信頼できるもの同士で手間賃だけで共同購入ってのじゃないと難しいな。
2ch同志ってのは・・・ちょっと厳しいかも。
手渡しできる
>>736 なら可能だが田舎者のをれは無理・・・(´・ω・`)
結局高いばら売りにも理由はあるって事か。
744 :
774ワット発電中さん :05/01/17 08:30:18 ID:6pWpC3Py
じゃ、一応需要調査のテスト 『Digi-KeyでATMega8 , 16 , 48 等のDIP品を25個買って、東京で手渡し頒布します。 この機種に限ったのは、「万一あまっても、自分で使えるから」です(w。 郵送はしません。不良品返品は受け付けません。運が悪かったと思ってあきらめてください。 他にも購入提案があれば教えてください。』 これでいいか。(僕自身、東京在住ではないので、自分ではやらない可能性大。)
>>744 裏通りでサングラスとマスクして立っていて、その人に指3本見せればAtmega48を3個1000円売ってくれる
っていうスタイルはどうでしょうか? 殺伐と。
746 :
774ワット発電中さん :05/01/17 17:11:31 ID:QATCBpX2
747 :
744 :05/01/17 23:55:33 ID:/q7rIVu/
>>745 裏通りで客が付くまで立ちんぼ(しかもノルマ達成まで複数客相手)なんて、やりたくありません(w
「AVRいりませんか〜」 「mega48いりませんか〜」 ああ、寒いわ。AVRでLEDつけても暖かくないし・・・
749 :
774ワット発電中さん :05/01/18 13:32:47 ID:WVh9TZe5
AVRのプログラムをCかC++で書きたいんですが、 参考になるHP知りませんか?
某ML、とうとう初級C言語講座に…
753 :
774ワット発電中さん :05/01/18 14:01:41 ID:WVh9TZe5
どうもありがとう。
>>754 × ここで少しずつ食ってみない?
○ ここで少しずつ作ってみない? 食ってどうする・・・・orz
インラインアセンブラについてはまろりさんのページに日本語訳がある。
>748 秋葉で公式のフリマとかないのかな? 路上販売かぁ 青いビニールシートでも広げて しばらくしてると、警察の方に「君、パスポートは?」 いや、「日本人です… ってか路上販売って法的にどうなの?商業の自由かな?
道路の使用許可が必要。
AT90S8535のプログラムをWinAVRで作成しているのですが、 WinAVR で16ビットのレジスタ(OCR1Aとか)に値をセットしても AVRStudio 4 でシミュレーションするとセットした16ビットレジスタの 下位8ビットのレジスタ(OCR1ALとか)にしか値がセットされません。 実際書き込んでみると問題なく動いている感じなのですが、 シミュレーションでのこの現象はどうしようもないのでしょうか?
>>754 追加して欲しい事。
1)MfileでCOFファイルを出すようにしておけば、AVRStudioでソースデバッグできる。
2)WinAVRは0b11100101 と、0bで2進数が書ける。
3)WinAVRのProgramersNotesPadでMake Programすれば、AVRStudio経由じゃなくてもデバイスへ書き込める。
(書き込むツールはMfileで指定する)
Wikiを立ち上げてくれれば一番いいんだけどねぇ (Wikiの編集は出来ルンだけど、導入/立ち上げが出来ないヘタレです)
>>760 複数の人でやるにはWikiいいですね。私も立ち上げは無理なんですけど。
ちょこっとgetting started notesをさわってみたんだけど、意外なほど変更が多くてびっくり・・・・
header fileみたらお馴染みの関数マクロが結構「そりゃそのうちなくすからこっち使えゴルァ」なコメントだらけ。
ところで、以前のバージョンって、PRG_RDB()でintやlongの定数へのアクセスってできたんでしょうか?
getting started notesではまるでできるような書き方なんですが、
現行バージョンではPRG_RDB()はprogmem_read_byte()にdefineとなっていて1バイトしかアクセスできない。
>>759 Win環境でのMFileの使い方ってのも必要かな。
実は起動方法を今日初めて知った私(馬鹿)・・・readmeにちゃんと書いてあるんだけど
協同購入みたいな話出てるけど、欲しい香具師みんなで秋月とか千石とかに 「AVRありますか」「入れる予定ありませんか」とか聞き倒したらいいと思う。 ホントに数があるならいれるんじゃないかなと期待したい。 遠方の人はメールででも問い合わせしてみるとか。
>>761 デバイスの違いをどうするかってのもあるな。
AT90Sシリーズ用に書かれたものなので、mega/tinyでも使えるように書き換えがいる。
getting started notesだから、基本的な使い方はデータシートと重複しても書かなきゃならないし。
サンプルプログラムもmega用も用意した方が良いかな。
>>750 >C言語の場合、XORの計算はどうするのでしょうか?
自分で調べようともしないというのもスゴいし、
こういう超低レベルな質問を恥ずかしいと思っていないのもスゴい。
そして、それに懇切丁寧に答えている常連の方々の
心の温かさには涙が出そうになりました。
日本の未来はバラ色だね!!
>>761 cbi , sbiがDeprecated: になっているのが痛いですねぇ
_BVとか ~_BV()は、どうもピンと来なくて。
>>764 C言語 xor の検索結果のうち 日本語のページ 約 6,090 件中 1 - 50 件目 (0.34 秒)
Wikiを設置してみたけど・・・しょぼい。 どっか良いCSSとか無いですかね。
>>767 しょぼくてもいいから、公開しておくれ^−
>>767 しょぼくてもいいよ。寄ってたかって推敲できればそれでヨシ。
>>765 >cbi , sbiがDeprecated:
やっぱりプロセッサ特異的なものは残せないんでしょうかねえ。
便利だから付属マクロ集か何かに残して欲しいところです。
>>761 avr-libcのマニュアルって日本語訳あったっけ?もしなければこちらも。
>>767 どうしてもヤなら、いっそのことwikipediaにAVRのページを作っちゃえ、とか。
>>775 お。早速更新されてる。おもろい。
でも更新する際になんかエラー出ませんか?
>>776 エラー出ますね。書き込みはちゃんとなされているようですが。
暇なときに皆さんも好きなドキュメントをどうぞ。
アルファベットにADC,AnalogComparatorときて、Assembler(インラインマクロ)で頭抱えている・・・
まろりさんの翻訳がすばらしいなんて書いたらharaleitさんにメチャ失礼だし。やるしかないなあ
まあ私の英語力のつたなさは誰かがカバーしてくれることを願っています。
778 :
778 :05/01/20 00:08:33 ID:c8p1XKkb
Wikiの練習場所が欲しい。
779 :
778 :05/01/20 00:59:17 ID:c8p1XKkb
>>779 うぉーきれいになっている。
ソース見て使い方勉強します。
みんな、Wiki書きって慣れているのか。なんか凄い勢いでページが更新されていっているんですけど
>>781 全然慣れてない。
きっとみんなこんな場(書きっぱなしじゃなくて情報集積される場)を渇望していたんでしょう。
Wikiって初めは混沌だからなー。しばらくたったらまとめページでも作ればいいか
Mega8515 に対応したICEってあるんでしょうか? ICE200だとオリジナルの8515しか対応してないですよね?
>>784 Mega16でも代わりに刺しとけ。ってわけにはいかないのか?
786 :
774ワット発電中さん :05/01/21 13:57:39 ID:ZQUlZEP3
AVRで遊んでみたいんだけど、自分でどの程度扱えるか分からないので、 初期投資をなるべく抑えたいです。 昨日、寝る前に色々と検索しててISPケーブルを安価に自作するってのを見付けたのですが ブックマークするのを忘れて、今日になったら見つからない。 どなたか、ご存知ないでしょうか?
787 :
774ワット発電中さん :05/01/21 13:59:11 ID:Ia/oGqLJ
>>790 登録すりゃいいじゃん。
別に登録したらお金取られるわけじゃなさそうだし。
ただ、RS使うとたいていのものは手に入っちゃうし、
なけりゃ名古屋まで私は行っちゃう。
AVR Wikiか、おもしろそうだね。 Wikiもいいけどhatena groupもおもしろそうだよ。キーワードをWikiっぽく使える。おまけにBlogから自動リンクできる。
ちょっと教えてください〜 Getting Started Notesのプログラムメモリ(フラッシュ)の部分なんですけど、 配列の確保に関して、用例にあるような prog_char TEN[]={0,1,2,3,4,5,6,7,8,9}; だと、これだけでSRAM上に定数を置いてしまうようです。 配列で、スタートアップルーチンで定数をSRAM上に展開させることなく、 必要時にmemcpy_P()などでコピーして使用できるようにするにはどうしたら いいのでしょうか?整数型はprog_charなどを使い、文字列はPSTR()を使えばいいし、 構造体も型定義でなんとかできるようなのですが、配列だけうまくいきません。 どなたか教えてください・・・・○| ̄|_
>>794 どんなソースなのか知らないけど、 static とか const とかいう話か?
>>794 prog_char *TEN={0,1,2,3,4,5,6,7,8,9};
WinAVRの最新版とMega323ではちゃんとプログラムメモリだけに格納されたけど? WinAVRのバージョンは?使っているデバイスは何? もしよかったらソースも見せてくれ
799 :
774ワット発電中さん :05/01/22 23:15:40 ID:Rqc5GYht
798だけど、 prog_char TEN[10] = {0,1,2,3,4,5,6,7,8,9};で確保するためには グローバル(main関数の前)で宣言しなきゃだめみたいだ。 main関数の中でprog_char TEN[10] = {0,1,2,3,4,5,6,7,8,9};をやっちまうと SRAMにも書き足されてしまう。
>>799 グローバルだとOKですか。
こんなソースで試していました。TEN2のコメントアウトを外すと、2313ではスタックがおかしくなって、hogehoge()からのリターンで0番地にとばされちゃった。
TEN[]を*TENにすると問題なし。
#include <stdio.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
void hogehoge(uint8_t data)
{
PORTB = data;
}
int main (void) {
prog_char *TEN[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,・・・・,63};
//prog_char *TEN2[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,・・・・,63};
hogehoge(pgm_read_byte(&TEN[5]));
PORTD=12;
}
>>800 >2313ではスタックがおかしくなって、
そうそう。WinAVRって、メモリ上限に関しての警告とか出してくれないんだよな。
static mem[10000] とかやっても、通ってしまうし。
(出してくれる方法ってある?)
>>801 グローバルだと確かに無問題ですね。なぜだかわからないけど。
フラッシュ上の定数ってどでかいテーブルとかメッセージなどを置いておくものだろうから、
通常はグローバル領域で問題なさそうです。
グローバル領域だと
prog_char Msg[]="HogeHogeHanage"
って感じの文字列でも問題なくなっちゃいますね。なんかPSTRの意義うすくなってきたな。
LCD_print(PSTR("hogehoge"));のように関数に直接書き込みたいときとか、
見やすいように使用する場所に書きたい場合だけ?
追っかけてみたら、初期定数展開分だけSP初期値がずれるコード吐きますね。
2313で128バイト以上のものを置くとSPはSRAM外に置かれてしまう。
不思議なことに展開はSRAMの若いアドレスから使われるのに(0x72バイトなら0x60-0xD1)、
SP初期値はDF→6Eと、まるで下位側に確保されたような動きをします。
確保しているというわけではなくバグっぽい?
Chan氏の最新版パラレルポートリーダライタで 昨年末、都内某所で入手したプログラム済みのATmega8TQFP からプログラムをダウンロードしたのですが 00 01 02 03…FC FD FE FF をアドレスごとに循環した データしかダウンロードできませんでした。 秋月で買ったATtiny26では、自分で書き込んだプログラムも ダウンロードできデータも一致したのですが… 事情通の方、データ不整合の回避方法を教えてください。
ロックビットたってる。回避不能。
>>804 このATmega8に、SDカードIF、FAT[12:16]ファイルシステム、
内蔵フラッシュメモリアップデート、著作権認証機能の
プログラムが書き込まれているので、何としてでも
ダウンロードしてみたいのです。
やっぱり、ロックビットを解除する方法は無いでしょうか?
>>805 ロックビットを解除する方法?あるよ。
チップイレース。
808 :
774ワット発電中さん :05/01/23 16:46:03 ID:aPYoffhn
チップテストモードで読み出しが可能になるが教えない
>>808 チップテストモードですか…PDFのデータシートを見て探します。
最悪ダウンロードは無理でもクローンが作れれば良いのです。
>>802 グローバルだとデホルトでstaticになるからだろ。
ローカルの場合、明示的にstaticを付けなければならない。
>>810 constつけても一部はだめでした。
テストVersion WinAVR 20040720
#include <avr/io.h>
#include <avr/pgmspace.h>
void hogehoge(uint8_t data)
{
PORTB = data;
}
//const prog_char *msg="0123456789ABCDEF0123456789ABCDEF";
//const prog_char *msg={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int main (void) {
//const prog_char *msg={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//const prog_char *msg="0123456789ABCDEF0123456789ABCDEF";
hogehoge(pgm_read_byte(&msg[PORTB]));
PORTD=12;
}
適当にコメントを外して試しました。出力をAVRStudio4.07にかけて
配列(文字列)がSRAMに複写されるか、コードでSPLの初期値が0xDF
(2313で)になっているかどうかでチェックしました。
PORTBを読み書きしているのは単に最適化で消えてしまうのを防ぐためです。
で、結果は ローカルの場合。 const prog_char *msg={0,1,2,3,4,5,6,7,8,9}; →正常 const prog_char *msg="0123456789ABCDEF"; →SRAMコピーあり、スタック正常 const prog_char *msg1=PSTR("0123456789ABCDEF"); →正常 グローバルの場合。 const prog_char *msg={0,1,2,3,4,5,6,7,8,9}; →正常 const prog_char *msg="---------"; →SRAMコピーあり、スタック正常 const prog_char *msg1=PSTR("0123456789ABCDEF"); →コンパイルエラー おまけ ローカルの場合。 const prog_char msg[]={0,1,2,3,4,5,6,7,8,9}; →SRAMコピーあり、スタック異常 const prog_char msg[]="---------"; →SRAMコピーあり、スタック異常 グローバルの場合。 const prog_char msg[]={0,1,2,3,4,5,6,7,8,9}; →正常 const prog_char msg[]="---------"; →正常 結局、文字列はPSTR()使え、配列はprog_char *msg={.....}でFAかな。
>>803 パッケージを薬品で溶かしてROMを露出さして、
X線をロックビットに当ててロックビットだけ消去しろ
マジで聞きたいんだけど、みんな、AVR使って、何を作っているの? 差し支えない範囲で、教えてくれない? 俺は、STK500で少し遊んだくらいで、今は、EZ-USBをMacから使えるように、 色々試しているところ。
816 :
774ワット発電中さん :05/01/24 00:47:54 ID:u9kn3zvl
来年度の新入部員用ロボットキット AVRはH8みたいに単価が高くないから入門で焼き切る心配があるときはいいよね
>>815 秋月のRTC-8564NBと、キャラクタ液晶を繋いで、年月日表示のデジタル時計。
RTCはI2Cなので、BASCOM-AVR(デモ版)でプログラム。
液晶表示もBASCOM-AVRのLCD命令だけだしな。
ヘタレですまん。
>>815 今まで作ったのは、PWM-LEDピコピコ、デジタル時計、車のスピードメーターってとこ。
>>814 ちなみにこれはWinAVRをインストすると
C:\WinAVR\doc\avr-libc\avr-libc-user-manual\FAQ.html
にもあります。
820 :
811 :05/01/24 10:09:17 ID:6C71su++
>>814 おお、いいヒントがあった。FAQの方は見落としてました。
How do I put an array of strings completely in ROM?
const char foo[] PROGMEM = "Foo";
これでいいみたいだ。長い文字列指定しても問題ないみたい。
USBしかないノートPCでもAVRの開発とかしたいのでUSB→RS-232Cの変換ケーブルを 探しているのですが何かお勧めがあったら教えてください。
今までに作ったのは、どっとマトリクスLEDとか、デムパ時計、ファンコンくらいかなぁ。
>>819 灯台下暗し orz
815です。答えてくれて、ありがとう。
俺のMacでは、USB2.0は使えないので、AN2131/2135で十分なのだけれど、
このチップでは、A/D変換とか、PWMとか、便利な機能がないので、
この先、複雑な応用回路を作りたくなったら、どうすれば良いか...
>>823 ファンコントローラですか。PWM制御で、超微風は可能ですか?
実は、俺は、寝室に外気をとり込んで冷やす目的で、
すごく原始的な換気扇コントローラを作りました。
その当時、マイコンを使ってPWM制御なんて、とても出来る技量がなかったので、
トランスのタップで電圧を下げて、そのタップの切替を、中国製の扇風機のコントローラから
制御したリレーで行う物でした。一応、リモコンも出来ます。
難点は、オムロンの100Vリレーの切替音がうるさく、頻繁に風量を切り替えるような
モードでは運転できない事です。
調光器では、超微風が出来ないので、電圧制御になりました。
最近は、少しはマイコンも使えるようになったので、PWMをつかって、夏までは、
もう少し、賢い奴を作ってみようかなと考えてます。
>>821 俺の場合、Mac上のVirtual PCで、KeyspanやProlificチップを使ったUSB-serialアダプタ
につないだSTK500に、STK500付属のダウンローダから、ダウンロードしてます。
ただ、これが、Windowsの仮想COMポートで動作するかどうかは不明。
(VPCでは、実COMポートを使用)
827 :
821 :05/01/25 20:32:43 ID:66Adn0Kn
レスthx
秋月の変換ケーブル買ってきます。
>>824 確かにEZ-USB持っているんで追加出費無しで出来るけど
AVR以外ので使うには別途ファームを作らないと無理なので
おとなしく変換ケーブル買ってきます…
>>825 AVR繋げる
828 :
774ワット発電中さん :05/01/26 01:11:50 ID:C+wBH2OZ
突然で申し訳ないです。 どなたかmega48でUART経由で書き換え可能なブートローダを 作成した方いませんか? 当方C言語で作成してますが、どうにも動作イメージがつかめなくて。 話変わって、 tiny13にソフトuart入れて色々したいとかも思ってまする。
>>825 リレーをSSRにするだけで十分だったりして。
誰かやったことある人に聞きたいのですが、 秋月のH8のUSBセットと付属のVBのプログラムで通信して、速度が 10秒間で333回通信*64byte*2(往復)=>4.3kb/s とかで、 繋ぎなおしたりしていると、たまに状況が変わって 10秒間で1000回通信*64byte*2(往復)=>12.8kb/s とかになっていることもある。 上の2つの違いもなぜ起こるかわかっていないのですが、 通信速度の遅さといい、こんなもんなんでしょうか?
831 :
830 :05/01/26 02:39:05 ID:a/+G769i
1000回(たまに1001回)なのはUSBの何かが1msだった気がするのと、 333回(少し変動)なのは上のきっかし1/3ということも気になります。。。 ちなみに通信のソースも秋月のを利用しているのでEP1のみバルク転送です。
>>830 H8側のファームを変更しない限り、そんな物だろ。
液晶ドライバとかもかなりウェイトが掛かってるって話だしな。
秋月H8-USBに関しては、色々なサイトで解説や利用法が提示されている。
ぐぐれ。
>>829 それも、一応考えたのですが、トランスのタップどうしが絶対にショートしない回路
となると、リレーが一番安全と言う結論でした。
834 :
830 :05/01/26 10:26:57 ID:a/+G769i
>>832 情報を一部載せ忘れました、すいません。
実際には秋月USB基板ではなく3052+USBNで同じピン配置にしているだけで
LCDディスプレイとSCIとLEDとSWは無いんです。元のプログラムは同じですが。
>>834 んだからよ、秋月H8-USBのオリジナルファームを使う限り、転送速度はそんなものなの。
デバイスデスクリプタでの最大パケットサイズ(64バイト)を変更すれば良い訳だが、
送受信ルーチンの変更せずに上手く行くかどうかは知らん。
836 :
834 :05/01/26 11:09:08 ID:CzXw+GGW
ああ、思い出した。 パケットサイズの変更よりも、フレーム辺りのパケット数指定を増やした方が そのファームウェアの場合は安全だったかな?
837 :
834 :05/01/26 12:40:24 ID:CzXw+GGW
フレーム辺りのパケット数指定はアイソクロナス転送の時だった…。 しかも、どっちにしろintervaltimer値って無視されるんだっけ… という事で836は忘れて頂戴…
838 :
774ワット発電中さん :05/01/26 13:29:05 ID:rPu1wDRY
↑低学歴(ぷ
digikeyにATMEGA48,88が入荷!!
>>839 ↑すまん、年寄りなんで、MLFとかTQFPは勘弁してくれ。
842 :
774ワット発電中さん :05/01/27 20:59:41 ID:AV7kZkAK
自分のプロジェクトを投稿してみるのもいいな
ISP更新専用の、スタンドアロンのISPライタの製作例ってないですかね・・ 固定デバイス固定ファームで、ボタンで転送、あとベリファイ結果だけわかるようなやつが欲スィ (書き込むデータはライタ本体に焼きこみ) いや、クソ重いノーパソ持って、客先をひたすらバグ修正に巡るハメになりそうなんで・・ (しかもノーパソ1台しかない罠) 誰か携帯アプリでライタ作ってくれないかな(無茶
>>843 軽いノート買うのが手っ取り早いような・・・。
>>843 昔、AVRとシリアルEEPROMを使ってポケットH8ライタを作ったことがあったなぁ。
なんでもフィールドサービスで使うらしかったけれど。
H8が品薄になるとか、PICが値上げになるとかの噂・・・正直うんざり。 無くなってから困ればいいじゃないヽ(´ー`)ノ
848 :
843 :05/01/29 03:43:16 ID:XbUPTO67
ワンダースワンとは・・(汗 KEYFOBイイ! 漏れの検索では全くひっかからなかったですよ 早速オネダりしてみまふ 現地回るのは面倒なんすよね・・ EPROMと違って、PC扱えない奴は外に出せないんで リストラ対象オサーンでも扱える装置は便利ですよ 全部PHSとかLAN経由で書き換えが出来ればいいのに・・ ていうか、使われてる12Vのアルカリ電池の存在を初めて知りました こんな電池もあるのね
>>848 AN910型式ライタ(COMライタ)のファームを改造すれば自作も出来そうだね。
外付けEEPROMつないで、スイッチ1つでCOM→EEPROMかCOM→ISPかを切り替え出来るようにして、
スイッチ1つでEEPROM→ISPが出来るようにする。ロータリースイッチで複数EEPROM領域を切り替え。
ターゲットより大きめのフラッシュを持つAVRを使って、SPM命令でフラッシュに書き込みでも行けるかも。
これもどこかで自作例記事を読んだような気がする・・・
>>845 keyfobのマニュアル、意味なく重すぎ(バックのグラデーションのため?)・・・・
セレ500のノートパソコンではページめくってから表示まで16秒○| ̄|_
なんかやだな、こんな文書作るところって。
おしえてくださいー timer.hにこんなのがあるのですが、 static __inline__ void timer0_stop (void) { TCNT0 = 0; } static __inline__ void timer0_start (void) { TCNT0 = 1; } これ、何に使うのでしょうか? timer0_start()してもtimer0がスタートするとは思えませんが。
>>851 #warning "<avr/timer.h> is deprecated, and will be removed in the next major release of avr-libc"
/*
* NB: this is completely bogus.
*/
static __inline__ void timer0_stop (void)
>>852 見てなかった・・・・・・timer2と一部のtimer0には使えないから削除ってことなのかねえ。
completely bogusって・・・・・○| ̄|_
ちょっと教えて下さい。 基板に幾つかピンヘッダを立てるでしょう。 それで、そのピンヘッダどうしをつなぐケーブルはどこで入手できますか? 2pin, 6pin, 8pin など、欲しいのですが、検索しようにも、 うまいキーワードが浮かばないので、ヒットしません。 キーワードだけでも結構ですから、お願いします。
>>854 フライングワイヤーで。
適当なコネクタの端っこを使うこともできるで。
当方関西だが、日本橋のデジットは 端子と線を買うだけでその場でつくってくれたぞ。 今もそうかは解らんけど。 右も左もわからない頃に10PINのISP端子付き書き込み治具を 作ったんだけど、一番よく使ってる。 (・∀・)イイ!!
>>854 秋月のピンソケット(メス)にフラットケーブルを半田付けして、熱収縮チューブ被せてます。
>>854 2pinはPC-DIYショップに結構ありますよ。今はあまり使われませんが、
ちょっと前のCDROMの出力をサウンドカードに接続するケーブルなどがまだ置いてあるケースがあります。
6pin,8pinってのは2x3,2x4のことですか、それとも一列のものですか?
一列なら、それ用のピンヘッダ+コネクタの組み合わせを使います。
http://www2.cyberoz.net/city/satodenk/conn.htmlの 、2.5mmピッチ基板用(モレックス:5051/5045)あたり。
2x3,2x4はあまりないので普通2x5=10pin用をつかいますね。
フラットケーブル用コネクタ(ヒロセ)写真5あたりと、フラットケーブルを使用。
フラットケーブルも同じ店に売っています。
8pinなら、以下のように10pinのヘッダを立てて、■部のピンを折り、コネクタ側は折ったピンを突っ込めば
逆接続するのを防げます。
○○○○■
○○○○○
ピンヘッダの代わりに写真1のようなものを使うことでも逆接族防止ができます
(逆接続防止切りかきと突起がある)
連投ごめん。
それで、フラットケーブルの方は、
>>857 氏のように、PC基板用のを切り取って、
使う事も可能なので、近くのPCショップに行ってみます。
あと、
>>860 氏のヒロセのコネクタですが、これと、フラットケーブルをつなぐためには、
圧接工具が必要と言う認識でよろしいですか?
逆接を防ぐノウハウまで教えてもらって、恐縮です。
>>859 氏の秋月ですが、実は、一昨日からかわら版のネットショップで色々部品を物色していて、
ただ、このワイヤが見つからないので、ほとんど全てのリンクを調べましたが、
とうとう見つからずに、ここで聞いてみる事になりました。こちらの方法も試してみます。
>>858 氏。こちらは北関東で秋葉まで行くと1万かかります。最近は、ネットで済んでしまうので、
行く機会がまれになりました。むかし、ラジオデパートの向かいの線材屋で電話線の活け造りを
してもらって驚いた事が有りますが、あそこなら、やってくれそうな気もしますが、やはり、
交通費を考えると、行けませんです。
>>863 そこ、コネクタ単体はともかく、Ass'yまでしてくれるの?
よくわからんかった。
ミスミ しらん? たっかいけど。
秋月から40pinのAVRが消えた・・・。 (´・ω・`)
俺、ずっとC使ってたけど、アセンブラ覚えようと思った。 やっぱ痒いところに手が届かない場合があるのがもどかしい。 ('A`) ああん
WinAVR入れてアセンブラでコードを書いているんだけどGNUのアセンブラで コードを置く場所を指定するのはどうすれば良いんだっけ? 割り込みベクタへのコードの書き方が分からない… 他のアセンブラだとORGとかの疑似命令で指定できたと思ったけど… つか、GNU アセンブラのマニュアルってどこにあるんだ…orz
AVRは知らないのだが、一般的にはldで指定するんじゃないか。 ldscriptかコマンドラインか…忘れた。
870 :
868 :05/01/31 21:57:48 ID:5BIw3Jvu
スマン。どうも.orgで指定できないなと思ったらavr-gccでアセンブルしていたのが原因だった…il||li ○| ̄|_ avr-asでアセンブルしたら.orgで指定したアドレスにコードを吐いてくれました
>>866 やはり、需要がないんか?情報がないと回路やプログラム作れんとかか?
>>872 40pinのAVR使いたいような人はいまさら旧AVRってのも嫌なんじゃない?
どうせなら値段そう変わらないmega16あたり使いたいと思うし。
もしかしたら単に在庫がはけたと言うことかもしれない(w
あ〜〜 軽石 うざって〜! 居なくなれ!
>>874 なぜ他人の戯れ言がそんなに気になるね?
2chで煽り耐性鍛えないといかんよ。
>>866 ATMega8,16,32あたりを新しく入れてくれる前兆なら嬉しいのだが。
>>874 その程度に耐えられないようなら、2ちゃんねらー失格だな
>>874 Qの次は松かよ。
うぜぇな、IP晒すぞ。
小学5年生くらいか
>>874 に同情。 漏れも誹謗されたぁ ゜(゚´Д`゚)゜
>>881 Mega16 > Mega162 じゃなかったっけ?
僕はMega168キボンヌ だな。
俺もmega88V系が欲しい。ローパワー面白そう。
>>883 88Vなら、Digi-keyで入手できるんだけどなぁ。
88はすぐ売れきれちゃうぽ。
Mega48V--25個@192円
Mega88V--25個@276円
俺も軽石嫌い。 MLやらBBSもNGワードであぼ〜んできればいいのに。
>>885 ML=メーリングリストなら、メーラの設定で差出人の名前でフィルター掛けて、
特定フォルダに振り分けることは可能だと思うけど?
で、軽石って何者?
↑ググれば出てきます
軽い市 PICでググッたら出てきた。 恐ろしく内容が・・無い。 なんだあれ?
ブログが痛いなー
漏れもボロクソ言われたよ… もうだめぽ orz
刈る意思が登場するBBSの管理人が 正直いうとあまり来て欲しくない・・と呟いていたのをヲレは知ってる。
>>882 Mega162≒90S8515系
Mega16≒90S8535系
機能の系統が違う。
一番の違いは外部バスの有無。
溜飲下がるのも最初のうちで 湾パターンでやられるとうざいよね。正直。 ワザトやっているのかな。 きてぃっぽいよね。
いいか、みんな (゚д゚ ) (| k |) サンポール ( ゚д゚) ドメスト \/| k |\/ °。o ( ゚д゚) 。o°o。 (\/\/ _ =(_)○_
みんなも黙ってただけで、嫌だたーんだね。 ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ (・ ・) (・ ・) (・ ・) (・ ・) (・ ・) (・ ・) /【◎】 /【◎】 /【◎】 【◎】ヘ 【◎】ヘ 【◎】ヘ / /┘ . / /┘. / /┘ └\ \ └\ \ └\ \ ノ ̄ゝ ノ ̄ゝ ノ ̄ゝ ノ ̄ゝ ノ ̄ゝ ノ ̄ゝ 刈るさん ひと言お願いします!
カルミンってPIC系の人なんでしょ? しかるべきスレでやって欲しいな。 それとも、AVR系のサイトで暴れてる松やんと同じ意図なの?
mega162は、USARTが2ちゃんねるある
>>896 [H8-ML(5392)]も仲間に入れてあげてください。
>>891 なんかさぁ、いいホームページの条件は
「うかつに掲示板を設置しないこと」って思えてきたよ。
有名な人のホームページの掲示板見ると、
たいていヘンな奴が住みついているんだよね。
そこの「常連である」ということによって自分を権威付けしようとする奴。
そういうヘンな奴は、たいてい自分自身のホームページは無いか、
あっても非常にショボい事が多い。
その意味で、掲示板を廃止したなひたふの判断は正しい。
>>899 同意。
あそこにもKが登場してたな〜
ヤツ(K)のしょぼいページみて驚いたよ。年齢に。
絶対に10代だと思ってたら・・。
>>899 絵描き系のHPは実際にそうしてるところ多いよ。
俺も、時々軽石さん見かけるけど、そんなに嫌か? 直接突っ込まれたこともあるが、ちっとも悪い気はしなかったけどなぁ。 想像するに、彼は、パソコン通信時代からのBBSの住人なのだと思う。 特にNifty。古き良き時代、会議室の質を維持するために、新参者に辛口の コメントを出してくる常連さんは沢山いた。 今のように、匿名主体のBBSになってくると、コテハンで通すのは勇気がいるね。
>カルミン しかし、それだけ永くやって来て趣味の部類だとしてもあの程度のレベルの低さじゃなあ。 永遠の初心者たちが、それ系の掲示板を次々に廃止へ追い込むのは何とかしてくれ。。。
904 :
774ワット発電中さん :05/02/03 05:03:33 ID:Kekm6g9H
掲示板を廃止せずに糞コテを晒すのも一興
ヤツはなぜ、H8のMLでLINUXの話をしてるんだ? 真性?
>>906 どこへ行っても相手をしてもらえないからでは?
WinAVRで、 プログラムEPROMを何バイト使って、SRAMを(変数領域で)何バイト使ったか? っていう情報はlinkするときに出るんですかね?マップみてもよくわからないので 見方を教えてください。
なひが掲閉めたのは撃つになたから
まぢで?
あそこのオペアンプ用法は忘れたときに重宝してたんだけど。
>>908 変数領域のサイズは hoge.lst 中の .bss のサイズ
終了アドレスは、avr-objdump -t hoge.elf して __bss_end
eepromも同様
AVRのUARTですけど、 ■UDREは送信可を表すのでリセット中セット(1)されます。 ■UDRIEがセット(1)のとき、全割り込みが許可(SREGのI=1)されていれば、UDREのセット(1)は 送信データレジスタ空き割り込み処理ルーチンを実行させます。 ってなっていますが、逆に、UDRにまだ何も送信していない状態(UDRE=1)で全割り込み許可の 状態でUDRIEをセットしたら、いきなりUDR空き割り込みが呼ばれるのは期待していいですか? AVR Studio上は期待通りに動いているようなのですが。
UDRE割り込みはレベルトリガである、とどこかに書いてなかった?
>>914 外部割り込みのレベルトリガみたいなもの(条件さえそろえば掛かりつづける)でいいってことですね。
データシート(2313,mega8/翻訳版)にある「UDRに書き込むか割り込みを禁止するかしない限り
割り込みが掛かり続ける」というのは同義と考えていいですよね?
んだ。 ちなみに、初回書き込み分はすぐにシフトレジスタに送られるから 2回連続で割り込みがかかるね。
>>916 いろんなやり方があるけども、無駄な割込を減らすという点では、送信割込処理で
リングバッファから取り出して、リングバッファが空になったら送信割込禁止して
送信割込処理を終了するのが一般的では?
1バイト送信処理(非割込処理)では、リングバッファ(FIFO)に送信データ書き込ん
だら送信割込許可するか、リングバッファが空でUDRE=1なら直接送信バッファに
書き込んで、送信割込許可する。
>>917 送信割り込みって送信完了割り込み?後半を読む限りでは送信データレジスタ空き割り込みのことですよね。
AVRのUART使用サンプルプログラムを捜してみたところ、
送信完了割り込みをつかうものしか見つけ切れませんでした。
何かUDR空き割り込みよりも有利なポイントがあるのでしょうか?
うちのMega8も char c; c = '>'; do { } while(!(inp(UCSRA)&(1<<UDRE))); UDR = c; でしか動かしてないや。
>>919 それで済むならそれが楽ですもんね。俺も現実に作ったものはこれしかやってない。
char c;
c = '>';
loop_until_bit_is_set(UCSRA,UDRE);
UDR = c;
がきれいでない?
そんなマクロあったのか!(w
>>920 送信の時は、ここが無限ループになって、CPUがダンマリになる、ってな考慮はしなくてもいいんですかね?
>>922 送信時は送信設定が適切ならここが無限ループになることはあり得ないと思うが。
>>923 > 送信時は送信設定が適切なら
~~~~~~~~~~~~~~~~~~~
適切でない場合の考慮までする必要はないとすれば、別にいいのか。
>>924 UBRR設定と送信許可設定が適切でないならそもそも動かないから無限ループに
なってバグに気づいた方がましだと思う。特殊なものでない限りはこれらは初期化
ルーチンで1度だけセットされるだけなので、まあ大丈夫じゃないかと
(もう一度呼ばれるならすでに暴走してる)
UBRR設定を変更する(通信速度設定ができる)ようなものならちょっと考える必要があるかもね。
#define wait_UDRE \
UCSRB = UCSRB | _BV(TXEN); \
if (UBRR>MAX_UBRR) { UBRR = UBRR_DEFAULT; UBRR_ERROR=1; } \
loop_until_bit_is_set(UCSRA,UDRE);
ってな感じにするとか。
926 :
917 :05/02/05 09:48:09 ID:p/IkZCDO
>>918 指摘のとおり、『送信割り込み』は、「送信完了割り込み」ではなく「送信
データレジスタ空き割り込み」です。
送信データレジスタに、書き込んだデータが、送信シフトレジスタにロード
されると、「送信データレジスタ空き(割込)」状態が発生し、ストップビット
の送出まで終了する「送信完了(割込)」状態が発生します。効率良く送信する
には、「送信データレジスタ空き(割込)」を使います。「送信完了(割込)」は、
RTS等のフロー制御信号をON/OFFするタイミングを知るため等に使います。
>>919-920 滅多に送信しない、かつ送信時も1バイトのみであればそれでもいいが、大抵の場合
ライブラリは以下のような作りになっていると思うので、10バイトの文字列を出力
すると、文字列全部を出力し終わるまで(9600bpsでも約10mS、1200bpsだと80mS
以上も)関数から戻ってこない。
void putc(char c)
{
while(!(inp(UCSRA)&(1<<UDRE)));
UDR = c;
}
void putc(char *s)
{
while(*s)
putc(*s++);
}
>>926 > void putc(char *s)
> {
> while(*s)
> putc(*s++);
> }
そりゃ、再帰呼び出しすれば、なかなか帰ってこないだろうて(w
それはともかく、確かに232C送信を割り込みで並列処理してくれれば、とても嬉しいので
誰か教えてくれ。できればAVR-Wikiに書いておいてくれれば、嬉しい
ATMega88のDIP品はまだ入手難だよねぇ。 TQPFだと取り替えられないしなぁ。 なんでCPLDみたいに、PLCC品を出してくれないんだろー。
まだっていうか、週明けだね。digikey に ATmega88-20PI が入るの。 そろそろ流通大丈夫なんでない?
>>929 え、来週入るですか。
ところで、ATMega88って、ATMega88-24ってな機種もあるんですか?
931 :
917 :05/02/05 11:14:46 ID:p/IkZCDO
>>927 「avrgcc」同梱の、サンプルコード集「gcctest」の「gcctest9」に入っている
「uart.c」/「uart.h」が送/受信とも割込処理になっている。
結局のところ『資料がないんじゃなくて、使う側に読む努力や能力がないだけ
なんだろうなぁ』と思う今日このごろ。
>930 データシートのチェンジログの項を読んで高らかに笑うも可だが かわいそうだから見なかったふりしてやれ。
>>932 2545B-01/04から2545C-04/04への変更
1最大動作速度を変更
・12MHzを10MHzへ
・24MHzを20MHzへ
あ、これのことか。
>>927 一応作ってAVR-WikiにUpしてみたよ。動作未確認だけど。
ただ使用目的によっては割り込みじゃなくても良いケースもあり。
たとえば1秒ごとに測定データを送信するなんてもので、時間充分余っていれば
ポーリングで送っても構わないわけで。
こっちの都合では進まない受信は割り込みあった方が楽そうだけど。
>>931 gcctestにあったのか・・・・orz
16バイトのバッファの管理に16bitアドレスを使うのはもったいないと思ったので、
俺は配列添え字を管理して、配列アクセス時以外8bitで済むようにしてみました。
バッファサイズを256の約数にすると保存文字数以外の変数チェックが不要になってしまったし。
AT90系のはちらほら見かけるんだけどATmega系のメモリマップってどこかにない?
936 :
935 :05/02/05 16:09:00 ID:NIPj+CjH
ぐは…データシートに載ってた スレ汚しスマソ
>>935 データシートのメモリのところにある図では足りないですか?
たとえばmega128データシート(翻訳版)の11ページ。
>>931 WinAVR使っているから知らないのだがgcctest.zipって今でも配布しているの?
>>939 落とせない・・・・・○| ̄|_
登録日がFeb 5, 2005(今日)になっているんで、まだ登録処理中なんだろうか。
ATmegaの各ピンの出力をグラフ化できるシミュレータってあります? SPICEみたいに部品を付けて波形が取れれば理想的です PWM出力をダイナミック制御したのをモニタしたいのですが…
>>941 普通にLog取ってfsdbに整形すれば良いのでは?
944 :
774ワット発電中さん :05/02/08 18:59:21 ID:Q+xj01ac
studio4.10でアセンブリ言語でプログラムを書いて buildした際にerrorが有る場合の挙動について 解らないことがあり、困っています。 studio3.56までは、buildでerrorが有った場合には、 errorのあるラインが列挙され、 ダブルクリックでソースのエラー箇所に跳べたと思うのですが、 studio4.10になってから エラー箇所へジャンプが出来ません。 どなたかこの症状を改善できる方法をご存知ないでしょうか。 過去スレを見られる環境を持っておりませんので、 既出でしたら申し訳ないのですが、今一度ご教示下さい。 よろしくお願い致します。
>studio4.10になってから >エラー箇所へジャンプが出来ません。 普通に出来てるけどなあ。 プロジェクトをエクスプローラでコピーしていたりとか??
946 :
944 :05/02/08 23:41:44 ID:Q+xj01ac
>>945 レス有難うございます。
プロジェクトは普通にstudio内から作っているつもりです。
他のアプリとの相性の問題もあるかもしれないので、
明日以降もいろいろと試してみます。
ウェーン、なんでできないんだろう?
>943 おもいっきり「納期遅延中」のフダがかかってやがりますね ...。
>>946 4.07でもプロジェクトファイル作成後移動したりすると似たような現象が起こりましたが、
>>945-946 見るとそれじゃないわけね。うーんなんででしょ?
一度*.apsを消去して、*.cofからプロジェクト作り直し(Watchやブレークポイントは消えるけど)ても治りませんか?
949 :
774ワット発電中さん :05/02/10 11:30:25 ID:YfKe5Hm+
AVR初挑戦してみたいんだけど、 市販品のAVRISPなどは、オンボード書き込みのみで、デバッグ機能はついていないのでしょか? ブレークポイントや、ステップ実行したいときはJTAG-ICEみたいのを使わないとだめ?
ATmega48の16bitタイマを8bit高速PWMで動かしたいんだがAVR Studio4でシミュレートしてみるとカウンタの挙動が変 TCCR1A:0b10100001 TCCR1B:0b00001001 TCCR1C:0b00000000 としているんだが、走らせるとカウンタが0x00から0xFFまでカウントアップした後0クリアされないでカウントダウンしてくる 何か根本的な勘違いをしているのかな…?
951 :
774ワット発電中さん :05/02/10 16:04:17 ID:L4iloLyq
H83048f-oneに初めてSRAM(512k*8bit)を増設するのですがモード5で8ビットアクセスをします。 モード5では各エリアは128kバイトのアドレス空間を持つとのことですが、 これについてはどういうことか良く分かっていないのですが、 A0~A19までが機能しているのでSRAMのA0~A18をマイコンのA0~A18と繋ぐことで SRAMの全領域にアクセス出来ますでしょうか???(128kバイトのアドレス空間?)
>>951 /CS2つをORしてRAMに接続すれば
それで良いと思うぞ
各エリアとは、/CS1つ分のエリアだ
953 :
952 :05/02/10 16:14:42 ID:JSGYb7ik
すまん。/CS4つ分だな。 ここは、素直にモード6が良いのではないだろうか?
>>950 WGM13-10=0101=8bit高速PWMでよさそうなんですけど、なんでだろ?
2進法でどっか0が1つ多いとか少ないとかいうオチはない?
TCCR1A=_BV(COM1A1)|_BV(COM1B1)|_BV(WGM10);
TCCR1B=_BV(WGM12) | 1;
TCCR1C=0;
と、間違いが起こりにくい形でやってみては?
って思ったが、手元でやってみると確かに同じ現象になってしまった。
AVRStudio4.08で、mega48がないのでmega16でやってますけど、
#include <avr/io.h>とmainとその中に無限ループだけのソースをコンパイルして、
無限ループ内にブレークポイントを設けて、TCCR1A/B/Cを手動設定してステップ実行しても同じ動作になる〜
共立で買ったTiny12(5つが5つとも)が書きこめないんですけど、 Tiny12ってなにか普通と違うことやんないといけないんですか? 試したこと ライター: 自作avr9102種(max232のとディスクリート/ファームはv2.3とドイツ人が 拡張パッチあてたやつ)、自作stk200ドングル、avrdudeの抵抗のみライター ソフト: avrdude, uisp (どちらも-DEVのCVS最新のもの)/ FreeBSD 4.11-Stable uispはResetになってないと言う。avrdudeはいかれてると言う。 RESETピンは、10Kでプルアップ、100Kでプルアップ、プルアップなしを 試しますた。基板は2つ作って、なんども見たりテスターでチェックした。 at90s1200,at90s2313,attiny26Lなどは、なんの問題もなく使えてます。
>>955 クロックはどうしてます?初期値は内蔵発振らしいけど念のため・・・
957 :
955 :05/02/10 23:37:20 ID:Sv5RrawS
クロックは、最初データシート通りにつけなかったんだけど、 あとからセラロック4MHzも一応試しました。
958 :
950 :05/02/10 23:48:32 ID:S7BMHj0n
>>954 わざわざ検証してくれてありがとう
ATmega48に載っている3つのタイマ全てをPWM動作させたかったので
他のタイマも動かしてみたんだけどみんな変…orz
タイマの設定は全て比較一致でLow出力、8bit高速PWM、プリスケーラ無し
DDRB:0b00001110
DDRC:0b00000000
DDRD:0b01101000
タイマ0:PWMの出力がPIND-6,5に出る
PORTD-6,5に出るのが正常な気がするけど…?
タイマ1:
>>950 に加えて出力でない
タイマ2:出力がトグル動作、出力がOC1A/B(PORTB-1,2)に出る
何じゃこりゃ…何がおかしいんだろう…il||li ○| ̄|_
これが関係するのかな? AVR Simulator Overview Known Issues The Known Issues list is organized in two major sections; the first describes general simulator issues, while the second describes device specific issues. General Simulator Issues The issues in this section apply to all AVR devices. Timer/Counters 16-bit Timer/Counters on all devices have several problems with PWM, prescaler and output compare. Output compare registers are not buffered properly. The Asynchronous Status Register (ASSR) is not supported in timers with asynchronous mode. This is due to lack of a generic external clock implementation. Notes for ATmega48/88/168 Timer/Counter2 Output compare pins and FOC does not work. Prescaler reset does not work correctly. OCR2A/B registers are not buffered correctly in PWM mode.
>>959 なるほど。
Heroさんとこにあった4.11βのhelpではPWM関係の記述が消えていたので、最新版では大丈夫なのかも。
4.10で試してみようかな。
961 :
774ワット発電中さん :05/02/11 08:30:32 ID:0i/jVt5e
>>955 まさか_Resetをプルアップしてないとか言う落ちじゃないでしょうね?
Tiny系は_ResetがOCになってるから吊らないと絶対だめだよ。
ごめん全文見てなかった。ちゃんと吊ってたみたいね。俺が吊ってくる。 もし内部発振の1MHz動作で動いているならSPIのIOスピードがクロックに対して 速すぎるとかも考えられる。 しかしDUDEやUISPにIOスピードの設定項目はあっただろうか
964 :
950 :05/02/11 12:29:11 ID:VAhDlSJD
>>959 ありがとう
実機でデバッグしろって事か…オシロもロジアナも持ってないよ…orz
>>960 俺が使っているのは4.11βだけど上記の症状…
967 :
951 :05/02/11 20:07:12 ID:WM6tx47H
>>952 さんが言うようにモード6でいくことにします。
8ビットアクセス・2ステートアクセス・ウェイト無しとして、繋ぎ方はこうですか?
マイコン側(H8-3048f-one)−−−SRAM側(CY7C1049B-25)
A(0〜18)−−−−−−−−−−−A(0〜18) 順不同
D(8〜15)−−−−−−−−−−−I/O(0〜7) 順不同
~CS1−−−−−−−−−−−−−~CE プルアップする
~HWR−−−−−−−−−−−−−~WE
~RD −−−−−−−−−−−−−~OE
間違っている箇所があったら是非教えていただきたいです。
>>967 それで良いと思うぞ。それにしても速いRAM
を使うんだな。ちょっと、うらやましいぞ!
0x200000〜0x27FFFFにRAMが見えるはず
969 :
950 :05/02/11 23:41:29 ID:VAhDlSJD
>>965 >P-10
わぁ…なんか凄く良さそうですね…この機能で\2,100とは…
今度秋葉行ったとき買ってこようかな
今回は日本語ドキュメントがあっていることをあてにして何とかします…orz
>>969 そのテスタ俺も持ってる。
初めてそのテスタを買ったとき、車のインジェクタのdutyが測れると思ってやってみたら、
ほとんど0%を表示した。ヤッパリ安物○| ̄|_と思って長いことお蔵入りしていた。
よく考えると誘導負荷によるでかいスパイクがあるのでそっちにレンジ合ったらほとんど
Duty0が出るのは当たり前じゃん・・・ってことにたった今気がついた(^^;)
めちゃくちゃ初歩的なミス…ATmega48に-5V掛けちった…il||li ○| ̄|_ 生きていたけど((( ;゚Д゚)))ガクガクブルブル
>>971 わたしゃ7805の端子と電解コンデンサの
向きを逆にして電源部がすべて死んだよ。
その先のもろもろが死ななかったのが奇蹟だが。
そろそろスレがやばいんですけど、次はどうするって話になってたっけ? *AVRとH8は分離するのかどうか? *その他のプロセサはどこで扱うか
専用スレのあるマイコンは専用スレで ない場合はココで 話題が偏ってきたら専用スレを作りましょう にするとPICは専用、AVR,H8その他はココになりそうな予感。
>>974 つまり現行どおりって事ですね。
AVRの話題が多いけどH8も結構ある、他のプロセサの話題もちらほらある
誰も狭いとは言ってないし1スレ3ヶ月かかってるし。
今からお出かけなので、誰かお願いできると幸。(帰宅時まだだったら言い出しっぺが建てます)
今回はAVR-Wikiもリンク集に入れてね
976 :
774ワット発電中さん :05/02/13 08:56:58 ID:MYHNhBPb
>>975 あんたが好きなリンク入れてたてればいい
977 :
774ワット発電中さん :05/02/13 09:11:20 ID:yzrJOBr0
>>973 >*AVRとH8は分離するのかどうか?
AVRの記事とH8がごちゃごちゃになっていて、読みにくいので
分けるのが良いです。(読んでもどっちの話かわからないことが多い)
>*その他のプロセサはどこで扱うか
同じ考えかたで、CPU毎に、必要によりスレッドを増やすしかありません。
共通化すれば、異なるCPUの話題が混じって読みにくくなります。
CPU種類から見てスレッド乱立にはならないでしょう。
>>977 専用スレ欲しいなら、そっちを先に立ち上げない?
そうすればそれに従ってその他のCPUのスレを欲しい人、たとえばH8スレが欲しい人が
スレ立ててくれるでしょう。H8の人も専用スレ立てるかもしれないし。
>>977 おいらは入釜ーなので、スレたてはマスターしてないし苦手。
立ち上げスレッドの文章のうまい人に、H8の専用スレたてを希望。
>>979 遠慮することはないよ。おれも参加して1ヶ月の頃PIC/AVRスレのスレ立てしたことあるよ
不安なら、まず原稿を立ち上げてここで晒す。文句が出なければスレ立てGO!
>>980 漏れはヴァカなので、H8スレたてヨロ!
>>979 その姿勢では、専用スレが必要かどうか判断できる立場にないのでは?
とか思ってしまうわけだが。
983 :
774ワット発電中さん :05/02/13 18:02:53 ID:eW2o9x5d
>*AVRとH8は分離するのかどうか? 分けてほしい。やはり話題がかけ離れすぎている。 H8も使用しているひとが多いから専用スレッドもあってもいいだろう。
985 :
973 :05/02/13 18:08:11 ID:1xz1XW0y
話が変わったようだな。 では私がAVRスレ立てしてみます。 H8/その他については重複スレがないかどうか確認の上よろしこ。
986 :
次スレ1 :05/02/13 18:48:11 ID:Gmdf3kDx
_____
/ /|
/ ( ゚∀゚) /.∠フ 個人でも手軽に使える
/ /.∠フ || . Atmelの8-bit RISCマイクロプロセッサを
/ __ o/.∠フ || 中心に語るスレッドです。
∠| ̄ ̄凵 ̄ ̄|∠フ || *AAはAVR/H8その他総合スレからいただきました。
.|| |_____|/||
Atmel AVR 8-Bit RISC
http://www.atmel.com/products/avr/
987 :
次スレ2 :05/02/13 18:48:37 ID:Gmdf3kDx
988 :
次スレ3 :05/02/13 18:49:15 ID:Gmdf3kDx
991 :
774ワット発電中さん :05/02/13 19:50:59 ID:q7og5die
992 :
774ワット発電中さん :05/02/13 20:17:19 ID:sBaBplmn
スレ立て乙 と、埋めてみる。
>>991 う・・総合ってなんかおかしいな。単純に消し忘れだすまん。
まあAT90Sもmegaもtinyも!って意味だと思ってくれ。
994
995
996
997
998
999
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。