_____
/ /|
/ ( ゚∀゚) /.∠フ 個人でも手軽に使える
/ /.∠フ || . Atmelの8-bit RISCマイクロプロセッサを
/ __ o/.∠フ || 中心に語るスレッドです。
∠| ̄ ̄凵 ̄ ̄|∠フ || *AAは「AVR H8 etc. マイコン総合スレ Part3」からいただきました。
.|| |_____|/||
Atmel AVR 8-Bit RISC
http://www.atmel.com/products/avr/
以上、とりあえずテンプレ。
補足ヨロ
7 :
774ワット発電中さん:2008/06/07(土) 21:56:21 ID:g9/R4QzI
ライタなんてchanさんのページに載ってるやつで十分
んなこたない
>8
macやlinuxな人もいるからそういうわかにもいかない。
11 :
774ワット発電中さん:2008/06/08(日) 09:09:22 ID:d3OZnYxh
USBで繋がるし、普通にAVR Dragon買ったほうがいい。
以前、Dragonが火を吹いた(レギュレータが焼損しやすい)という話があったけど、
この点は改良されたんでしょうか?
>>13 それ俺も気になってた。
あれ、ドラゴンだけに火を吹くんだもんな..
そうなの? うちの子は特に熱をもったりはしてないけど。
STK500でいいんじゃない?
取りあえずなんでも書けるし、パラレルも
ただジャンパーが・・・・・
と言うことでbascomからシンプルプラグラマ(抵抗3本)
種別のソケットをPCパラレルに繋いで使ってる。
ところで、デジキーの送料が安くなったことでAVR選択指が増えて
日本でもPICを凌駕してしまうのではないかな?
うちのDragonは、USBコネクタが基板から外れて困る
HIDaspとかどう?
書き込み速度が少し遅いけど回路がシンプルで
USBなのに専用ドライバ不要なところが良いと思う
このスレが900くらいにいったら、AVRWikiにテンプレ案を書き込みましょうよ。
>>19 それなら一般的なUSBaspでいいんじゃないの。avrdudeに対応してるんだし。
23 :
774ワット発電中さん:2008/06/08(日) 23:34:40 ID:thAW5LFh
>>19 Vistaで使うなら正式対応してるからいいと思うよ
USBaspはこの辺の情報が無いから作らなかったけど
2チップになるけど、USBspiもいいな。
USBaspの倍速で書き込める。
USBtinyって奴はtiny2313一つでUSBライタになるよ。
ただちょっと遅いので主にSPIモニタとして使ってる。
これからAVRを始めたいと思っています。
秋月の通販で
ATTINY2313V-10PU
ATTINY26L-8PC
を3個ずつぐらい買って
ttp://homepage2.nifty.com/denshiken/AVW019.html このライターを作るのがいいかなと思っています。
3年ぐらい前にH8のキットで遊んだときに買った秋月のUSB-シリアル
ケーブルを持っているのでそれを使います。
(まずは最低限Windowsで環境をそろえて、いずれはmac+gccの環境に
したいと考えています。)
やりたいことは、ブレッドボードでLEDや圧電スピーカーやスイッチ、
ボリュームをつないで遊ぼうとおもっています。
よろしければ、こんな私にアドバイスをください。
どうせ通販するのでこれ買っておけば?とかあると嬉しいです。
よろしくお願いします。
アドバイスその1
何についてアドバイスして欲しいのか書く
26より88系の方がオススメ。
2313と88があれば大抵の事ができる。
何を聞きたいのかを書いてないですw
>>26 >いずれはmac+gccの環境にしたいと
あ、一応。
mac視野にいれるならavrdude(ライティングソフト)が使えるライターを確保したほうがいいよ。
>>26 ライター作りが目的じゃないのなら、
純正のAVRISP2を買うほうがいいと思うけどなぁ。
抵抗やLEDの余分が無いならともかく
AVRで遊ぶのに特別必要なのは無いと思う。むしろ
バッチリ部品を揃えるとそれだけで満足してやる気なくしそう。
>>30 でんし研のはavrdudeにも対応しているって書いてあった。できた当時はダメだったけど。
ライターは人によってまちまちだよね。買うならAVR-ISP2かな。
自作だと今はUSB一体型を作る人が多い気がする。
Mac環境なら、AVRUSBのとこにあるAVR MacPackとAVRfusesが使える。
最近のはgccにWinAVRと同じパッチが当たっていて便利。
Macでの環境構築は、AVR MacPackが出てからは、挑戦ってほどのもんでもないよ。
まぁ特に目的がないならライタを作るのもいいんじゃないだろうか。
PIC派の人にも言えるけど、なんでわざわざライタなんぞ作りたがるのか
わからんよな。PICKIT2やAVRISP2が安く買えるのに。
>>34 とりあえず簡単で、【実用になる】←ここ大事
からじゃないのかな?
>34
作るもんが思い浮かばないからじゃない?
大して難しい物でも無いし、時間が掛かる物でもない。
ライタ一つ作れなきゃ他の工作だって難しいだろうし自作ならば壊れた時にすぐ修理出来る。
まあ、作れない人は買えば良いんじゃね。
PICKITやAVRISPは安くないだろ
pickit2 は買ったけど AVR用は作った
PIC/AVRを始めることにした。まずはライタを作らないと。
ライタ作った。さて、何を作ろうか。
…作りたいモノがない!! しかし、何か作らねば…。
そうだ、新しいライタを作ろう。
MSのOSしか世の中にはないと思ってるんだろうなあ
>>35って
PICkit2とAVRドラゴンは複雑で小型なので買った。
PICkit2の基板付きはハンダなしで実験できたけど
AVRドラゴンはISPケーブルも無いし接続表もややこしいので
自作したAVRライターを使っている。
43 :
26:2008/06/10(火) 01:38:51 ID:Zq0EcZ/b
皆さんありがとうございます。
「試しながら学ぶAVR入門」という本を買いました。
AVRISP2は7000円ぐらいするのですね。
安く作れて不便や不都合が無いなら自作してもいいかなというぐらいの値段です。
だって本体が100円ですし、今後どれだけ本格的にやるかもわかりませんし・・・。
あるいは、
ttp://members.jcom.home.ne.jp/0434383301/AVRmk2Lite.htm これならデバッグもできるのでいいかもしれません。
デバッグ可能な自作ライターってあるのでしょうか。
とりあえず、作りたいものは
・20個ぐらいのLEDの点滅パターン制御
・簡易シンセサイザー、複数のAVRを組み合わせたらアナログシンセ?
ぐらいです。
その後、
・シリアル通信:PCとつなぐ
・液晶表示
・Trevaから画像取得
・赤外線リモコン
・温度計
・無線通信 子--(無線)--親===シリアル===PC
などは野望です。
学習型のリモコンは興味がある
>>26 正直ね、デバッグ機能(インサーキットの)って電子工作レベルだとあんまり使わない。
使わなくてもOK、じゃなくて面倒だから使わないで終わらせるって意味で。
じゃあ何使うのかというと、LEDとかLCDでのprintfデバッグ。その辺のスクリプトと一緒。
再実行させても秒単位の話なんで、問題を推測したら修正して即実行。
なので、デバッグ機能があるライタが欲しいとか、まずはライタから作るかとか時間の無%
>>26 正直ね、デバッグ機能(インサーキットの)って電子工作レベルだとあんまり使わない。
使わなくてもOK、じゃなくて面倒だから使わないで終わらせるって意味で。
じゃあ何使うのかというと、LEDとかLCDでのprintfデバッグ。その辺のスクリプトと一緒。
再実行させても秒単位の話なんで、問題を推測したら修正して即実行。
なので、デバッグ機能があるライタが欲しいとか、まずはライタから作るかとか時間の無駄。
動くことが判ってるできあいの一番安いライタ買って、まず動かす。そうしないと機材ばかり
いいものが揃って、肝心のおつむがさっぱり鍛えられないという間抜けなことになる。
・・・という自己反省を交えてのレスつけてみる。
47 :
26:2008/06/10(火) 02:30:32 ID:Zq0EcZ/b
48 :
26:2008/06/10(火) 02:38:28 ID:Zq0EcZ/b
と思ったらATtiny2313-20PUが380円もしますね。
うーん・・・
自分はAVR始めるときは数百円くらいで出来るシリアルポート使うライタを最初に作ったな。
しばらくそのライタを使って色々やってからUSBasp作ってUSBから電源も取れるようにして色々なのを作ったよ。
デバッグ機能?イラネ
去年DigikeyでSTK500とJTAGICEmkIIのセットが安かったので、
それを買ってマイコン入門した。
JTAGやDebugWireはやっぱり便利
>47
それavrdudeで動かないと思う。(=winオンリー)
AVR Dragonでいいのでは?
ISPできるしデバッグもできる。
52 :
26:2008/06/10(火) 14:04:39 ID:Zq0EcZ/b
>52
>・まずライター上の2313に「AVRISP互換のプログラム」を焼く
自作ライターには「卵先鶏先」問題があって
まずAVRを焼けるライターを用意しなくちゃいけない。
素朴な疑問だども
ライターを持っていないのに
プルグラムしたチップを使うと言うのは
やっぱライターを持っている人にしか出来ないんじゃないか?
55 :
26:2008/06/10(火) 15:25:50 ID:Zq0EcZ/b
>55
なんだ二段階でもいいのかよ。。
だったらとりあえず共立ライターでも買って
あとでUSBaspでも作ったら?
>57
小出しに負けたw
ATmage32のデータシートについての質問なんですが、
命令一覧のSBRCの項のクロックに記載されている
「1/2,3」というのは、
条件非成立なら1/2(0.5)クロック
条件成立なら3クロック
という意味でよいのでしょうか?よろしくお願い
します。
>52,55
その考えで合ってる。ちなみに白いコネクタまで真似する必要は無いし
ブレッドボードで作ってファーム書き込み後は3.3nFと100kΩを取り除いてもOK
>>60 ありがとうございます。他にもいろいろ日本語になって
いるんですね。助かりました
63 :
26:2008/06/12(木) 14:39:05 ID:LTjUw7U5
64 :
774ワット発電中さん:2008/06/14(土) 16:13:57 ID:M22dvnki
>>63 くれぐれも、RST端子をI/Oとして使うヒューズビットを立てて、二度と書き込み出来な
い状態に陥らないように。(高電圧モードのライタがあれば復活できるが)
USBはいろんな人が実験やってるけど、専用の石じゃないのでそれだけにかかりっきり
になってしまうのが何点。2313とかを1個USB専用に使うのならよい鴨
>>64 最近2個立て続けにISP不能にしました。(´・ω・`)
>>65 おお、それはすごい。ルーターにアタックかけたのか?
放火でもしたんじゃねーの?
68 :
26:2008/06/14(土) 23:49:30 ID:Blwi60kA
通販で2313とmega88を買いました。
ttp://homepage2.nifty.com/denshiken/AVW019.html これをブレッドボードで組んで鶏を書き込みました。
ぴったりの部品が無かったので、
C2は2000pF
R3は47kΩ
R1,R2は470Ω
でやったのですが、運良く1発で書き込み成功。
電源はエネループ2個です。
その後、C2,R5を省略したものをユニバーサル基盤で組み直し、鶏を装着。
もう一個のブレッドボードで
「試しながら学ぶAVR入門」のLEDチカチカを作りました。
hexファイルを'Program'してOKと出るのに動かない。
VerifyしてもOKとでるのに動かない・・・。
コンパイラの最適化が「-Os」になっていて空ループwaitが効いていません
でした。「-O0」にしたら解決しました。
明日は全ピン引き出したテスト用ボードでも作ります。
28ピンソケットにしておけばmega88と共用にできるかな。
とりあえず、スタートできました。皆さんありがとうございました。
始まったな(CV冬月
>>68 #define nop() __asm__ __volatile__ ("nop")
for(i=0;i<=10000;i++){
nop();
}
参照:
http://avrwiki.jpn.ph/wiki.cgi Q) コンパイラが勝手にループの中の式を削除しちゃうんですけど。
A) 割り込み処理中で立つフラグをメインループで監視する場合は、変数に volatile 宣言を付ける。( volatile static unsigned int iflg=0; とか )
nop() は #define nop() __asm__ __volatile__ ("nop") にすると良い。
AVRのアセンブラはマルチステートメントが使えたので調子にのって使ってたら
同じ行でマクロの後ろにも書いていたら、エラーも出さずに無視されるんだな。
SCL_H RCALL WAIT
(SCL_Hは特定のポートのビットを操作するマクロ) RCALLは完全に無視
ヘルプ見たらマルチステートメントは推奨しないとあるからしょうがないけど
一行プログラムに挑戦!w
>>64 >くれぐれも、RST端子をI/Oとして使うヒューズビットを立てて、二度と書き込み出来な
>い状態に陥らないように。(高電圧モードのライタがあれば復活できるが)
AVRのライタってフル機能持ってないのが普通なの?
それならPICのほうが楽なのかなぁ。
>>73 書きこみに必要なピンのアサインや、そもそも書きこみの可否を変更しておいて「普通の」
ロジックで書き込めるって、そっちの方がおかしくない?
そりゃ、PICみたいにIn-Systemでも、書きこみ時に高電圧を要求するCPUならできるけどさ
(AVRでも、一度抜いてから、ライタで書き込めば、復活できるけどね)
>>74 おかしいという点では、そういうことができるマイコンってのが、ちょっと
おかしいというか珍しいかな。
他の普通のマイコンではそういうことはないよね。
>>73 何を重要視するかは人それぞれだろうから
色々使ってみるのも良いんじゃない。
>>75 いや、その辺の事情はPICでもたいして変わらないよ。
PICも低電圧書き込みモードを使えば高電圧はいらないし、低電圧書き込みモードを
使えなくするヒューズ設定をすると高電圧をかけないと元には戻せない。
PICの場合、低電圧書き込みモードに特化した機能省略型ライタがほとんど存在せず、
フル機能ライタばっかりというだけ。
まぁ最近はそもそも高電圧を必要としないマイコンのほうが普通だから、
高電圧が必要な場合がある=特殊という認識なら、それほど外れてはいないけど。
>76
そのとおりだと思う。
まーAVRやってる人ってほとんどPIC経験者じゃないかなあと思う。
79 :
774ワット発電中さん:2008/06/16(月) 10:14:17 ID:ET8x0A5B
>>73 通常はリセットをIOに設定しなければいいだけの話で、
フル機能を持たない分、ライターは簡単で安価に作れる
やってしまった
俺もPICから引っ越してきたがAVRが快適すぎてもうPICには戻れない。
おれも
でも、dsPICには勝てないだろう
>83
適材適所って聞いたことある?
85 :
26:2008/06/16(月) 14:52:56 ID:/qjQn8Rj
おっと、2313の18bitをフルに使おうと考えてましたよ。
8x8x2色のLEDパネルを2個の2313をUSI2線動作で通信させて制御します。
(USI2線/3線動作ってどうですか??)
開発時は1bit省略で最後にRSTをIOに変更ですね。
いずれパラレルライタを作ろう。
ttp://elm-chan.org/works/avrx/report.html 2313の場合はパラレルモードで・・・
と思ったらパラレルモードに12V必要なんですね。
9Vでは動かないですかね。9V電池でできればお手軽なのに。。
これからAVRの勉強をしようと思うのですがAVR関連の書籍でオススメの物はありますか?
>>85 そのためのDC-DCコンバータでは・・・
>>86 もう、これってテンプレに入れといた方が良いのかもね。
89 :
26:2008/06/16(月) 18:00:25 ID:/qjQn8Rj
>87
9V×2=18Vにして100Kオームの抵抗3本で分圧でもOKでしょうか。
こういう場合の抵抗の大きさってどうやって決めるのでしょうか。。。
でも、エネループ6個かき集めて
Tiny2313リセッター
ttp://homepage2.nifty.com/denshiken/AVW015.html でなんとかなるなあとおもいました。
何度もやるわけではないし。
ちなみに、
『Tiny2313はS2313と比べると間違ったヒューズ設定をしてしまう可能性が高い』
ってのはなぜなのでしょうか?
>86
自分にとっては「試しながら学ぶAVR入門」は良かったと思う。
まだ実際に全部ためしたわけじゃないけど、通して読んでみてAVRで
何ができるのかがだいたいわかったきがします。
他の本は読んでないのでしりません。
>>89 真意のほどは本人に聞かないとわからないと思いますが
想像するにTINY2313にはヒューズでRESETとI/Oを切り替えることができてしまうが
S2313にはそれがないってことではないでしょうか。
>9V×2=18Vにして100Kオームの抵抗3本で分圧でもOKでしょうか。
ダメ
18Vに12Vのレギュレータつけるのが簡単かと。
92 :
26:2008/06/16(月) 18:36:58 ID:/qjQn8Rj
>90
なるほど。
S2313は低い可能性で間違っちゃうのかと思ったけどゼロ%なんですね。
>91
だめすか。
なんでだろう。。。
AVRにつないだ瞬間に電圧かわっちゃうから? <まじでわかってない。
分圧しても並列に回路つなげたら抵抗下がって電圧も下がるでしょ
>>92 100kオームの抵抗にたった0.1mA流れただけで10Vの電圧降下。
しかも電池の電圧は残量によって変わる。当然分圧した電圧も変わる。
だから抵抗による分圧では正確で安定な12Vは得られない。
プログラミング電圧の12Vは安定した電圧じゃないとだめ
9V電池1本がいいならチャージポンプ型昇圧回路とかが簡単でいいんじゃね?
12Vの電池も売ってるよ(タンゴサイズ)
以前ダイソで見つけた・・・・けど素直に12VのACアダプタ使えばいいんでないの
おらのSTK500はPCの12Vから直接取ってるけど。
>>86 PICじゃないんだから、「AVR」と名がつく本を全部買っても、
たいした事ないと思う。
amazonで調べても
試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (Skill up my computerシリーズ)
AVRマイコン活用ブック―オリジナル電子ゲーム&ロボット製作 (わかるマイコン電子工作)
AVRマイコン・リファレンス・ブック―AVRのCPUアーキテクチャ、豊富な内蔵周辺機能を詳細解説 (マイコン活用シリーズ)
マイコン搭載ロボット製作入門―AVRで魚型ロボットのメカを動かす (電子工作シリーズ)
パソコン用手作り外部インターフェース―USBモジュール、PIC、AVR、H8を使って実装し、パソコンから入出力を行う (マイコン活用シリーズ)
マイクロコントローラAVR入門―身近で便利なワンチップマイコンの使い方と応用 (ハードウェア・デザイン・シリーズ)
12時間以内に「お急ぎ便」でご注文いただくと、2008/6/17 火曜日までにお届けします 。
これくらいだろ?
まぁ、どれかといわれたら、AVRマイコン・リファレンス・ブック かな。
AVRいじってたら、
勉強しなかったのにテクニカルエンジニアエンベデッドに合格できました
>96
武藤佳恭 『超低コスト インターネット・ガジェット設計 第1版』 オーム社
一冊つーたら俺もリファレンスブックになると思うけど、リファレンスブックでいい奴は
そもそも「どの本?」とか聞かないのではなかろうか。
>>92 >AVRにつないだ瞬間に電圧かわっちゃうから? <まじでわかってない。
AVR云々の前にオームの法則を勉強した方がいいかと。。
>92
+5Vに006Pのマイナスをつなぐと14Vになる。後2V減圧すれば12V。
新品のエネループは1.7Vぐらいあるので+エネループ4個で11.8Vになるよ。
試しながら学ぶAVR入門とAVRマイコン活用ブックはWin-AVRを使っている。
Win-AVRは前Verから最適化のデフォルトが-O0から-Osに変わっているので
例文通りでもwait()が消えちゃう。
>70さんのnop();を入れるのが間違いない書き方だね。
AVRマイコン・リファレンス・ブックは使っているコンパイラがIcc-AVR。
といっても#include <***.h>以外はWin-AVRでもコンパイルできそうな書き方になってる。
>>92 >S2313は低い可能性で間違っちゃうのかと思ったけどゼロ%なんですね
AT90S2313は高電圧ライタを使わないとヒューズビットの変更が出来ないので、
”低電圧ライタ”を使う限りでは、RESETをI/Oに切り替えてしまうことは無い。
無条件でゼロ%という訳じゃないぞ。
AVR32をDIPで出してください
>>104 そもそもS2313にはRSTDISBLヒューズなんて無いし。
107 :
774ワット発電中さん:2008/06/17(火) 21:09:53 ID:XGTTAaBk
ちらっと仕様書みてみた。
たしかに、S2313に関しては~RESETは専用端子なのでi/oを増やそうとして
間違ってResetをdisableにしてしまいISP不能にしてしまう事は無い。
ただ、SPIEN(シリアルダウンロードイネーブル)を高電圧モードで1にしたら
ISPは使えなくなる。
確立が低いというのは高電圧書き込みの道具を持ってない人はISPが使え
なくなる事はほぼ無いのでS2313は安全だという事なんじゃ?
>>107 あり?S2313ってSPIでSPIENをDisableに出来たっけ?
AVRで一番やっちゃいがち(俺だけかも)なのは、クロックソースを
間違えて外部にしちゃったりとか。まぁ、外部からクロックを入れて
やれば復活はするけど・・・
RESETを3分間Loにするとヒューズが初期化される隠し機能とか無いのかなw
>110
恐ろしい機能だな。
>>108 漏れも外部クロック設定しちまって動作不能によくはまってた。
外部クロック設定で動作不能って言っても書き込み直せば使えるんですよね?
まさか、書き込みもできなくなるの?
>>113 クロックがなくなると書き込みもできない。
内部RCやセラロックをクロックソースとしてハードを組んだ状態で、
外部クロックに設定しちゃうとISP経由での書きこみが出来なくなる(当然)。
こういうときは、簡単な発振器(インバータ×2のRC発振器で十分)出力を
外部クロックソースに使って、とりあえずフューズを書き換えて復旧させる。
115 :
774ワット発電中さん:2008/06/18(水) 09:48:02 ID:raJsNd2o
>>114 ありがd
しかし、それも変態仕様だなぁ。
PICよりはマシ・・・なのか?
すまんsage忘れたorz
そうかな? すっごく納得できる仕様だと思うけど。
わざわざ高電圧ライタを用意するよりだいぶ楽じゃないか?
>>117 外部クロックがないと書き込みできない仕様より、外部クロックがなくても
書き込みできる仕様のほうが納得できるんだが・・・
通常動作時に外部クロック供給の設定であっても、書き込み時には
セルフクロックで動作するマイコンのほうが多数派だし、扱いも楽だと思うんだが。
>118
PICならICSPでもMCLRの高電圧に気を遣わないといけないからイヤだね
120 :
26:2008/06/18(水) 10:58:06 ID:T1y6Oj4w
>>119 PICとの比較だと、PICも高電圧なしで書き込みできるモードがあるけど、
低電圧書き込みモードのヒューズ設定を消してしまったら、再設定するには
高電圧ライタが必要。この辺の扱いはやっぱり変態だね。
>121
変態だからなんなの?
変態だから、す・き
>>118 クロックが無い状態で、どうやって書きこみモードに入っているってことをCPUに認識させるの?
汎用I/Oを使ったISP書きこみ(勿論、電圧制御などをしない)で、クロックソースが切り離されても
書きこみができるマイコンって存在する?
なんか、ID:raJsNd2oってISPによる書きこみを本質的に誤解しているような気がする。
>>124 >>114は、MPUコアのクロックを外部供給に設定すると、ISPで書き込みのコマンドを
送っても、コアにクロックを外部供給しないと書き込みができないって意味だよね?
MPUコアへのクロック供給がなくてもISPのシリアルコマンドのクロックは
あるんだから、書き込みモードに入ったことをチップが認識することは可能でしょ。
同じATMEL製でもシリアルEEPROMチップなんかはそういう動作してる
わけだから可能であることは明らかだし、他のマイコンを挙げるとすれば、
PICも書き込みのシリアルコマンドが入力されれば、MPUコアへのクロックが
外部供給に設定されていて外部からクロック供給がない状態でも書き込みできるね。
逆に聞きたいんだが、MPUコアのクロックを外部供給に設定するとISPで
書き込みができなくなるマイコン、AVRのほかに実在する?
ISPシリアルコマンドのクロックとMPUコアのクロックを取り違えてない?
>>125 >MPUコアのクロックを外部供給に設定するとISPで
>書き込みができなくなるマイコン、AVRのほかに実在する?
その比較になんか意味があんのかな
まさか優劣とかじゃないよね?
雑談に意味を求めることに意味はなかんべ。
>汎用I/Oを使ったISP書きこみ(勿論、電圧制御などをしない)で、クロックソースが切り離されても
>書きこみができるマイコンって存在する?
フリースケール
JTAG とか使うんじゃねの?
Tiny2313 でスタックポインタの設定を忘れていた。
初期値が$00とあるから、スタックが進むと$FFとかなるんかな。
こうなった場合、AVRはどんな挙動が予想されますか?
これからAVRを勉強しようとおもっているのですが、CのコンパイラはWinAVRとかじゃないと絶対無理ですか?
慣れてるので、できればVisual C++でやりたいのですが・・・
つりですか
あまりにもばかばかしくて思わず一度スレのログ削除しちゃった
VS2005のIDEだけ使ってる。
コンパイラーはWinAVRだが…
変な質問してすいませんでした・・・
136 :
774ワット発電中さん:2008/06/20(金) 00:28:18 ID:uvuZi4NQ
>131
AVR-GCCもあります。
>慣れてるので、できればVisual C++でやりたいのですが・・・
ソースは書いても良いですが、コンパイルするときは、WinAVRか、AVR-GCCで行えばオケ。
メイクファイルを作る。
VC++でメイクファイルプロジェクトを新規作成し、
このプロジェクトのプロパティで、上記メイクファイルを使ってビルドするような
ビルドコマンドラインを設定すれば、VisualStudioのIDE環境でもビルドできる。
>>131 分かっているかどうか分からんが、VC++はあくまでエディタやプロジェクト管理とかのGUIだけ利用する、ということになるぞ
C++では書けないし、MFCやライブラリも利用できない(なのでエディタ上の自動補完、MSDNの参照とかはほとんど意味が無い)
コンパイラとライブラリは別のもの(WinAVRとかAVR-GCCとか)を使う。見るならそっちのライブラリのヘルプ
>>139 Visual C#でAVR用のソースを書いている俺が飛んできました。
インテリセンスでコード補完が出来たり、リファクタ出来たりしてなかなか便利ですよ、と。
C++/C#の機能は使わず C コンパイラでコンパイル出来るように注意深く書く必要あるけどね。
XCodeでやるときも似たような感じになるね。
WinAVR以外の開発環境という話題になるなら、eclipse+AVR Pluginが使いやすいと思う
Cygwin,avr-binutils,avr-gcc,avr-libcの組み合わせは異端ですか?
>143
それ普通にWinAVRでは。。
AVR StudioからWinAVRを使うのが一番楽では
Windowsオンリーならそれでもいいけどそうとは限らないからな。
>>147 Windowsマシンが家に10台ぐらいある俺からすると、Windowsがない環境なんて考えられないので
純粋に興味本位でお尋ねしたいのだが、あなたの言う「Windows環境のない人」のイメージは
Linux使いなのか、それともMacなのか?
そういう人たちはWindowsが無くて困らないのか?
それともAVRのプログラムをやっているような人は組み込み系の人が多いので、
Linuxでコマンドラインだけで何でもやっちゃうのか?
俺んちにはMacはMacBook Airがあるだけで、LinuxはVmWare上にCentOSを入れているだけだ。どちらもほとんど使ってない。
大学で初めて触った計算機がIRIXとMacだった関係からか、
いまに至るまで、あんまりWindows触ったこと無い人間がここにいます。
一応組み込みでは無いけどソフトウェア開発者です。
最近、Windows用バイナリを作る羽目になって難儀しました。
家にはWindowsはありません。
こんな僕でもなんとか生きていけるようです。なんかごめんなさい。
あ、書き忘れたけど、家で使っているのはMacとLinuxです。
AVR MacPack サイコー
AVR MacPackいいよね
>>149 仕事対応せざるえない以外は、なくても全然困らない
>149
XCode+AVR MacPackでやってるけど特に困ってないな
シミュレータ無いのが痛いけど、無きゃないでもなんとかなる。
winでしかできない時はwinでやるよ。
どっちでもできるのはmacでやっちゃう。
158 :
774ワット発電中さん:2008/06/20(金) 21:52:12 ID:8CY+tFh+
日本ではあんまりメジャーじゃないのかもしれないけど、CodeVisionの最適化
効率は驚異的。WinAVRと同じコードをmakeしても半分ぐらいになる。
コードで2Kまでは試用版でmakeできるのでおすすめ。Mega8ぐらいまでなら、
無料版で十分いろいろできる。
GAOとかyahoo動画見る時にはwindows必須
俺がAVRを始めたのはWinでなくてもひと通り開発環境がそろうから。
まあ俺もそうだ。
なので、仕事場で動画みたいときは、MacでParallels Desktop+Win版IE動かしてる。
携帯電話用の開発環境ないかね。
シリアルポートついてるんだし。
...あるわけないか。
http://code.google.com/android/kb/general.html 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.
ちょっとキビシそうだこれは。
日本語で
いまだによくわかってないんですが、
xmegaって、AVR Dragonで書き込んだりデバグしたりできますか?
英語が読めない人のAVRの勉強の進め方を教えてください
英語を勉強しろってのはナシで
そーいえば電波新聞社のAVRマイコンを使用したLEDマトリクスゲームキットを
買ったっきり半年ばかり放置してる
よかったら作ってくれませんか?
>>169 日本語に翻訳されているデータシートがあるチップを選択する
日本語のサイトを検索して読む
日本語の本を購入する
あきらめる
英語は毎日みてりゃなれるさ
データシートの英語なんて難しくないので英語を勉強したほうが早い。
HEROさんはほとんどのAVRを翻訳されている。すごいよ
ほとんど自動翻訳。
英文を読む→機能を理解する→日本語で書く
の人力翻訳なら最高なんだけど、そこまで望むのはムリというものか。
英語が読めないってネタでしょ?
179 :
774ワット発電中さん:2008/06/25(水) 03:28:02 ID:nKI1ja1K
・単語だけ読んで何が書いてあるか推測する
英語ダメダメな俺でさえこれで何とかなってるよw
データシートとかなら頑張れば中学程度の英語力でも読める。
フォーラムは勇気がいるがw
誤爆 orz
>>177 あれ自動翻訳なの?結構読みやすい日本語になっているが。
訳注も入っているし、少なくてもちゃんと内容理解して翻訳してるだろ。
根拠あればor中の人の発言ならいいけど、そうじゃなければちょっと失礼かと。
(「機能を理解する」が無理という部分が)
けど、文系の英語が得意な奴(大抵日本語は下手)が翻訳してもそんな感じだからw
そんな奴を、英語が得意とは言わない
「文系」「理系」と語学能力関係ないし
187 :
26:2008/06/25(水) 11:15:40 ID:uvLOnBce
WinAVRのC言語でのプログラミングはわかるようにはなりました。
(サンプルを改造する程度ですが)
次にやりたいこと(2313でi2c通信)を調べていたら動作しそうな
サンプルコードがアセンブラでした。
ttp://www.wsnak.com/kit/avr_sample/t2313/index.html WinAVRでC言語とアセンブラを組み合わせて使うにはどうすれば
いいのでしょうか。「このページ嫁」でいいのでお願いします。
あと、上のURLのサンプルがアセンブラな理由はなんでなのでしょうか。
速度の問題でないのならばC言語に書き直してしまおうかとも思っています。
CのサンプルならATMELのサイトになかったかな。
189 :
26:2008/06/25(水) 13:09:50 ID:uvLOnBce
>>188 ありがとうございます!ありました!
ttp://www.atmel.com/dyn/products/app_notes.asp?family_id=607 このページ楽しすぎです。なんでもできそうな気がしてきました。
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
これで十分かもしれません。
>>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倍以内
速く達成する間に効率的なより多くのコードです。
となるから、参考にしてるんだろうけど、機械翻訳をそのまま載せてるわけじゃないと思う。
機械翻訳を<そのまま載せてる>なんて誰が言ってるんだ?
結局機械だろうが人間だろうが単語の意味が理解出来てない上に日本語がおかしいとみょうちくりんな翻訳になる訳で
>>185がガチ
「この構造の結果は」なんて専門用語じゃ無い普通の日本語としておかしい。
まぁ、文法上の変換は翻訳には入らないよなぁ。
翻訳ってのは原文の意味を言語を変えて表現するという、一種の創作活動だからね。
でも、英語が全くダメな場合はあの程度でも十分役に立つから存在意義は大きい。
>>191 はいはい、あなたの言う通りです。
# 突っ込みできてよかったね。(w
>>192 > 「この構造の結果は」なんて専門用語じゃ無い普通の日本語としておかしい。
| 結果としてこのアーキテクチャは通常の CISC マイクロコントローラよりコード
| 効率がよく、同時に最大 10倍のスループットを成し遂げます。
ぐらいだと、だいぶ分かりやすいかな。
でも、そもそもデータシートなんて専門用語が使われてるし、大体の意味は取れるから
>>193 の言うように、存在意義は大いにあると思うよ。
>>183 強調したかったのは「日本語で書く」という部分なんだけど。
紙面をカラフルに飾ることなんかより、そっちの方にパワーを割いてもらった
方がよりより使いやすい日本語データシートになると思う。
カラフルなのは無断印刷を防止したいからだと思っていたよ。
個人の勉強ために作ってくれたのに・・・
単語をクリックすると飛んでくれるので便利。
このアーキテクチャにより, より高いコード効率と共に
通常のCISCマイコンの10倍のスループットを実現します。
普通に読んで意味を日本語でかけばいいんじゃね?
198 :
26:2008/06/26(木) 00:59:44 ID:aF7yDPxE
MacPackをインストールして秋月USBシリアルケーブルと
ttp://homepage2.nifty.com/denshiken/AVW019.html これを使って環境を作っているのですが、うまくつながりません。
なにかパラメータが足りないのでしょうか。
USBシリアルのドライバは
ttp://www.prolific.com.tw/eng/downloads.asp?ID=31 を入れました。
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,
http://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
>198
まずはそもそもライターちゃんと動いてんの?
HPに載ってるやりかたのwinで確認したのか?
200 :
26:2008/06/26(木) 13:32:19 ID:aF7yDPxE
>>199 レスありがとうございます。
USBシリアルから先の接続はそのままでUSBをWinに差し替えて
AVR Studio+WinAVRから書き込み、動作させることはできました。
ttp://homepage2.nifty.com/denshiken/AVS006.html ここに「AVR-ISPはアトメル互換品」とあるのでavrdudeで行けると
おもったんですが・・・
シリアル通信のパラメータかISP Freq.あたりの設定か・・・
macでavrdudeで「AVR-ISPはアトメル互換品」でやっている方いらっしゃいませんか?
>>194 もっともそれを言い出すと変な訳されるより、原文のままキーワードを
拾うだけでも良いやってことになったりな
そう言う奴は、原文読むから問題ないでしょ。
あと、カラフルより日本語がどうのこうのとか言ってる奴いるけど、
だったら自分でやれよと思う。
204 :
774ワット発電中さん:2008/06/26(木) 22:37:16 ID:MJBvwUTI
英語が苦手なら、日本語に訳してくれてる奴を読んで概要を理解した上で
細かい所は英語版を読めばいい。
あとAVRは新チップ、旧チップでレジスタ命やカウンタの使用が若干違う
けど基本的には似たような仕様なのでとりあえずどれでもいいから日本語
訳を読んでみるといいんじゃない?
何だかんだ言ってあの仕事はすごいことだと思うよ。
何打 神田 秋葉原
日本語データシートとavr wikiだけで作ってるな。
あのデータシートながないとかなり困る。
208 :
26:2008/06/27(金) 09:11:03 ID:/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
と出て、もたつくことが結構あるんですが待てば確実に書けます。
>208
AVRのヒューズ設定は?クロックの
翻訳は単発の文を見れば変なところがあるかもしれんが、まとまった文章を
翻訳してると途中で脳がなぜか回らずに変な文章になることはままあること。
疲労とかじゃなくて脳がお腹いっぱいになる現象なんだけど、推敲を重ねれば
品質はあがる。でもそこまでいうならプロに頼めってことになる。
211 :
26:2008/06/27(金) 11:41:40 ID:/BTUAt1e
212 :
774ワット発電中さん:2008/06/28(土) 04:22:53 ID:5Vg/fDvK
avr-gcc-4.3.0とBestTechnologyのBTC067を使って,ATmega32を
勉強中です.
32 bit変数(long,unsigned long)について質問させてください.
割り込みを禁止せずに32bit変数の演算を行うと値がかなりの
頻度で破壊されるのですが,これはそういうものなのでしょか?
また,条件分岐などの値を変更しない処理でも誤動作を起こすの
ですが,これもそういうものなのでしょうか?
最初の現象は,「そういうものかな」とも思えるのですが,後の
方はちぇっと納得いかない感じです.
もし32bit値を使わないや割り込み禁止以外の対処方法があれば
教えていただきたいのですが,よろしくお願いします.
214 :
774ワット発電中さん:2008/06/28(土) 10:45:30 ID:42W0Sqk6
>>213 そんなもんではないと思いますが。割り込みが発生した時点でレジスタはちゃ
んと退避されますし、global変数を割り込みハンドラでいじってるとかなら
壊れて当然ですが。
割り込みを禁止する事によって、ポインタなどの可変範囲がかわっていません
か?変数が壊れたりハングしたりというのでまず思い浮かぶのは、配列の範囲
を越えてしまったとかかな。
>>214 回答ありがとうございます.そうですか,割り込み禁止で括らなくても
大丈夫ですか.
>global変数を割り込みハンドラでいじってるとかなら壊れて当然ですが。
割り込みハンドラ内でいじっている変数を割り込み禁止せずに割り込み外
でいじったらということでしたら,大丈夫です.
ところで勉強不足で恐縮なのですが,
>ポインタなどの可変範囲がかわっていませんか?
この件の意味が分かりませんでした.ポインタの処理(例えば,ポインタの
データをループでIncrementしながらコピーする等)を行っているときに
割り込みが発生すると,ポインタが飛んだりするのでしょうか?
216 :
26:2008/06/28(土) 12:32:08 ID: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:2008/06/28(土) 18:12:36 ID:0UBtyAZm
解決したので報告します.WinAVR-20080610に上げたら直り
ましたw.
こまめにチェックしないと駄目ですね.ちなみに上げる前は,
WinAVR-20080430を使っていました.
>>216 入門用AVR-ISPライターがavrdudeでtimeoutするのはバグでした。
お手数ですがファームを更新してくださいです。
219 :
26:2008/06/29(日) 14:11:48 ID:LJCDRw5L
お、作者さんですか!
ありがとうございます。
しかし、更新してみたのですがあまりかわらないです。
avrdude: stk500_2_ReceiveMessage(): timeout
が出ます。
しかし、毎回必ず出るわけではなく、1回の場合もあれば2回の場合もあります。
(ほとんどの場合は1回です。)
http://ja.pastebin.ca/1057920 ここにログを置きました。
まったく焼けないわけではないのでお暇な時間に対応していただければ
助かります。
疑問、質問なのですが、
ChaN氏のライタには -c パラメータでCAL値Flash書き込みがあります。
Flash末尾へのCAL値書込みって(AVRでは)一般的な手法なのでしょうか?
これって、AVRdude?/avrasp?/本家ライタとかにもあるんでしょうか。
AVRSPしか使ったことなく、代替処理など見つけれなかったもので…。
知っている方いましたら教えていただけると助かります。
>>220 avrdude にはOSCCALの値をFlashに書き込む機能はない?みたいです
-OオプションでアプリケーションノートAVR053の方法によるCalibrationはサポートしているようです
本家 stk500/avrisp(stk500.exe)では -O/-Sf/-Seオプションにてavrsp相当の機能はあるようです
また、-YオプションでAVR053にも対応しています
USBaspについてはavrspxを使用することでavrspと同様の操作が可能です
222 :
774ワット発電中さん:2008/06/29(日) 19:47:54 ID:V/WApfwY
>>220 本家AVR Studioは、工場出荷時の校正値を読み出して、FlashかEEPROMの
任意のアドレスに書き込む機能がついています。
でも自分で値を変更する事は出来ないという仕様なんで、それは使わず
専用のプログラムでI/Oをトグルさせてオシロで見ながら設定値を探し
eeprom.hのなかの関数を使ってEEPROMの一番後ろのアドレスに書
くようにしてます。
所でEEPROMをプロテクトするヒューズビットを立てずにはまった人って
いますか?自分はマニュアルをあまり読まない人間なので30分ほどそれ
で悩んでしまいましたw
223 :
218:2008/06/29(日) 22:57:37 ID:tOlq0/rT
>>219 効果ないですか、私の方ではこれでtime outが出なくなりました。
Windows2000でavrdudeを試すとtime outが出ないのでファーム以外に原因がありそうです。
ファームをいじっても効果はなさそうですが、ページの下の方に対策版(ISP2313E)を追加しました。
どこかにAVRでスイッチング電源を作ったサンプルはないでしょうか?
ありがとうございます
ちょうどその号は持っているので読んでみます
227 :
220:2008/06/30(月) 02:42:51 ID:OGwtzLut
>>221,222
回答ありがとうございます。
AVR053、拝見しました…が普段C使ってるのでasmは辛い。
斜め読みで、タイマカウンタ回して、所定のクロック待って、OVFした
回数から本来のクロックへ補正していく…ってところでしょうか?
オプションでAVR053に対応=EEPROM最初のアドレスに記入ですかね。
(つまり222さんの言うヒューズEEPROM消去だと、消えちゃう?)
>>222 自分は、AVRSPで校正値を読み出してソースコードの
初期EEPROMも毎回変更して再コンパイルして書込み。
手動AVR053と言ったところでしょうか…。
IC毎に書き込む.eepが異なる状態で、非常に面倒です。
プロテクト、面倒なのでデバッグでは毎回両方書いてますw
画一的にできるとすれば、AVR053を計測部分をプログラム実装なのかなぁ。
すみません失礼します。BASCOMなのですが。avrの2313で簡易A/Dの仕方
(アナログコンパレーターを使って)のサンプルプログラムってございませんか?
(昔MCSのホームページでANに載っていたような気がするのですが、現在は見あたりませんでした)
ご存じの方いらっしゃいましたら是非、お願いします。
230 :
774ワット発電中さん:2008/06/30(月) 19:46:00 ID:8JixxFZY
A/D内蔵のTiny26やMega88あたりに変えたほうが手っ取り早い気がする
BASCOMならたったの2行でA/D数値を取り出せるし
たしかにそうなのですが、、チップが100個近くも余ってまして。。。orz
(アセンブラはわかりません。初心者ですみませんです。。)
100個も何に使うんだ
初心者だけど、箱買いしちゃったんですね。
>>227 tips.txtに書き込まれた校正値をc言語で取得するサンプルが載ってる。
>>227 確認だけどデフォルト以外の周波数を使いたいんだよね。
デフォルトならOSCCALを自動的にセットしてくれる。
見てみましたが、コンデンサをチャージして、、、までしかわかりませんでした。
>>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だったら、どれでも
できるはずだから。
>>237 「積分型DAC」は実在するけど、この場合は積分型ADCだよな。
電電板には、なぜかADCとDACを書き間違える香具師が結構いるんだよな・・・
240 :
237:2008/07/01(火) 17:28:52 ID:oEQcntV5
>>238 すまん、もちろん「積分型ADC」の書き間違えだ。
242 :
227:2008/07/01(火) 22:32:37 ID:wui8FI95
ありがとうございます。
>>234 説明いただいた方法は知っております。
数百台単位のロットになった場合に、プログラム側で
近い形で実現できればいいかな〜とか思った次第です。
>>235 そうです。デフォルトでは、確か中央値の0x80になってるんですよね。
今日AVRDragon+Studioはじめてまともに使って(ぉぃ)所定の位置に
OSCCALのWriteを確認しました。AVRSP方式にもあわせこみできるようで
ひとまず -cオプションで進めることにします。
# 最初DebugWIREをDisableする方法分からなくて、無理かと思い焦ったw
>>237 ありがとうございます。
しかし、初心者初心者いっていてすみませんが、全く理解できません。
(こんなやつがAVRマイコンで工作しようとするのが間違っているのでしょうか??)
ただ、電圧を7segで表示(簡易的に)したいだけなのですが、、、
みなさんレスありがとうございます。
244 :
774ワット発電中さん:2008/07/01(火) 23:14:13 ID:hXkKP8it
>>242 0x80って事は無いと思いますよ。多分選択した内部発振周波数での校正値が
自動的にロードされてくるはずです。自分の持ってる石はほとんどBF-C4ぐ
らいなので、80だとMHz単位の誤差が出そうです。
面倒ならSig-genで基準周波数作って割り込みpinに入れて、カウンタでカウ
ントしながら自動的に校正値を決定してRomに書き込むようなプログラムを
入れ込む事は出来そうですけど。
Sig-genつないでいちいちやるのはめんどいけど、毎回値を書き換えてmake
しなおすよりはらくちんかも。
>>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あたりを使うことをお勧め
>>245 あ、すまん。またやっちまった。手順2と3は逆な・・・
247 :
235:2008/07/02(水) 00:19:25 ID:k+KYFOgB
>>242 デフォルトの意味が違ってますよ。
例えばTiny26は1MHz,2MHz,4MHz,8MHzそれぞれの校正値を持っているけど
リセットでOSCCALにロードされるのは常に1MHzの校正値です。
Tiny2313は4MHz,8MHzでデフォルトが8MHzだけどヒューズで4MHzにせず
8MHzをCLKPLで2分周すれば大丈夫。
248 :
26:2008/07/02(水) 01:11:51 ID:mHFoJtfQ
>>223 遅くなりましたが、抵抗を追加して試してみました。
E版にしてみましたが、今度はタイムアウトが無限に続くようになってしまいました。
USB変換ケーブルが怪しいでしょうか。
とりあえず、A版をつかうことにします。
ありがとうございました。
249 :
26:2008/07/02(水) 02:13:37 ID: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);
としたら安全でしょうか。
タイミングによってダメなような気もします。
>249
そこまでできてなんで実際にやらないの?
251 :
26:2008/07/02(水) 10:10:10 ID:mHFoJtfQ
>>250 舌足らずですみません。
実際に試してみて、PORTBに書き込んでいたら通信ができなくなり、
PORTB = (PORTB & 0b10100000) | (data & 0b01011111);
を入れたらとりあえず通信ができるようになったのでした。
しかし、この回避/対応方法が正しいのか不安だったので質問しました。
TINY45で、タイマー0の比較A,Bで割り込み処理して
Aの割り込みでAの割り込みをマスクしカウンターをリセット、
次のBの割り込みでBをマスクしてカウンターをリセット+分週比変更
AとBトグル処理をさせたいのですが、何故かAのみ連続割り込みをしてしまう
(シュミレーションではトグル出来る)
何が原因ヒントでも御願いします。
尚割り込みマスクを操作しなければ、出来るんですが分解能が犠牲になるんで・・
シュミレーション・・・
>251
後出しいくない。
つか、だめなときのソースだしてみたら?
>>251 データシートを読むとSDA, SCLはPORTB, DDRBレジスタの影響を受けるようですね。
(影響を受けるというかPORTBをソフトウェアで制御することが必要なのでそういう仕様?)
> PORTB = (PORTB & 0b10100000) | (data & 0b01011111);
たぶんこの対処で問題ないと思うけどソース全体をみないとなんとも言えないと思う。
256 :
26:2008/07/02(水) 13:25:44 ID:mHFoJtfQ
>>254 ごめんなさい。
後で整理したダメコードをアップします。
デバッグ用のLEDをPORTBのSDA/SCL以外に繋いで、
送信側は送信したデータ
受信側は受信したデータ
をPIN0,1,2,3,4,6に表示していました。
>>255 > たぶんこの対処で問題ないと思うけどソース全体をみないとなんとも言えないと思う。
PORTBから読むタイミングと書き込むタイミングで信号が切り替わっていたら
だめですよね。
そんなことがあるのかわかりませんが、もっと確実な対処方法(書き込みを無視してくれるとか)
が無いのかなあと。。
夜にでもソースをUPします。
>>251 > PORTB = (PORTB & 0b10100000) | (data & 0b01011111);
右辺でPORTBを読み込んでから、左辺でPORTBに書き出すまでに
割り込みでPORTBの値が書き換わらないことが保証できるなら、
それで意図した動作なのだろうけど。
このように、出力したい時に特定のビットだけ書き換えたいことがあるが、
DDRのような入出力の切り替えが欲しいのではなくて、出力マスクの設定が
欲しいんだよな…。
上のも出力マスクの設定があれば、
PORTB_MASK = 0b01011111;
の状態にしといて、
PORTB = data;
とするだけで済むのに。
259 :
26:2008/07/03(木) 00:07:59 ID:6Pjbcf40
>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:2008/07/03(木) 14:31:55 ID: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個以上つなげるので、、、、
・・・なにができるかなぁ。
>>これでI2Cで2313を100個以上つなげるので、、、、
正気か?つないで何をする?
I2Cは基板内のような、ごく限られた条件下での使用を想定した
通信方式の筈だが。ケーブルで延ばすなら通信速度を大きく下げて
ノイズに対する対策をこれでもかとやらないと無理だと思う。
何をするのか考えてないのか・・・・・
264 :
218:2008/07/04(金) 00:23:44 ID:bWQ+niRi
>>248 役に立たず済みません。
> E版にしてみましたが、今度はタイムアウトが無限に続くようになってしまいました。
7番ピン(RTS)を+電圧として仮定してますので改悪になってしまったようです。
> USB変換ケーブルが怪しいでしょうか。
RS232-Cがシャットダウンしていて最初の1文字が受信できてないと思います。
MAX232などを使うと直りそうですが、トリプルは作るのに少し手間が掛かりますし
直るとも言い切れませんです。
265 :
218:2008/07/04(金) 00:28:39 ID:bWQ+niRi
> 7番ピン(RTS)を+電圧として仮定
マイナス仮定でした。10kオームでは弱かったようですが、抵抗値を低くすると+が下がってしまいます。
>261
どんな回路かわからんが、回路内蔵プルアップでやってんの?>I2C
これもあんま気持ちいいもんじゃないよな。
ちなみに、修正したら通信できるようなったとあるが
原因はPORTB上書きによる弊害だったのは決定なわけ?
ピンで確認したとか?
100個以上。。。通信部分も書けないのに?
>>245 了解です。なんとなくわかったような気がします。
つまり、比較する電圧とコンデンサにチャージする時間で割り出そうという考え方ですね。
268 :
26:2008/07/04(金) 10:18:54 ID:4f99B00W
>>264 いえいえ。とんでもないです。
すばらしいライターのおかげで鶏を作れて今があります。
我慢できなくなったら「Windowsではリトライが早い」のをMacに移植仕様と思います。
>>263 とりあえず2313を2個繋いで8x8x2色のLEDパネルを制御するのが目標です。
夏が終わる前に「自宅サーバ--RS232C--AVR温度計--赤外線--エアコン」ってのは作りたい。
I2C的には、LCDモジュール、温度計モジュール、サウンドモジュール
マトリックスLEDモジュール、赤外線リモコン送受信モジュール、
とかつくって組み合わせて親機から制御できたらいい夏休みの自由研究になるなあとおもいました。
>>262 >>266 100個は冗談です・・・・
>>231
温度計とか湿度計とかのデータロガー作りたいなって。
パソコンのブラウザから参照できたりして、グラフ表示になってると面白いなって・・
MRTG
>>268 100個は冗談です・・・・
ようするに、釣りですね、分かります
早押し機とか作るのかと>100個
ル・マン方式で最初に起動したデバイスがメインとして採用されます。
100年後最後まで残ったデバイスがr
digikeyの通販サイトでAVRISP2買おうと思ったんだけど
ATAVRISP2
ATAVRISP2-ND
と二種類あるんだけどどっち買ったらいいのでしょうか?
ググっても出てこないし、違いだけでもわかれば…
>>275 ATAVRISP2はメーカ(ATMEL)型番でATAVRISP2-NDはDigiKeyの品番ではないのかな。
と言うか一つしかでてこないけど。
>>277 どっちも同じと思うけど心配なら-ND付きの方にしておくとか。
arduinoってどうよ。
>>278 両方注文したら同じ商品が二つ入っているという注意文が出たから
ーNDのほうで注文しました
>279
プロトタイピングにはいいかもだけど
あくまでその程度だしな。
小回り効かなくてそもそもデカイし。
素のAVRで作れる人には無用かも。
WinAVRを調子よく使っていたのですが、
170byteくらいのhexファイルのプログラムでif文を書いたら突然
コンパイル後のサイズが4kBを越えて書き込めなくなりました。
何をチェックすべきでしょうか?
AVR wikiにあったファイルサイズを小さくする方法は
どれも該当しておりません。
エスパーじゃないんだから、まずソース
>>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);
}
}
俺もそう思う>浮動小数点
>>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で渡してるぐらいだし)まあ、いいな。
>>288 コンパイラが最適化してくれるかもしれんが
o1とかTのとる変域、値域によっては、
T = 2/48*1000000/o1/(2.0*2.0);
は
long T,o1:
T=10417/o1:
で事足りるかもねー
290 :
26:2008/07/06(日) 01:03:40 ID:KgZfwCxy
ハードのUSARTはレベル反転が必須。
ソフトUARTは送信中に受信できないのでプロトコルを考える必要があるよ。
292 :
242:2008/07/06(日) 10:01:44 ID:OcM4Xmpm
やっとアクセス規制とれたorz
>>244,247
0x80じゃない、まじですか俺あほだぁ。となると一つしかCAL値がない、
例えばMEGA88の場合は、あえてずらす使う方法でもしない限り
OSCCALの設定は不必要ってことでしょうか?
OSCCALの質問から入ったのですが、元々はMEGA88にて
・CKDIV8 = 0(8分周)
・UARTの通信レートが合わない
・OSCCAL = 0xXX 実装してみた。
・UART通信OKになった!
となったからです。244,247さんの通りだと、自分の用途では
OSCCALによる校正の必要がないように思います。
色々ご教授いただきましたが、自分の実験ミスが根底にあったかも。
すいませんいま一度、確かめてみます。
しかし、今回かなり勉強になってます。本当にありがとうございます。
293 :
774ワット発電中さん:2008/07/06(日) 22:24:20 ID:79ETIdma
どこかにPC用の液晶を制御する例はないですか?
ありがとうございます
chanさんのページですか
296 :
285:2008/07/07(月) 00:20:30 ID: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も使いたいのですが。
うん。
>>296 浮動小数点は8ビットマイコンはもちろん、DSPでさえNAF。
DSPでもせいぜい固定小数点。
8ビットマイコンなら出来るだけlong型で押し通せ。
最近、ちょっと気になってRAM512バイトの8ビットマイコンで浮動少数を使ってみた。
RAMはほぼ全部スタックにしたんだが、掛け算だけでスタック半分取られたっはっはっは。
浮動小数点や固定小数点の変数の中身をLCDに表示してみたいんですが良い方法ありませんか?
>296
ちなみに libm.a リンクしてる??
>>300 100倍とか1000倍とかして、Long変数の範囲内にして表示すれば?
>>298 DSPでもせいぜい固定小数点。
浮動小数点DSPがあるじゃないか。(TMS320C67xx, TigerSHARC, etc)
それに、16bitや32bitのマイコンでも、コプロを積んでいなければ
固定小数点DSP(普通は16bit)と大差ないよ。
>8ビットマイコンなら出来るだけlong型で押し通せ。
この点には同意。
そういえば、固定小数点の演算ライブラリってあるのかな?
固定小数点だと、整数演算みたいなもんやん
固定小数点でシコシコ手打ちとかどこの最先端TK80だよ。w
307 :
774ワット発電中さん:2008/07/07(月) 22:32:42 ID:E1dIk5Nj
>>300 流れ上、浮動小数点NGな雰囲気になってしまってるが、漏れはめんどいの
で普通に浮動小数点で計算して、sprintfかftoa使って文字列に落としてか
ら表示してる。
mega8とかで、処理速度を気にしなくてメモリが余ってるときの話な。
例えば圧力センサのVoutをADCで数値にしてから、単位変換して表示
させるような場合。
WinAVRとかじゃなくCodeVisionとか使うなら、浮動小数点でもそれな
りのサイズには収まる。リソースとお手軽さをはかりにかけて選べ
ばいい。処理速度やメモリ効率を突き詰めると全部アセンブラで書か
なきゃいけなくなるし。
Alf and Vegard's Risc chip
>>296 浮動小数点入れると4kBくらいはあっという間。
LSTファイルでアセンブラレベルではどうなっているか眺めてみては。
それでどれくらい大変かは検討つくと思います。
MUL命令がないAVRだとさらに大変だろうなあ。
megaシリーズでなければやめといた方がいいと思う。
Wikiの、サイズを小さくする方法ってのは
サイズを気にする人がまさか浮動小数点を使うとは思ってもみなかったのでしょう。
mega168とか普通に使える今なら、もっと気楽に浮動小数点使ってもいいね。
311 :
774ワット発電中さん:2008/07/07(月) 23:44:39 ID:Ht5yGqEv
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);
}
途中で書いてしまった。
こんなんすれば関数呼び出しオーバーヘッド分誤差が出るけど
コードサイズは膨れないと思う。多分。
>>311 >何か隠してません?
お前、なんか悪いものでも食って当たった?
315 :
285:2008/07/09(水) 10:26:12 ID: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弱まで小さくなり、書き込めました。
皆様、大変勉強になっております。ありがとうございます。
秋月で attiny2313が @90円(18個以上購入時) と大変安いので、これを
FT232RLと繋いでシリアル通信させようと思うのですが、9600bpsぐらいなら
内蔵の発振回路で問題ないでしょうか?
@90円のマイコン本体に @50円の水晶を使うのも…と思って質問させてもらいました。
出来れば内蔵の発振回路で38600bpsで通信できるともっと良いのですが…。
周波数校正値をOSCCAL レジスタにセットした場合、
どれくらいの期間で狂ってくるものなのか、どなたかご存知ありませんでしょうか?
>>316 適当にトレーニングさせてクロックを較正してやればOK
>>316 誤差が蓄積しないよう、データを程々に短く切って送ればいいんでね?
asyncでそれはないでしょ
320 :
26:2008/07/09(水) 20:56:28 ID:tuUhnxaO
非同期ならスタートビットからストップビットまでせいぜい10数ビットの間ずれなければOKと理解してますがあってますか?
>>316 自分の所では115200でも通信出来てる。
UARTだとスタートビットで同期がとれるので、
バイト単位で誤差が修正され蓄積されることは
無いと思う。
よっぼど周期がずれてない限り大丈夫じゃない?
>>321に同意。UARTならスタートビットの立下りでサンプリング位置が補正される
ので、1バイト単位で通信できれば誤差の累積は無いと記憶している。
同期でもST2にすりゃ問題ないはず
>>316 校正なんて何にも考えなくても9600bpsなら無問題(実際やってる)
通信速度が遅ければクロックが狂ってても問題ないのか?
分周して通信速度*4±1.5%くらいのクロックが作れれば問題ないと思う。
その肝心の精度がデータシートに(実力値しか)載ってない、ってのが問題なんだが、
まぁダメなら破産するの?死ぬの?ってわけでもないんだろうから、
運よく動けばよしでいいんじゃないの。
328 :
316:2008/07/10(木) 01:06:58 ID:wutDGNZq
みなさん、丁寧に教えていただいて、ありがとうございます。
特に>321 >322 が大変参考になりました。
115.2kは誤差-3.5%だからダメだろうと思って実験したらできた。
OSCCAL値-2〜+4でOKだったので+1かそのままで問題無いと思う。
誤差は内蔵RCの精度と8MHzがボーレート*16倍の整数倍になっているかが重要。
実は4800bpsでも38400bpsでも8MHzに対する誤差は0.2%で一緒なんです。
ただボーレートが遅いと計算せずに付けたクロックでも分周値でごまかせる。
(例えば8MHzの4800bpsなら分周値UBRRが103なので1%ずつ調整できます)
tiny2313の日本語訳データシート見る限り
OSCCALはスタートアップ中に自動的にセットされるから
特に理由が無い限りプログラム側でいじる必要ない
って思ってたんだけど、合ってるよね?
>>330 250kbpsの通信をやらせていますが(すいません、BASCOMなのですが)
OSCCALを指定してやるとうまく通信するが、指定しないと通信しないという事はあった。
ぼんやりプログラムいじってますので、別の要因とごっちゃになってるかもしれませんが。
PICのコードプロテクトに相当するものは何と呼ばれているのでしょうか。
「AVR プロテクト」などで検索しても見つけられませんでした。
Memory LockないしMemory Lock Bitsだな。
ありがとうございます。それで調べてみます。
とりあえずデータシートを全部読んだ方が良いよ。
336 :
316:2008/07/10(木) 19:35:40 ID:wutDGNZq
昨日、皆様にATtiny2313の内蔵RCでシリアル通信が出来ると教えていただいたので、
今日、何も考えずに秋月にATtiny2313を100個発注しました。
FT232RLのTxDからATtiny2313のRxDへつないで、ATtiny2313を
100個まとめて制御してみたいと思ったからです。(具体的には何もアイデアはありませんが)
1つのFT232RLのTxDに複数のATtiny2313のRxDを接続する場合、
何個ぐらいまでならぶら下がりますでしょうか。
データシートの読み方がいまひとつわからないのでアドバイスをいただきたく。
まずはFT232RLのTxDのfanoutと駆動電流をチェックすることから始めようと思ったのですが
それすらわからず…。
ファインアウトよりも配線のコンデンサ(浮遊容量)分で波形がなまると思う。
AVRでincして次のAVRに渡すのはどうかな。
FT232RL(0送信)-->AVR(1)-->AVR(2)-->AVR(3)......AVR(100)みたいな。
ファンナウトを考えるなら
電気的特性の出力電流と
入力漏れ電流あたりを見れば良いと思う。
でも、100個をそれなりの間隔で並べると、
線路の容量で波形がなまってくると思うので
そうすると単純に出力電流/入力漏れ電流では考えられなくなるかも。
速度を上げすぎると信号がパタパタしなくなるかもだし、
まあ、適当なところでドライバとしてなんかいれれば良いと思うけど。
それか、Txを使うつもりが無いなら受信データをそのまま吐くようにして
ディジーチェーンさせるという方法もある。
FT232-Tx|---|Rx-Tiny-Tx|---|Rx-Tiny-Tx|・・・
でもこれ100個もやると結構遅延すると思うので、なにに使うかにもよるかな。
それより、AVR の書き込みをどうするのかと小一時間(ry
かぶってしまった。
まあ、何に使うかを決めて
その制約の範囲で方法を考えるのが良いと思いますよ。
最近はAVR×100個が流行りなのかね。
このスレで、ここ1ヶ月で3人目か。
342 :
316:2008/07/10(木) 20:28:46 ID:wutDGNZq
>>337 数珠つなぎにするわけですか…。なるほど。
38400bpsで接続しようと思っているので、1バイトのデータを
最後である100番目のATtiny2313に伝達するのに(ロスがないとして)
100×1秒/(38400/8) = 0.02秒。
UARTのロスがあったり、受信してすぐに次のATtiny2313に送信できるか
という問題があるとして…この10倍要しても0.2秒!!
意外と実用的なんですかね。
最後のATtinyのTxDをFT232RLのRxDに接続しておけばそれぞれのATTinyと
数珠伝いに通信することも出来るので案外面白いかも…。
343 :
316:2008/07/10(木) 20:37:26 ID:wutDGNZq
それぞれのAVRに固有のIDを振って、それによって挙動を制御しようと思っていたのですが、
IDだけ異なるプログラムをそれぞれ書き込むのが面倒だなと思ってました。
ところが、数珠つなぎにすると、自分のIDを次のATTiny2313に伝達して、次のATTiny2313は
そのIDに +1 したものを自分のIDとすればいいわけですね。
ひょっとしてSCSIとかそういう仕組みなんですかね。
これならすべて同じfirmwareで済むので書き込みが非常に楽です。これでいきたいと思います。
皆さん、本当にありがとうございます。
いや、SCSIはエンドユーザーがDIPスイッチ操作して、自機IDが重複しないように設定してたし、
USBやiLink機器はメーカー毎のIDと製造時のシリアルナンバーから生成される固有IDを
一台毎にファームウェアに書き込んでる。
フラッシュROMなりEEPROMの自機IDデータは"00"とかにして製造。
パワーONリセットでそこを読み、件の"00"だったら自機ID設定待ちモードに突入。
「おーい!御主人様よぉ、俺にIDよこせや!」と大声で叫び続けるか、
前に並んでいる奴がID番号くれるまでじっと我慢の子でいるか、
他の方法で逝くか、は任意。
コンテンションだな
346 :
316:2008/07/10(木) 21:27:25 ID:wutDGNZq
>>344 あっ、そうなんですか…。
そういや、SCSIのHDDの背面のdip switchをいじったことがあるのを思い出しました。
daisy chainにしてIDを自動的に振るのって、どこで役に立つかは別として
新しい発明だったりするんですかね。
発明された頃には新しかっただろうけど、今となっては使い古された手だね。
>>346 Z80のmode2割込みとかでも使ってる気がした。中学生だった。
349 :
337:2008/07/11(金) 00:41:01 ID:6AAPN4Tf
>>338 波形なまりとかディジーチェーンとか同じ考えにびっくり。
私の発言は説明を書いてないので要らなかったですね。
>>330 > OSCCALはスタートアップ中に自動的にセットされる
その通りですね。実験したらOSCCALがちゃんとセットされていました。
問題児はTiny26だけかな。なぜデフォルトが8MHzでなく1MHzなんだろ。
SONYのVISCAを思い出してしまった。歳じゃわい
スリープの、パワーダウンモードを使おうと思って以下のようなコードを書いたんですが
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
}
}
ITR1割り込みは、ローレベル割り込み状態でスリープに入り、
この割り込みで復帰したら、立ち上がり割り込みに変更。
立ち上がりを検出したら、ちょっとした処理をしてスリープに入るって感じです。
メイン側を
for(;;)
{
sleep_mode();
}
にしておいて、割り込みからは普通に戻ればいいんでねの?
ローレベル割り込みなんでSw押されてる間割り込みが入りまくるんですよ。
実行は押下1回に付き1回で十分なんですがの
そのやり方で割り込みモードをローレベル割り込みじゃないものにすると
永遠に復帰できなくなってしまうという。
割り込み再許可する前に「SW離すのを待つ処理」 を追加
チャタリングはソフトで除去してね
なるほど。
for(;;)
{
if(sleep_ok)
{
sleep_ok = 0;
sleep_mode();
}
}
なんかこんな感じにしといて
いろいろ気が済んだらmainでスリープ掛ければよさそうですね。
どうもありがとうございます。
daisy chainじゃない方法考えてみた。
100個のうちの何個かをドライバICとして使用。
INTピンだけ入力でレベル変化割込み。
残り出力ピン。
FT232からの信号を、レベル変化割り込みで受ける。
出力を同期する。
単純だけど、結構いける手段じゃないかと思う。
359 :
774ワット発電中さん:2008/07/15(火) 19:56:25 ID:tnpKaFvZ
>>358 海外のサイトではよく見かけるけど、結局USBの処理にかかりっきりで
あまり大したことは出来ない。やっぱソフトって専用ハードに比べたら
段違いに効率悪いから、つまんないけど専用チップ使う方がいいだろうな。
値段が安いんで2313を1個USB専用に使うっていうのはありかもしれんが。
USBの処理をマイコンのソフトウェアで行う?
UDP/IP/Ethernetをソフトでするのもあったな。
あれは驚いた。
すみません。
今 USBasp を作っている途中なのですが、Vistaでは動きませんか?
>>363 Vista(32bit)でも動いてますよ
366 :
363:2008/07/17(木) 09:53:35 ID:W2BQkJug
367 :
774ワット発電中さん:2008/07/17(木) 10:53:11 ID:uMk0a9Tj
USBaspがvistaで動くかどうか知りたい
動くという割りには検索しても情報が全くないし
>>359 速度のいらないHIDクラスみたいな奴だったら、いろいろ遊べるよ。
単純なセンサとか、インジケータとかだったらいろいろUSBと安く接続できて良い。
ただ、2313はフラッシュが足りないのでインターフェイスとしてはちょっとムリっぽい。
少なくともAVR-USBでは。頑張れば詰め込めるかもしれないけど。
個人的にはAPIも、AT90USBとかのアプリケーションノートの奴より
わかりやすくて勉強用にいいかもと思う。
369 :
26:2008/07/17(木) 17:02:22 ID:VcIejKTf
ttp://www.recursion.jp/avrcdc/ ここの「CDC-2313」が激安USBシリアル変換器になりそうなのでやってみようかと思っています。
シリアルだとPC側のソフトを作るのも簡単なので。
この激安変換器の先に2313かmega88かを繋ぎます。
「Linux Kernel 2.6 + UHCI 系ホストでは動作しません」だけが気になりますが。
>369
独り言はヨソで書けよ
まだ〜〜?俺の100個なにかにつかえんかなぁ〜?
373 :
363:2008/07/19(土) 23:12:50 ID:lSvbXMnF
USBasp 動かない。。。
WinXPでも動かないから、きっとどこかで間違ってるんです。。
USBasp + Vista の試験できなくてごめんなさい。
ここ見てたら久しぶりにいぢりたくなってきたがネタがない
>>374 1)ラーメンタイマー
2)MorphyOne
どちらか好きなほうをどうぞ
>>375 えらく難易度の差が激しい2択ですねニョガーン
やっぱ2)だなww
378 :
774ワット発電中さん:2008/07/20(日) 19:28:51 ID:xmsTSFqV
>>373 USBに挿しても認識すらしないならともかく、
XPとVistaで確実に動くHIDaspのほうがドライバ周りの面倒が無くていいかもね。
USBコネクタや12MHzの水晶も使いまわせるし、USBaspからの乗り換えも容易。
初めてUART使ってPCと通信させてみました。
UARTから30バイトくらいの電文を送ろうとすると最後の3バイトが送れない。
TXC割り込みで送信禁止にしていたのを、UDRへの書き込み完了で送信バッファ
空き割り込みを禁止にする(送信禁止にはしない)ようにしたら上手く行ったの
ですが、UDR書き込み後に送信禁止にするタイミングはどう判断すればいいの
でしょうか。
>>379 「UARTから」ってのが意味不明。「UARTで」か?
AVR側から送信する話なんだよな?
「UDR書き込み後に送信禁止にする」の意味がわからんのだが、
自前で用意している送信bufferに文字列が無ければそこで送信終了でいいじゃん?
>>379 TXC割り込みで送信禁止でいいはず。UDRE割り込みでは早過ぎる。
>380さんの言うように送信を禁止する意味は通常無い。
UDREのとき送信FIFOが空ならUDRE割り込みを禁止しないとマズイでしょ。
レベルトリガなんだから。
送信機能自体を禁止にしたら、その時点での送信中のデータは、たぶん死ぬ。
タイマのオーバーフロー割り込みって、
16ビットなら0xFFFF→0x0000になったときのみなのか
通りでCTCでTOP値→0x0000で割り込みかけようとしても、何も起こらないわけだ…
さっき質問しようとしたけど、比較一致で解決したのでチラ裏
そりゃ、オーバーフローだし。
PWM動作では割り込み掛かるよ
CTCでは何か動作がおかしかった様な気もする。
386 :
379:2008/07/21(月) 14:22:39 ID:Y0ftCKNC
>>380-382 みなさんレスありがとうです。AVR側からUARTを使って電文を送信する話です。
送信禁止にするのは意味がないのですね。
ただ、
>>381さんが書かれたように、最初はTXC割込で送信禁止にしていたのに
上手くいかなかったのが気になりますが。
送信禁止にすると、送信に使ってた Pin は I/O からの制御になると思うけど、
そっちはちゃんと High を出すように設定してるんだよな?
ぬぅ、AVRWikiが落ちてる…
389 :
774ワット発電中さん:2008/07/22(火) 21:45:31 ID:fkLHWLzG
一般に、送信や受信の動作を禁止すると、内部のクロック供給が止まり
送/受信シフトレジスタの動作そのものが止まるんで、マズい。これを
使うのは、ボーレートやキャラクタ長などをプログラム動作中に動的に
変更したい場合くらい。
送信FIFOが空になった時点(の割込タイミング)では、まだ送信シフトレジ
スタの中のデータを送信中だが、本当に送りたい最後のデータがFIFOに
送られたのかは、プログラムからしか判らないので、このタイミングで
送信割込を禁止すると、最後の判定のやり方次第ではマズいかも。
普通、送信割込を使う場合は、メモリ上に送信データを一時的に蓄える
リングバッファなどをソフト的に構築しているので ...
(1) 送信割込が発生した時点で送るデータがなかった(リングバッファ
が空)の時に送信割込を禁止する。(送信割込を止めるために、一回
余計に割り込みがかかる)
or
(2) 送信割込が発生した時点で、送信データレジスタにデータを書き
込んだ時点でこれ以上送るなかった(リングバッファが空)の時に
(次回の割込が起きないよう)送信割込を禁止する。
では?
逆に、送信割込を再開(許可)するのは...
(1) リングバッファが空で、送信FIFOも空(TxRDY)の時、リングバッファに
データを置かず、送信データレジスタに書き込んで送信割込を許可。
(送信完了前に次の送信データがある時は、リングバッファに入れる)
(2) リングバッファに送信データを入れた時、送信割込を許可。
AVRはどっちか忘れたが、普通は送信データレジスタへの書込動作によって
TxRDYフラグがクリアされるが、ソフトでTxRDYフラグをクリアできるUART
は、一度フラグをクリアすると、1回送信データを書き込まない限り、送信
割込マスクを解除して、送信可能状態にあっても送信割込が発生しない
場合があるので要注意。
390 :
379:2008/07/23(水) 00:14:42 ID:VhItBUn8
>>387 Lowにしてましたorz
>>389 大変参考になります。
現在は両方(2)で動かしています。
ちなみに、いま使っているAT90S8535では、UDRE(送信データレジスタ空きフラグ)を
ソフトでクリアすることはできません。
これをクリアするには、UDRにデータを書き込まなければなりません。
>>390 > Lowにしてましたorz
なら、
>>379 の現象は正常。
High にしとけは TXC の割り込みで送信禁止にしても正しく動作すると思う。
まあ、みんなが言ってる通り半二重通信とかでもしない限りいちいち送信禁止
にする必要はないと思う。
392 :
774ワット発電中さん:2008/07/24(木) 00:35:59 ID:aNEXq4pt
>>392 とりあえずMega88のデータシート見てみたら、CTCでオーバーフローフラグが立つのはMax時になってた
(Bottom=0、Top=設定値、Max=カウンタの最大値($FF or $FFFF)、データシートの表記に従う)
石によるかもしれないけど、少なくともMega88系だと動かないだろうね
>>385でPWMは掛かるってあるけど、高速PWM時は確かにTOPでオーバーフローフラグが立つって書いてある
オーバーフロー割り込みは動作中にCTCの設定値変えた時とかに、
すでにカウンタが設定値を超えていてオーバーフローしたときのエラー検出に使うとかを想定してるんじゃないのかな
CTCの割り込みは比較一致で出来るけど、オーバーフローがなくなっちゃったら困ることもありそうだし
設計としてはこれが正しいと思う
>>392 Wikiのソースが間違ってる。↓に書き換えたら動くでしょう。
誤: ISR(TIMER0_OVF_vect)
正: ISR(TIM0_COMP_vect)
誤: TIMSK = _BV(TOIE0); // タイマ0オーバーフロー割り込みの許可
正: TIMSK = _BV(OCIE0); // タイマ0比較割り込みの許可
うわ、俺も間違った。
正: ISR(TIMER0_COMP_vect)
WinAVRリファレンスの日本語訳のサイトが消えてる。
Ver古くても利用してたから、ちょっとしょんぼり。
397 :
379:2008/07/25(金) 23:41:59 ID:dhTIVQ1I
>>391 亀レスですみませんが、納得しました。
ありがとうです。
398 :
774ワット発電中さん:2008/07/25(金) 23:52:30 ID:zRaXvoD1
>>392です。
>>393-395 比較一致の割り込みで無事に動作しました。
使っているのは、ATTiny2313です。
ありがとうございました。
>>396 サイト更新時の転送ミスらしい。更新しました。
>>396 新しいバージョンの翻訳、だれか手がけてくれるとありがたいです。
需要があればですが。
>>401 とりあえず1つやってみたけど、微妙かもしれないです。
<alloca.h>
void* alloca (size_t __size)
__size バイトのメモリをスタックフレームから割り当てます。
この一時的なメモリ空間は、alloca()を呼び出した関数が
呼び出し元に戻るとき自動的に開放されます。
Avr-libcはalloca()をマクロとして定義し、_builtin_alloca()に翻訳されます。
実際、このコードはインライン化され、
それはこの関数のアドレスを取ることが不可能なことや
そのふるまいがリンクするライブラリによって変わることを意味します(??)
Returns:
alloca()は確保したメモリ空間の先頭アドレスを返します。
もしスタックオーバーフローが発生した時、そのふるまいは未定義となります。
Warning:
可変長引数をもつ関数内でalloca()を使用しないでください(?)
>>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の挙動を変更したり出来ません」だ。
意気込みは買うが、せめて高校英語のレベルになってからにしてくれ。ひどすぎる。
>>403 なるほど。
実際そこは良くわからなかった。
405 :
26:2008/07/29(火) 17:49:48 ID:GQLqtTPw
加えてUSBを使うとなると
AVRのお仕事イッパイッパイになりそ〜
AVR -- ENC28J60 -- イーサネットWi-Fiメディアコンバータ
で繋いでやるのが一番現実的だと思うな
超手抜きだけど・・・WiPort・・・
WiportってコネクタサイズのLANコントローラよね、
前から興味あるけど、あれって
HTTP立てたとして、容量小さすぎない?
外部メモリって繋げられるの?
あぁ、XPortと勘違いした。
スルーして下さひ。
>>409 あらかじめ設定したポート番号、コネクションは1つのみって制限はあるけど
シリアル(UART)、ソケット通信変換として使えるんで(XPortもWiPortも)
シリアルの先に接続したマイコンにHTTPをしゃべらせれば
>>405の実現したいことはできるかなと思ってね。
>412
この手のってたいがいシリアルだよね
まあ、パラレルは面倒だし、USB とかはもっと面倒だしね。
けどSPIとかで通信できると便利そうだね。
SPI って間欠的に来るデータを扱いにくくない?
>416
... (SPIに変換する)ENC28J60に謝れ。
でも実際問題、ENC28J60のSPIクロックって最低周波数の規定ないの?
斜め読みではCPU側がSPI通信サボったらどうなるかが分からなかった。
物理層でコリジョン起こすのと同じような扱いでいいのかなぁ。
>>417 こんなもんがあるのか、それはすまんかった。
て言うか、インターフェースこそ SPI だけど、結構レジスタの設定が必要なんだな。
> 斜め読みではCPU側がSPI通信サボったらどうなるかが分からなかった。
俺も斜め読みだけど、パケット受信するたびに EPKTCNT レジスタが増えて、255 を
超えると受信を止めるみたい。
ただ、内部 バッファーは 8KB しかないみたいなので、とても 255パケットも保持
できないからなんか他のステータスもあると思う。
419 :
26:2008/07/31(木) 11:25:27 ID:rwdHSy7A
ATTiny2313で16bitタイマを高速PWMモードで使っているのですが、
Wikiに載っている「高速PWM設定が位相基準PWMになってしまう」というバグは、
シミュレータだけの現象なのでしょうか?確かにシミュレータでは10bit位相基準PWMに
なってしまい、TOP値が0x03FFに固定されてしまっています。
実機は思うような動作にならず、デバッグもできずに困っています。
ATtiny2313V でTimer0/1 共に(同時に) 高速PWM は使えたよ
(周期は一定で逐次 Duty比だけ変更 という使い方)。
自分はシミュレータは一切使わずオシロで動作確認した。逆に、オシロを使う場合片方の
エッジが一定周期に揃う 高速PWM の方が、パルス中央が一定周期になる 位相基準PWM
より観測しやすくて便利だった。
シミュが使える 位相基準PWM ではダメな理由があるの?
あと、用途によっては 位相基準PWM で作っておいて、狙った動作になったと思ったら
設定変えるだけ でうまくいけそうにない?
>>421 それって、SD無線LANカードの中身。
>>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);
}
BASCOMAVR
427 :
422:2008/08/03(日) 03:24:30 ID:xeL5OH3l
>>423 情報をありがとうございます。
私も実機では、正常に動作することを確認しました。シミュレータは相変わらず駄目ですが。
私はタイマ0はCTCモードで周期固定で、タイマ1は高速PWMでTOP値を頻繁に更新しています。
>>425 なるほど。試してみます。
以前にシミュレータ2を動かしても2313がリストになかったので諦めていました。
上上下下左右左右BAスタート
なぜコナミコマンド?
430 :
774ワット発電中さん:2008/08/05(火) 10:10:30 ID:yr8tqlyu
Aterm32を使ってロボットを作っています。現在pd0端子にSWをつけて
機能切り替えをしています。
その場合pd0接地の状態でソフトを入れようとするとCOM1が拒否されて
入りません、もちろんpd0が+(hot)の場合は問題ありません。
またソフトが入ってしまえばswの切り替えも正常に働きます。
これはブートローダーに何か悪影響を与えているのでしょうか?
それともタッチセンサーのようなswをつける端子には制限が
あるのでしょうか?
431 :
774ワット発電中さん:2008/08/05(火) 11:04:58 ID:yr8tqlyu
>430 すまぬその後調べたらpd0端子はブーローダーの
(rs232c)入力端子になってること判明・・これではだめですね。
端子を変更してトライします。
>>430 どこのBBルータかと思ったw
どっかのマイコンボードですか?
Atmega32じゃねーの?w
へぇー、NECのあれって改造してマイコンボードになるんだ〜
・・・と素で読んでた俺。
435 :
774ワット発電中さん:2008/08/06(水) 10:48:08 ID:vh5LXQNM
俺もそう読んだが、ROMの書き換え許容回数が少ないので、俺のように
いろんな遊びに使おうとすると無理がありそうだ。
>>433 それか!
一度イメージが出来てしまうとatmegaが全然思い浮かばなかったよ・・年だな俺orz
Atmega88 って Atmega8 の後継的な機種と考えて良いの?
ひょっとして Atmega8 用の C ソースなら Atmega88 でもまるっと動くのかいな?
俺もそう思ってたが make一発できなかった
8と168のほうが親和性が高い
>>440 というと・・・88と168はメモリサイズ以外にも結構違う?
連休になればきっと来てくれる・・・エンコーダのプロの方が・・・
444 :
774ワット発電中さん:2008/08/12(火) 14:57:37 ID:pD6Fs6yW
ATmega32をGCC Dev.Lite で開発していますが。
フラッシュライターで書き込む時、うっかりAVRに電源を入れ忘れていると、
当然書き込めないのですが、後で電源を入れなおしてもフラッシュライターが
固まっていて書き込み動作をしません。
これを回復させるには、WINDOWSをログオフするかシャットダウン
するかして再起動する必要があります。
バージョンには関係なさそうです・・・・皆さんはどうですか?
上手い再起動をしないで回復させる対応策ありませんか?
>>444 フラッシュライターがUSB接続なら抜き差し。
シリアル接続ならUSBシリアル変換を入れて抜き差し。
>>443 ところがどっこい
やってきたのはこの夏デビューの素人でしたっと
USBASPの基板を作るけど欲しい人いる?
>>447 もうちょっと具体的に…
フラットパッケージ使って小さい奴だよ〜とか、
DIPだけど端子色々だして使い道他にもあるよ〜とか、
作りたい目標みたいな物を書いた方が良いんじゃないかな?
>>448 オッケーです。
以下の2パターンを考えています。
(ケース1)自分専用ならば、CPUはSOP、抵抗コンデンサは1005サイズ、USBコネクタはミニBで小さくまとめます。
(ケース2)自分以外に使いたい人がいるならば、ハンダ付けを簡単にするためにCPUはDIP、抵抗コンデンサはリードタイプ、USBコネクタはBでいくかな。
ケース1、ケース2のいずれを選択するかの参考にするために書き込みました。
USBASPの規模であれば一晩でアートワークの設計ができると思います。
基板の製造はP板.COMに委託します。
流れブチ切りすまそ
ISPのコネクタですが基盤側は2×3のピンヘッダ付けたんですが
ケーブル側にしっくりくるソケットがありません
みなさん、何つかってるんですか?
(2)だけじゃインパクトにかけると思う。
(1)なら、「自分以外」でも欲しい人結構いるんじゃないのかな。
>>450 素直に、共立とかマルツから買う。
基盤スペース問題なければ1×6のシングルでやるとか、
逆にはみ出すけど2×5とかの10ピン物をメス側だけに利用しても良いかと
うちはPC用に使うUSB用のバラのワイヤを2×6に接着して作った
短いけどね
>>449 端子はミニBが良いけど、1005はちときついっす
2125か、せめて1016なら…
>>451, 453
了解しました。
では(ケース1)のコンパクトタイプで、1608サイズのチップ部品を使います。
ところでATMEGA8の32ピンTQFPはどこで買えるのだろう。
ストロベリーリナックスは売り切れ。
>ISP
2x3メスなら秋月にある長いのを切って使ってるので、
たくさん取れる(そんなに作ってどうする)。
>TQFP
デジキーで売ってる。でも、買うならMLFかな。
>>456 を、楽しみ。さらにlevel-shifterとか付いてると嬉しい。
あとatmega8のTQFPは、既出だけどdigikeyでいいんじゃないか?
RSでも在庫あるようだけどdigikeyの二倍の価格みたいだ。。。。
>>457, 458
Digikeyですね。
前に一度だけ使ったことがあります。
ありがとうございました。
MEGA8L のQFPなら、デジットのカウンターにあった。
800円もしたが・・・w
以下の仕様でCAD上での部品配置を終えました。
ATMEGA8L: TQFP 32PIN
チップCR: 1608サイズ
チップLED: 1608サイズ
USBコネクタ: ミニBまたはBコネクタのいずれか選択して実装
3.3Vデバイス対応: 74LVC245、3.3V出力レギュレータを搭載
基板サイズ: 60mm×20mm
基板仕様: 両面
MLFパッケージおよび1005サイズのチップ部品は手ハンダするのに
テクニックが必要なため、採用をやめました。
ご意見いただければと思います。
464 :
774ワット発電中さん:2008/08/17(日) 12:42:59 ID:UV8gsFHS
>>463 ID変わるからコテつけてくれると助かります
VDDが 5/3.3/noneに切り替えられるといいかも。
463です。
>>464 >ID変わるからコテつけてくれると助かります。
コテの意味がわからないのですが、固定ハンドル?でしょうか。
すいません。
>>465 >VDDが 5/3.3/noneに切り替えられるといいかも。
ターゲットボードに供給する電源ですね。
今、ISPコネクタは6ピン(電源なし)なので、10ピンに変更して電源が供給できるよう検討してみます。
>>466 >個人的には74LVC245手持ちがないが
そうですね。入手製が問題ですね。
今予定しているのは0.65mmピッチのSSOPパッケージです。
>レギュレータの形状は、こんな感じですか?
出来ればもっと小型で、なおかつ入手性の良い物を使いたいと思っています。
無理であれば画像のような表面実装タイプを使用したいと考えています。
共立だと
74VHC245F \84
RD74LVC245BFP \99
74VHC244F \84
HD74LVC244AFP \99
とりあえずCAD図面を上げてくれると尚いい
頭数集まると一枚幾らくらいになるの?
>>467 >そうですね。入手製が問題ですね。
あ、それは気にしなくていいよ。独白風に書いてしまった気を使わせてすまん。
一般的なデバイスだしね。
電源だけど、本体だけならボタン電池でいいが
周辺機器の駆動で5V必要なことがある
5V出してくれるコンパクトな電池ないかなぁ
ACアダプタとか無しで
コンバータじゃだめなのか
NiMH4ホンで4.8V
えねる〜ぷ4ホンで5V
エネ or アダプター でやってる
476 :
774ワット発電中さん:2008/08/19(火) 13:38:09 ID:ZYGbrOXo
>>476 大きさの割りには容量小さすぎるんじゃないかなあ。DC/DC噛ませばいいかもしれないけど。
リチウムボタン電池2個がいいんでは?これなら底ドロップレギュレータで5Vにしてもさほどもったいないお化けは出ないと思うし。
普段はAVRだが、仕事でPICを始めてさわった。
PICはHexファイルの中にヒューズビット情報が
入っててライタ側が自動で読んで、
Flash/EEP同様に書き込んでくれるね。
1ファイルですべて収まるし、非常によいと思った。
これ、AVRにもないものか。
>>478 Hexにヒューズビット追加出力するようにコンパイラを変更して
ライティングソフトがそれを判別すればいいだけだよね
いずれにしてもソフトだけの話だから要望があればそのうちなるんでないの?
>>478 そのへんはmakefileしだいなのでは?
>>478,479
現在のWinAVRはすでにその機能に対応できてる
ただついているavr-libcがよろしくない、CVSから取ってくるとまあまともになってる。
でもライタのソフトが対応してくれないと意味がない。
こんな感じでソースの意記述(細かな定義はfuse.h等のヘッダをみて)
FUSES =
{
.low = LFUSE_DEFAULT,
.high = HFUSE_DEFAULT,
.extended = EFUSE_DEFAULT
};
PICのように一本にまとめるのはMakefileでいける・・・けどライタソフトが・・・
Tiny2313 Fuse 間違えて書き込み
高電圧モードもライターがないため 再書き込みできなくなりました・・・
そうそう
ヒューズだけじゃなくEEPデータ、LOCKビット、デバイスコードまで
一つのhexファイルにまとめられるけど、ライタソフトが正しく認識
してくれないと、単なる飛び地のROMデータ(しかも範囲外)にしか見えない。
困ったもんだ。
ELMさんとこのライタソフトならソースあるからいじれるけど、それじゃいろいろ汎用性が無いからなぁ
どっちかっていうと、バッチファイルかなんかで
・ひとつのHEXファイル→複数のファイル(FlashとかEEPROMとかヒューズとか)に分解
・分解したやつを順番に書き込み
・必要なら分解したファイルを削除
みたいな感じでやれば、バッチファイルの書き込み部分だけいじれば色々対応できそう
ソースが公開されているライタソフトならそれこそavrdudeでも良いような。
>>487 不要輻射を不要じゃないように活用した感じかw
>>487 ベースバンドをAMで受けるなんて、電波暗室ならまだしも普通の環境ではエラー多すぎだろうな。
偉そうだなお前↑
ヒューズビットの書き換え耐性って何回くらいなんだろうな。
100回とかだったら嫌だな。
プログラムメモリが最低一万回なんだから同じくらいじゃないの?
ってかヒューズってそんなに頻繁に書き換えるか?
書き換えるのが趣味なんで^^
基本的に1つのデバイスを使いまわして、
ブレッドボードで組んでばらしての繰り返しの俺はしょっちゅう書き換えてるなぁ…
最初は内蔵発振で適当に作ってたけど、
途中で時計精度ほしくなって外付けクリスタルつけたりとか。
それでも100回はやらないでしょ
H8のフラッシュなんてtypで100回だけど
死んだこと無いな。
プログラムは死ぬほど書き換えるけど
ヒューズはそんなに・・・その前に足が折れそうだ
2313のFLASH増量版って出ないのかな。
>>498 素直にtiny861あたりを使っちゃだめなの?
>>501 これはちゃんとCWにしてあるから問題なく通信出来る。
例の奴は大学生(しかも卒業マジカ?)にしてはレベル低すぎ。
せいぜい小、中学生レベルだな。
失礼します。
>>502 修士論文ですね。
レベル低すぎ、と言う502さん。
例の論文が対象としているような近距離、低コストな
無線通信をAVRワンチップ+最少の部品の低コストで実現するには
どんな方法がありますか?
純粋に知りたいです。ぜひおしえてください。
>503
502ではないが RFID 等はそのような例だと思うのですが
すでに一般的に使用されているけど
RFIDだと、少数生産とかカスタマイズが出来ないよな。仕事でAVRとか使ってる奴も、基本少数特注品だろ
その辺住み分けてるからいいんじゃね?
まあ、研究は研究で実用性うんぬんより、データが充実してれば自分で他のプロトコルに変更する時とかの
参考になるから、そっちのほうが欲しいな。実際に作るにしても、基本的なデータがないと面倒だし
そういうデータ集めるための研究だから、実用性とかは基本考慮しないし、
大学の研究は企業の肥やしになるためのものだから、あまりそのへん叩いてやるな
・・・たまにそのデータとか実験条件がいい加減なやつがあるけど、そういうのは袋にしておkだけど
苺で売ってる500円のモジュール使うのが一番楽だな。
試しに買って使ってみて10m以上余裕でいけた、エラー処理が面倒だけど……。
既に納品してしまったので手元にない。
RFID(無線タグ)はもともと用途が違うというか、通信方式そのものじゃ
ねぇだろ。 最近注目されているのはZigBeeとかでは? Wireless USB
なんてのもあったな。
単に通信といっても、双方向が必要かとか、1:1なのか1:Nなのかによって
も違う。 電波法の規制に掛からない微弱か、認証が必要な特定小電力
なのかとか。
基本は、使う電波帯と、変調方式(AM,FM,PM等)、プロトコル(汎用,専用)
など、それぞれ用途とコストで組み合わせることになる。
>>501 > 消費電力を1.5mA と低くできることを確認した.これはスリープモードと
> 組み合わせるとボタン電池一つで数年間の動作が可能である.
通信の頻度にもよるが、消費電流が1.5mAも流れてちゃ、ボタン電池1個で
数年間持たせるのはムリってもんでは?
せめて十μAオーダーまで下げなきゃ。
gcc-4.3.1使ってるんだけど。
avrusb使ったプロジェクトを落としてきて、手元で再コンパイルするとことごとく動かないんだけど。
落としたコンパイル済みイメージは問題ないのに、再コンパイルするとダメな事からgccに問題がある事は
間違いないんだが。
見てみてもUSBのプロトコルの処理でうまく通信できてないって事くらいしか解らん。
512 :
774ワット発電中さん:2008/08/23(土) 00:13:42 ID:mwSlAtX8
>>511 ときどき挿入される「回る地球のイメージ」が逆回転なのが気になって。
.
,、_,,, '"~,ヾ,
ゞ、ミ■Å■ AVRの騎士たちよ、
/ヾ_#_~>._∩ Tac Itow@京都SD研の暗黒面に気をつけるのじゃ
i、 - 〃ミ3
{.,'` 、 _^_/. ソ| |
ム v'つ | |
L-ー、=,,A,、
クロック用水晶の10P程度のコンデンサー必要でつか?
付けなくても基板で容量確保されてまつが、何か問題有りまつか?
そのコンデンサはどことどこの間に入れる物ですか?
基板で容量確保というのはどういう意味でしょう。
パターンでの浮遊容量って意味でしょうか。
セラロック使えよ
>>515 秋月とかDigiKeyで水晶モジュール(TTL出力のやつ)のやっすいの買っとけ。
>>509 通信処理中に10μAオーダーにできるデバイスってあるの?
>>510 最適化の罠かなにかかな?
>>510 > 落としたコンパイル済みイメージは問題ないのに、再コンパイルすると
> ダメな事からgccに問題がある事は間違いないんだが。
何ですぐコンパイラのせいにしたがるんだろう...、バカだから?
>>521 問題がある≠gccが悪い・バグっているetc
>>521 動作する時/しないときの差が、使ったコンパイラしか無い事から推定したんだが。
他に何の要因が考えられるっていうの?
524 :
515:2008/08/23(土) 12:14:42 ID:iRS6cP6t
>パターンでの浮遊容量って意味でしょうか。
そうでつ、&IC自体の入力ピンとGND間の容量
いやね、今のところコンデンサー無しで作動に問題ないんで
特に要らないんじゃないかと・・・
>>524 浮遊容量を測ったのかな。
それが規格通りならコンデンサー無しでいい。
と言うか、付けたら容量オーバー。
まあ、基板の設計、製作がタコだったという事で。
>>524 負荷容量のことなら、水晶がLで負荷容量のCで発振周波数がきまると思いました。
ただ水晶がLである周波数の範囲が狭いので多少Cの値が変わっても(回路の浮遊容量でも)
そんなに周波数がずれることはないけど、周波数の精度が必要な場合は水晶の特性に合わせた値が
必要という風に私は理解しています。
>>522 問題がある ≡ コンパイラのせい
>>523 バグつきのソースがたまたま動作してるなんてことはいくらでもある。
>>527 言いたい事はわかるが、他人が書いた馬鹿でかいソースのどこかに
バグがあるかもしれんから、探せと言ってるのと変わらん。
せめて、コンパイラは悪くはなくても、言語仕様の解釈によって動作の異なる
部分が出てくる。バージョンアップ時の変更点から可能性のありそうな部分を、
探せと言ってもらったほうがまだまし。これでも十分にきつい要求だが。
>>528 何を逆切れしてるんだ?
デバッグもできないバカはおとなしくコンパイル済みイメージ使っとけよ。
>>527 別に運用が悪いとか採用しているバージョンの問題とかオプションが悪いとか問題はいくらでもあるだろ、
コンパイラを扱う人間が悪いって可能性も込みでgccに問題があるということのどこが問題なのかわからんのだが。
公開されているHEXとソースが対応していないなんてのはその後で疑う問題では?
LED付け間違えてパイロットランプと機能アクティブのランプを入れ替えたいってのが
あって、それで気づいたんですけどね。
Linux側のドライバをトレースしてみて、デバイスデスクリプタやらストリングデスクリプタがきちんと
ホストコントローラに渡ってないってのが解っただけなんだが。
(たまにうまくいくけど、結局デバイスが有効になる処までは行かない)
avrusbのあのコードをデバッグするのは気が重いというかなんというか…
つーかオシロ欲しいよ。オシロ…
>>525 > 浮遊容量を測ったのかな。
テスタの容量モードとかで測ってたんだったら爆笑ものなんだが・・・
>>531 > コンパイラを扱う人間が悪いって可能性も込みでgccに問題がある
> ということのどこが問題なのかわからんのだが。
バカにも程がある。
モンスターペアレントに対応する教師とかはこう言うわけわかめの
クレームで苦労してるんだろうな。
>>532 > つーかオシロ欲しいよ。オシロ…
欲しい時が買い時だ、買え。
俺も欲しいが、先立つものが...。
明日のハムフェアーで買ってくるんだ
>528
コンパイル時に指定する「コンパイルオプション」の設定によっては、
うまく動いたり動かなくなったり挙動が変わることも多いんだから、
どういうコンパイルオプションを付けたかを書くのは最低限だぞ。
「落としたコンパイル済みイメージ」は、どういうオプションでコンパイルされてたか、
それも確認しなきゃな。
ライブラリとコンパイラのバージョン不一致とかも。
コンパイルオプションは
-Wall -Os -mcu=atmega88 -ffunction-sections -Wl,gc-section
だな。つーかMakefileも同じの使って、展開してmakeしただけでNGなんだな。
最適化オプションは1,2,3,99,s全滅したので、多分関係ない。
どっかに言語仕様上結果が不定な記述があって、そいつの挙動が変わったのかもしれん。
>>537には同情する。
どうも自称プロが他人の書き込みを上から目線で批判する書き込みが目立つ気がする。
わずか数行の書き込みで、細部の確認事項を示すのはむり。
勝手に判断するのは自由だが他人を批判するのは随分早そうな連中が大半に見える。
初心者スレと中級者以上が同スレでじ書き込みをしているとはいえ、もう少し大人の
会話ができないものか。
どんな経験者でもデバイスを変えたときには、ある段階までは初心者の質問をするのは
恥じることではないと思うが。
なにをくどくど書いてるのか知らんが、
> 再コンパイルするとダメな事からgccに問題がある事は間違いないんだが。
と言う認識は、間違っているというだけのことだ。
(注: gcc に問題がないと言ってるわけじゃない。)
で、原因調べられないならあきらめろ。
意見を聞きたいなら、もっと情報出せよ、と言うだけのこと。
荒れているように見えるけど ID:I4PrA2ez だけが
>521 >527 >530 >534 >539
全く内容のないレスしてるだけだな。
542 :
774ワット発電中さん:2008/08/23(土) 20:21:14 ID:i/WgAFI/
底辺に居る奴に対しては上から見下ろすしかないだろう?
543 :
774ワット発電中さん:2008/08/23(土) 20:24:40 ID:YuMsh/Fd
,,-―--、
|:::::::::::::;;;ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|::::::::::( 」 <底辺に居る奴に対しては上から見下ろすしかないだろう?
ノノノ ヽ_l \______________
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | 底 | '、/\ / /
/ `./| | 辺 | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
>>541 > 全く内容のないレスしてるだけだな。
お前もなぁ〜 (w
ID:I4PrA2ez は、少しだけまともな事を言ってはいるが、コンパイルが通らずに
困っている人から見たら非難中傷しているだけに見える。
そして誰もあんたなんかに意見を言って欲しいとは思っていない。
そんな事もわからんのか。勝手にでしゃばって周りを不愉快にしていることぐらい
気が付かんようでは、実社会では居場所もないんじゃないのか。
>537
>コンパイルオプションは
>-Wall -Os -mcu=atmega88 -ffunction-sections -Wl,gc-section
>だな。つーかMakefileも同じの使って、展開してmakeしただけでNGなんだな。
この情報があるとないでは、以後の話の展開が大違いだからなあ...
次にチェックすべきは、ヘッダファイルかな。
DL元のサイトで、ヘッダファイル関連の記述はなかったのかな。
gccのバージョン固有の挙動が原因だったりなんかしたら、容易には検出できんかも?
DLもとが、どのバージョンのgccでコンパイルしたのか分かる?
>>545 > コンパイルが通らずに困っている人
そんな奴どこにいるんだ?
コンパイルは通るけど動作しないって言ってるだけだと思うけど。
ホントに困ってたらもっと情報晒さんとどうしようもないだろ。
それとも賢い ID:5DD7noCS が解決してくれるんか?
> 勝手にでしゃばって周りを不愉快にしている
お前もなぁ〜 (w
チーム開発をしたいのですが、
プログラムは、サーバのdebianのgcc-avrで、telnetなどでmakeして、
書き込みやデバッグは、avrispやjtagで、各win端末でやるって、
簡単にできますか?
サーバでは、sambaも動いてるので、winから、ファイルは見えてます。
>>548 Samba 入ってるなら、問題なくできると思うよ。
簡単かどうかはそのチームのスキルの依存するけど。
ただチームで開発すると言うのが、複数人でソースを編集することを
含むなら、何らかのバージョン管理システムを入れた方がいいと思う。
もちろん一人しか編集しない場合でも有効。
個人的には Subversion 辺りがお勧め。
既に導入済みなら、このくだりは無視してくれ。
ありがとうございます。一応、cvsを使ってます。
AVRはまだ検討しているところなので、思い切り初心者ですみません。
参照する中間情報ファイルとか、AVRStudioを調べればわかるでしょうか?
他のcpuのJTAGデバッガだと、elfとソースだけで、ソースレベルデバッグが
できたので、AVRでも、そのように構築できると簡単でいいのですが。
winのほうで、winAVRでmakeして、ソースをサーバで管理というのも考えましたが、
以前、今使ってるFPGAの開発環境が、cigwinの変更でおかしくなったことがあり、
苦労したので、できるだけ避けたいと思ってます。
>>547 >
>>545 > > コンパイルが通らずに困っている人
> そんな奴どこにいるんだ?
> コンパイルは通るけど動作しないって言ってるだけだと思うけど。
追いつめられて、重箱のスミをつついて誤魔化そうとしてるだけにしか見えんな。
「もっと情報晒さんとどうしようもない」点は同意するが、情報もないのに、
>>521 > 何ですぐコンパイラのせいにしたがるんだろう...、バカだから?
と勝手に「コンパイラのせいではない」ことにした ID:I4PrA2ez が最もバカに見える。
俺だったら gcc-3.x で試してみるかなぁ。
ちょいと面倒いけど。
>>550 > ありがとうございます。一応、cvsを使ってます。
ならその点は大丈夫だね。余計なお世話スマソ。
あと、ソースはどっち (Windows ? / Linux ?) で編集するの?
文字コード/改行コード辺りに気をつければ大丈夫だと思うけど。
>>551 > と勝手に「コンパイラのせいではない」ことにした ID:I4PrA2ez が最もバカに見える。
お間抜け乙。
わざわざ、
>>539 に
>> (注: gcc に問題がないと言ってるわけじゃない。)
って書いてあっても、頭に血が上ってる奴には見えないんだな。(w
554 :
774ワット発電中さん:2008/08/24(日) 03:07:32 ID:2GU5Asx1
>>510 WinAVRでしょうか。バージョンが変わるたびにコードが大きくなっているようです。
メモリの少ないデバイスではオーバーしてしまうことも報告されているようです。
古いバージョンのものをいくつか試されてはいかがでしょうか。
LEDを光らせたりスイッチONOFFやるだけなら
パスコン無しで問題なく動いてたもんだからずっと省略してたんだけど、
赤外線リモコンのセンサーつないだらノイズでまくり。
パスコンいれたらまったくノイズ消えました。パスコンってそういうことなのね。
LEDを光らせたりスイッチONOFFやるだけでも、配線の違いや電流の大きさで問題起ること多いです。
>>509 常時じゃないでそ。
シモコンみたく一日2〜3秒の送信なんじゃね?
>>557 シモコンってなんすか?
飛びっ子の事?
>>558 「飛びっ子」は技適通っているのか??????
カスが大量発生してるな。
底辺乙
とりあえずB-CASは嫌いだ
563 :
774ワット発電中さん:2008/08/28(木) 01:34:26 ID:BdX1lLsv
繋がなかったらどうやって動くんだよw
>>563 ライタが電源を必要としてて、ターゲットボードからの供給が必要
もしくはターゲットボードの電源供給をライタから行う場合はつなぐ
そうでないならイラネ
どっちかわかんないですけど
>>566 ターゲットの回路次第だからなんとも・・・・
ターゲットに電源供給あるならつながない
ターゲットに電源供給なくて、ライターのVcc電圧とターゲットの動作電圧が同じなら、つなぐ
ただし、電源回路によっては給電していない状態で下流側に電源供給してどううごくかわからんから、
よく分からないなら前者で。(切り離して、ターゲットには別途給電)
使うあてあ無いのに200個もよく買えるな
877 40個買うくらいだから それなりに消化するんだろうけど
>>568 抵抗は入っているだろうね。
これがあればライターと同じVccのターゲットでなくても抵抗と保護ダイオードで無問題になるから。
AVRWRTでも、ライター側が3.3V/ターゲットが5Vでもなんとか使えている。
AVRWRTはどっちだろうね。持ってる人、そのJP4のパターンを追ってみてリポートよろしく。
>>570 下から2行目の 「AVRWRTでも」はまちがい。削除してね
572 :
563:2008/08/28(木) 22:36:41 ID:dXkkwVnf
573 :
563:2008/08/28(木) 23:18:27 ID:dXkkwVnf
すいません、配線ミスしていました。GND繋ぎ忘れていたところがあった。
無事に書き込みできました。
お騒がせしました。
最近AVRを知って本を買ったんですが
プログラムがC言語でした。
BASICはそれなりに分かるんですが
他の本やサイトの説明も考えてやっぱりCは勉強しといた方がいいですか?
BASICオンリーとかの人で困ったことないですか?
Cの文法なんて簡単だから
これまでBASICででもなんでも意味のあるプログラムを書いていた人なら
一日で勉強終わる
2chなんかで聞いている前に勉強してたほうがいい
ネットにもCの解説くらいあふれているし
>574
頑張ってアセンブラで書いても良いぞ。
解説書が不足気味かもしれんけど。
BASICでは開発できないのは確かだ。
Cかアセンブラか、2択だと思う。オススメはC
>>574 手早く動く物を作りたいのならBASCOM-AVRという選択肢もある。
>>574 AVRで使う範囲のCなんてたかが知れてるし
AVRの入門書に載ってるサンプルの組み合わせで殆どできてしまう。
最初からよっぽど複雑な処理をするならともかく
スイッチ+LEDのサンプルからCも一緒に勉強してけば楽勝だと思うよ。
579 :
574:2008/08/29(金) 10:12:22 ID:WdchVe8/
>575-578
レスありがとうございます。
Cが良さそうですね。
前に買ってたCの本と見比べたら全部読まなくても何とかなりそうな感じ・・・かな。
C読破→AVR から AVR→分からなかったらC本参照
でやってみます。
他のマイコン使うときもC言語になるからBASICよりC推奨です。
変数の型に気をつけて。
>>579 これを機会に、普通に別のプラットホームでCやってなにか作って、
AVRに応用するってほうがいいよ
>>579 >>581 に一票かな。
AVR (に限らずワンチップマイコン系はだいたいそうだと思うけど) の C は、
標準の C とちょいと違う (という言い方は正しくないかもしれないが) ので、
最初はきちんと普通のプラットフォームで勉強する方が良いと思うな。
あと、慣れてからで良いけど、アセンブラで書いてみるってのもおすすめ。
アセンブラが分かった上で C で書くのとそうでないのでは差がでると思う。たぶん。
Cから入るとポインタでつまづく人が多いと聞く。
アセンブラというかハードよりから入ると、なぜって思うけど
不便な物から便利なものへシフトしていくとありがたみも
わかる。まぁ年寄りのたわごとたけどね。
AT90USB162 って秋葉近辺の店ではまだ取り扱ってないかな?
585 :
774ワット発電中さん:2008/08/29(金) 23:55:33 ID:jbM7LfQg
>>583 何へのポインタ、何へのポインタへのポインタ、など表向き型をつけて区別しているような
振りをしておきながら、キャストで好き放題に入れ替えられたり、実際キャストしなければ
使い物にならなかったりするのがCのポインタが難しい原因であり、アセンブラの方が分かりやすい。
キャストを無くしてポインタの構文をもっと強化すればあんなことにはならなかった。
そうするともう少し高級言語になってしまって良く言う「高級アセンブラ」としての側面がなくなってしまうのかもしれないけれど。
586 :
579:2008/08/30(土) 00:00:59 ID:/YOu1K/o
>>582,583
アドバイスありがとうございます!
実は最近までPICの本読んでてアセンブラもなんとなく分かってきて、
ライタとか作ろっかなーって思ってたときに
”いますぐPICをやめてAVRに移行すべき10の理由”っていうサイト見ちゃってw
やっぱり遠回りでも先にC言語なのかな
ずばりポインタでなにこれ?です。ポインタで演算するとかもうwww
>>585 たいして必要もないのにキャストしまくるプログラムを読まされるのも問題なんだろうね。
裏技と言うことにしておけば良かったと思う。
むしろポインタの何が分からないかがさっぱり分からない
オブジェクト指向のがよっぽど難解だと思う、オレおっさん
ポインタは配列や関数を指すポインタが絡んだ宣言がややこしい。
でも、難しくはないと思う。
ポインタがわからないって言う人の話を聞いてみると
そもそも変数がメモリ上にどう割り当てられるかがわかってなくて
それがポインタ渡しのライブラリ関数を使おうとして露呈するだけって事も多いよ
なんか、そういう人って「ポインタが」解らないというよりも、もっと根本的な・・・
Cは演算子とカッコが嫌い 人の作ったのを見ても<<とかわかりづらいし
いまだに!=と=!、どっちが正しいかわかんなくなって、そのたびに100回以上ググってる気がする <>でいいじゃん・・
ていうか<>を自分で定義すればいいのか
593 :
774ワット発電中さん:2008/08/30(土) 03:42:43 ID:MV5hJu11
594 :
774ワット発電中さん:2008/08/30(土) 05:43:59 ID:uG9ZC2f0
>>592 何回か"not equal"って声に出して読んだら忘れない
N88basicが染みこんだ頭には、Cの演算子をすぐに忘れてしまう・・・・
(Cに限らず最近のことはそうなんだけど)
落ち着いたスレ進行といい、懐古ネタといい
この手のを弄ってるのは、やっぱおっさんが多いな
>>586 > 実は最近までPICの本読んでてアセンブラもなんとなく分かってきて、
であれば、まずは簡単なもの (定番の LED ちかちかとか) をアセンブラで
書いてみるのが良いのではないかな。
他の人も書いてるが、ポインタはアセンブラ (というか、メモリの構造というか)
が分かった方が理解しやすい。
LED ちかちかでは、ポインタっぽいのはあんまりそういうの体感できないかもしれんが、
EEPROM に書いておいたデータを LED マトリックス (7セグでもいいか) に出力、とかすると
理解できるかも (自分では作ったことないが)。
とグダグダ書いたが、ま、一番大事なのはモチベーションだと思う。
自分が「面白そう!」と思えることをやるのが一番。
ほとんどチラ裏でスマン
>>589 全然関係ないが iconv の引数の与え方は理解するまでかなり混乱した。
しかもたまにしか使わないから、毎回混乱する… orz
>>588 オブジェクト指向は俺ありがたいけどなあ。
なんつーかプログラム構造とやりたいことを一致させて自己満足に浸れる。
AVRでそんなことやってる余裕なんかないからavrgccでもC++は実質使えない状態なんだろうけど。
でもC++な機能使ってコンパイルされた結果を見るとどうも・・ね
>>600 それはコメントを//で記述できることかああああああああああああ
大文字/小文字を区別するのがどうも好きになれなくて
BASICでもCでも、「高級」言語を使う時にめんどいのは、
割り込みの記述が言語でも違うし「どのCを使うか?」でも違うってことじゃないかなぁ。
たいてい関数に適当な属性指定するだけだろ。
マニュアルちゃんと読める奴なら問題ないと思うが。
>>604 割り込みとかはハードウェア依存の話だから、ライブラリとかコンパイルオプションとかに依存するよな。
そのへんは仕方ないのでは。
まっ、電子工作なんてやってるのは英文マニュアルは言うまでもなく、
日本語マニュアルを読む力もないような落ちこぼればっかりだからな
以前、「USBASPの基板を設計します」と書き込んだものです。
たいへん遅くなりましたがだいたいできました。
http://www012.upp.so-net.ne.jp/momo55/GERBER.pdf 部品番号のシルクの仕上げと最後に整える作業、チェックが残っていますが・・・。
一番左がターゲット基板につなぐ6Pケーブル用のコネクタ
その右側のICが74LVC245(0.65mmピッチ)
その右側のICがATMEGA8(TQFP32ピン)
基板の右端が、USB-BコネクタとUSB-MINI-Bコネクタです。
基板サイズは60mm×20mmです。ちょっと大きいですか?
出来れば幅をコネクタ位(18mm以内)に抑えると複数刺せて便利かな。
611 :
610:2008/08/31(日) 23:10:19 ID:j4xRSBjT
>>609 俺が作ったUSBspi(ChaN開発)の基板より一回り小さいですね。
・・・それ欲しいねw
USBaspの書き込みスピードはUSBspiの半分程度。
でもちっこいのはいいね。
ターゲット供給とかは考えてないのかな。
んー、供給電圧の切替+電流保護回路は欲しい所。
PB1 につないだタクトスイッチの on/off (押すと ground になる) によって、LEDを光らせたいのですが、うまく動きません。
以下のプログラムを走らせると、赤LEDがつきっぱなしになります。
何がわるいのでしょうか?
#include <avr/io.h>
#include <avr/eeprom.h>
#include <string.h>
#define GREEN_DPORT (1 << PD3) /* PD3 */
#define RED_DPORT (1 << PD0)
#define SW_BPORT (1 << PB1) /* PB1 */
static void
morse_init(void)
{
/* pull up 許可 */
MCUCR &= ~(1 << PUD);
/* PB1 を入力に. */
DDRB &= ~SW_BPORT;
/* PB1 を pull up. */
PORTB |= SW_BPORT;
/* PD4 (geen LED) を出力に. */
DDRD |= (GREEN_DPORT | RED_DPORT);
}
#define led_on(led) PORTD &= ~(led)
#define led_off(led) PORTD |= led
static void
morse_poll(void)
{
if (PORTB & SW_BPORT) {
led_off(GREEN_DPORT);
led_on(RED_DPORT);
} else {
led_on(GREEN_DPORT);
led_off(RED_DPORT);
}
}
int main(void)
{
morse_init();
for(;;){ /* main event loop */
morse_poll();
}
return 0;
}
>615
if (PORTB & SW_BPORT) {
↑よくある間違いだけど、入力はPORTBじゃなくてPINBだよ。
617 :
615:2008/09/01(月) 07:43:47 ID:m/lYkJuR
>616
super thanx!! 動いた。
// 来週のゼミで発表
>>615 初期化で |= や &= を使うのは意味がなくて美しくないと思うのは俺だけかな。
まぁ、AVRはともかくとして、最近のI/Oは書き込み専用も多い訳で、
読み出しを伴う!=や&=を不用意に使うのは危険だからね…。
>>619 初期状態のビットを覚えてなくてよいので手抜きするときはよくやらない?
>>621 初期状態のビットに頼るような初期化はしたくないなあ。
AVRの場合、cbi命令やsbi命令が使えるポートだと1命令・1レジスタ節約できるメリットはあるけど。
>620
最近に限った話なのか知らないが、
書き込んだ値を保持するレジスタが存在すると明記された事例を除けば、
こういう危険行為はダメだろうな。
なんか昔、MZだったかX1だったかの8ビットPCで、
読み込んだときに、書き込み値と違う値が出てくる構造の例を見た希ガス。
いや、MZの例は忘れたがX1ではパレット設定ポートだったっけか。
ポートに書き込んだ時ストローブ信号が出てくやつは、
危険な場合もあるだろうな。
後期のMZで、I/Oポートのアドレス数の不足への対策として、
同一アドレスに、読み込み時と書き込み時で異なるデバイスを割り付けるという離れ業をしでかしたヤツもあったな。
当然、読み込んだ時には書き込んだときとは違う内容のデータが入る。
>>625 離れ業というか、構造を考えるとあり得る話ではあるよな。
PINBとPORTBとかはむしろそうであったほうが間違う人は少ないんだろうなあ。
入力時はPORTBでプルアップ制御ができるおかげでいろいろ楽しめるわけだけど。
>>628 -VLC245から電流引っ張っちゃうのは頂けない。
CN2-2
>5Vと3.3Vをジャンパーで切り替えてISPコネクタ(10PIN)に供給するという理解で良いでしょうか。
6pinでも出来た方が良いかと。
CN2-2-VCCに対し、0.1mA位のポリフューズ、
GNDとの間に定電圧ダイオード。
これくらいの基板なら、ユニバーサルよりトナー転写で簡易基板作った方が早いよ。
レーザープリンタとなまき板+スケベ汁 基 エッチング液 で30分ぐらいで出来るよ
>>627 USB信号でセラロックって危なくネ?
水晶の方が夏でも冬でも安心できる。
>>632 コンデンサさえどうにかすれば水晶の方が小さく済むしね。
>>632 もう数年使ってるけど不具合なしです。
なんとかなるみたい。
636です。
いまJP2は不要なことに気づきました。
(JP1にジャンパーを刺さなければ良いだけ)
後でJP2を削除します。
>>631 どうだろう、逆にこれくらいだとユニバーサル基板の方が
ちっちゃくなる気がするけど。
トナー方式は位置合わせが難しいから、リャンメンにするのは
相当割り切らないといけないし、せいぜいピン間一本でしょ?
極細の配線材ならひとつの穴に3,4本は通せるし、交差し放題だからねぇ。
まぁ手間はユニバーサルの方がかかるだろうけど。
>>636 - u2-6からD5 のライン不要では?、というか出力ぶつかってる。
MEGA側から、コントロールが必要ならFETとかTrで。
D5は5v maxなので RD5.6E位で。
- POWER LEDはD5,F1間で表示した方が確実かも。
ついでに、D5,F1間でGNDとの間に0.1u位入れた方が良いかも。
etc
-USBバス側から、電源供給を考えているのだろうから、レギュレータの出力側では無く
CN1やCN4のVCCの側に10u(Ta)以上を入れて、安定計ったほうが吉。
-レギュレータの出力V3.3と入力VCCの間に スイッチングダイオードを
現在10uの所は1u程度で、出力はLVLCとかが常時使うのでR16不要。
AVRを使わずにAVRライターを作る方法(サイト)ってあるのでしょうか?
あとAVRって「エーブィーアール」であっているのでしょうか?w
>>641 ATMELはドイツ発祥じゃなかったか?
>>640 前者についてはいくつかあるよ。
テンプレのELMさんとことか、でんし研さんとこのオーディオ出力を使う方法とか。
でもあまり凝ると
>>40になるから、市販品を買ってさっさと作りたいものを
じゃんじゃん作って楽しむのが最も正しいと思われ。
Atmelはノルウェイじゃなかったっけ?
AVR無しのライタは、パラレル直結が簡単でおすすめ。
シリアル直結もあるけど、リセットがかからん感じ。
手動リセットなら動くというwebの記事はみたことある。
質問させてください。
avr-gccを使ってATmega32のブートローダを作っています。
ブートローダのサイズが予想外に大きくなりそうなので、応用領域の未使用部分にも
プログラムを置きたいと考えています(できれば、応用プログラムと共用で使いたい
です)。
なんとなく、
void func_hoge(void) __attribute__ ((section (".hoge")))
{
/* 関数の中身 */
}
みたいな感じでセクション名を付けて、リンカに割付け先のアドレスを指定して
やればいいのかなと思っているのですが、そういった事は可能なのでしょうか?
また可能だった場合、リンカへの指定方法は、リンカオプションを
-Wl,--section-start=.hoge=0x6000
のように指定すればよいのでしょうか?
よろしくお願いします。
今回のエレキジャックにATtiny2313が付いてるよ。ついでにブレッドボードまで付いているw
タイトルが「1冊まるごとマイコン入門だ!」なんだけどね・・・
tiny2313以外にも、uPD78F0503DA、MSP430F2013、MC9S08QG8CPBE、温度センサLM73基板
付きにしちゃった所為で、いつもより1000円高くなっちゃってるのが残念なところだけど。
にしても、エレキジャックってどんな読者層を狙ってるのかイマイチわからん。
ブレッドボードに水晶とかセラロック刺して、安定動作は望めるのかね?
>>647 そのための、内部クロックではないかw
マジレスすると、セラロック4MHzを使ってみたことあるけど特に問題は無かった。
オシロでモニタしてもさほど劣化が無い程度には使えるみたいよ。
>644
可能です。
そこまで調べたのならなぜやってみないのか?
示したサンプルでビルドすれば可能かどうかはここで聞くより早くわかるはず。
それ以前に2Kワードで収まらないブートローダーってSDカードでも扱うの?
MEGA644じゃだめ?
>>647 AVRに使う程度の周波数だと大丈夫じゃない?
実際試作レベルの範囲では安定して動いているし。
長時間動かすとわからんし、不要輻射問題とかは無理でしょうけど。
>> 639
アドバイスありがとうございます。
助かります。
先ほど回路図の修正を行いました。
http://www012.upp.so-net.ne.jp/momo55/USBASP-CIRCUIT002.PDF 変更箇所は赤色です。
> - u2-6からD5 のライン不要では?、というか出力ぶつかってる。
> MEGA側から、コントロールが必要ならFETとかTrで。
> D5は5v maxなので RD5.6E位で。
U2-6からD5につながる配線ですが、ある方のホームページに公開されている回路をそのまま使わせてもらっています。
電源のON/OFFをコントロールするのではなく、ターゲットボードに電源が入っているかどうかを検出するための回路だと
思われます。(ホームページにくわしい解説が無いので想像なのですが)
そもそもファームウェアがターゲットボードの電源の検出に対応していなければ無駄ですね。
> - POWER LEDはD5,F1間で表示した方が確実かも。
追加しました。
> ついでに、D5,F1間でGNDとの間に0.1u位入れた方が良いかも。
同じく追加しました。
> -USBバス側から、電源供給を考えているのだろうから、レギュレータの出力側では無く
> CN1やCN4のVCCの側に10u(Ta)以上を入れて、安定計ったほうが吉。
反映しました。
> -レギュレータの出力V3.3と入力VCCの間に スイッチングダイオードを
> 現在10uの所は1u程度で、出力はLVLCとかが常時使うのでR16不要。
反映しました。R16削除しました。
USBASPのCPUにファームウェアを書き込む手段ですが、74LVC245の入出力を逆にしてCN2にライターを接続することに
しまいした。(JMP2をショートする、とライターとの接続はクロスケーブルのようなものを用意しなければならない?)
うまくいくかな。
こんな感じで基板をつくろうかと考えています。
どうぞ
始めまして、AVRに関してはよく分からないけどサンプルプログラムと一緒にして貰えるなら、
>>651さんのボードをいくつか買わせて頂きたい。
自作コントローラ作るたびにパラレルポートに接続する為のコネクタ弄りまわしたり、USBのコントローラのガワがゴロゴロしてるのもアレなんで…
欲しいサンプル
・デジタル入力をそのままジョイパッドのボタン入力として出力する
出来れば
・アナログ(可変抵抗)入力をジョイパッドの軸として入力する
ところで過去ログ探してったけれども単価について書いてないようですがどれぐらいになりそうなんでしょうか?
余り高いならそこらのUSBコントローラバラし続けるつもりなので…
↑
日本語でお(ry
>>653 >>651の人のボードはAVRをプログラムするためのボードなので、
そういった用途には利用できません。
上手く改造してもデジタル4入力が関の山です。
>>655 それすらわかってないんだから、
>>653 に説明しても理解されないのでは。
それはそうと、QFPより、間違って発注された
MLFやQFNタイプのほうが俺はほしいなw
659 :
USBasp:2008/09/07(日) 22:14:28 ID:CN9kQSww
はじめまして、質問させてください。
USBaspを作っているのですが、WindowsXP&2000で接続してみましたが認識されません。
いろいろ試しましたがどうしても認識されません,どなたがアドバイスいただけないでしょうか。
環境について
・DELL-Vostro1000 WindowsXP_SP3
・DELL SC430 Windows2000_SP4
・回路は以下を参考に作成しました。本の中ではクリスタルとコンデンサ22pFを2つで発振するように設計されていますが、クリスタルが無かったのでEXO3の12MHzを使っています。
あと、本ではATmega8で作成されていましたが、手に入らなかった為、ATmega88で作成しています。
武藤佳恭著「超低コスト インターネット・ガジェット設計」(オーム社)
・ファームウエアはAVRwikiにおいてあった、usbaspx113_m88.hex
を使用。verifyまで成功したので書き込みは大丈夫なはず。
Fuzeは以下のように書き込みました。
avrsp -fh11011101
avrsp -fl11010111
avrsp -fx11111001
聞きたい事
・セラロック12MHzではUSB機器は作れないのか?水晶必須でしょうか?
・EXO3は水晶と同等の精度があるのか。
・EXO3の接続方法。
ATmegaの9pin(XTAL1)→EXO3のF
ATmegaの10pin(XTAL2)→EXO3のDをつなげばOK?
それとも
9pin(XTAL1)→EXO3のFだけでよいのか
(EXO3の電源は4pin,8pinにUSBの5Vを供給してます)
以上
660 :
774ワット発電中さん:2008/09/07(日) 22:50:04 ID:xmFJ3h93
セラロックは無理が多い(安全係数低い)。
ex03は水晶じゃないの?
EX03を基準発振出力にすること。mega88のヒューズは外部クロックに設定すること。
原理がわかればEX03で使えると思う。
意味が分からなければわかるようになるまでは原回路どおりに進めること。
>659
mega88に書き込めたということは、mega88と書き込み用ヘッダまでの
結線は正しかったということ。だからといって全体がUSBaspの回路として
正しく出来上がってるとは限らない。
原回路と違う部分から疑うのは当然っちゃ当然だけど、
クロック周り以外には問題がないとは限らないから、念のため。
つーか書き込めてるならクロック周りは動いてるんじゃないの?
クロックがちゃんとしてないとAVRって書き込みできないよ。
662 :
USBasp:2008/09/07(日) 23:16:02 ID:CN9kQSww
すいません、ターゲットボードにISPで書き込みしたわけではなく
mega88は別回路で書き込みました。
説明不足でした。
ChanさんのRS232CのISPライタでmega88に書きこみました。
ここまでは成功しているはずで、ターゲットのUSBaspボード上で動いていないので
切り分けかたがわからず困っています。
>セラロックは無理が多い(安全係数低い)。
>ex03は水晶じゃないの?
セラロックはやっぱりだめそうなんですね、了解しました。
本をよく読んだらEXO3はクリスタル・オシレータで
9pin(XTAL1)→EXO3のFでよさそうです。
今、回路を直して見ます。
>>662 >切り分けかたがわからず困っています。
まずは全く同じに作って見る。
動いたら一箇所だけ変更して動かして見る。
664 :
USBasp:2008/09/07(日) 23:41:39 ID:CN9kQSww
>663
了解しました。
同じ部品を発注してみます。
9pin(XTAL1)→EXO3のFにしてみましたが動きませんでした。
12MHzの水晶発振子はどこで買えばよいか教えてもらえますか?
自力では共立電子の12.8MHzしか見つけられませんでした。
秋月でもサトー電気でもマルツでも、お好みの店でどうぞ。むしろ共立が置いてないだけ
ヒューズ設定してないってオチじゃね?
667 :
774ワット発電中さん:2008/09/08(月) 02:17:00 ID:AvzqV5YH
>559
ヒューズ設定は何を基準に決めましたか?
というのは-FLの下位4桁が 0111 は外部クリスタル指定です。
12MHzの水晶を繋いでいるときは正しい設定ですが、EX03をXtal1に繋ぐときは
外部クロックですから 0000 になるはずです。
また、EX03は分周回路付きのようですから 12MHz で発振するように設定が必要です。
GNDに落とさないといけない端子があったように思いますから注意してください。
いずれにしてもデータシートを読むようにしてください。
>667
試してないのに書くが、EX03のような発振器からの入力時、
外部クリスタル設定でも実は動いてしまうと思う。
正しく設定するのは当然としても、動かない理由はきっとそこじゃない。
>>659 私はセラロックで何台か作りましたがすべて動いてます。
参考にした本の回路がどうなってるかわかりませんがUSB回路に3.6Vのツェナーダイオードは入ってますか?
これが無いと不安定になったり認識できなかったりします。
(セラロック時点では)RESET周りが不安定な気がするが、外部クロックにしてから
余計に問題が複雑になってる。
とりあえず最初は素直に12MHzの振動子で動かしたほうがいいって。
一から組み直すのが吉。
671 :
774ワット発電中さん:2008/09/08(月) 09:39:44 ID:pdWmolsj
ちなみに3.6Vツェナーが無ければ青色LEDでも使えるよ
USBから通信があると点滅するから動作が見えるメリットもある
672 :
USBasp:2008/09/08(月) 12:47:18 ID:HrFo/Ndv
>666
>667
確認したらヒューズビット間違えてました。
おっしゃるとおり外部発振は0000にするようにmaga88のデータシートにありました。
機能の夜0000に直して見ましたが動かなかったので
EXO3の設定が間違っているかも知れません。
STをH(3pin→8pin)に接続する必要があるみたいです。
STがLだとOutputFがLになると書いてありますが、Lとは発振しないということでしょうか?
とりあえず実験してみます。
>669
ツェナーダイオードは入れていません。
TA48M033Fレギュレータで3.3Vにしています。
とりあえず買って見ます。
>670
セラロック12MHzにしていた時も今もResetPinは接続なしで使っています。
AVRWikiではResetはプルアップしておいたほうがいいって書いてあったので気になってました。
初心者なので1から組みなおしたほうがよさそうですね。
>671
1から組みなおしてできそうだったら。
やってみます。
皆さんアドバイスありがとうございます。
水晶発振子とダイオードとLEDを買ってみます。
>>672 ST=Lは発振停止とデータシートに書いてありますね。
ツール・ド・フランスって。
トライアスロンやってる暇あったら自転車やれよw
( ・∀・)つ0 とれたての〜た〜ま〜ご〜♪
素晴らしい誤爆
しかし…AVR、種類増えたねぇ…
Tiny26は終了で261に移行ってのは前から書いてあったけど、Tiny88って(w
Xmegaもそんなに高くないけど、パッと見、外部バスは8bitだけなのか…
IDE繋ぎたい人にとってはめんどいな…4bitのSDRAMは繋がるけど。
>>674 鶴瓶乙
上位互換で中身が変わるのはいい
インターフェースが変わるのは勘弁
WinAVR で数値テーブルを ROM 領域に作るにはどう書けば良いのでしょう?
const unsigned short XX_Table[100]={...};
unsigned short const YY_Table[100]={...};
この2種類はコンパイルはできるのですが、生成されたアセンブラコードを
見るとどうも RAM 領域に確保されてるっぽいんですが…。
>679
組み込み(要するにマイコン全般)では一般的に、
数値テーブルを確保しようとしたら「const」をつかうとかしないといけない
明示的にROM内に確保する宣言をしないと自動的にRAM/ワークエリア側に確保され、初期値不定になる
その辺を容易にするための工夫が680の示すリンク先のヤツなんだろな。
え? ぜんぜん容易じゃないって?
682 :
679:2008/09/10(水) 15:39:48 ID:U97sxI3z
constは型チェックのある#define定数くらいにしか意識していなかったw
#include <avr/io.h>
#include <util/delay.h>
union PORTBIT {
uint8_t byte;
struct {
int bit0 : 1;
int bit1 : 1;
int bit2 : 1;
int bit3 : 1;
int bit4 : 1;
int bit5 : 1;
int bit6 : 1;
int bit7 : 1;
};
};
PORTBIT* PBd = (PORTBIT*)&DDRB;
PORTBIT* PBi = (PORTBIT*)&PINB;
PORTBIT* PBo = (PORTBIT*)&PORTB;
int
main(int argc, char** argv) {
PBd->byte = 0xff;
PBo->byte = 0x00;
while (1) {
PBo->bit0 = ~PBo->bit0;
_delay_ms(500);
}
}
こんなコードでavr-gcc(WinAVR 20080610)が通って
mega88上で動作もしてしまったのだが、AVR的にこれってOK?
>>683 いいんじゃないですか?
IOPORTとメモリはプログラムから見れば区別ないのですから。
扱いやすく読みやすいと思うならOKかと。
使用する命令(cbi/sbiなど)はgccが適当にやってくれるだろうし。
>>684 と思ったけど、最適化うまくされるかな?
その後変更されないPBd/PBi/PBoを定数だと見なしてくれればいいのだが、
変数扱いされるとインデックスレジスタ経由のプログラム吐くかも。
アセンブラリスト見たらどうなってる?
PORTB ^= _BV(0); (これはとおらないんだっけ?)
または PORTB = PORTB ^ _BV(0);
の方がカンタンでいいかな?と思うけど、
わかりやすさでそっちのでもいいね。
レジスタ辺りは
volatileで宣言されてなかっただろうか??
その気持ちを慮ると
volatile PORTBIT* で宣言してやったがよさげ。
>>684-686 有難トン、usart弄るとき
union ucsr0c {
uint8_t ucsrc;
struct {
int USART_CLK : 1;
int USART_DataBit : 2;
int USART_StopBit : 1;
int USART_ParityBit : 2;
int USART_Sync_Async : 2;
};
};
とか
シフトレジスタ弄るときに
uint8_t rd;
_delay_ms(1);
rd = ~PINB & 0xff;
sftregs->SI = ((rd & 1) == 1);
sftregs->SCK = ((rd & 2) == 2);
sftregs->SCLR = ~((rd & 8) == 8);
sftregs->RCK = ((rd & 2) == 2)||((rd & 8) == 8)||((rd & 4) == 4);
見たいなことやって遊んでミル
>>687 >sftregs->SCK = ((rd & 2) == 2);
==の先の数値と&のマスク両方指定がめんどうですね。
sftregs->SCK = ((rd & 2) != 0);
ではどうでしょうか?これなら1つですみます。
>>687 sfregs.SIのように扱える形で宣言できればすっきりして便利ですけどねえ。
>>688 そう言や、演算結果が「2か否か」よりも「0か否か」の方がCPU的に楽でしたっけ。
>>689 メンバ演算子の方がポインタ演算子よりも優先されるみたいなので、単純に
*sfregs.SI だとエラー吐いてしまうのが痒い。
#define SFREGS (*sfregs)で逃避しまくるか。
AVR向けISPアダプタ(パラレルorシリアル向けダウンロードケーブル)で
8pinのSPIフラッシュ書けるソフトウェアは無いのかな…
avr mega88って24MHz動作できますか?
USBのclockから動かしたいもので。。
うおふしあなさんだ
>>693,694
データシートにはVCC=4.5~5.5VDCでMax20MHzまでと記載されてるし
俺自身10MHz以上で動かした事がないので何とも言えない。
697 :
693:2008/09/13(土) 06:51:44 ID:jHEhcSMF
>>696 ありがとう。クリスタル買います。
# navi2chのデフォルトだとふしあなになるようでorz
>699
MLFの裏面てどうやってハンダ付けしてる?
>> 699
ハンダ付けしません。
手ハンダでのハンダ付けはもちろん不可能です。
自動機で実装する場合、メタルマスクに開口部を設けてクリームハンダを塗ると思いますが、
端子部のショートが発生することが多いので私はあえてメタルマスクは開口させないつもりです。
動作的には問題ないだろうと考えています。
> 手ハンダでのハンダ付けはもちろん不可能です。
と書きましたが誤解されるといけないので補足します。
MLFのウラ面のパッドのハンダ付けは不可能です。
ただし側面の端子のハンダ付けは可能なので上手にハンダ付けすればOKです。
>702
すみません、USBASPって、JTAG デバッカの動作も可ですか?
????
>703
回路的には可能だが、ファームを実装した例は無いんじゃないか。
とてつもなく遅いのが分かりきってるが故に。
Xmega使ってる奴いないの?
>>701 アイテムラボさんの変換基板みたいに、裏面から半田付けするのはどうでしょ?
>>708 おー、こんなのあるんですね。
初めて知りました!
USBをRS232に変換するケーブルでAVRマイコンに書き込むのって無理?
学校のパソコンはRS232付いてて書き込めるんだが、自宅のVAIOには無いんだ・・・
どこのライターか書かなきゃ解らんと思うよ。
何なら自分用にデジットのAVRWRT買った方がいいと思う。一応Vistaでも動いてるし。
>710
ChaN氏のSPIブリッジは出来るけど、ISPは劇遅で無理
なんかピンが3本出てて、DIPスイッチでwriteモードに切り替えて書き込む奴です。
ATmege32とか書いてありました。仕様書が手元にないので詳しくは分かりません。
STK500では書き込んでたけど。
USBASPで書き込めばいいじゃん。全然問題なし
>>710 詳しく聞かずにカキコすると、
出来る場合もあるし、出来ない場合もある。
出来る可能性は結構高い。
>>710 学校のパソコンでAVR焼いて自宅用のUSBasp作ればいいじゃない。
というかwiki嫁。
>>713 赤いボードかなぁ。それだったら多分ベステクの奴だと思うけど、ブートローダが書き込んであるので、こいつはUSB変換使えたと思う。
トラ技の基板は持ってますので、検討してみます。
学校を卒業するときに先生から頂いたものなので、今さら学校に行くのも・・・
ベストテクノロジーのユニバーサルモータドライバ2に乗っていたマイコンボードです。
USB-RS232アダプタで書き込めるのなら購入しようと思うのですが、
いろいろなとこから販売されていますが、全部同じもの何でしようか?
殆どの場合、ライタなど作ろうなどと考えず、純正のを買うのが最良の選択。
と、AVRライタを10個以上自作した経験から忠告しておく。
>>723 そんなあなたにMega128にも書き込め SPIブリッジも使えるトリプルがお勧め。
SPIブリッジまじ早い
725 :
774ワット発電中さん:2008/09/18(木) 23:30:25 ID:MCyY10o0
>>693 自分でやれよ、4.5V以上のVCCなら20MHzまではサポート内だろ。
>>706 今CANのコード書いてるんだけど、誰かCANタイマーの意味を教えてくれ。理解不能。
>>693 亀レスだけど24MHz入れたいなら内部で8分周すればおk
データシートの翻訳版から抜粋↓
周波数がデバイス仕様(VCCに依存)を越える場合、内部周波数を8分周するために
CKDIV8ヒューズをプログラム(0)にできます。それは分周したクロックがデバイス仕様での周
波数に合致するのを保証しなければなりません。
AVR ISP MKIIってOSXでも使えますか?
>>727 間違いを垂れ流すなよ。どこが24MHz保証してるんだ?
>728
osx + avrdudeで使ってるよ
>>727>>729 データシート見たけどMAXがよくわからんな。
>>693の文面からだと、「24MHzをAVRの動作クロックにしたい」のか
「水晶つけたくないから24MHzをクロック源として、(それ以下の動作クロックでもいいから)AVRを駆動したい」のかどっちにも取れるし。
データシートにはクロック源が最大動作クロックを超えるときは内部分周ヒューズを有効にしろ、ってあるけど、
載ってるのは最大動作クロックだけで、分周前の最大入力可能クロックは載ってないんだよな
>731
データシートもいろいろ改訂が進んでいるが、
たとえばmega88も初期のデータシートは分周前クロックとしてmax 100MHzが載っていた。
その当時も >727の注意事項は載っていて、
ようするにこれは「100MHzそのままで動くことを意味すんじゃないぞ」って意味だった。
外部入力は内部実装上は20MHz制限はなくて、動くとこまで動くだろ、って感じなんだろう。
TBDでほったらかしのところも多いし。
>>731 はっきり0〜20MHzって書いてあるじゃないの?(表7-12)
その上で、低電圧駆動で20MHz駆動ができない状態(4.5V以下)の場合は、CKDIV8のプログラムで動かせるよって話では。
代表特性ではVcc4.5Vで24MHz駆動までグラフは伸びてるので(図28-49)、分周なしでも24MHz動くんだろうとは思うけど、
分周なしでもありでも、24MHz駆動は無保証・仕様外ってことなんでしょう。
>>731 表27-1にもあるな。動作クロックじゃなく、外部クロック駆動波形のMAXが20MHzと書かれているみたいだ。
AVR Studio 4.14の質問もこちらでよいですか?
日本語入力で、入力中の未確定文字が表示されなくて困ってる。
スペースキーで変換候補を出すことはできるが、そのときも入力中の文字は表示されない。
確定すると初めて文字が表示される。
海外製エディタでいかにも起こりそうなIME周りの不具合でしょうか?
もし解決策があったら教えてください。
>>731 外部クロック入力での上限ならば、
fig28-2にVcc5.5VでMAX20MHzって書いてある筈だけど…
>>733 それが正しい。原文データシートにはそう書いてる。邦訳がおかしいだけ。
邦訳使うのはいいけど、情報流す時は原文チェックする癖をつけたほうがいいな。
現行データシートの当該部分(2545M-AVR-09/07) , p.32
>Notes: 1. If 8 MHz frequency exceeds the specification of the device (depends on VCC), the CKDIV8
>Fuse can be programmed in order to divide the internal frequency by 8. It must be ensured
>that the resulting divided clock meets the frequency specification of the device.
If以下は倒置文なのに、frequencyをそのまま主語だと思って8MHzの訳し方がわからなかったようだ。
以下試訳:
デバイスの特性(それはVCCに依存する)が、8MHz周波数を超えてる場合は、
内部周波数を8分周するために、CKDIV8ヒューズをプログラム可能にすることが出来る。
(ただしそのばあい)分周後のクロック値とデバイスの周波数特性値が合致していることが
必要である。
>>737 ん?そこはAVRにcrystalを接続して発振させる場合では?
元レス
>>693は、外部24MHzで駆動する話。
CKDIV8は外部発振にも効くとは思うけど。
それとその試訳の方が意味が分からないと思うが。
デバイス特性(最大利用可能クロック周波数)が8MHzを越えている方でCKDIV8の使用を推奨するって変でしょう。
俺も正直意味わかりにくいが、もしかしてこれ8MHzRCオシレータだけの脚注だったのを別の場所にもつけてしまったのでは??
(Table8-8のNote1だけが正しく、他は8MHzではない・・・)そう考えれば納得できる・・・
1/8にした(この場合は3分周っていうのか?)クロックが20MHz以下と思っていいのだろうか?
ただ、
>>693の望みは24MHzでAVRを動作させる(分周しない)という意味だろうどう考えても。
>>738 外部クロック入力端子に入れられる波形ついては、28.4.2のExternal Clock Drive Waveformsが適用されて
保証されるのは5Vで20MHzまで、と解釈するのが一般的だと思うのだが。
原文に当たってみていたら、MEGA48 Automotive(自動車用)とかいう動作温度が-40〜120℃になってる奴があるんだが、
External Clock Drive Waveformsは普通の奴と同じで最大動作クロック(動作温度のためかMax16MHz)なんだが、
外部クロックの最大周波数には100MHzって書いてあるんだよな
>>732の昔は100MHzだったというのを聞くと、可能性としては
・Automotiveは外部クロック周りが変更されている。普通のは20MHzまで
→だったらExternal Clock Drive Waveformsは何?
・最初100MHzって書いたのが間違っていて、それがAutomotiveではまだ修正されていない
・データシートを改定する時に他のところと同じ20MHzにしてしまった
いや、100M入力できたらいいなという希望的観測なんだがw
検証してみたいが、手元に適当なオシレータが無い・・・
後メルは結構データシート不備多い気がする。
100Mが入力できているかを知りたいだけなら、タイマー割り込みでLED点滅させればいいのでは。
話変わるけど、最近のアトメルのキットは箱に変なロボットの絵が描いてあるよね。
結構好きなんだが、何種類あるんだろ。
>743
過去のデータシートがどうこう言い出すなら当初のmega88は
動作クロックが24MHzだった。 < データシートのリビジョンヒストリ
わざわざダウングレードして再設計するとは思えないから
条件がよければ24MHzで動くんじゃないかと思う。
ところが、何故かRev.DデータシートまではExternal Clock Drive Waveformsでの
最大入力が16MHzまでだったりするんだ、実は(www
ついでにSystem Clock and Clock Optionの外部クロック入力に関する
例の問題箇所は100MHzまでと書かれていたりする(ww
E以降で訂正されているけれどな(www
digikeyの送料が7000円以上で無料になったお陰で
買いまくりだぜドラァ
7500円からさらに下がったのかと思ったじゃないか(´ ∀`)σ)Д`)
シリコンハウスのブログにAVR−USB AT90USB162-16AU が出てるよ。
お、あのPIC好きの共立に?
早速見に行ってみる。
トン
デジットのカウンターにいるこの前まで研修生だったやつ、
全く使えん。見てると、いらいらする。地雷だから避けるようにしてる。
あと、ATmega168のキットの隣に同じ基盤・部品構成の88のキット置くなよ。
仕入れ値が違うのは分かるけど、パーツ売る店としての良心を疑う。
あ、88のキットの方が168より高いのなwww
もう、あふぉかと。
>>754 他人は知らんけど、新参のオレは始めて知った
早速注文するわ
>754
「いろんな意味」で面白い本
と前スレでカキコした記憶が
microSDが外部記憶に使えればいろいろ応用広がるから面白そうだよな。
趣味に使えるデータロガー作ってみたくなった・・・
>>754 頼まれ仕事でロガー作りたかったから、丁度よかった。
759 :
693:2008/09/22(月) 14:24:51 ID:sz52L+w0
遅レスですが。
>>744 >条件がよければ24MHzで動くんじゃないかと思う。
ほんとですか?やったーやってみます。
みなさんありがとう。
マイコンOCは結構面白そうだな
電圧盛ったらそれなりにいくんだろうか
AVRはオーバークロックすると分周機能がはたらくから、いくらでも試せるわけじゃない
たとえば100MHzのクロックをつないでも、勝手に1/4にされて25MHzになってしまう。
>761
絶対最大定格6Vだから、あまり電圧は上げられないな。
それは初めて聞いた
ラッチが追いついてないからそんな感じで動いてるみたいって話は過去ログで読んだ気がするが
実際はそういう機能があったのか
秋にタイニー26が消えている・・・・
↑何時7000円以上になったんだ?
昨日注文したけど、7500円だったぞ。
日本メーカーの在庫外を注文したら、日本から梱包したままの箱が
デジキーの箱に入って世界半周してきた。なんだかな〜
メーカー直送ってやってくれないのかな
それかメーカーが小売もやってくれればいいんだが
te
>>766 運がよければ、行き帰りで経路がちがって、地球一周。
AD変換付きのTinyは26なくなったらどうすりゃいいん?
>>770 後継品のTiny261をdigikeyから買うか、秋月に入る日をまてば良いんじゃないのかな?
Tiny261は秋月には入らないかも知れないけど…
デバッグできる。
・・・デジキー価格より77円安いのか。
がんばってるなぁ。
>デバッグできる。
AVRISP mkII ではデバッグはムリだったはず。
AVR JTAGICE mkII とカン違いしていない?
これって、ロボットが空から落ちてくるやつだろ。
たけえ
Chanさんのページにあるやつなら500円だぜ
今時、COMとかLPTが存在しないPCは多いからな。
776のブログ
ISPも可能です。ってISPしか出来ないだろ!
>>779 AVRをライターボードに刺して、じゃなくて文字通りInSystemのままでも書き込めますよって意図では。
>>778 COMライタについてはUSBシリアルケーブルを選べば低速で書き込みできるよ。
これでSPIブリッジつくって、あとはこれ使うのが一番だな。
めんどくさいから何千円か出せば済むならそっちがいい、というなら、秋月の
>>772とか共立のライターとかで。
COMは案外マザーにピンだけ出てる場合があるな
自作PCなら念のためマニュアル確認してみるといいと思う
>>781 knoppixでもインストールしてみれば存在がわかるかな。
BIOSの設定画面でもみればわかるんじゃない。
自作な奴だったら、BIOSみりゃ解るだろう…。というか、買う前に確認しよう!
えぇ、ついてませんでした…orz
ピンヘッダでの対応も無し(CIRコネクタはあるけど…コンシューマIrって…)
バックパネルにDVI+何かだったから、シリアルと思っていたらVGAだった。
オンボードVGAでデュアルディスプレイなんて、やる奴どれくらいいるんだよ…orz
いや、デュアルというよりも会議で使うだろJK
プロジェクターにも写せるのは重要。
>>785 会議にデスクトップもっていかないだろJK
JKってどういうデバイス?
ググれ
ググれ、ってどういうデバイス?
「ググれ」はデバイスじゃないだろRS
シリアルが8本くらい出てくるボードは便利だった
タコアシハポン
MOXAね
>>791 最初にPC組んだ頃は普通にシリアルパラレルは増設カードだったな。
内蔵ポートはあっても8250互換でいまいちだったのでしばしば増設カードで使われた。
というか、スロットが8本くらいあって、キーボード以外のインターフェースは全部増設カードだった。
実は、今使ってるキーボードはminiじゃない方のDIN-5Pだ。
>795
オレが組んだときは、内蔵ポートなんてひとつも付いてなかったな。
796のいうとおり、7〜8本のISAスロット(一部はEISAやVL)が付いてて、
そこにSuperI/Oカード挿さないとシリアルもパラレルも使えなかった。
オレが買ったSuperI/Oが8250互換だったか16550互換だったかはすでに記憶がない。
が、たぶん16550互換じゃなかったんじゃないかなあ...
オレが買った物はすでに8ビット幅のXTバスじゃなかったから、ムチャクチャ古いシロモノではないな。
486末期のヤツだし。
>>797 Dinをぶった切ってMiniDINにして使い続けてる。
当時のキーボードは出来が良いからねぇ。
今はレガシーI/Oも絶滅しかけていて、ライタ用I/Fの確保に苦労する。
つか、普通にSPIブリッジ使えばいいのか。
OSX10.5でAVRfuseとISPMKIIを使って書き込みしたいのですが、
AVRfuseのSetting "Path to port"がわかりません。
そもそもなんのドライバを入れればいいのかもよくわからない状態です。
どなたか設定方法を教えてください。
しっかしWindows2000以降からの開発はずいぶんと楽になったな。
ネットで開発ソフトがタダで手に入るしデータシートもメーカーから無料とか、秋月のデータシートを集めてた頃が嘘のようだ。
>>801 Windows2000はあまり関係ないだろっ!
でも、1990年代と2000年代ではかなりの差があるよな。
インターネットとWWWのおかげで、
データシートはメーカーから直接ダウンロードで取り寄せられるし
開発ソフトも公式のや非公式のがお手軽にダウンロードできるし。
アセンブラ+AVRで電子工作に挑戦したいと考えています。
「試しながら学ぶAVR入門」という本を買ったのですが、
いきなりソースコードが出てきて
正直何をしてるのかわかりません。
ベクトル省略、スタックポインタが何なのかもわかりません。
SPRとかDDRBとかいう命令もわかりません。
あと0b00001111でポートB0〜B3を出力に設定できる理由がわかりません。
こんな僕はまず何の勉強をすればいいでしょうか?
オススメのサイト、本などありましたら教えてください・・・。
>>800 MacOS X標準添付のUSB Proberを立ち上げて、ISPMKIIとかいうプログラマ(AVRISP mkIIのことか?)
のUSBを差し込んだ時になにが登場するかまず確かめなさい。そいつを入れる。
コマンドライン使えるなら /dev/を見ればいい。
でも書き込み見るとavrdudeすらインストールしてないんじゃないのかという疑問すらある。
>>803 「試しながら学ぶAVR入門」は立ち読みしたけど、何も知らない人にはハードルが高いかもね。
初心者向けのアセンブラを解説した資料はAT90S1200がほとんどだから、秋月でAT90S1200Aと
ブレットボードの一番安いやつでも買ったら?
1200は低機能なぶん、頭に入れる情報も少なくてすむので入門にはいいと思う。
>>803 用語を一から全部説明となると分厚いマイコン辞典になっちゃうから難しいんだろうねえ。
分からない言葉をここで質問するというのも手だと思う。
>>806 おお、これって改めてみると結構細かく説明しているんだな。これは初心者向けにいいかも。
表紙裏表紙はすごくて職場で開くのには抵抗あるが(今開いているけどw)
質問なんですが。
自作のwait関数を使ってLEDをチカチカさせるプログラムを書いたのですが。
void wait(long time){
long i;
for(i=0;i<time;i++)
{i=i;
}
}
下のように2個連ねても時間が2倍になりません。上のものだけ数字を変えると反映されるので
2個目は無視されているようです。
wait(100000);
wait(100000);
この症状はいったい何なのか教えてもらえないでしょうか。
>>810 変な最適化されてるのかね
関数におなじないのvolatileつけてみては?
abra cadabra
チチン プイプイ
この本持ってないんで教えて欲しいんだけど、
>>803 > ベクトル省略、スタックポインタが何なのかもわかりません。
「ベクトル省略」って何?
割り込みのテーブルじゃないか?
interrupt vector table
>813
この本持ってるのでレス。
アセンブラの例で、割り込みを使わないので
ベクタテーブルの記述を省略してる、ってこと。
−−−−−引用−−−−−
.include "tn2313def.inc"
.org 0x0 ←割り込みは使用しないのでベクトル省略
reset: LDI R16,LOW(RAMEND) }←スタック・ポインタの設定
OUT SPL,R16 }
…
−−−−−−−−−−−−
>>815 あー、そういうことね。納得しました。
こういう発想はなかったな。
ついでに元の話に戻ると、個人的には、最初は内蔵オシレータが
あるやつを使うことをおすすめするな。
一つでも部品少ない方がラクだと思う。
なんで割り込みの飛び先指定部分をベクトルって言うんだろう?
数学や物理で使うベクトルとは意味が違う?
数字(アドレス)の並びだからかな
JAVAにもあったなベクター。
ベクトルは向きと大きさを持った量だって習ったよな。
アドレス空間で飛び先まで矢印を伸ばしてる絵をイメージしてみよう。
まさにベクトル。 …ってことじゃないか?
JavaのVectorも、オブジェクトへの参照(向き)を持った可変長配列(大きさ)だから
そんな名前が付いたんじゃないかな。(ほんとかー)
> 新英和中辞典 第6版 (研究社)
> vec・tor /vkt|‐t/
> 名[C]
> 1 【数】 ベクトル,方向量; 動径.→
> 2 【空】 方向,進路(方位).
> 3 【生物】 媒介動物,保菌生物 《病原体を運ぶハエ・カなど; 主に昆虫》.
> 動[他] 〈飛行機・ミサイルなどを〉電波によって誘導する.
> ラテン語「運ぶ者」の意
割り込み受けた時の飛び先 (=進路) と言う意味からだと思う。
821 :
774ワット発電中さん:2008/09/30(火) 23:41:25 ID:GzUAQmAI
>>803 体を動かしてはじめるなら、Tiny2313を購入して、
めんどうですがデータシート(日本語でよい)を丹念に見てください。
私は古典(今では意味が無いと思う)を借りてざっと読んだだけですが
役に立ったとは思っていません。
データシートは良く書かれています。
tiny2313のブレッドボードを組み立てて、データシートのわかるところから
実験してみてください。
読んで、実験して、質問すればわかります。
DDRBがわからないのはデータシートを読んでいないことの証明です。
頑張ってください。
822 :
774ワット発電中さん:2008/09/30(火) 23:48:36 ID:A9BpEmg8
クロック20MHzで、16bitタイマで5分とか10分とか1時間とか数えるときの
お手本ソースって、どこかにありませんか? ATmega168です。
コピペ厨は帰れ。
そもそも質問の真意が不明。
>>803 オレも初心者で、夏休みにデビューしたけど「試しながら学ぶ」は分かり易いと思うよ
一回分からないままでいいからざっと通して読んで
その後試しながら読み進めばいいと思うよ
命令の説明や仕組みは後で詳しく解説される
最初のソースは雰囲気を味わうだけでOK
学習は一歩一歩完璧、確実に、もいいけど
まずは全体を把握して
今の立ち位置がわかったほうがもっと良い
825 :
810:2008/10/01(水) 05:12:07 ID:vEzsHstT
>>811 どうもです.
optimizationを-O0にして解決しました。
関数にvolatilを付ける件、調べてみます。
>>821 初心者がデータシート読むのも辛いと思うけど、
不思議と、確実に動くサンプルや工作例などを紹介したサイトなどと、
データシートを往復しながら何度か読むとなんとなく分かってくるんだよな。
たしかにいい入門書を探し彷徨うよりは近道なのかもしれん。
827 :
800:2008/10/01(水) 10:34:41 ID:MxW9KHaR
>>804さん
USB Proberで、AVRISP mkIIが出てきました。
ただ、どこにもPathらしき文字列が見当たらないのですが、
一体何を入れればいいのでしょうか?
ターミナルで/dev/を見ても、mkIIを指した時と抜いた時で、違いがありませんでした。
avrdudeはインストールされています。
もう少し、教えていただけるとありがたいです。
よろしくお願いします。
tiny461の内臓温度計(ADC11)使った人いませんか?
指示温度がなんか変で安定してない。
しかし26と261(461)ではずいぶんと違うな!
>827
ドライバがないので出なくて当然
avrdudeはlibusbを使って直接やりとりしてるはず
パスはusb(大文字か小文字か忘れた)でやってみそ
つかavrdudeのドキュメントにかいてあるはずだよ
>822
これは!って思えるソースに出会ったことが無い。
俺が考えたのさらしていいかな?ネタとして。
831 :
830:2008/10/01(水) 21:23:17 ID:SGZrUOXg
まず初期化と割り込みとwait関数の三つ
#include <avr/interrupt.h>
volatile uint32_t msctr; // ノンストップカウンタ
////////////////////////////////////////////////////////
// タイマー1初期化(1KHzCTC動作, clk = 20MHz/8)
////////////////////////////////////////////////////////
void wait_init (void){
uint8_t save_sreg;
save_sreg = SREG;
cli();
OCR1A = 2500;
TCCR1A = 0;
TCCR0B = _BV(WGM12) | _BV(CS11);
TIMSK1 |= _BV(OCIE1A); // 比較一致割り込み許可
SREG = save_sreg;
}
////////////////////////////////////////////////////////
// タイマー1 比較一致割り込み
////////////////////////////////////////////////////////
ISR (TIMER1_COMPA_vect){
msctr++; // ノンストップカウンタ インクリメント
}
////////////////////////////////////////////////////////////////
// wait関数
// 引数:待ち時間(mS)
// 動作:待ち時間が経過するまで返らない。
////////////////////////////////////////////////////////////////
void wait (uint32_t time){
uint32_t A, B;
cli();
A = msctr;
sei();
asm volatile("nop" ::);
while (1){
cli();
B = msctr;
sei();
if ((B - A) >= time) break;
}
}
>830
うむ。3秒に1回の割込みでカウントしていって1200に達したら1時間経過、
とやるような自明な方法以外になんか美しい方法があったら教えてくれ。
833 :
830:2008/10/01(水) 21:26:07 ID:SGZrUOXg
メイン関数内でのサンプル
1mS単位で約1000時間まで使える。(と思う)
int16_t main (void){
wait_init();
sei();
while(1){
wait(3600000);
// 1時間毎にここが実行される
}
}
834 :
830:2008/10/01(水) 21:28:45 ID:SGZrUOXg
さあみんなでツッこんでくれw
835 :
830:2008/10/01(水) 21:29:46 ID:SGZrUOXg
>832
考え方は同じだスマヌ
俺はWait関数をWait.SにしてALLアセンブラで書くけど
そうやってCまじりのインラインでやっても、
クロック数きちっと計算できるん?
コンパイラ(の最適化)によって色々かわったりしない?
837 :
830:2008/10/01(水) 22:14:54 ID:SGZrUOXg
>836
何のためのタイマー割り込みなんだ?
wait関数を呼んでから戻るまででジャスト20000クロックの1mSが欲しいのかい?
838 :
836:2008/10/01(水) 22:40:19 ID:Gdn3PcDt
>>837 ごめん、斜め読みもいいところで、書込みしてた。
仰るとおりがまんまです。
俺が勝手に、タイマー使えない環境でのWaitと思い込んでた。
というのも自分がタイマー使わずにWaitをとる必要な案件が
あったもので…。
839 :
830:2008/10/01(水) 22:49:33 ID:SGZrUOXg
そういうのもあるあるw
ドンマイ
>>832 他に・・・というなら、5分とか10分の要求精度しだいなんだけど、
Timer1はフリーランで動かして、3.3554432秒周期の割り込みをオーバーフローで作ってカウント、
wait関数の時間の単位をこれにしちゃう(端数は無視)
初期設定:TCNT1クリア、1/1024プリスケール、Timer1 overflow許可、全割り込み許可
volatile uint16_t tmctr;
ISR (TIMER1_OVERFLOW_vect){
tmctr--; //設定カウンタを減じていく
}
void set_timer(uint16_t time) //65536*1024/20M秒単位だよ
{
cli();
tmctr=time;
TCNT1=0;
sei();
}
// set_timer()は32767(30.5時間)まで対応可能
#define set_timer_hour(t) set_timer((F_CPU*t*3600+512)/1024)
#define set_timer_min(t) set_timer((F_CPU*t*60+512)/1024)
呼び出し元
set_timer(10); //マクロset_timer_min()には定数だけ入れる。
他の処理
時々tmctr<0をチェック、成立したら処理
loop
3秒ずれるんじゃ困るなら、プリスケーラを1/64にすれば0.21秒単位/最大1.9時間。
set_timerに与える値が変数になるならコードでかくなるので×。
一方ロシアは電波時計モジュールを取り付けた
842 :
827:2008/10/02(木) 00:48:29 ID:eOkfjXUN
>>829さん
できました、ありがとうございます!
XcodeでのビルドからAVRfuseでの書き込みまでできて
一通りOSXだけで動かせるようになりました。
確かにAVRDUDEのドキュメントに書いてありました・・・
AVR初心者です。ATtiny2313を使ってみてリセットについて質問。
データシートにリセットの内蔵プルアップ抵抗が30k〜60kΩと書いてあります。
それで外付けのプルアップ抵抗を省いたとして(付けるか付けないかの是非は別として)、
その場合、ソフト側に
PORTA = 0b00000100; //PA2をプルアップ
の記述は必要ですか?
それとも電源on時に自動的にプルアップされる、なんてことになってるのでしょうか。
ひょっとしてそもそも、「いや、リセットはやっぱ外付け抵抗だよ、30kΩくらいで」
とかいう話になってたりするんでしょうか。
>>843 リセットピンとして使われる設定(ヒューズビットにて)の間は、PA2はPORTA2/DDA2/PINA2とも無効です。
データシートのRSTDISBLヒューズの説明、ポートAの兼用機能の説明を読んでください。
>>843 あと、RESETピンには内蔵で30-60kΩのプルアップがついています。
データシートのシステム制御とリセット参照。
>844
そこは読んでました。で、言われて気付きました。
ヒューズビットではリセットピンとして使うようにしてあります。
じゃぁポートとして利用できないんだから
PORTA = 0b00000100; は変だろと。落ち着けと。
回答ありがとうございました。
847 :
803:2008/10/02(木) 20:59:46 ID:OHIC0dDd
みなさんありがとうございました。
データシートと
>>806で紹介されてるサイトを
見たらなんとなくわかってきました。
とりあえずライタは手に入ったので
テストボードの作成をしてみます。
秋月にSTK500が再入荷してる件について。
やっぱ、いまさらかな?
AVRISPmkIIも扱ってたのね しらなんだ
Microchip/ONがAtmel買収提案したわけだが・・・
今後どうなっていくのかな
へ ヘンタイに調教されてしまうのか?
そんなぁ〜
AVR 負け組み wwww
デジキーでXmegaがヒットしなくなった。
少し前に価格が載ったので、そろそろかと思ったんだけど。
どうしたんだろ?
>>855 digikey.comの方じゃ引っ掛かる。在庫0だけど。
単にまだ出荷数が少ない、国内代理店に優先して廻した等、色々な理由が考えられる…
>>850 あの変態モスバーガーのマークになるのは避けたい。
でもMicrochip社ってATMELと違って個人へのサポートもいいんだよなぁ、CD-ROMもタダで送ってくれるし。
>>850 とりあえず製品が存続すればいいんだけど・・・・
競合製品は整理されちゃうのかなあ(´・ω・`)ショボーン
859 :
774ワット発電中さん:2008/10/03(金) 13:27:26 ID:H13C0AYG
株価高騰中
まぁ実際に買収が成立する可能性は低そうな気がするけどねぇ…
50%もプレミアムつけられたら考えちゃうだろうな
コア部分はAVRでPICのイーサネットなんかのインターフェイス付けられたら間違いなく買ってしまう
結構いいんじゃないか
>>862 >コア部分はAVRでPICのイーサネットなんかのインターフェイス付けられたら間違いなく買ってしまう
漏れもw
スタックも付いてたらEな
AVとPICの融合
SOT-23-6パッケージのAVRも欲しいな。
AV R指定 PICピック
色々加わって、最終的にはPSoCになる
868 :
774ワット発電中さん:2008/10/03(金) 18:04:55 ID:18BLHgQR
ヒューズビットでAVRモードとPICモードに切り替えられたりしてwww
マイクロコードで内部的にはPICを動かすAVRは嫌だw
870 :
774ワット発電中さん:2008/10/03(金) 18:30:33 ID:cPC+ACRE
うっかり踏んじゃったぜ・・・これは好みじゃない・・・
なんでこのスレに?
"AV"Rに反応したのか?
PICとAVRではどちらが偉いんですか
両方バカで結論が出ている。
バカを使いこなすのも芸のうちだ。
>>875 足し算ができないバカと引き算ができないバカですか?
まあAVRもPICも、もし口があれば「馬鹿な人間に合わせるのも一苦労だぜ」って言ってるかもなw
>>874 PIC:やたら消費電流が小さい。そのかわり命令セットが変態。
AVR:命令セットが素直。オブジェクト効率が悪い(1命令2バイト)。消費電流でかい。
>>877 >オブジェクト効率が悪い(1命令2バイト)
うーん、どちらも1命令1ワード(lds/ldd除く)と言い張れば・・・
まあ作る側からは大きな違いなんでしょうね。PICは1命令14bitだっけ?
>>876 > 足し算ができないバカと引き算ができないバカですか?
意味わからん。
ネタに突っ込むなら、面白いこと書けよ。
>>879 ん?即値減算がややこしいPICと即値加算がないAVRの話のつもりだったが・・・
面白くなかったか?それはすまんかった。
>>880 そう言う意味か。
それはすまんかった、ちょっと俺には高度すぎる話題だったよ。
>>877 消費電力はあまり変わらなかったと思うが。
>>877 アホかと、オブジェクト効率が悪いのはPICの方だ!
つかってみると AVR>>PIC
扱い易さは
PIC >AVR
俺的にはだけど
みごとなランコルゲ
午後の揚がりはベイルアウト法案可決までの期待
その後の急降下は材料の出尽くし 後日控えてる空売り規制解除の売りだな
AVRはチップの性能はいいけど、Atmelという会社としてみたら
個人ユーザーにはメリット少ないでしょ。
Microchipは個人ユーザーにもセミナー開いたり、直で販売して
くれたりとサポートはずっと上。
Microchipに買われた方が個人ユーザーとしては便利かも
AVRのチップ供給止められたらいやだけど。
んだ。日本で売る気のないAtmelに持たせておくよりはずっとマシになりそうだな。
俺的にはAVR>>>PICだった。
ライターが対応してるかいちいち調べなくていいし一度ヒューズビットを設定したらプログラムだけ転送すればいいし。
内部構造もいいし、なによりI/Oが高速だしな。
これで個人ユーザーもサポートしてくれたらもっといいんだが。
MicrochipはPICはPIC24にまで至るラインアップがあるし、ハイエンドも
MIPSあるしで、なんでAtmelが欲しいわけ?LBO通告見るとAVR/AVR32とかは
残して、他の部門を共同買収仲間の他社に売る形で金を作るみたいだし。
この大不況を機会に弱小他社を吸収して工場と客が欲しいだけなんじゃないかなぁ・・・
どうみてもAVRを終息させる目的での買収にしか見えない。
少し前にAMDがAITを買収したときも、ATIの事業方針に変更は無いと言ってはいたが
案の定、intel向けのチップセット開発は即刻中止された。
PICを主力とするマイクロチップがAVR製品を中心にする筈は無い以上、今後の新規開発
は絶望と見るのが妥当。よく見ても現行のAVR製品を今後数年間は供給継続するのが関の山。
ATMEL買ってメリットってなんだろ。
ほとんどの製品がバッティングしてると思うんだが。
工場とかの資産
M&Aにもいろいろあって、こういうのを敵対的買収というんだよ
必ずしも双方の合意の上で買収が行われるわけじゃない
海外のことだから、AVRよりむしろ8051の方がやばくなるかも?
picが、1クロック1命令にして、ポートA,B,Cに8ビットずつ当ててくれて、
GCC謹製のCコンパイラを無料配布してくれるのなら、乗り換えてもいい。
この買収劇でAVRがフェードアウトしたとすれば、
次は何に活路を求めるのがいいんだろな。
H8やR8? 78K0? HCS08?
はたまた、CortexMかMIPSかColdfireにでも跳ぶのか? (でかすぎて個人では半田付けできそうにないが)
おとなしく電子工作から足を洗うのが正解だと思う
PICしか残らんのなら漏れも工作やめるわ。
PCソフトのみにする。
H8やら78K(ゴミ)には戻らん、AVRだから面白い。
ARMとか3.3V固定製品は扱いにくいし面白くない、
壊れても使い捨てできるのがいい。
PSoCに来い
アーキテクチャは柔軟なのに
使い手は頭の固い人が多くいらっしゃるようで…
MicrochipsにしてもAtmelにしてもMPUは事業の一部にしか過ぎない。
Microchipsにしてみれば、AtmelのRF技術が欲しいんじゃないの?
907 :
774ワット発電中さん:2008/10/04(土) 22:17:18 ID:kRLZvd58
AVR沢山にLED4750000で競馬場のディスプレイできますか?
>907
Y翻訳で読もうとしたらとんでもない翻訳結果が出た。
>Atmel to Review Unsolicited Proposal from Microchip and ON Semiconductor
>マイクロチップから、そして、半導体の上で頼んでもいない提案を概説するAtmel
たぶん、「検討中」って内容と思われ。
>サンノゼ、CA、2008年10月2日…Atmel社 (NASDAQ:ATML)、今日は、資産、十分な努力と金融の販売を含む状況を前提として、
>スリーウェイ合意が1株当たり5.00ドルでAtmelをもたらすことが交渉に係わるというMicrochip Technology社(NASDAQ:MCHP)と
>ON Semiconductor(NASDAQ:ONNN)からの頼んでもいない提案を受け入れたことを確認しました。Atmelの取締役会(その信託された任務で、
>そして、その独立した財政的で合法的なアドバイザーとの協議で一貫した)は、そのうちに提案を概説して、考慮します。
という奇妙千万な文章に惑わされないように。
>>907 買った後で放置して立ち枯れさせる。
顧客は自社ラインアップに移行、なんてよくある買収のパターンだが。
E翻訳だと
サンノゼ(カリフォルニア)、2008年10月2日…アトメル、および#174。 社(ナスダック: ATML)
今日は、1株あたり5.00ドルで状態を条件としてアトメルを買収する3者間の
協定のための交渉に従事するためにMicrochip Technology Inc.(ナスダック: MCHP)
とON Semiconductor(ナスダック: ONNN)から求められていない提案を受けたと確認しました、
資産売却、適切な注意、および融資を含んでいて。 アトメルの受託者の義務と相談で独立している
財政的で法的なアドバイザーと一致した理事会は、やがて提案を見直して、検討するでしょう。
とりあえずAtmel側がまだ見解を発表できる状態でないことは分かった
水面下では動いてるんだろうけどな
PIC の 致命的非直交性命令体系を、AVRのノウハウで補うある。
Atmelはこのノウハウを、5$なんかで売るもんか。10$で日本メーカーに売りたいね。
ルネサス、敵対的買収の片棒をかつげ!
>>895 それって単にIntelがバスライセンス更新に応じてくれなかっただけじゃね?
>>905 キミは柔軟なのか、単に拘りりが無いのか。
動けばいいだけならPICで無問題。
がんがれ、アトメル!
>>904 うん、駄目になれば、俺はPSoCに行く。
>>907 返事じゃなくて、単に、敵対的買収案に対して、モルガン・クレディスイス(金)、リプトンその他(法律)
をコンサルにして、タイムリミットを見据えて検討に入ったというだけの記事
>>914 バスのライセンス更新までには3年近くあった、しかし、その時点で開発中であった
チップセットでさえ、ただの一つも発表されることは無かった。
開発資源は集中しなきゃ。
3年たって商品回収というのも大変じゃないか?
AVRの方がPICよりユーザにとって使いやすい
なのに、PICの方がシェアが広いのはなぜか?
Atmel社の怠慢だろう
個人ユーザにも無償サンプルしてくれるPICと比べて、
AVRの入手に関しては個人ユーザは手が出せない状態
AVRを取り扱う商社やメーカの責任が大きい
しかしそれだけであろうか?
AVRの方がチップの性能で優れているという点だけで、メーカや商社に対して
なにも言わなかったユーザにも責任があるのではないだろうか
「AVRユーザはアホ」なのである
秋月でAVR 100個買う連中は、
先見の明があったということかー!
AVRの新規開発なんて、最近はAVR32とXMEGAでしょ
とても個人のホビーに向いているとは思えん。
新規にTINYやMEGAシリーズを出さないのなら
Atmel という会社にこだわる必要は個人ユーザーには無い。
逆にMicrochipの方が DIP品があり、直販が使える等
個人には使いやすい。
PICは 12,16Fシリーズ→18F→24F,dsPICとアーキテクチャを
進化させてもDIP品を用意してくれたけど、AVRどうだった?
個人のホビーなんてたいてい現行のTINYやMEGAで充分だろ。
TinyやMegaだって後何年供給が続くかね。新しいVerではDIPパッケージなんて作ろうとせんだろうし。
ブレッドボードに挿せるように
DIPで出してくれ
個人の取っつきやすさはPICよりAVRじゃないかな。
安価なCの開発環境があることが大きいと自分は思う。
最近の事情を知らないんだが、
PICでもWindowsでgccで開発できるんだったら話は違うけど。
DIPにこだわる香具師は負け組。TQFPでもいいじゃん。
>926
今はPICも無償のgcc(C30)で開発できるよ。
なので、AVR→PIC24なら抵抗なくすんなり移行できる。
PIC18以下はAVRの代わりにならないので、問題外。
PIC18以下はAVRの代わりにならないどころか時代後れ過ぎるよな。
いまの時代でトランジスタの代わりに真空管を使うようなものだし。
dsPICは珍しくよかったが、あれで値段を下げてくれれば……。
まあ商品が機能では弱かった時代でも、価格・納期・顧客サポートで
Microchipは頑張り、そんで時とともにPIC24みたいに徐々に機能自体も
いいものに下から攻めあがって行った。
物自体は悪くなかったが、その他で劣ってたAtmelが負けるのは
やむなしというか、企業経営の学習教材みたいな対比事例だな>両者
これがPC見たいに互換性重要!と世界だったらPIC/Microchipはあの
変態アーキに縛られてどうにもならなかったと思うけど、その縛りは
この小型組み込みの分野ではなかったしね。
変態は使いこなすと喜びに感じるぞ
最低でもSOP(1.27)じゃないと満足いかなくなってきた。
QFNとかTSSOPのTINYやMEGAがほしくてたまらん俺はどうすればorz
買収騒動で騒がしい中申し訳ないのですが、ちょっと教えてください。
SPIで一気に24bitのデータを送りたいときは、SCKをF_CPUより十分遅くしておけば
24bitを8bit×3に分けて
SPDR = data1;
while(!(SPSR&(1<<SPIF)));
SPDR = data2;
while(!(SPSR&(1<<SPIF)));
SPDR = data3;
while(!(SPSR&(1<<SPIF)));
とするだけで送れるのでしょうか?
PIC「よう、兄弟!」
むかつくw
AVRstudio+WINAVRの環境において、スタックサイズを調べるにはどうすれば良いのでしょうか
あとスタックサイズの変更方法もあれば教えてください
因みに対象のマイコンはMEGA64です
>>933 たいていはそれでいけるよ。速度は受け側に合わせてやればおけ
>>933 受ける方の処理が問題ないならそれでいいと思う
DIPじゃないとユニバーサル基盤使えないのに
どうやってはんだ付けするの?
プリント基盤も自分で作るの?
つか、ふつーに変換基板。
必要なら基板も作るし、どーでも良ければ変換。
TQFP64とかだとアイテムラボの変換基板ならDIP40より小さくなるし。
変換使わなくても、TQFP32ぐらいなら普通にユニバーサル基板で作るよ
0.65mmピッチくらいまではそのままUEWで配線。
某Ch○Nさんのように。
QFNとかになると、基板おこす。
仕事柄0.5mmピッチくらいまでは配線できるので、
逆に作ったものが大きくなるDIPは嫌いだ。
俺は0.25mmピッチまで手配線できるけど、マイコンみたいに値段の高いのだと変換基板使って何度も使い回して実験する。
>>946 極意を教えてくれ。
写真付で道具とか手順とか詳しく。
AT90S8515って、まだ手に入りますか?
秋葉原でも見つかりませんでした。
>>949 空中配線でよければピンを交互に水平と垂直の2つに分けたりすることもある。
道具は2000円のハッコーのコテと共立で売ってる400円くらいのワシ口ピンセットとφ0.4のハンダとφ0.14のポリウレタン線。
0.5mmピッチまでならφ0.6のハンダと1000円のコテとφ0.2のポリウレタンかな。
>極意
気合いと根性と努力
954 :
949:2008/10/07(火) 19:46:36 ID:ESE6oAoA
おぉ、ダメ元で言ってみるもんだな。
っつーか、ありがとう とても参考になるよ。
交互にピンを浮かせるのはピッチ稼げていいな。
工具も言われたので挑戦してみるべ。
サンクス
>>953
PIC「次スレはオレんとこ集合な、兄弟!
尻アル、穴ログ、大調教してやるぜ」
まさに変態命令(体系)w
むかつくw
Microchipのモノになった後は型番変わるのかな。PIC20とか?
>958
アンカーチップの AN2135 がサイプレスに買収されたあとも CYxxxxx
にならなかったように、向こうでば買収しても名前は変えない。
ただディスコンが早まるのみ。AN213xが無くなっちゃったように。
>ただディスコンが早まるのみ。
非常に困るんですが…w
うんw
まあ THSxxx 型番の自前のオペアンプを持っていた TI が
バーブラウン買収後も OPAxxx を展開しつづけているような例も
あるけど、どうなるだろね。
BurrBrownは信者が多いからな。
むしろAVRコアで8ビットPICを乗っ取るくらいの勢いが欲しい。
AV-PIC
ですね。
大人向けデバイス
AVR18PIC69-I/SM
R18 69 SM
AVRコアでパラレルスレーブポートが付いたデバイスならちょっと欲しいかも
ハードコアもので複数の奴隷と同時進行する作品ですね。
当店にはちょと・・・・
そろそろ次のスレを
その970の書き込みって、嵐にしか見えんのだが、気のせいか?
非常に恥ずかしい質問なんですけど、
AVRISP mk2を買ったのですが
説明書とか何もついてなかったので
どこにピンに何を差し込めばいいのかわかりません。
決まりはないんですか?
調べたらありました。
ごめんなさい。
AVR(mega88あたり)とxilinxのCPLDを同じボードに実装しようと思っています。
JTAGを直列接続して両方を区別して書き込めるでしょうか?
xilinxのライタはデバイス選択できそうですが、AVRのライター、例えばELM
ライタは選んで書き込めるもんでしょうか?
>975
JTAG接続に使う信号線は、両方の石の同等信号をつないでしまうんじゃなくて、
それぞれの石ごとに接続用端子を個別に引っ張ってつなぐだろ。
区別も何も、混信する余地がない。
と思うんだが、どうか?
JTAGは通常はデイジーチェーン接続だと思うけど
そもそもmega88ってJTAGサポートしてたっけ?
ChaN氏のライターソフトはJTAGケーブルを流用するだけでISP接続だし、
mega88にJTAGインターフェースは無い。
したがってJTAGのディジーチェーン接続は出来ないよ。
979 :
976:2008/10/10(金) 00:49:59 ID:nwGLFqNy
スマン、デタラメ書いてしまった。
今からAVR始めようと思うんだが、
ATTinyやATmegaやらあるけど何が違うんだ?
また、初心者にオススメの型番があったら教えて下さい。
tiny2313がいいよ 100円