AVRマイコン総合スレ Part11at DENKI
AVRマイコン総合スレ Part11 - 暇つぶし2ch150:774ワット発電中さん
08/06/20 16:15:07 vgYr2MBj
>>149
俺は廃品回収業
まで読んだ

151:774ワット発電中さん
08/06/20 16:41:42 meoo+mze
>>150
ワロタ

152:774ワット発電中さん
08/06/20 16:43:52 uuDnnjTk
大学で初めて触った計算機がIRIXとMacだった関係からか、
いまに至るまで、あんまりWindows触ったこと無い人間がここにいます。
一応組み込みでは無いけどソフトウェア開発者です。
最近、Windows用バイナリを作る羽目になって難儀しました。

家にはWindowsはありません。
こんな僕でもなんとか生きていけるようです。なんかごめんなさい。


153:774ワット発電中さん
08/06/20 16:46:03 uuDnnjTk
あ、書き忘れたけど、家で使っているのはMacとLinuxです。
AVR MacPack サイコー


154:774ワット発電中さん
08/06/20 18:42:16 FX8a8bLa
AVR MacPackいいよね

>>149
仕事対応せざるえない以外は、なくても全然困らない

155:774ワット発電中さん
08/06/20 19:06:09 JSmS3oBB
>149
XCode+AVR MacPackでやってるけど特に困ってないな
シミュレータ無いのが痛いけど、無きゃないでもなんとかなる。

winでしかできない時はwinでやるよ。

どっちでもできるのはmacでやっちゃう。


156:774ワット発電中さん
08/06/20 19:26:26 2CvL2vFj
>>150
それ、何て俺?

157:774ワット発電中さん
08/06/20 21:18:10 zHnKbHWk
米Atmel,独自の省電力技術を採用したマイコンを開発
URLリンク(techon.nikkeibp.co.jp)

158:774ワット発電中さん
08/06/20 21:52:12 8CY+tFh+
日本ではあんまりメジャーじゃないのかもしれないけど、CodeVisionの最適化
効率は驚異的。WinAVRと同じコードをmakeしても半分ぐらいになる。

コードで2Kまでは試用版でmakeできるのでおすすめ。Mega8ぐらいまでなら、
無料版で十分いろいろできる。

159:774ワット発電中さん
08/06/21 10:12:27 Yz7ytxx5
GAOとかyahoo動画見る時にはwindows必須

160:774ワット発電中さん
08/06/21 11:42:58 07OVMz5J
俺がAVRを始めたのはWinでなくてもひと通り開発環境がそろうから。

161:774ワット発電中さん
08/06/21 12:19:29 Yz7ytxx5
まあ俺もそうだ。
なので、仕事場で動画みたいときは、MacでParallels Desktop+Win版IE動かしてる。

162:774ワット発電中さん
08/06/21 15:34:49 zvSLxx9Z
携帯電話用の開発環境ないかね。
シリアルポートついてるんだし。

...あるわけないか。

163:774ワット発電中さん
08/06/21 15:53:30 7RPLMqCc
>162
URLリンク(code.google.com)

164:774ワット発電中さん
08/06/21 15:59:13 BwGgi8fa
URLリンク(code.google.com)

Will Android run on <insert phone here>?

No. There is currently only an Android SDK for the Windows, Mac OS X(intel), and Linux(i386) platforms. The SDK includes a software emulator on which you can test Android applications.

165:774ワット発電中さん
08/06/21 23:54:14 zvSLxx9Z
ちょっとキビシそうだこれは。

166:774ワット発電中さん
08/06/22 22:45:23 nxMJ3WYL
日本語で

167:774ワット発電中さん
08/06/24 00:51:01 fso1qyAL
いまだによくわかってないんですが、
xmegaって、AVR Dragonで書き込んだりデバグしたりできますか?

168:774ワット発電中さん
08/06/24 02:34:19 7DpA0I1y
DragonのDeviceSupportには、xmegaは入っていないようだ。
URLリンク(support.atmel.no)

169:774ワット発電中さん
08/06/24 22:26:36 CyFetoh1
英語が読めない人のAVRの勉強の進め方を教えてください
英語を勉強しろってのはナシで

170:774ワット発電中さん
08/06/24 22:28:06 hI7tN47x
そーいえば電波新聞社のAVRマイコンを使用したLEDマトリクスゲームキットを
買ったっきり半年ばかり放置してる


171:774ワット発電中さん
08/06/24 22:35:23 CyFetoh1
よかったら作ってくれませんか?

172:774ワット発電中さん
08/06/24 22:35:50 FP5bGI7t
>>169
日本語に翻訳されているデータシートがあるチップを選択する
日本語のサイトを検索して読む
日本語の本を購入する


173:774ワット発電中さん
08/06/24 22:44:30 FQ5pGtRP
あきらめる

174:774ワット発電中さん
08/06/24 23:02:11 m+xHxNnZ

英語は毎日みてりゃなれるさ

175:774ワット発電中さん
08/06/25 00:03:51 LjB5jbfT
データシートの英語なんて難しくないので英語を勉強したほうが早い。

176:774ワット発電中さん
08/06/25 00:55:43 OHsGizXk
HEROさんはほとんどのAVRを翻訳されている。すごいよ

177:774ワット発電中さん
08/06/25 01:45:34 XvD7a6qz
ほとんど自動翻訳。

英文を読む→機能を理解する→日本語で書く
の人力翻訳なら最高なんだけど、そこまで望むのはムリというものか。

178:774ワット発電中さん
08/06/25 02:26:25 hMjp4NYc
英語が読めないってネタでしょ?

179:774ワット発電中さん
08/06/25 03:28:02 nKI1ja1K
・単語だけ読んで何が書いてあるか推測する
英語ダメダメな俺でさえこれで何とかなってるよw

180:774ワット発電中さん
08/06/25 05:27:32 45Nd1RDQ
データシートとかなら頑張れば中学程度の英語力でも読める。
フォーラムは勇気がいるがw

181:774ワット発電中さん
08/06/25 08:23:51 b6xemOzu
朝からスマン、これってノーマルPVですか
合成とかじゃなくって・・・

URLリンク(www.nicovideo.jp)


182:774ワット発電中さん
08/06/25 08:25:59 b6xemOzu
誤爆 orz

183:774ワット発電中さん
08/06/25 09:12:39 fgxu95Cv
>>177
あれ自動翻訳なの?結構読みやすい日本語になっているが。
訳注も入っているし、少なくてもちゃんと内容理解して翻訳してるだろ。
根拠あればor中の人の発言ならいいけど、そうじゃなければちょっと失礼かと。
(「機能を理解する」が無理という部分が)


184:774ワット発電中さん
08/06/25 09:32:12 M1JZZyiS
>>183
>177ではないが、たとえば
URLリンク(reef.path.ne.jp)
で、
「この構造の結果は現状のCISC型マイクロ コントローラよりも10倍速いスループット
向上を成し遂げる更に優れたコード効率です」
てな具合だと、機械翻訳にかけていることは確かだろうね

185:774ワット発電中さん
08/06/25 09:38:56 T9qpwMLq
けど、文系の英語が得意な奴(大抵日本語は下手)が翻訳してもそんな感じだからw

186:774ワット発電中さん
08/06/25 10:21:12 tujAJ3ea
そんな奴を、英語が得意とは言わない
「文系」「理系」と語学能力関係ないし

187:26
08/06/25 11:15:40 uvLOnBce
WinAVRのC言語でのプログラミングはわかるようにはなりました。
(サンプルを改造する程度ですが)

次にやりたいこと(2313でi2c通信)を調べていたら動作しそうな
サンプルコードがアセンブラでした。
URLリンク(www.wsnak.com)

WinAVRでC言語とアセンブラを組み合わせて使うにはどうすれば
いいのでしょうか。「このページ嫁」でいいのでお願いします。

あと、上のURLのサンプルがアセンブラな理由はなんでなのでしょうか。
速度の問題でないのならばC言語に書き直してしまおうかとも思っています。



188:774ワット発電中さん
08/06/25 11:25:42 yqnig5Lj
CのサンプルならATMELのサイトになかったかな。


189:26
08/06/25 13:09:50 uvLOnBce
>>188
ありがとうございます!ありました!
URLリンク(www.atmel.com)
このページ楽しすぎです。なんでもできそうな気がしてきました。

2313ならこのへんですね。
AVR310: Using the USI module as a I2C master
AVR312: Using the USI module as a I2C slave

mega88ならこのへん。
AVR315: Using the TWI module as I2C master
AVR311: Using the TWI module as I2C slave

2313同士で通信させるので
AVR307: Half Duplex UART Using the USI Module
これで十分かもしれません。





190:774ワット発電中さん
08/06/25 23:00:40 eeABGp6m
>>184
そこの原文は...

| The resulting architecture is more code efficient while achieving throughputs
| up to ten times faster than conventional CISC microcontrollers.

だから、素直に訳すとそんな感じの文章になる。

機械翻訳だと...

[Excite]
結果として起こるアーキテクチャは従来のCISCマイクロコントローラより最大10倍速く
スループットを達成している間、より多くのコード効率的です。

[Yahoo/nifty]
従来のCISCマイクロコントローラより最高10回速くthroughputsを達成している間、
結果として生じる建築は効率的なより多くのコードです。

[livedoor]
生じるアーキテクチャーは、処理能力を従来のCISCマイクロコントローラより10倍以内
速く達成する間に効率的なより多くのコードです。

となるから、参考にしてるんだろうけど、機械翻訳をそのまま載せてるわけじゃないと思う。

191:774ワット発電中さん
08/06/25 23:21:25 tujAJ3ea
機械翻訳を<そのまま載せてる>なんて誰が言ってるんだ?

192:774ワット発電中さん
08/06/25 23:38:22 T9qpwMLq
結局機械だろうが人間だろうが単語の意味が理解出来てない上に日本語がおかしいとみょうちくりんな翻訳になる訳で>>185がガチ
「この構造の結果は」なんて専門用語じゃ無い普通の日本語としておかしい。

193:774ワット発電中さん
08/06/25 23:56:51 XvD7a6qz
まぁ、文法上の変換は翻訳には入らないよなぁ。
翻訳ってのは原文の意味を言語を変えて表現するという、一種の創作活動だからね。


でも、英語が全くダメな場合はあの程度でも十分役に立つから存在意義は大きい。

194:774ワット発電中さん
08/06/26 00:12:59 OiyovAzT
>>191
はいはい、あなたの言う通りです。

# 突っ込みできてよかったね。(w

>>192
> 「この構造の結果は」なんて専門用語じゃ無い普通の日本語としておかしい。

| 結果としてこのアーキテクチャは通常の CISC マイクロコントローラよりコード
| 効率がよく、同時に最大 10倍のスループットを成し遂げます。

ぐらいだと、だいぶ分かりやすいかな。

でも、そもそもデータシートなんて専門用語が使われてるし、大体の意味は取れるから
>>193 の言うように、存在意義は大いにあると思うよ。

195:774ワット発電中さん
08/06/26 00:17:34 QymmBLb6
>>183
強調したかったのは「日本語で書く」という部分なんだけど。

紙面をカラフルに飾ることなんかより、そっちの方にパワーを割いてもらった
方がよりより使いやすい日本語データシートになると思う。

196:774ワット発電中さん
08/06/26 00:44:10 NSJyXdwv
カラフルなのは無断印刷を防止したいからだと思っていたよ。
個人の勉強ために作ってくれたのに・・・

単語をクリックすると飛んでくれるので便利。


197:774ワット発電中さん
08/06/26 00:50:26 9MV56Oor
このアーキテクチャにより, より高いコード効率と共に
通常のCISCマイコンの10倍のスループットを実現します。

普通に読んで意味を日本語でかけばいいんじゃね?

198:26
08/06/26 00:59:44 aF7yDPxE
MacPackをインストールして秋月USBシリアルケーブルと
URLリンク(homepage2.nifty.com)
これを使って環境を作っているのですが、うまくつながりません。
なにかパラメータが足りないのでしょうか。

USBシリアルのドライバは
URLリンク(www.prolific.com.tw)
を入れました。

avrdude -v -c avrisp -p t2313 -P /dev/tty.usbserial

avrdude: Version 5.5, compiled on May 14 2008 at 14:05:11
Copyright (c) 2000-2005 Brian Dean, URLリンク(www.bdmicro.com)

System wide configuration file is "/usr/local/AVRMacPack-20080514/etc/avrdude.conf"
User configuration file is "/Users/***/.avrduderc"
User configuration file does not exist or is not a regular file, skipping

Using Port : /dev/tty.usbserial
Using Programmer : avrisp
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding




199:774ワット発電中さん
08/06/26 06:06:29 rp7mw2K7
>198
まずはそもそもライターちゃんと動いてんの?
HPに載ってるやりかたのwinで確認したのか?

200:26
08/06/26 13:32:19 aF7yDPxE
>>199
レスありがとうございます。

USBシリアルから先の接続はそのままでUSBをWinに差し替えて
AVR Studio+WinAVRから書き込み、動作させることはできました。

URLリンク(homepage2.nifty.com)
ここに「AVR-ISPはアトメル互換品」とあるのでavrdudeで行けると
おもったんですが・・・
シリアル通信のパラメータかISP Freq.あたりの設定か・・・

macでavrdudeで「AVR-ISPはアトメル互換品」でやっている方いらっしゃいませんか?



201:774ワット発電中さん
08/06/26 14:18:24 oDgZi7Ge
>>200
-c avrispv2
でやってみ。

202:774ワット発電中さん
08/06/26 21:43:25 +55pJAl6
>>194
もっともそれを言い出すと変な訳されるより、原文のままキーワードを
拾うだけでも良いやってことになったりな

203:774ワット発電中さん
08/06/26 22:20:38 OiyovAzT
そう言う奴は、原文読むから問題ないでしょ。

あと、カラフルより日本語がどうのこうのとか言ってる奴いるけど、
だったら自分でやれよと思う。

204:774ワット発電中さん
08/06/26 22:37:16 MJBvwUTI
英語が苦手なら、日本語に訳してくれてる奴を読んで概要を理解した上で
細かい所は英語版を読めばいい。

あとAVRは新チップ、旧チップでレジスタ命やカウンタの使用が若干違う
けど基本的には似たような仕様なのでとりあえずどれでもいいから日本語
訳を読んでみるといいんじゃない?

205:774ワット発電中さん
08/06/27 05:32:36 4gEhApgT
何だかんだ言ってあの仕事はすごいことだと思うよ。

206:774ワット発電中さん
08/06/27 05:33:46 8DpqTzgE
何打 神田 秋葉原

207:774ワット発電中さん
08/06/27 07:33:17 DLbecLiw
日本語データシートとavr wikiだけで作ってるな。
あのデータシートながないとかなり困る。

208:26
08/06/27 09:11:03 /BTUAt1e
>>201
ありがとうございます。

avrdude -v -c avrispv2 -p t2313 -P /dev/tty.usbserial
これでOKでした。

Makefileは
DEVICE = attiny2313
CLOCK = 8000000
PROGRAMMER = -c avrispv2 -P /dev/tty.usbserial
OBJECTS = main.o
FUSES = -U hfuse:w:0xDF:m -U lfuse:w:0x64:m
これでOKでした。


avrdude: stk500_2_ReceiveMessage(): timeout
と出て、もたつくことが結構あるんですが待てば確実に書けます。



209:774ワット発電中さん
08/06/27 10:24:45 DLbecLiw
>208
AVRのヒューズ設定は?クロックの


210:774ワット発電中さん
08/06/27 10:30:33 HgWu5a8f
翻訳は単発の文を見れば変なところがあるかもしれんが、まとまった文章を
翻訳してると途中で脳がなぜか回らずに変な文章になることはままあること。

疲労とかじゃなくて脳がお腹いっぱいになる現象なんだけど、推敲を重ねれば
品質はあがる。でもそこまでいうならプロに頼めってことになる。


211:26
08/06/27 11:41:40 /BTUAt1e
>>209
シリアルの通信相手なのでライターのAVRですよね。
買ってきたまま「RS-CR方式」
URLリンク(homepage2.nifty.com)
で1回焼いただけです。

もう一個ライタ用を焼いて確かめてみます。


212:774ワット発電中さん
08/06/28 04:22:53 5Vg/fDvK
piano, synthesizers - Jim Beard(ジム・ビアード)
9年ぶりの新作Revolutions
CDはスパーCD(音が良い)
URLリンク(profile.myspace.com)

クイックタイムURLリンク(www.apple.com)
ライブURLリンク(www.jimbeard.com)
ライブURLリンク(jp.youtube.com)
ホームページURLリンク(www.jimbeard.com)

PokeURLリンク(www.jimbeard.com)
Gonna Tell on You URLリンク(www.jimbeard.com)
Haydel Bay URLリンク(www.jimbeard.com)
Jon Heringtonの新作Pulse And CadanceURLリンク(www.jonherington.com)
Pulse And CadanceURLリンク(info.hmv.co.jp)


213:774ワット発電中さん
08/06/28 10:17:09 yJqiQJgL
avr-gcc-4.3.0とBestTechnologyのBTC067を使って,ATmega32を
勉強中です.
32 bit変数(long,unsigned long)について質問させてください.
割り込みを禁止せずに32bit変数の演算を行うと値がかなりの
頻度で破壊されるのですが,これはそういうものなのでしょか?
また,条件分岐などの値を変更しない処理でも誤動作を起こすの
ですが,これもそういうものなのでしょうか?
最初の現象は,「そういうものかな」とも思えるのですが,後の
方はちぇっと納得いかない感じです.

もし32bit値を使わないや割り込み禁止以外の対処方法があれば
教えていただきたいのですが,よろしくお願いします.

214:774ワット発電中さん
08/06/28 10:45:30 42W0Sqk6
>>213
そんなもんではないと思いますが。割り込みが発生した時点でレジスタはちゃ
んと退避されますし、global変数を割り込みハンドラでいじってるとかなら
壊れて当然ですが。

割り込みを禁止する事によって、ポインタなどの可変範囲がかわっていません
か?変数が壊れたりハングしたりというのでまず思い浮かぶのは、配列の範囲
を越えてしまったとかかな。

215:774ワット発電中さん
08/06/28 12:08:27 yJqiQJgL
>>214
回答ありがとうございます.そうですか,割り込み禁止で括らなくても
大丈夫ですか.

>global変数を割り込みハンドラでいじってるとかなら壊れて当然ですが。
割り込みハンドラ内でいじっている変数を割り込み禁止せずに割り込み外
でいじったらということでしたら,大丈夫です.

ところで勉強不足で恐縮なのですが,

>ポインタなどの可変範囲がかわっていませんか?

この件の意味が分かりませんでした.ポインタの処理(例えば,ポインタの
データをループでIncrementしながらコピーする等)を行っているときに
割り込みが発生すると,ポインタが飛んだりするのでしょうか?


216:26
08/06/28 12:32:08 MMJegKQ8
>>209

avrdude: Device signature = 0x1e910a
avrdude: safemode: lfuse reads as 64
avrdude: safemode: hfuse reads as DF
avrdude: safemode: efuse reads as FF
でした。ので「8MHz RC」でした。

ずっとエネループ2個でやっていたので電圧が低いかと思い、5VのACアダプタ
でやってもみましたが
avrdude: stk500_2_ReceiveMessage(): timeout
は相変わらずでます。



217:213
08/06/28 18:12:36 0UBtyAZm
解決したので報告します.WinAVR-20080610に上げたら直り
ましたw.
こまめにチェックしないと駄目ですね.ちなみに上げる前は,
WinAVR-20080430を使っていました.



218:774ワット発電中さん
08/06/28 18:23:37 uN9+Ulbx
>>216
入門用AVR-ISPライターがavrdudeでtimeoutするのはバグでした。
お手数ですがファームを更新してくださいです。

219:26
08/06/29 14:11:48 LJCDRw5L
お、作者さんですか!
ありがとうございます。

しかし、更新してみたのですがあまりかわらないです。

avrdude: stk500_2_ReceiveMessage(): timeout
が出ます。

しかし、毎回必ず出るわけではなく、1回の場合もあれば2回の場合もあります。
(ほとんどの場合は1回です。)

URLリンク(ja.pastebin.ca)
ここにログを置きました。
まったく焼けないわけではないのでお暇な時間に対応していただければ
助かります。



220:774ワット発電中さん
08/06/29 16:33:39 GKHVdlLx
疑問、質問なのですが、
ChaN氏のライタには -c パラメータでCAL値Flash書き込みがあります。
Flash末尾へのCAL値書込みって(AVRでは)一般的な手法なのでしょうか?
これって、AVRdude?/avrasp?/本家ライタとかにもあるんでしょうか。
AVRSPしか使ったことなく、代替処理など見つけれなかったもので…。
知っている方いましたら教えていただけると助かります。

221:774ワット発電中さん
08/06/29 19:07:35 v/y+mh+z
>>220
avrdude にはOSCCALの値をFlashに書き込む機能はない?みたいです
-OオプションでアプリケーションノートAVR053の方法によるCalibrationはサポートしているようです
本家 stk500/avrisp(stk500.exe)では -O/-Sf/-Seオプションにてavrsp相当の機能はあるようです
また、-YオプションでAVR053にも対応しています
USBaspについてはavrspxを使用することでavrspと同様の操作が可能です


222:774ワット発電中さん
08/06/29 19:47:54 V/WApfwY
>>220
本家AVR Studioは、工場出荷時の校正値を読み出して、FlashかEEPROMの
任意のアドレスに書き込む機能がついています。

でも自分で値を変更する事は出来ないという仕様なんで、それは使わず
専用のプログラムでI/Oをトグルさせてオシロで見ながら設定値を探し
eeprom.hのなかの関数を使ってEEPROMの一番後ろのアドレスに書
くようにしてます。

所でEEPROMをプロテクトするヒューズビットを立てずにはまった人って
いますか?自分はマニュアルをあまり読まない人間なので30分ほどそれ
で悩んでしまいましたw

223:218
08/06/29 22:57:37 tOlq0/rT
>>219
効果ないですか、私の方ではこれでtime outが出なくなりました。
Windows2000でavrdudeを試すとtime outが出ないのでファーム以外に原因がありそうです。
ファームをいじっても効果はなさそうですが、ページの下の方に対策版(ISP2313E)を追加しました。

224:774ワット発電中さん
08/06/29 23:11:49 Z6k2ldw5
どこかにAVRでスイッチング電源を作ったサンプルはないでしょうか?

225:774ワット発電中さん
08/06/29 23:26:50 bA6gXVKz
トラ技2007年5月号 URLリンク(www.cqpub.co.jp)

>最終回 クローズアップ ! ワンチップ・マイコン〈第12回〉
>専用電源ICと同等性能のプログラマブルDC-DCを製作
>高速タイマ内蔵 8ビット・マイコンATtiny461

という記事 URLリンク(www.cqpub.co.jp) がある。

内容的には「これが同等性能???」という感じではあるが、参考にはなるかも。

226:774ワット発電中さん
08/06/30 00:13:56 i2gJr0Eq
ありがとうございます
ちょうどその号は持っているので読んでみます

227:220
08/06/30 02:42:51 OGwtzLut
>>221,222
回答ありがとうございます。
AVR053、拝見しました…が普段C使ってるのでasmは辛い。
斜め読みで、タイマカウンタ回して、所定のクロック待って、OVFした
回数から本来のクロックへ補正していく…ってところでしょうか?
オプションでAVR053に対応=EEPROM最初のアドレスに記入ですかね。
(つまり222さんの言うヒューズEEPROM消去だと、消えちゃう?)

>>222
自分は、AVRSPで校正値を読み出してソースコードの
初期EEPROMも毎回変更して再コンパイルして書込み。
手動AVR053と言ったところでしょうか…。
IC毎に書き込む.eepが異なる状態で、非常に面倒です。
プロテクト、面倒なのでデバッグでは毎回両方書いてますw

画一的にできるとすれば、AVR053を計測部分をプログラム実装なのかなぁ。

228:名無しさん@3周年
08/06/30 18:45:13 PTqJfVCV
すみません失礼します。BASCOMなのですが。avrの2313で簡易A/Dの仕方
(アナログコンパレーターを使って)のサンプルプログラムってございませんか?
(昔MCSのホームページでANに載っていたような気がするのですが、現在は見あたりませんでした)
ご存じの方いらっしゃいましたら是非、お願いします。

229:774ワット発電中さん
08/06/30 18:56:32 MNGtXyVu
サンプルソースはアセンブラなので
BASCOMで応用可能かはわかりませんが
ATMELのサイトにこのようなアプリケーションノートがあります。
URLリンク(www.atmel.com)
URLリンク(www.atmel.com)


230:774ワット発電中さん
08/06/30 19:46:00 8JixxFZY
A/D内蔵のTiny26やMega88あたりに変えたほうが手っ取り早い気がする
BASCOMならたったの2行でA/D数値を取り出せるし


231:名無しさん@3周年
08/06/30 19:54:44 PTqJfVCV
たしかにそうなのですが、、チップが100個近くも余ってまして。。。orz
(アセンブラはわかりません。初心者ですみませんです。。)

232:774ワット発電中さん
08/06/30 19:56:22 RXHzlcww
100個も何に使うんだ 

233:774ワット発電中さん
08/06/30 20:22:34 iHHuHRej
初心者だけど、箱買いしちゃったんですね。

234:774ワット発電中さん
08/06/30 20:31:05 XeabKGmA
>>227
tips.txtに書き込まれた校正値をc言語で取得するサンプルが載ってる。

235:774ワット発電中さん
08/06/30 23:36:18 Mouq7rSP
>>227
確認だけどデフォルト以外の周波数を使いたいんだよね。
デフォルトならOSCCALを自動的にセットしてくれる。

236:774ワット発電中さん
08/06/30 23:48:22 PTqJfVCV
見てみましたが、コンデンサをチャージして、、、までしかわかりませんでした。


237:774ワット発電中さん
08/07/01 09:23:00 oEQcntV5
>>236
原理的には超簡単(積分型DACの教科書に出てくるような話)
RC直列回路を作って、これに時刻t=0でV0の電源に繋ぐと、コンデンサの電圧は
Vc = V0(1 - exp(-t / T))
ただし、T = 1/RC
RCが十分大きければ、exp(-t/T)≒ 1 - t / Tなので、Vcは電源入れてからの時間tに
ほぼ比例して上昇する。
そこで、アナログコンパレータを使って、Vcと外部(測定したい)電圧Viを比較し、Vc=Vi
(正しくはVc > Viとなる瞬間)の時間t0をタイマーを使って測れば、Vi = Vc*t0/TでVi
が求まるって原理。
測定前にCを放電させとかないといけないとか、変換時間が長いとか、非線形性が結構
強いとかの欠点もあるけれど、何より簡単、安価、ラダーと違って高精度抵抗が要らない
とかの利点も多いよ。

ちなみに、AVR401の方はコンデンサの充電を定電流でやるタイプ。こっちはVc = I0/C tと
なって(I0は流す電流)、線形性が大幅に向上する。

物は、ためしにやってみれば?アナログコンパレータを持っているAVRだったら、どれでも
できるはずだから。

238:774ワット発電中さん
08/07/01 14:59:16 3TrDUmol
>>237
「積分型DAC」は実在するけど、この場合は積分型ADCだよな。

電電板には、なぜかADCとDACを書き間違える香具師が結構いるんだよな・・・

239:774ワット発電中さん
08/07/01 15:11:57 tN6p1W/n
>>238
>>237 は、間違ってないと思うが…

240:237
08/07/01 17:28:52 oEQcntV5
>>238
すまん、もちろん「積分型ADC」の書き間違えだ。

241:774ワット発電中さん
08/07/01 21:46:40 nQa3MXdJ
>>239
さて、どうする?

242:227
08/07/01 22:32:37 wui8FI95
ありがとうございます。
>>234
説明いただいた方法は知っております。
数百台単位のロットになった場合に、プログラム側で
近い形で実現できればいいかな~とか思った次第です。

>>235
そうです。デフォルトでは、確か中央値の0x80になってるんですよね。
今日AVRDragon+Studioはじめてまともに使って(ぉぃ)所定の位置に
OSCCALのWriteを確認しました。AVRSP方式にもあわせこみできるようで
ひとまず -cオプションで進めることにします。

# 最初DebugWIREをDisableする方法分からなくて、無理かと思い焦ったw

243:774ワット発電中さん
08/07/01 23:08:19 fEDPqRZq
>>237
ありがとうございます。
しかし、初心者初心者いっていてすみませんが、全く理解できません。
(こんなやつがAVRマイコンで工作しようとするのが間違っているのでしょうか??)

ただ、電圧を7segで表示(簡易的に)したいだけなのですが、、、

みなさんレスありがとうございます。



244:774ワット発電中さん
08/07/01 23:14:13 hXkKP8it
>>242
0x80って事は無いと思いますよ。多分選択した内部発振周波数での校正値が
自動的にロードされてくるはずです。自分の持ってる石はほとんどBF-C4ぐ
らいなので、80だとMHz単位の誤差が出そうです。

面倒ならSig-genで基準周波数作って割り込みpinに入れて、カウンタでカウ
ントしながら自動的に校正値を決定してRomに書き込むようなプログラムを
入れ込む事は出来そうですけど。

Sig-genつないでいちいちやるのはめんどいけど、毎回値を書き換えてmake
しなおすよりはらくちんかも。

245:774ワット発電中さん
08/07/01 23:32:11 oEQcntV5
>>243
AVRの初心者かどうかってより、電気回路理論(過渡現象)の基礎中の基礎なんだけど・・・
理屈はともかく、次のようにすればとりあえずA/D変換できるはず。(回路はAVR400で1200を2313に
置換えただけとする)
0. 初期化(アナログコンパレータ割り込み可(立下りエッジ)、PB2を出力
1. PB2をLowにして、しばらくWait (←コンデンサに溜まった電荷を放電)
2. カウンタスタートと同時にPB2をHi(←コンデンサにチャージ開始)
3. カウンタリセット
4. コンパレータ割り込みルーチンでカウンタの値を読み込み(キャプチャ)
5. 1へ戻る

カウンタの値を k, カウンタが1インクリメントするのに必要な時間をΔt、R*Cの値をτ、電源電圧を
V0とすれば、求める電圧Vは
V = V0*(k*Δt)/τ
となる。ただし、非線形性が出るので、上式が実用となるのは2/5*V0ぐらいまで。あと、上のルーチン
はあくまで実験用で、実際に使うんだったらタイマー割り込みなどで、止まらなくなっちゃった対策を
しておかないとまずい。(いきなりVc > Viだったりしちゃった場合の対策(割り込みを使わずにACOを
モニタしつづける手もあるけど・・・))


これでだめなら、素直にATtiny26あたりを使うことをお勧め

246:774ワット発電中さん
08/07/01 23:33:39 oEQcntV5
>>245
あ、すまん。またやっちまった。手順2と3は逆な・・・


247:235
08/07/02 00:19:25 k+KYFOgB
>>242
デフォルトの意味が違ってますよ。
例えばTiny26は1MHz,2MHz,4MHz,8MHzそれぞれの校正値を持っているけど
リセットでOSCCALにロードされるのは常に1MHzの校正値です。

Tiny2313は4MHz,8MHzでデフォルトが8MHzだけどヒューズで4MHzにせず
8MHzをCLKPLで2分周すれば大丈夫。

248:26
08/07/02 01:11:51 mHFoJtfQ
>>223
遅くなりましたが、抵抗を追加して試してみました。
E版にしてみましたが、今度はタイムアウトが無限に続くようになってしまいました。
USB変換ケーブルが怪しいでしょうか。

とりあえず、A版をつかうことにします。
ありがとうございました。


249:26
08/07/02 02:13:37 mHFoJtfQ
tyny2313でI2C通信を試しています。

USIで使うピンはSCLとPB7、SDAとPB5がそれぞれ兼用なのですが、
このときPORTBの0,1,2,3,4,6番をOUTPUTとして使うことは可能なのでしょうか。
出力値を設定しようとPORTBに書き込むとUSIのユニットの出力を上書き
してしまわないでしょうか。DDRBでPB7,PB5入力にしてもプルアップがON/OFF
するので悪影響があるような気がします。

PORTB = (PORTB & 0b10100000) | (data & 0b01011111);
としたら安全でしょうか。
タイミングによってダメなような気もします。




250:774ワット発電中さん
08/07/02 06:31:29 xvhDoBsL
>249
そこまでできてなんで実際にやらないの?

251:26
08/07/02 10:10:10 mHFoJtfQ
>>250
舌足らずですみません。

実際に試してみて、PORTBに書き込んでいたら通信ができなくなり、
PORTB = (PORTB & 0b10100000) | (data & 0b01011111);
を入れたらとりあえず通信ができるようになったのでした。

しかし、この回避/対応方法が正しいのか不安だったので質問しました。




252:774ワット発電中さん
08/07/02 10:50:24 5wvimV2O
TINY45で、タイマー0の比較A,Bで割り込み処理して
Aの割り込みでAの割り込みをマスクしカウンターをリセット、
次のBの割り込みでBをマスクしてカウンターをリセット+分週比変更
AとBトグル処理をさせたいのですが、何故かAのみ連続割り込みをしてしまう
(シュミレーションではトグル出来る)
何が原因ヒントでも御願いします。

尚割り込みマスクを操作しなければ、出来るんですが分解能が犠牲になるんで・・


253:774ワット発電中さん
08/07/02 10:51:54 rvyt+Tlq
シュミレーション・・・

254:774ワット発電中さん
08/07/02 11:03:32 xvhDoBsL
>251
後出しいくない。
つか、だめなときのソースだしてみたら?

255:774ワット発電中さん
08/07/02 11:55:05 1HcjRYqg
>>251
データシートを読むとSDA, SCLはPORTB, DDRBレジスタの影響を受けるようですね。
(影響を受けるというかPORTBをソフトウェアで制御することが必要なのでそういう仕様?)

> PORTB = (PORTB & 0b10100000) | (data & 0b01011111);
たぶんこの対処で問題ないと思うけどソース全体をみないとなんとも言えないと思う。


256:26
08/07/02 13:25:44 mHFoJtfQ
>>254
ごめんなさい。
後で整理したダメコードをアップします。

デバッグ用のLEDをPORTBのSDA/SCL以外に繋いで、
送信側は送信したデータ
受信側は受信したデータ
をPIN0,1,2,3,4,6に表示していました。

>>255

> たぶんこの対処で問題ないと思うけどソース全体をみないとなんとも言えないと思う。
PORTBから読むタイミングと書き込むタイミングで信号が切り替わっていたら
だめですよね。
そんなことがあるのかわかりませんが、もっと確実な対処方法(書き込みを無視してくれるとか)
が無いのかなあと。。


夜にでもソースをUPします。


257:774ワット発電中さん
08/07/02 13:32:14 kK/+SgUh
>>251
> PORTB = (PORTB & 0b10100000) | (data & 0b01011111);

右辺でPORTBを読み込んでから、左辺でPORTBに書き出すまでに
割り込みでPORTBの値が書き換わらないことが保証できるなら、
それで意図した動作なのだろうけど。

このように、出力したい時に特定のビットだけ書き換えたいことがあるが、
DDRのような入出力の切り替えが欲しいのではなくて、出力マスクの設定が
欲しいんだよな…。

上のも出力マスクの設定があれば、
PORTB_MASK = 0b01011111;
の状態にしといて、
PORTB = data;
とするだけで済むのに。


258:774ワット発電中さん
08/07/02 16:40:22 x/HQ+TMd
ランキング
URLリンク(www.dmm.co.jp)

259:26
08/07/03 00:07:59 6Pjbcf40
URLリンク(aikofan.dee.cc)

upしました。(ぜんぜん整理できていないです。)

Atmelのアプリケーションノートとavrfreaksで拾ってきたものを元に
動くようにしたものです。

upしたコードは_delay_ms(10)を入れていますが、
delayなしのものを1日中動かしておいても動き続けていました。


260:774ワット発電中さん
08/07/03 11:57:49 A3jVoO4l
>259
I2Cやったことないんだけど

PORTBのDDR設定で

//LED feedback port - connect port B to the STK500 LEDS
DDRB = 0b01011111;
update_PORTB(0b01011111);

日本語データシートには2線動作の場合
-----------------
シリアル データ(SDA)とシリアル クロック(SCL)ピンは双方向でオープン ドレイン出力駆動を使用します。
この出力ドライ バはDDRレジスタでSDAとSCLに対応するビットの設定(=1)により許可されます。
-----------------
っておもいっきり書いてあるけど、どうなんだろう?(なにぶんI2C未経験なので)

もひとつ、
update_PORTB(0b01011111);
最初のポート設定でupdateは気持ち悪いと思った。

サンプルコピペよりもデータシートとwiki見てイチから書いたほうがよっぽど簡単になると思う(笑)

261:26
08/07/03 14:31:55 6Pjbcf40
> PORTBのDDR設定

USI_TWI_Master_Initialiseで初期化してくれてるみたいです。
DDR_USI |= (1<<PIN_USI_SCL); // Enable SCL as output.
DDR_USI |= (1<<PIN_USI_SDA); // Enable SDA as output.

> イチから書いたほうが
動作確認できたのでこれから整理していきます。
通信モジュールをゼロから書くのは結構面倒そうなのでこのままのつもりです。


これでI2Cで2313を100個以上つなげるので、、、、
・・・なにができるかなぁ。









262:774ワット発電中さん
08/07/03 14:41:34 SaGuiAYv
>>これでI2Cで2313を100個以上つなげるので、、、、

 正気か?つないで何をする?
I2Cは基板内のような、ごく限られた条件下での使用を想定した
通信方式の筈だが。ケーブルで延ばすなら通信速度を大きく下げて
ノイズに対する対策をこれでもかとやらないと無理だと思う。

263:774ワット発電中さん
08/07/03 14:47:45 rcYrndVr
何をするのか考えてないのか・・・・・

264:218
08/07/04 00:23:44 bWQ+niRi
>>248
役に立たず済みません。
> E版にしてみましたが、今度はタイムアウトが無限に続くようになってしまいました。
7番ピン(RTS)を+電圧として仮定してますので改悪になってしまったようです。

> USB変換ケーブルが怪しいでしょうか。
RS232-Cがシャットダウンしていて最初の1文字が受信できてないと思います。
MAX232などを使うと直りそうですが、トリプルは作るのに少し手間が掛かりますし
直るとも言い切れませんです。


265:218
08/07/04 00:28:39 bWQ+niRi
> 7番ピン(RTS)を+電圧として仮定
マイナス仮定でした。10kオームでは弱かったようですが、抵抗値を低くすると+が下がってしまいます。

266:774ワット発電中さん
08/07/04 08:20:49 1Swu4p2A
>261
どんな回路かわからんが、回路内蔵プルアップでやってんの?>I2C
これもあんま気持ちいいもんじゃないよな。

ちなみに、修正したら通信できるようなったとあるが
原因はPORTB上書きによる弊害だったのは決定なわけ?
ピンで確認したとか?

100個以上。。。通信部分も書けないのに?

267:774ワット発電中さん
08/07/04 08:39:48 3xnUYM+i
>>245
了解です。なんとなくわかったような気がします。
つまり、比較する電圧とコンデンサにチャージする時間で割り出そうという考え方ですね。



268:26
08/07/04 10:18:54 4f99B00W
>>264
いえいえ。とんでもないです。
すばらしいライターのおかげで鶏を作れて今があります。
我慢できなくなったら「Windowsではリトライが早い」のをMacに移植仕様と思います。

>>263
とりあえず2313を2個繋いで8x8x2色のLEDパネルを制御するのが目標です。

夏が終わる前に「自宅サーバ--RS232C--AVR温度計--赤外線--エアコン」ってのは作りたい。

I2C的には、LCDモジュール、温度計モジュール、サウンドモジュール
マトリックスLEDモジュール、赤外線リモコン送受信モジュール、
とかつくって組み合わせて親機から制御できたらいい夏休みの自由研究になるなあとおもいました。

>>262 >>266
100個は冗談です・・・・>>231


269:774ワット発電中さん
08/07/04 16:01:11 JCzuX7js
温度計とか湿度計とかのデータロガー作りたいなって。
パソコンのブラウザから参照できたりして、グラフ表示になってると面白いなって・・

270:774ワット発電中さん
08/07/04 16:12:34 2XkLiRiS
MRTG

271:774ワット発電中さん
08/07/04 18:11:47 75lQxuk5
>>268
100個は冗談です・・・・




ようするに、釣りですね、分かります

272:774ワット発電中さん
08/07/04 19:35:41 0eJzsq1C
早押し機とか作るのかと>100個

273:774ワット発電中さん
08/07/04 20:44:42 BHkZYT02
ル・マン方式で最初に起動したデバイスがメインとして採用されます。

274:774ワット発電中さん
08/07/04 23:17:42 SvzNV88h
100年後最後まで残ったデバイスがr

275:774ワット発電中さん
08/07/04 23:23:56 00JaKXeE
digikeyの通販サイトでAVRISP2買おうと思ったんだけど
ATAVRISP2
ATAVRISP2-ND
と二種類あるんだけどどっち買ったらいいのでしょうか?
ググっても出てこないし、違いだけでもわかれば…

276:774ワット発電中さん
08/07/04 23:29:02 uJrWdhwF
>>275
ATAVRISP2はメーカ(ATMEL)型番でATAVRISP2-NDはDigiKeyの品番ではないのかな。
と言うか一つしかでてこないけど。

277:774ワット発電中さん
08/07/04 23:40:21 00JaKXeE
URLリンク(jp.digikey.com)
このページで数量の横の品番を選択すると2種類出てくるんです

どっちも同じなのかな?

278:774ワット発電中さん
08/07/04 23:45:07 uJrWdhwF
>>277
どっちも同じと思うけど心配なら-ND付きの方にしておくとか。

279:774ワット発電中さん
08/07/04 23:47:16 x+GYWAxX

arduinoってどうよ。


280:774ワット発電中さん
08/07/05 00:02:36 00JaKXeE
>>278
両方注文したら同じ商品が二つ入っているという注意文が出たから
ーNDのほうで注文しました

281:774ワット発電中さん
08/07/05 00:26:00 qVz3CsAY
>>279
興味ある

282:774ワット発電中さん
08/07/05 01:48:37 rQVYlJt5
>279
プロトタイピングにはいいかもだけど
あくまでその程度だしな。

小回り効かなくてそもそもデカイし。
素のAVRで作れる人には無用かも。

283:774ワット発電中さん
08/07/05 17:45:53 g2GAkb0U
WinAVRを調子よく使っていたのですが、
170byteくらいのhexファイルのプログラムでif文を書いたら突然
コンパイル後のサイズが4kBを越えて書き込めなくなりました。

何をチェックすべきでしょうか?

AVR wikiにあったファイルサイズを小さくする方法は
どれも該当しておりません。


284:774ワット発電中さん
08/07/05 17:56:56 rQVYlJt5
エスパーじゃないんだから、まずソース

285:774ワット発電中さん
08/07/05 20:54:56 VZHkVLaz
>>284
すみません。お願いします。

#include <avr/io.h>
#define F_CPU 1000000UL // 1 MHz
#include <util/delay.h>

int main(void){
unsigned int j;
unsigned char x;
double o1=4.0;
double T;

for(j=0;j<2000;j++){

x = 0b11001101;

if (bit_is_set(x,0))
o1 = 3.0;
else
o1 = 2.0;

T = 2/48*1000000/o1/(2.0*2.0);

_delay_ms((int) T);
}
}


286:774ワット発電中さん
08/07/05 21:36:56 7br7oyiY
>>285
浮動小数点が怪しい


287:774ワット発電中さん
08/07/05 23:00:47 qVz3CsAY
俺もそう思う>浮動小数点

288:774ワット発電中さん
08/07/05 23:15:14 2nE1Hx25
>>285
元ソースから
> if (bit_is_sen(x,0) )
を追加したんだろうが、これを追加するとコンパイル時にはここが成り立つかどうかが確定できない。
(最適化を頑張れば確定できるが、そこまで頑張らない)

そうなると、コンパイル時に定数と確定していて、最適化が出来ていたのに
最適化できなくなり、浮動小数演算ルーチン一式が必要になってコードサイズが膨らんだ。

> T = 2/48*1000000/o1/(2.0*2.0);

何がしたいのかさっぱりわからんが演算順序変えたらこんなものintだけで十分だろ。
あとF_CPUをdefineしてるならそれ使おうな。

ついでに言うと、正確に1 ms単位で待てるわけではないので、そのソース、本当に
タイミングがシビアな用途だと問題がある…が、そんなに精度は要求されてなさそうなので
(そのあとdelay_msを引数intで渡してるぐらいだし)まあ、いいな。

289:774ワット発電中さん
08/07/06 00:17:52 mCLLFMlD
>>288
コンパイラが最適化してくれるかもしれんが
o1とかTのとる変域、値域によっては、
T = 2/48*1000000/o1/(2.0*2.0);

long T,o1:
T=10417/o1:
で事足りるかもねー


290:26
08/07/06 01:03:40 KgZfwCxy
今度はPCとシリアル通信させようと
データシートのUSARTとURLリンク(elm-chan.org)
を見て頑張ったけどレベルの反転が必要だと言うことに気がつきました。

これ
URLリンク(homepage2.nifty.com)
は、ソフトウエアUARTだからレベル反転が不要ということでしょうか。

レベル変換ICなしでUSARTのモジュールを使えるようにする裏技なんてないですよね。


291:774ワット発電中さん
08/07/06 01:17:51 Qs+iTbRR
ハードのUSARTはレベル反転が必須。
ソフトUARTは送信中に受信できないのでプロトコルを考える必要があるよ。

292:242
08/07/06 10:01:44 OcM4Xmpm
やっとアクセス規制とれたorz
>>244,247
0x80じゃない、まじですか俺あほだぁ。となると一つしかCAL値がない、
例えばMEGA88の場合は、あえてずらす使う方法でもしない限り
OSCCALの設定は不必要ってことでしょうか?

OSCCALの質問から入ったのですが、元々はMEGA88にて
・CKDIV8 = 0(8分周)
・UARTの通信レートが合わない
・OSCCAL = 0xXX 実装してみた。
・UART通信OKになった!
となったからです。244,247さんの通りだと、自分の用途では
OSCCALによる校正の必要がないように思います。
色々ご教授いただきましたが、自分の実験ミスが根底にあったかも。
すいませんいま一度、確かめてみます。
しかし、今回かなり勉強になってます。本当にありがとうございます。

293:774ワット発電中さん
08/07/06 22:24:20 79ETIdma
どこかにPC用の液晶を制御する例はないですか?

294:774ワット発電中さん
08/07/06 22:30:48 CMSPyVuj
>>293
URLリンク(elm-chan.org)
これはモノクロだけど原理的にはカラーでも同じだと思うよ。
まあ問題はスピードが間に合いかどうかだろうけど

295:774ワット発電中さん
08/07/06 22:47:16 79ETIdma
ありがとうございます
chanさんのページですか

296:285
08/07/07 00:20:30 J/E8r+hF
>>286-289
アドバイスをありがとうございます。

自分:
> T = 2/48*1000000/o1/(2.0*2.0);

の計算内容にはあまり意味はありません。

if (bit_is_set(x,0)) 文をコメントアウトしてもコードサイズは減りますし、
_delay_ms((int) T); だけをコメントアウトしてもコードサイズは減りました。

結局、自分の理解していないと思うことは、AVRにおける浮動小数点の扱いです。
8bitのマイコンで浮動小数点を使うこと自体無謀なのでしょうか?
math.hも使いたいのですが。

297:774ワット発電中さん
08/07/07 00:22:47 tevC3XyB
うん。

298:774ワット発電中さん
08/07/07 00:36:24 4Wbh2hfv
>>296
浮動小数点は8ビットマイコンはもちろん、DSPでさえNAF。
DSPでもせいぜい固定小数点。
8ビットマイコンなら出来るだけlong型で押し通せ。


299:774ワット発電中さん
08/07/07 00:49:46 vp7mYFgC
最近、ちょっと気になってRAM512バイトの8ビットマイコンで浮動少数を使ってみた。
RAMはほぼ全部スタックにしたんだが、掛け算だけでスタック半分取られたっはっはっは。

300:774ワット発電中さん
08/07/07 00:57:05 61ZChlq0
浮動小数点や固定小数点の変数の中身をLCDに表示してみたいんですが良い方法ありませんか?

301:774ワット発電中さん
08/07/07 01:05:59 lxCrwcPo
>296
ちなみに libm.a リンクしてる??

302:774ワット発電中さん
08/07/07 02:16:39 4Wbh2hfv
>>300
100倍とか1000倍とかして、Long変数の範囲内にして表示すれば?


303:774ワット発電中さん
08/07/07 10:32:04 IN++mQSF
>>298 DSPでもせいぜい固定小数点。

浮動小数点DSPがあるじゃないか。(TMS320C67xx, TigerSHARC, etc)
それに、16bitや32bitのマイコンでも、コプロを積んでいなければ
固定小数点DSP(普通は16bit)と大差ないよ。

>8ビットマイコンなら出来るだけlong型で押し通せ。

この点には同意。

304:774ワット発電中さん
08/07/07 10:37:40 lANRD1gY
そういえば、固定小数点の演算ライブラリってあるのかな?


305:774ワット発電中さん
08/07/07 18:17:29 CBDOf0PO
固定小数点だと、整数演算みたいなもんやん

306:774ワット発電中さん
08/07/07 18:51:25 i5GZZzGk
固定小数点でシコシコ手打ちとかどこの最先端TK80だよ。w

307:774ワット発電中さん
08/07/07 22:32:42 E1dIk5Nj
>>300
流れ上、浮動小数点NGな雰囲気になってしまってるが、漏れはめんどいの
で普通に浮動小数点で計算して、sprintfかftoa使って文字列に落としてか
ら表示してる。

mega8とかで、処理速度を気にしなくてメモリが余ってるときの話な。
例えば圧力センサのVoutをADCで数値にしてから、単位変換して表示
させるような場合。

WinAVRとかじゃなくCodeVisionとか使うなら、浮動小数点でもそれな
りのサイズには収まる。リソースとお手軽さをはかりにかけて選べ
ばいい。処理速度やメモリ効率を突き詰めると全部アセンブラで書か
なきゃいけなくなるし。

308:774ワット発電中さん
08/07/07 22:40:30 XSC61Ub+
Alf and Vegard's Risc chip


309:774ワット発電中さん
08/07/07 23:11:02 IIKL8UKx
>>308
日本語だとどういう意味?


310:774ワット発電中さん
08/07/07 23:31:44 sIMZJV7r
>>296
浮動小数点入れると4kBくらいはあっという間。
LSTファイルでアセンブラレベルではどうなっているか眺めてみては。
それでどれくらい大変かは検討つくと思います。
MUL命令がないAVRだとさらに大変だろうなあ。
megaシリーズでなければやめといた方がいいと思う。

Wikiの、サイズを小さくする方法ってのは
サイズを気にする人がまさか浮動小数点を使うとは思ってもみなかったのでしょう。
mega168とか普通に使える今なら、もっと気楽に浮動小数点使ってもいいね。


311:774ワット発電中さん
08/07/07 23:44:39 Ht5yGqEv
URLリンク(www.eleki-jack.com)
の2007年9月26日からの連載を読んで、AVR Studio上でWinAVRでコンパイルできる環境を作って、
変数を見てみたり、Disassemblerを見てみてください。

if をコメントアウトしても、4kB以下にならなかったので、よくわからないです。>>285
170byte以下にするのもほとんどのソースを削らないと難しいのだが・・・???
何か隠してません?


312:774ワット発電中さん
08/07/08 18:50:24 Q2lLk+2i
285じゃ無いけど

T = 2/48*1000000/o1/(2.0*2.0);

_delay_ms((int) T);

これがコードでかくすると思う。
delay_msは定数を与える && 最適化オプションON
でないとデッカイコードを吐くから。

void waitMs(int time)
{
for(;time;time--)

_delay_ms((1);

}

313:774ワット発電中さん
08/07/08 18:51:25 Q2lLk+2i
途中で書いてしまった。
こんなんすれば関数呼び出しオーバーヘッド分誤差が出るけど
コードサイズは膨れないと思う。多分。

314:774ワット発電中さん
08/07/08 21:17:41 0UnACunm
>>311
>何か隠してません?

お前、なんか悪いものでも食って当たった?

315:285
08/07/09 10:26:12 7mhMR2Q4
>>301
libm.aをリンクしていませんでした。リンクしたところ、
hexファイルが1.2KB程度になり書き込めるようになりました。
#すぐにあふれそうですが。。。
#ありがとうございました。

>>297-299 >>303
非常に参考になります。固定小数点数の使用にトライしたいと思います。

>>307 >>310
浮動小数点数も使えることは使えるということですね。

>>311
私の環境では、if文をコメントアウト→小さなhexファイル、あるいは
_delay_msの文をコメントアウト→やはり小さなhexファイルとなりました。
小さなhexファイルとは、百数十バイト程度です。さらに
libm.aをリンクさせた時は、百バイト代前半になりました。

>>312
libm.aなし→2KBに半減するも、書き込めず。
libm.aあり→1KB弱まで小さくなり、書き込めました。

皆様、大変勉強になっております。ありがとうございます。





316:774ワット発電中さん
08/07/09 17:23:48 d4rFTVYo
秋月で attiny2313が @90円(18個以上購入時) と大変安いので、これを
FT232RLと繋いでシリアル通信させようと思うのですが、9600bpsぐらいなら
内蔵の発振回路で問題ないでしょうか?

@90円のマイコン本体に @50円の水晶を使うのも…と思って質問させてもらいました。

出来れば内蔵の発振回路で38600bpsで通信できるともっと良いのですが…。

周波数校正値をOSCCAL レジスタにセットした場合、
どれくらいの期間で狂ってくるものなのか、どなたかご存知ありませんでしょうか?

317:774ワット発電中さん
08/07/09 19:32:18 SIzqqxIo
>>316
適当にトレーニングさせてクロックを較正してやればOK

318:774ワット発電中さん
08/07/09 20:18:09 2Iif2ml6
>>316
誤差が蓄積しないよう、データを程々に短く切って送ればいいんでね?

319:774ワット発電中さん
08/07/09 20:41:53 2UGJCU/E
asyncでそれはないでしょ

320:26
08/07/09 20:56:28 tuUhnxaO
非同期ならスタートビットからストップビットまでせいぜい10数ビットの間ずれなければOKと理解してますがあってますか?

321:774ワット発電中さん
08/07/09 20:59:53 q2NxskP1
>>316
自分の所では115200でも通信出来てる。
UARTだとスタートビットで同期がとれるので、
バイト単位で誤差が修正され蓄積されることは
無いと思う。
よっぼど周期がずれてない限り大丈夫じゃない?

322:774ワット発電中さん
08/07/09 21:24:29 F/TSJyCj
>>321に同意。UARTならスタートビットの立下りでサンプリング位置が補正される
ので、1バイト単位で通信できれば誤差の累積は無いと記憶している。

323:774ワット発電中さん
08/07/09 21:26:15 2UGJCU/E
同期でもST2にすりゃ問題ないはず

324:774ワット発電中さん
08/07/09 21:41:07 gHD3BToh
>>316
校正なんて何にも考えなくても9600bpsなら無問題(実際やってる)


325:774ワット発電中さん
08/07/09 22:13:49 O75FNchG
通信速度が遅ければクロックが狂ってても問題ないのか?

326:774ワット発電中さん
08/07/09 22:20:41 gHLWqM+l
分周して通信速度*4±1.5%くらいのクロックが作れれば問題ないと思う。

327:774ワット発電中さん
08/07/09 23:26:46 IMS3/MgQ
その肝心の精度がデータシートに(実力値しか)載ってない、ってのが問題なんだが、
まぁダメなら破産するの?死ぬの?ってわけでもないんだろうから、
運よく動けばよしでいいんじゃないの。

328:316
08/07/10 01:06:58 wutDGNZq
みなさん、丁寧に教えていただいて、ありがとうございます。

特に>321 >322 が大変参考になりました。

329:774ワット発電中さん
08/07/10 01:21:17 EYippsH7
115.2kは誤差-3.5%だからダメだろうと思って実験したらできた。
OSCCAL値-2~+4でOKだったので+1かそのままで問題無いと思う。

誤差は内蔵RCの精度と8MHzがボーレート*16倍の整数倍になっているかが重要。
実は4800bpsでも38400bpsでも8MHzに対する誤差は0.2%で一緒なんです。

ただボーレートが遅いと計算せずに付けたクロックでも分周値でごまかせる。
(例えば8MHzの4800bpsなら分周値UBRRが103なので1%ずつ調整できます)


330:774ワット発電中さん
08/07/10 01:33:59 CgBi/Vyk
tiny2313の日本語訳データシート見る限り
OSCCALはスタートアップ中に自動的にセットされるから
特に理由が無い限りプログラム側でいじる必要ない
って思ってたんだけど、合ってるよね?

331:774ワット発電中さん
08/07/10 06:12:06 TBb+mkNp
>>330
250kbpsの通信をやらせていますが(すいません、BASCOMなのですが)
OSCCALを指定してやるとうまく通信するが、指定しないと通信しないという事はあった。
ぼんやりプログラムいじってますので、別の要因とごっちゃになってるかもしれませんが。


332:774ワット発電中さん
08/07/10 14:48:16 hpyBkEVU
PICのコードプロテクトに相当するものは何と呼ばれているのでしょうか。
「AVR プロテクト」などで検索しても見つけられませんでした。

333:774ワット発電中さん
08/07/10 15:26:31 QHKj4Fae
Memory LockないしMemory Lock Bitsだな。


334:774ワット発電中さん
08/07/10 17:08:54 hpyBkEVU
ありがとうございます。それで調べてみます。

335:774ワット発電中さん
08/07/10 19:03:18 VHzNxYnT
とりあえずデータシートを全部読んだ方が良いよ。

336:316
08/07/10 19:35:40 wutDGNZq
昨日、皆様にATtiny2313の内蔵RCでシリアル通信が出来ると教えていただいたので、
今日、何も考えずに秋月にATtiny2313を100個発注しました。

FT232RLのTxDからATtiny2313のRxDへつないで、ATtiny2313を
100個まとめて制御してみたいと思ったからです。(具体的には何もアイデアはありませんが)

1つのFT232RLのTxDに複数のATtiny2313のRxDを接続する場合、
何個ぐらいまでならぶら下がりますでしょうか。

データシートの読み方がいまひとつわからないのでアドバイスをいただきたく。

まずはFT232RLのTxDのfanoutと駆動電流をチェックすることから始めようと思ったのですが
それすらわからず…。

337:774ワット発電中さん
08/07/10 20:16:09 Jt9685hy
ファインアウトよりも配線のコンデンサ(浮遊容量)分で波形がなまると思う。

AVRでincして次のAVRに渡すのはどうかな。
FT232RL(0送信)-->AVR(1)-->AVR(2)-->AVR(3)......AVR(100)みたいな。


338:774ワット発電中さん
08/07/10 20:21:50 FeeSRV4s
ファンナウトを考えるなら
電気的特性の出力電流と
入力漏れ電流あたりを見れば良いと思う。

でも、100個をそれなりの間隔で並べると、
線路の容量で波形がなまってくると思うので
そうすると単純に出力電流/入力漏れ電流では考えられなくなるかも。

速度を上げすぎると信号がパタパタしなくなるかもだし、


まあ、適当なところでドライバとしてなんかいれれば良いと思うけど。

それか、Txを使うつもりが無いなら受信データをそのまま吐くようにして
ディジーチェーンさせるという方法もある。

FT232-Tx|---|Rx-Tiny-Tx|---|Rx-Tiny-Tx|・・・

でもこれ100個もやると結構遅延すると思うので、なにに使うかにもよるかな。



339:774ワット発電中さん
08/07/10 20:22:46 5I3q2Tqo
それより、AVR の書き込みをどうするのかと小一時間(ry

340:774ワット発電中さん
08/07/10 20:24:37 FeeSRV4s
かぶってしまった。
まあ、何に使うかを決めて
その制約の範囲で方法を考えるのが良いと思いますよ。


341:774ワット発電中さん
08/07/10 20:27:30 QHKj4Fae
最近はAVR×100個が流行りなのかね。
このスレで、ここ1ヶ月で3人目か。

342:316
08/07/10 20:28:46 wutDGNZq
>>337
数珠つなぎにするわけですか…。なるほど。

38400bpsで接続しようと思っているので、1バイトのデータを
最後である100番目のATtiny2313に伝達するのに(ロスがないとして)
100×1秒/(38400/8) = 0.02秒。

UARTのロスがあったり、受信してすぐに次のATtiny2313に送信できるか
という問題があるとして…この10倍要しても0.2秒!!

意外と実用的なんですかね。

最後のATtinyのTxDをFT232RLのRxDに接続しておけばそれぞれのATTinyと
数珠伝いに通信することも出来るので案外面白いかも…。

343:316
08/07/10 20:37:26 wutDGNZq
それぞれのAVRに固有のIDを振って、それによって挙動を制御しようと思っていたのですが、
IDだけ異なるプログラムをそれぞれ書き込むのが面倒だなと思ってました。

ところが、数珠つなぎにすると、自分のIDを次のATTiny2313に伝達して、次のATTiny2313は
そのIDに +1 したものを自分のIDとすればいいわけですね。

ひょっとしてSCSIとかそういう仕組みなんですかね。

これならすべて同じfirmwareで済むので書き込みが非常に楽です。これでいきたいと思います。

皆さん、本当にありがとうございます。

344:774ワット発電中さん
08/07/10 21:20:21 eGPdquFz
いや、SCSIはエンドユーザーがDIPスイッチ操作して、自機IDが重複しないように設定してたし、
USBやiLink機器はメーカー毎のIDと製造時のシリアルナンバーから生成される固有IDを
一台毎にファームウェアに書き込んでる。

フラッシュROMなりEEPROMの自機IDデータは"00"とかにして製造。
パワーONリセットでそこを読み、件の"00"だったら自機ID設定待ちモードに突入。
「おーい!御主人様よぉ、俺にIDよこせや!」と大声で叫び続けるか、
前に並んでいる奴がID番号くれるまでじっと我慢の子でいるか、
他の方法で逝くか、は任意。

345:774ワット発電中さん
08/07/10 21:25:58 h8GElIkT
コンテンションだな

346:316
08/07/10 21:27:25 wutDGNZq
>>344
あっ、そうなんですか…。

そういや、SCSIのHDDの背面のdip switchをいじったことがあるのを思い出しました。

daisy chainにしてIDを自動的に振るのって、どこで役に立つかは別として
新しい発明だったりするんですかね。

347:774ワット発電中さん
08/07/10 21:28:38 QHKj4Fae
発明された頃には新しかっただろうけど、今となっては使い古された手だね。

348:774ワット発電中さん
08/07/10 21:42:56 hmWRhyLB
>>346
Z80のmode2割込みとかでも使ってる気がした。中学生だった。

349:337
08/07/11 00:41:01 6AAPN4Tf
>>338
波形なまりとかディジーチェーンとか同じ考えにびっくり。
私の発言は説明を書いてないので要らなかったですね。

>>330
> OSCCALはスタートアップ中に自動的にセットされる
その通りですね。実験したらOSCCALがちゃんとセットされていました。
問題児はTiny26だけかな。なぜデフォルトが8MHzでなく1MHzなんだろ。


350:774ワット発電中さん
08/07/11 09:45:29 65edFr8R
SONYのVISCAを思い出してしまった。歳じゃわい

351:774ワット発電中さん
08/07/11 18:27:09 YHz0DZL1
スリープの、パワーダウンモードを使おうと思って以下のようなコードを書いたんですが
INT1_vectでスリープから復帰後に、どうやってスリープに入れば良いでしょうか?

これでも一応動いているんですが、割り込み中でスリープに入っているので
どんどんスタックが積まれていくような気がします。

こんな感じで問題ないでしょうか?


int main(void)
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
IOInit();
sei();
sleep_mode();

for(;;)
{
}
return 0;
}



ISR(INT1_vect)
{
if(PIND & _BV(3))
{
 func();//なんかやりたい事

MCUCR &= ~_BV(ISC11) & ~_BV(ISC10);//TNT1 low level Itr
sei();
sleep_mode();
}
else
{
MCUCR |= _BV(ISC11) | _BV(ISC10);//TNT1 rising edge Itr
}
}


352:774ワット発電中さん
08/07/11 18:29:49 YHz0DZL1
ITR1割り込みは、ローレベル割り込み状態でスリープに入り、
この割り込みで復帰したら、立ち上がり割り込みに変更。

立ち上がりを検出したら、ちょっとした処理をしてスリープに入るって感じです。


353:774ワット発電中さん
08/07/11 19:02:52 z+dXa6OW
メイン側を
for(;;)
{
  sleep_mode();
}
にしておいて、割り込みからは普通に戻ればいいんでねの?

354:774ワット発電中さん
08/07/11 19:20:02 YHz0DZL1
ローレベル割り込みなんでSw押されてる間割り込みが入りまくるんですよ。

実行は押下1回に付き1回で十分なんですがの
そのやり方で割り込みモードをローレベル割り込みじゃないものにすると
永遠に復帰できなくなってしまうという。


355:774ワット発電中さん
08/07/11 19:49:07 olK++xcy
割り込み再許可する前に「SW離すのを待つ処理」 を追加
チャタリングはソフトで除去してね


356:774ワット発電中さん
08/07/11 20:07:49 YHz0DZL1
なるほど。

for(;;)
{
  if(sleep_ok)
  {
  sleep_ok = 0;
  sleep_mode();
  }
}

なんかこんな感じにしといて
いろいろ気が済んだらmainでスリープ掛ければよさそうですね。
どうもありがとうございます。

357:774ワット発電中さん
08/07/12 23:54:53 6pTWDAiS
daisy chainじゃない方法考えてみた。

100個のうちの何個かをドライバICとして使用。
INTピンだけ入力でレベル変化割込み。
残り出力ピン。

FT232からの信号を、レベル変化割り込みで受ける。
出力を同期する。

単純だけど、結構いける手段じゃないかと思う。

358:774ワット発電中さん
08/07/15 02:27:50 6JRDLvIh
URLリンク(members.fsij.org)
こんなのやってるみたいです。


359:774ワット発電中さん
08/07/15 19:56:25 tnpKaFvZ
>>358
海外のサイトではよく見かけるけど、結局USBの処理にかかりっきりで
あまり大したことは出来ない。やっぱソフトって専用ハードに比べたら
段違いに効率悪いから、つまんないけど専用チップ使う方がいいだろうな。

値段が安いんで2313を1個USB専用に使うっていうのはありかもしれんが。

360:774ワット発電中さん
08/07/15 20:00:45 emGUKY24
USBの処理をマイコンのソフトウェアで行う?

361:774ワット発電中さん
08/07/16 20:04:19 VP46dWZ9
>>360
そういうこと

362:774ワット発電中さん
08/07/16 20:45:18 PogkWxYr
UDP/IP/Ethernetをソフトでするのもあったな。
あれは驚いた。


363:774ワット発電中さん
08/07/16 21:23:51 xJBKixJr
すみません。
今 USBasp を作っている途中なのですが、Vistaでは動きませんか?

364:774ワット発電中さん
08/07/17 02:37:23 +TZHunp9
>>363
試して詳細を報告してくれると助かる

365:774ワット発電中さん
08/07/17 07:46:03 lWASm3iI
>>363
Vista(32bit)でも動いてますよ

366:363
08/07/17 09:53:35 W2BQkJug
>>365
動くんですね!よかった。

>>364
自分で試してみて動いたら報告させてもらいます。

367:774ワット発電中さん
08/07/17 10:53:11 uMk0a9Tj
USBaspがvistaで動くかどうか知りたい
動くという割りには検索しても情報が全くないし


368:774ワット発電中さん
08/07/17 16:21:20 aNCh5Ycu
>>359
速度のいらないHIDクラスみたいな奴だったら、いろいろ遊べるよ。
単純なセンサとか、インジケータとかだったらいろいろUSBと安く接続できて良い。
ただ、2313はフラッシュが足りないのでインターフェイスとしてはちょっとムリっぽい。
少なくともAVR-USBでは。頑張れば詰め込めるかもしれないけど。


個人的にはAPIも、AT90USBとかのアプリケーションノートの奴より
わかりやすくて勉強用にいいかもと思う。


369:26
08/07/17 17:02:22 VcIejKTf
URLリンク(www.recursion.jp)
ここの「CDC-2313」が激安USBシリアル変換器になりそうなのでやってみようかと思っています。
シリアルだとPC側のソフトを作るのも簡単なので。
この激安変換器の先に2313かmega88かを繋ぎます。

「Linux Kernel 2.6 + UHCI 系ホストでは動作しません」だけが気になりますが。



370:774ワット発電中さん
08/07/17 23:33:53 qAfv8nD9
>369
独り言はヨソで書けよ

371:774ワット発電中さん
08/07/19 17:49:51 r67/wKt4
>>369
kuman乙

372:774ワット発電中さん
08/07/19 22:56:46 O9qeWXmI
まだ~~?俺の100個なにかにつかえんかなぁ~?

373:363
08/07/19 23:12:50 lSvbXMnF
USBasp 動かない。。。
WinXPでも動かないから、きっとどこかで間違ってるんです。。

USBasp + Vista の試験できなくてごめんなさい。

374:774ワット発電中さん
08/07/20 17:37:24 u3k7jDCb
ここ見てたら久しぶりにいぢりたくなってきたがネタがない

375:774ワット発電中さん
08/07/20 17:49:55 X6utmoU8
>>374
1)ラーメンタイマー
2)MorphyOne

どちらか好きなほうをどうぞ


376:774ワット発電中さん
08/07/20 17:51:13 u3k7jDCb
>>375
えらく難易度の差が激しい2択ですねニョガーン

377:774ワット発電中さん
08/07/20 17:59:34 56t7VU55
やっぱ2)だなww

378:774ワット発電中さん
08/07/20 19:28:51 xmsTSFqV
>>373
USBに挿しても認識すらしないならともかく、
XPとVistaで確実に動くHIDaspのほうがドライバ周りの面倒が無くていいかもね。
USBコネクタや12MHzの水晶も使いまわせるし、USBaspからの乗り換えも容易。

379:774ワット発電中さん
08/07/20 23:14:38 wjaQ88U4
初めてUART使ってPCと通信させてみました。
UARTから30バイトくらいの電文を送ろうとすると最後の3バイトが送れない。
TXC割り込みで送信禁止にしていたのを、UDRへの書き込み完了で送信バッファ
空き割り込みを禁止にする(送信禁止にはしない)ようにしたら上手く行ったの
ですが、UDR書き込み後に送信禁止にするタイミングはどう判断すればいいの
でしょうか。

380:774ワット発電中さん
08/07/20 23:20:20 ta6lfOoG
>>379
「UARTから」ってのが意味不明。「UARTで」か?
AVR側から送信する話なんだよな?

「UDR書き込み後に送信禁止にする」の意味がわからんのだが、
自前で用意している送信bufferに文字列が無ければそこで送信終了でいいじゃん?

381:774ワット発電中さん
08/07/20 23:47:41 gyNfNr8K
>>379
TXC割り込みで送信禁止でいいはず。UDRE割り込みでは早過ぎる。
>380さんの言うように送信を禁止する意味は通常無い。

382:774ワット発電中さん
08/07/21 00:02:35 Qf3PjAqE
UDREのとき送信FIFOが空ならUDRE割り込みを禁止しないとマズイでしょ。
レベルトリガなんだから。

送信機能自体を禁止にしたら、その時点での送信中のデータは、たぶん死ぬ。

383:774ワット発電中さん
08/07/21 00:48:31 TAHLfxy5
タイマのオーバーフロー割り込みって、
16ビットなら0xFFFF→0x0000になったときのみなのか
通りでCTCでTOP値→0x0000で割り込みかけようとしても、何も起こらないわけだ…

さっき質問しようとしたけど、比較一致で解決したのでチラ裏

384:774ワット発電中さん
08/07/21 03:08:09 cdNbqAdt
そりゃ、オーバーフローだし。

385:774ワット発電中さん
08/07/21 07:54:10 Ne66jqKt
PWM動作では割り込み掛かるよ
CTCでは何か動作がおかしかった様な気もする。

386:379
08/07/21 14:22:39 Y0ftCKNC
>>380-382
みなさんレスありがとうです。AVR側からUARTを使って電文を送信する話です。
送信禁止にするのは意味がないのですね。

ただ、>>381さんが書かれたように、最初はTXC割込で送信禁止にしていたのに
上手くいかなかったのが気になりますが。

387:774ワット発電中さん
08/07/21 14:53:21 3fpAowxd
送信禁止にすると、送信に使ってた Pin は I/O からの制御になると思うけど、
そっちはちゃんと High を出すように設定してるんだよな?

388:774ワット発電中さん
08/07/21 21:21:57 TAHLfxy5
ぬぅ、AVRWikiが落ちてる…

389:774ワット発電中さん
08/07/22 21:45:31 fkLHWLzG
一般に、送信や受信の動作を禁止すると、内部のクロック供給が止まり
送/受信シフトレジスタの動作そのものが止まるんで、マズい。これを
使うのは、ボーレートやキャラクタ長などをプログラム動作中に動的に
変更したい場合くらい。

送信FIFOが空になった時点(の割込タイミング)では、まだ送信シフトレジ
スタの中のデータを送信中だが、本当に送りたい最後のデータがFIFOに
送られたのかは、プログラムからしか判らないので、このタイミングで
送信割込を禁止すると、最後の判定のやり方次第ではマズいかも。

普通、送信割込を使う場合は、メモリ上に送信データを一時的に蓄える
リングバッファなどをソフト的に構築しているので ...

(1) 送信割込が発生した時点で送るデータがなかった(リングバッファ
  が空)の時に送信割込を禁止する。(送信割込を止めるために、一回
  余計に割り込みがかかる)

or

(2) 送信割込が発生した時点で、送信データレジスタにデータを書き
  込んだ時点でこれ以上送るなかった(リングバッファが空)の時に
  (次回の割込が起きないよう)送信割込を禁止する。

では?

逆に、送信割込を再開(許可)するのは...

(1) リングバッファが空で、送信FIFOも空(TxRDY)の時、リングバッファに
  データを置かず、送信データレジスタに書き込んで送信割込を許可。
  (送信完了前に次の送信データがある時は、リングバッファに入れる)

(2) リングバッファに送信データを入れた時、送信割込を許可。

AVRはどっちか忘れたが、普通は送信データレジスタへの書込動作によって
TxRDYフラグがクリアされるが、ソフトでTxRDYフラグをクリアできるUART
は、一度フラグをクリアすると、1回送信データを書き込まない限り、送信
割込マスクを解除して、送信可能状態にあっても送信割込が発生しない
場合があるので要注意。

390:379
08/07/23 00:14:42 VhItBUn8
>>387
Lowにしてましたorz

>>389
大変参考になります。
現在は両方(2)で動かしています。
ちなみに、いま使っているAT90S8535では、UDRE(送信データレジスタ空きフラグ)を
ソフトでクリアすることはできません。
これをクリアするには、UDRにデータを書き込まなければなりません。

391:774ワット発電中さん
08/07/23 20:54:00 yZaf+DWp
>>390
> Lowにしてましたorz

なら、>>379 の現象は正常。

High にしとけは TXC の割り込みで送信禁止にしても正しく動作すると思う。

まあ、みんなが言ってる通り半二重通信とかでもしない限りいちいち送信禁止
にする必要はないと思う。

392:774ワット発電中さん
08/07/24 00:35:59 aNEXq4pt
>>383-385
俺もCTCで、オーバーフローの割り込みかからなくて困ってた。。。
Wikiの「CTC動作」のところにあるサンプルって動作しないのか?
URLリンク(avrwiki.jpn.ph)

393:774ワット発電中さん
08/07/24 17:58:49 KiT78yuJ
>>392
とりあえずMega88のデータシート見てみたら、CTCでオーバーフローフラグが立つのはMax時になってた
(Bottom=0、Top=設定値、Max=カウンタの最大値($FF or $FFFF)、データシートの表記に従う)
石によるかもしれないけど、少なくともMega88系だと動かないだろうね
>>385でPWMは掛かるってあるけど、高速PWM時は確かにTOPでオーバーフローフラグが立つって書いてある

オーバーフロー割り込みは動作中にCTCの設定値変えた時とかに、
すでにカウンタが設定値を超えていてオーバーフローしたときのエラー検出に使うとかを想定してるんじゃないのかな
CTCの割り込みは比較一致で出来るけど、オーバーフローがなくなっちゃったら困ることもありそうだし
設計としてはこれが正しいと思う

394:774ワット発電中さん
08/07/24 23:07:28 TyHzCIAW
>>392
Wikiのソースが間違ってる。↓に書き換えたら動くでしょう。

誤: ISR(TIMER0_OVF_vect)
正: ISR(TIM0_COMP_vect)

誤: TIMSK = _BV(TOIE0); // タイマ0オーバーフロー割り込みの許可
正: TIMSK = _BV(OCIE0); // タイマ0比較割り込みの許可


395:774ワット発電中さん
08/07/24 23:10:17 TyHzCIAW
うわ、俺も間違った。
正: ISR(TIMER0_COMP_vect)


396:774ワット発電中さん
08/07/25 00:26:07 xAt6coLr
WinAVRリファレンスの日本語訳のサイトが消えてる。
Ver古くても利用してたから、ちょっとしょんぼり。

397:379
08/07/25 23:41:59 dhTIVQ1I
>>391
亀レスですみませんが、納得しました。
ありがとうです。

398:774ワット発電中さん
08/07/25 23:52:30 zRaXvoD1
>>392です。

>>393-395
比較一致の割り込みで無事に動作しました。
使っているのは、ATTiny2313です。

ありがとうございました。


399:774ワット発電中さん
08/07/27 05:20:51 ib8uTg1m
>396
今更消えないだろう、移動しただけじゃね??

URLリンク(reef.path.ne.jp)


400:774ワット発電中さん
08/07/27 09:06:35 N8mx4Osm
>>396
サイト更新時の転送ミスらしい。更新しました。

401:774ワット発電中さん
08/07/27 09:12:48 N8mx4Osm
>>396
新しいバージョンの翻訳、だれか手がけてくれるとありがたいです。
需要があればですが。

402:774ワット発電中さん
08/07/29 10:31:19 mcoFu9BB
>>401
とりあえず1つやってみたけど、微妙かもしれないです。

<alloca.h>

void* alloca (size_t __size)

__size バイトのメモリをスタックフレームから割り当てます。


この一時的なメモリ空間は、alloca()を呼び出した関数が
呼び出し元に戻るとき自動的に開放されます。

Avr-libcはalloca()をマクロとして定義し、_builtin_alloca()に翻訳されます。
実際、このコードはインライン化され、
それはこの関数のアドレスを取ることが不可能なことや
そのふるまいがリンクするライブラリによって変わることを意味します(??)

Returns:
alloca()は確保したメモリ空間の先頭アドレスを返します。
もしスタックオーバーフローが発生した時、そのふるまいは未定義となります。

Warning:
可変長引数をもつ関数内でalloca()を使用しないでください(?)

403:774ワット発電中さん
08/07/29 12:13:10 bUzMFIGG
>>402
> 実際、このコードはインライン化され、
> それはこの関数のアドレスを取ることが不可能なことや
> そのふるまいがリンクするライブラリによって変わることを意味します(??)

は、

> The fact that the code is inlined, means that it is impossible to take
> the address of this function, or to change its behaviour by linking with a different library.

この訳だと思うのだが、ちょっとひどいな。

「the code is inlined」というfactは、「it is impossible…」を意味するだろ?
それに、impossible to … , or to …だぞ。impossibleは、この二つのtoにかかってるぞ。

直訳するなら、「この(allocaの)コードがinline化されるという事実は、
この関数(alloca)のアドレスを取得することや、他のライブラリをリンクすることによって
この(allocaの)挙動を変更することが出来ないということを意味します」

だろ。基礎的な構文が見えてない。こんなものは中学英語レベルだろ…。

普通に訳するなら、「allocaはinline化されるので、この関数のアドレスを取得したり
他のライブラリをリンクしてallocaの挙動を変更したり出来ません」だ。

意気込みは買うが、せめて高校英語のレベルになってからにしてくれ。ひどすぎる。

404:774ワット発電中さん
08/07/29 12:34:20 mcoFu9BB
>>403
なるほど。
実際そこは良くわからなかった。

405:26
08/07/29 17:49:48 GQLqtTPw
AVRとUSB接続の無線LANアダプタを使って通信することは現実的でしょうか。
チャレンジしたからいらっしゃいますか?

URLリンク(wiki.osdev.info)
URLリンク(wiki.osdev.info)
ソースコードがあり使えそうなものはRT2570みたいです。

秋月で買えるmega88かmega644を使うことを考えています。
まずはUDPの送受信、最終的には簡単なHTTPサーバを動かしたいです。

有線の場合はENC28J60を使うとHTTPサーバまで動いているものが
URLリンク(tuxgraphics.org)
などいくつか見つかりましたが、無線のものは見つかりませんでした。




406:774ワット発電中さん
08/07/29 17:54:25 mZT0tUY6
加えてUSBを使うとなると
AVRのお仕事イッパイッパイになりそ~

407:774ワット発電中さん
08/07/29 21:32:27 y584g6tl
AVR -- ENC28J60 -- イーサネットWi-Fiメディアコンバータ
で繋いでやるのが一番現実的だと思うな

408:774ワット発電中さん
08/07/29 22:02:05 0HIX+daL
超手抜きだけど・・・WiPort・・・

409:774ワット発電中さん
08/07/30 00:17:25 m8S1gM9M
WiportってコネクタサイズのLANコントローラよね、
前から興味あるけど、あれって
HTTP立てたとして、容量小さすぎない?
外部メモリって繋げられるの?

410:774ワット発電中さん
08/07/30 00:21:21 m8S1gM9M
あぁ、XPortと勘違いした。
スルーして下さひ。

411:774ワット発電中さん
08/07/30 07:58:22 /QZC3FTG
>>409
あらかじめ設定したポート番号、コネクションは1つのみって制限はあるけど
シリアル(UART)、ソケット通信変換として使えるんで(XPortもWiPortも)
シリアルの先に接続したマイコンにHTTPをしゃべらせれば
>>405の実現したいことはできるかなと思ってね。

412:774ワット発電中さん
08/07/30 11:00:38 UBCwCgQ8
これは使えないかな。
URLリンク(www.apnet.co.jp)

413:774ワット発電中さん
08/07/30 11:09:22 ZcPhmTJy
>412
この手のってたいがいシリアルだよね


414:774ワット発電中さん
08/07/30 21:28:32 TUiGwvv9
まあ、パラレルは面倒だし、USB とかはもっと面倒だしね。

415:774ワット発電中さん
08/07/30 21:30:24 /QZC3FTG
けどSPIとかで通信できると便利そうだね。

416:774ワット発電中さん
08/07/30 22:36:08 TUiGwvv9
SPI って間欠的に来るデータを扱いにくくない?

417:774ワット発電中さん
08/07/30 22:52:27 TOugtPwJ
>416
... (SPIに変換する)ENC28J60に謝れ。

でも実際問題、ENC28J60のSPIクロックって最低周波数の規定ないの?
斜め読みではCPU側がSPI通信サボったらどうなるかが分からなかった。
物理層でコリジョン起こすのと同じような扱いでいいのかなぁ。


418:774ワット発電中さん
08/07/31 00:55:01 yEyMt10Q
>>417
こんなもんがあるのか、それはすまんかった。

て言うか、インターフェースこそ SPI だけど、結構レジスタの設定が必要なんだな。

> 斜め読みではCPU側がSPI通信サボったらどうなるかが分からなかった。

俺も斜め読みだけど、パケット受信するたびに EPKTCNT レジスタが増えて、255 を
超えると受信を止めるみたい。

ただ、内部 バッファーは 8KB しかないみたいなので、とても 255パケットも保持
できないからなんか他のステータスもあると思う。

419:26
08/07/31 11:25:27 rwdHSy7A
SPIでつながる無線LANモジュールがあれば・・・
みなさん、ありがとうございます。
無線LANはやはり難しそうですねえ。

ちなみに802.11に赤外線の規格があるみたいです。
URLリンク(dictionary.rbbtoday.com)
uIPのスタック使って物理層だけ実装してみようかな。
ENC28J60で「Ether-IRメディアコンバータ」つくったら楽しいかもしれない。


420:774ワット発電中さん
08/08/01 01:00:35 gKRhyopz
URLリンク(www.asahi-net.or.jp)
こんなん作ってる人いますね

バス接続でカードを叩くか

421:774ワット発電中さん
08/08/01 11:00:18 jdQqTELf
> SPIでつながる無線LANモジュールがあれば・・・

これは?
URLリンク(www.rohm.co.jp)
URLリンク(www.rohm.co.jp)

サンプル10000円らしいけど....

422:774ワット発電中さん
08/08/01 16:55:26 K9uLTKDL
ATTiny2313で16bitタイマを高速PWMモードで使っているのですが、
Wikiに載っている「高速PWM設定が位相基準PWMになってしまう」というバグは、
シミュレータだけの現象なのでしょうか?確かにシミュレータでは10bit位相基準PWMに
なってしまい、TOP値が0x03FFに固定されてしまっています。
実機は思うような動作にならず、デバッグもできずに困っています。

423:774ワット発電中さん
08/08/01 17:53:20 bOo9DKGW
ATtiny2313V でTimer0/1 共に(同時に) 高速PWM は使えたよ
(周期は一定で逐次 Duty比だけ変更 という使い方)。
自分はシミュレータは一切使わずオシロで動作確認した。逆に、オシロを使う場合片方の
エッジが一定周期に揃う 高速PWM の方が、パルス中央が一定周期になる 位相基準PWM
より観測しやすくて便利だった。

シミュが使える 位相基準PWM ではダメな理由があるの?
あと、用途によっては 位相基準PWM で作っておいて、狙った動作になったと思ったら
設定変えるだけ でうまくいけそうにない?


424:774ワット発電中さん
08/08/01 19:24:28 zS1f3FWF
>>421
それって、SD無線LANカードの中身。

425:774ワット発電中さん
08/08/01 22:34:25 APwILZVX
>>422
シミュレータ1では高速PWMうまく動かないもんね
シミュレータ2でデバイスをTINY48にしてデバッグできない?
TIMER1のレジスタほとんど同じだし。
↓のコードは「TIMSK1」を「TIMSK」に書き換えるだけで2313互換だよ。今動かしたら正常にシミュレートできた。

#include <avr/io.h>
#include <avr/interrupt.h>

ISR (TIMER1_OVF_vect)
{
PORTB ^= _BV(0);
}

ISR(TIMER1_COMPB_vect)
{
PORTB ^= _BV(0);
}

int main(void)
{
TCNT1 = 0; // タイマ初期値設定
OCR1A = 0xFFF; // TOP
OCR1B = 0x7FF; // 反転
TIMSK1 = _BV(OCIE1B) | _BV(TOIE1); // 反転時とTOP時に割り込み
TCCR1A=_BV(WGM11)|_BV(WGM10); //高速PWMモード
TCCR1B=_BV(WGM13)|_BV(WGM12)|_BV(CS10); //高速PWMモード(TOP = OCR1A)、CLK=1/1

sei(); // 割り込みの許可
while(1);
}


426:774ワット発電中さん
08/08/02 00:30:15 74eCOfvw
BASCOMAVR

427:422
08/08/03 03:24:30 xeL5OH3l
>>423
情報をありがとうございます。
私も実機では、正常に動作することを確認しました。シミュレータは相変わらず駄目ですが。
私はタイマ0はCTCモードで周期固定で、タイマ1は高速PWMでTOP値を頻繁に更新しています。

>>425
なるほど。試してみます。
以前にシミュレータ2を動かしても2313がリストになかったので諦めていました。

428:774ワット発電中さん
08/08/04 22:05:18 Dl//ZDia
上上下下左右左右BAスタート

429:774ワット発電中さん
08/08/04 22:25:53 57PKkTQn
なぜコナミコマンド?

430:774ワット発電中さん
08/08/05 10:10:30 yr8tqlyu
Aterm32を使ってロボットを作っています。現在pd0端子にSWをつけて
機能切り替えをしています。
その場合pd0接地の状態でソフトを入れようとするとCOM1が拒否されて
入りません、もちろんpd0が+(hot)の場合は問題ありません。
またソフトが入ってしまえばswの切り替えも正常に働きます。
これはブートローダーに何か悪影響を与えているのでしょうか?
それともタッチセンサーのようなswをつける端子には制限が
あるのでしょうか?

431:774ワット発電中さん
08/08/05 11:04:58 yr8tqlyu
>430 すまぬその後調べたらpd0端子はブーローダーの
(rs232c)入力端子になってること判明・・これではだめですね。
 端子を変更してトライします。
  

432:774ワット発電中さん
08/08/05 12:54:45 MKX0TkJP
>>430
どこのBBルータかと思ったw
どっかのマイコンボードですか?


433:774ワット発電中さん
08/08/06 01:02:34 QyARLye4
Atmega32じゃねーの?w

434:774ワット発電中さん
08/08/06 01:37:51 H+s/s/2m
へぇー、NECのあれって改造してマイコンボードになるんだ~
・・・と素で読んでた俺。


435:774ワット発電中さん
08/08/06 10:48:08 vh5LXQNM
俺もそう読んだが、ROMの書き換え許容回数が少ないので、俺のように
いろんな遊びに使おうとすると無理がありそうだ。

436:774ワット発電中さん
08/08/06 17:07:22 Y/DILgcs
>>433
それか!
一度イメージが出来てしまうとatmegaが全然思い浮かばなかったよ・・年だな俺orz

437:774ワット発電中さん
08/08/07 10:50:16 IriY02cx
Atmega88 って Atmega8 の後継的な機種と考えて良いの?
ひょっとして Atmega8 用の C ソースなら Atmega88 でもまるっと動くのかいな?


438:774ワット発電中さん
08/08/07 10:58:58 eyvwxbs2
>437
けっこう違う。
URLリンク(www.atmel.com)


439:774ワット発電中さん
08/08/07 11:13:43 rwC2DYhn
俺もそう思ってたが make一発できなかった

440:774ワット発電中さん
08/08/07 11:52:45 oXh6M44t
8と168のほうが親和性が高い

441:774ワット発電中さん
08/08/07 15:51:09 806M3K5k
>>440
というと・・・88と168はメモリサイズ以外にも結構違う?

442:774ワット発電中さん
08/08/07 17:04:14 oXh6M44t
>>441
URLリンク(www.atmel.com)

443:774ワット発電中さん
08/08/11 16:54:27 knbL8Fut
連休になればきっと来てくれる・・・エンコーダのプロの方が・・・

444:774ワット発電中さん
08/08/12 14:57:37 pD6Fs6yW
ATmega32をGCC Dev.Lite で開発していますが。
フラッシュライターで書き込む時、うっかりAVRに電源を入れ忘れていると、
当然書き込めないのですが、後で電源を入れなおしてもフラッシュライターが
固まっていて書き込み動作をしません。
これを回復させるには、WINDOWSをログオフするかシャットダウン
するかして再起動する必要があります。
バージョンには関係なさそうです・・・・皆さんはどうですか?
上手い再起動をしないで回復させる対応策ありませんか?


445:774ワット発電中さん
08/08/12 16:23:28 2a9+D20f
>>444
フラッシュライターがUSB接続なら抜き差し。
シリアル接続ならUSBシリアル変換を入れて抜き差し。


446:774ワット発電中さん
08/08/12 22:10:21 OBUVyo4V
>>443
ところがどっこい
やってきたのはこの夏デビューの素人でしたっと

447:774ワット発電中さん
08/08/15 21:18:41 VccSy1GE
USBASPの基板を作るけど欲しい人いる?

448:774ワット発電中さん
08/08/15 21:24:00 o8jnWAxa
>>447
もうちょっと具体的に…

フラットパッケージ使って小さい奴だよ~とか、
DIPだけど端子色々だして使い道他にもあるよ~とか、

作りたい目標みたいな物を書いた方が良いんじゃないかな?

449:774ワット発電中さん
08/08/15 21:36:33 VccSy1GE
>>448
オッケーです。

以下の2パターンを考えています。

(ケース1)自分専用ならば、CPUはSOP、抵抗コンデンサは1005サイズ、USBコネクタはミニBで小さくまとめます。

(ケース2)自分以外に使いたい人がいるならば、ハンダ付けを簡単にするためにCPUはDIP、抵抗コンデンサはリードタイプ、USBコネクタはBでいくかな。

ケース1、ケース2のいずれを選択するかの参考にするために書き込みました。

USBASPの規模であれば一晩でアートワークの設計ができると思います。

基板の製造はP板.COMに委託します。




450:774ワット発電中さん
08/08/15 22:33:12 qYyboLTg
流れブチ切りすまそ

ISPのコネクタですが基盤側は2×3のピンヘッダ付けたんですが
ケーブル側にしっくりくるソケットがありません
みなさん、何つかってるんですか?

451:774ワット発電中さん
08/08/15 22:50:58 tU3DrZAL
(2)だけじゃインパクトにかけると思う。
(1)なら、「自分以外」でも欲しい人結構いるんじゃないのかな。

>>450
素直に、共立とかマルツから買う。

452:774ワット発電中さん
08/08/15 23:15:24 yeOIKzR9
基盤スペース問題なければ1×6のシングルでやるとか、
逆にはみ出すけど2×5とかの10ピン物をメス側だけに利用しても良いかと
うちはPC用に使うUSB用のバラのワイヤを2×6に接着して作った
短いけどね

453:774ワット発電中さん
08/08/15 23:54:35 tlT/fky8
>>449
端子はミニBが良いけど、1005はちときついっす
2125か、せめて1016なら…

454:774ワット発電中さん
08/08/16 00:13:21 yPXccjOZ
>450
ネットじゃ探せなかったけど、千石の店頭だと2.54ピッチの2x3もあったはず
信号伝達コネクタ(黒)2×4
URLリンク(www.sengoku.co.jp)

455:774ワット発電中さん
08/08/16 00:24:50 6JrsX3Lh
>>451
>>452
>>454
情報感謝
大変参考になりました


456:774ワット発電中さん
08/08/16 00:27:59 BUjFUW5c
>>451, 453
了解しました。
では(ケース1)のコンパクトタイプで、1608サイズのチップ部品を使います。
ところでATMEGA8の32ピンTQFPはどこで買えるのだろう。
ストロベリーリナックスは売り切れ。


457:774ワット発電中さん
08/08/16 01:06:09 +Z1rybUB
>ISP
2x3メスなら秋月にある長いのを切って使ってるので、
たくさん取れる(そんなに作ってどうする)。

>TQFP
デジキーで売ってる。でも、買うならMLFかな。

458:774ワット発電中さん
08/08/16 01:26:41 NLXnKmCp
>>456
を、楽しみ。さらにlevel-shifterとか付いてると嬉しい。
あとatmega8のTQFPは、既出だけどdigikeyでいいんじゃないか?
RSでも在庫あるようだけどdigikeyの二倍の価格みたいだ。。。。

459:774ワット発電中さん
08/08/16 08:35:55 BUjFUW5c
>>457, 458
Digikeyですね。
前に一度だけ使ったことがあります。
ありがとうございました。


460:774ワット発電中さん
08/08/16 10:05:56 dLWN0lTq
MEGA8L のQFPなら、デジットのカウンターにあった。
800円もしたが・・・w

461:774ワット発電中さん
08/08/16 10:14:37 BUjFUW5c
たった今、DIGIKEYに発注しました。

秋月で売っているATMEGA64用に作った自分専用の基板です。

URLリンク(www012.upp.so-net.ne.jp)

とりあえず活躍してくれます。お粗末様でした。

462:774ワット発電中さん
08/08/16 11:24:25 Imm9ssv0
>>461
消えるの早すぎ

463:774ワット発電中さん
08/08/17 11:55:17 M7AVkcUA
以下の仕様でCAD上での部品配置を終えました。

ATMEGA8L: TQFP 32PIN
チップCR: 1608サイズ
チップLED: 1608サイズ
USBコネクタ: ミニBまたはBコネクタのいずれか選択して実装
3.3Vデバイス対応: 74LVC245、3.3V出力レギュレータを搭載
基板サイズ: 60mm×20mm
基板仕様: 両面

MLFパッケージおよび1005サイズのチップ部品は手ハンダするのに
テクニックが必要なため、採用をやめました。

ご意見いただければと思います。



464:774ワット発電中さん
08/08/17 12:42:59 UV8gsFHS
>>463
ID変わるからコテつけてくれると助かります

465:774ワット発電中さん
08/08/17 12:53:03 SapDMqUn
VDDが 5/3.3/noneに切り替えられるといいかも。

466:774ワット発電中さん
08/08/17 13:36:32 bGS0HML4
>>463
いいですね(個人的には74LVC245手持ちがないが・・)。
レギュレータの形状は、こんな感じですか?→URLリンク(img.akizukidenshi.com)

467:774ワット発電中さん
08/08/17 13:54:24 M7AVkcUA
463です。

>>464
>ID変わるからコテつけてくれると助かります。

コテの意味がわからないのですが、固定ハンドル?でしょうか。
すいません。

>>465
>VDDが 5/3.3/noneに切り替えられるといいかも。

ターゲットボードに供給する電源ですね。
今、ISPコネクタは6ピン(電源なし)なので、10ピンに変更して電源が供給できるよう検討してみます。

>>466
>個人的には74LVC245手持ちがないが

そうですね。入手製が問題ですね。
今予定しているのは0.65mmピッチのSSOPパッケージです。

>レギュレータの形状は、こんな感じですか?

出来ればもっと小型で、なおかつ入手性の良い物を使いたいと思っています。
無理であれば画像のような表面実装タイプを使用したいと考えています。



468:774ワット発電中さん
08/08/17 14:21:54 SapDMqUn
秋月ならSOPの、74VHC244が手に入るよ。
URLリンク(akizukidenshi.com)
ついでに、レギュレータ
URLリンク(akizukidenshi.com)
URLリンク(akizukidenshi.com)

469:774ワット発電中さん
08/08/17 17:08:02 OQpHRBcV
共立だと
74VHC245F \84
RD74LVC245BFP \99

74VHC244F \84
HD74LVC244AFP \99


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch