AVRマイコン総合スレ Part13

このエントリーをはてなブックマークに追加
1774ワット発電中さん
           _____
         /       /|
       /   ( ゚∀゚) /.∠フ   個人でも手軽に使える
     /       /.∠フ || . Atmelの8-bit RISCマイクロプロセッサを
   /  __    o/.∠フ ||    中心に語るスレッドです。
 ∠| ̄ ̄凵 ̄ ̄|∠フ ||     *AAは「AVR H8 etc. マイコン総合スレ Part3」からいただきました。
 .|| |_____|/||


Atmel AVR 8-Bit RISC     http://www.atmel.com/products/avr/
2774ワット発電中さん:2009/01/12(月) 00:28:45 ID:KiiXwMig
◎前スレ◎
AVRマイコン総合スレ Part12
http://science6.2ch.net/test/read.cgi/denki/1223778551/
AVRマイコン総合スレ Part11
http://science6.2ch.net/test/read.cgi/denki/1212840469/
AVRマイコン総合スレ Part10
http://science6.2ch.net/test/read.cgi/denki/1203495784/
AVRマイコン総合スレ Part9
http://science6.2ch.net/test/read.cgi/denki/1192625746/
AVRマイコン総合スレ Part8
http://science6.2ch.net/test/read.cgi/denki/1177933605/
AVRマイコン総合スレ Part7
http://science6.2ch.net/test/read.cgi/denki/1162464623/
AVRマイコン総合スレ Part6
http://science4.2ch.net/test/read.cgi/denki/1148195387/
AVRマイコン総合スレ Part5
http://science4.2ch.net/test/read.cgi/denki/1125327648/
AVRマイコン総合スレ Part4
http://science3.2ch.net/test/read.cgi/denki/1108290187/
AVR H8 etc. マイコン総合スレ Part3
http://science3.2ch.net/test/read.cgi/denki/1100706575/
AVR H8 etc. マイコン総合スレ Part2
http://science3.2ch.net/test/read.cgi/denki/1093023679/
AVR H8 etc. マイコン総合スレ
http://science3.2ch.net/test/read.cgi/denki/1078586301/
PIC AVR H8統合スレ
http://science2.2ch.net/test/read.cgi/denki/1072092201/

[機械板]
●PIC・AVR 初心者のためのスレッド-3サイクル目●
http://science4.2ch.net/test/read.cgi/kikai/1067082692/
●PIC・AVR 初心者のためのスレッド-2サイクル目●
 =行方不明。過去ログ持ってる人いたら提供よろしく
●PIC・AVR 初心者のためのスレッド●
http://mentai.peko.2ch.net/kikai/kako/981/981417210.html
3774ワット発電中さん:2009/01/12(月) 00:29:35 ID:KiiXwMig
<参考になるページ>
・AVR-wiki  http://avrwiki.jpn.ph/wiki.cgi

・AVR情報多い-chanさんのpage  http://elm-chan.org/

・avrfreaks.net avrgccその他AVR関連の総本山(英語)
  http://www.avrfreaks.net/

・レディオテクニカ有志による 翻訳版 AVRデータシート・AVRツールの解説書
  http://homepage1.nifty.com/radio_tech/

・TAP-Config http://ww2.tiki.ne.jp/~maro/

・自分で作ってしまえ!電子工作スレッドテンプレート集
  http://jbbs.shitaraba.com/bbs/read.cgi/study/3329/1067910158/

4774ワット発電中さん:2009/01/12(月) 00:30:03 ID:KiiXwMig
<ライタ関連>
・秋月のAVRライター(COMポート)+新しいファームウェア
  http://akizukidenshi.com/down/
  http://www.t3.rim.or.jp/~temple/software.html
・共立電子(デジット)のAVRドングル(Printerポート)。ジャンパ1つでSTK200互換
  http://digit.kyohritsu.com/
・Olimex製のAVR-PG1Bは安い。Olimexだと$9.95。
  http://www.olimex.com/dev/avr-pg1b.html
販売元:Sparkfun、SolitonWave
  http://www.sparkfun.com/shop/index.php?shop=1&match_criteria=all&rec=&keywords=AVR-PG1B+&
純正品:AVR-ISP(COMポート)、STK500。パラレルライタ機能あり
  http://www.atmel.com/dyn/products/tools.asp?family_id=607
純正品:AVR-isp mkU(USB接続)
  http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3808

・プログラマ(書き込み器)を自作の参考になるサイト
  *jcl:AVRマイコン用プログラマの制作
    http://micomfreaks.hp.infoseek.co.jp/AVRprog.html
  *ELM-AVRライタ製作集
    http://elm-chan.org/works/avrx/report.html
  *オプティマイズ:EZ-USBライタ
    http://optimize.ath.cx/avr/writer.htm
  *2台目以降なら1チップでUSB接続のライタ自作もできます。
    USBasp、HIDasp、HIDaspx、等

5774ワット発電中さん:2009/01/12(月) 00:31:24 ID:KiiXwMig
Part12のテンプレをそのまま持って来ました。
修正あったらよろしく! We can fly!
6774ワット発電中さん:2009/01/12(月) 00:42:53 ID:FfDcy3qO
>>1
乙です。
7774ワット発電中さん:2009/01/12(月) 12:17:55 ID:szgJZaUT
  おチンチンびろーん

   ∩___∩     
   | ノ      ヽ/⌒) 
  /⌒) (゚)   (゚) | .|  
 / /   ( _●_)  ミ/
.(  ヽ  |∪|  /
 \    ヽノ /   
  / itow ML /  
 |   _つ  /    
 |  /UJ\ \       
 | /     )  )       
 ∪     (  \    
        \_)
8774ワット発電中さん:2009/01/12(月) 13:12:54 ID:JV+xIgyk
itow ML
9774ワット発電中さん:2009/01/13(火) 23:30:06 ID:l/4Uh9W0
おまいらAVR使って何作ってるの?
まさかライターだけってのは無いよなwww
10774ワット発電中さん:2009/01/13(火) 23:35:40 ID:YlAvSlQB
マインドストームのセンサとかが多いかな。
11774ワット発電中さん:2009/01/14(水) 00:37:44 ID:58Opm/Z4
>>9
ライターに始まりライターに終わるでごわす
抵抗4本のチープなものから始まって5.0〜1.8Vの電源範囲カバーするのとか作ったりして
いろいろやってるうちに道具箱がライタだらけになった
12774ワット発電中さん:2009/01/14(水) 01:32:32 ID:xMIkytPZ
あ、さっきからUSBaspで2つのターゲットにスイッチ切り替えで書き込めるやつを作ってたw
13774ワット発電中さん:2009/01/14(水) 08:49:32 ID:+iMyM7yO
SPIで設定が必要なICを初期設定して
定期的にデータが改編されたら表示、
スイッチが操作されたらSPIで設定変更、

なんだかそんな物を作ってる…。
14774ワット発電中さん:2009/01/14(水) 09:24:59 ID:FgJDVGqj
直接AVRと関係してるわけじゃないけど、USBTinyでつないだAVRを
libusb経由でスクリプトから操作する実験をしてる。
Arduino 買えって意見はあると思うが、これはこれで楽しい。安いし。
15774ワット発電中さん:2009/01/14(水) 11:46:49 ID:IU6pLrL5
作りたいモノはあるけど、AVR以外のアナログ的なスキルが足りなくて企画倒ればかり。
最近はオペアンプ入門みたいな本ばかり読んでて、ライターがホコリかぶってるorz
16774ワット発電中さん:2009/01/14(水) 16:11:52 ID:kG2qKfw/
なんで今更8ビットで苦労せなあかんのだ
と思ったけど、1チップの規模ならこれもありなんだな
でも何かの補助って用途しか思いつかない
17774ワット発電中さん:2009/01/14(水) 16:18:50 ID:+iMyM7yO
>>16
ワンチップ向けの開発環境って、結局はイニシエの時代からあまり変ってないと言えば変ってないのがねぇ…
移植とか意外と手間だからリファクタリング向けのツール(トランスレータ+α的な)物が広まっていても良いんじゃないの?とは思うのだけど
下手に規模が小さいもんだから手作業と根性でも動いちゃうってのが、かえって手間を増やしてる悪寒。
18774ワット発電中さん:2009/01/14(水) 16:19:05 ID:srO+7wba
太陽電池の制御とかもやったけどいまはSONYの液晶つき充電器がエラーばかり吐くから時間かけてまったり充電できる充電器作ってるとこ。
ついでにセリアの100円ニッケル水素を10本買ってきた。
19774ワット発電中さん:2009/01/14(水) 17:46:38 ID:0StuPkB8
>>16
鉛筆削るのにチェーンソーを持ってくるような真似をしちゃだめってことでしょ。
20774ワット発電中さん:2009/01/14(水) 17:48:00 ID:hCiUjV+g
>>17
PSoC DesignerのSystem Level Design(旧PSoC Express)はちょっと毛色が
変わってるかも
http://web.sfc.keio.ac.jp/~shokai/archives/2007/03/psoc-express-seminar.html
21774ワット発電中さん:2009/01/14(水) 19:43:36 ID:kG2qKfw/
8ビット20MIPSが活かせる仕事って一体何だろう。
>>9みたいな疑問に答えられない。
メモリが広いわけでもなく、ソフトウェアで何か賄うにも
クロックが半端だから、何かやろうとするとすぐ壁にぶつかってしまう。
ほとんどの事は専用ハードウェア使うことを考えた方が早い。
ライタや開発環境が入手しやすくコードも書きやすいってのが
最大の利点だけど、その先がないね。
22774ワット発電中さん:2009/01/14(水) 21:44:18 ID:4ITHAC+H
PICの置き換え用途に…w
23774ワット発電中さん:2009/01/14(水) 23:02:25 ID:iz/h0vdc
Chan氏が作ってるものとか性能の限界まで出してる気がするね。
スペアナのやつの、リアルタイムでFFTしながら液晶を制御とか。
http://elm-chan.org/works/rsm/report.html
24774ワット発電中さん:2009/01/14(水) 23:09:04 ID:LL5j7Yc6
へー8ビットで20MIPSもあるんだ
かつたMC68000が1MIPSとかスゲーーって思ってたんだけどな
25774ワット発電中さん:2009/01/14(水) 23:13:25 ID:0StuPkB8
>>24
レジスタ長(というか、アキュムレータの基本ビット長)とMIPS値って直接の関係は無いだろ?
26774ワット発電中さん:2009/01/14(水) 23:20:36 ID:j0LyMlkT
そんなことを語っているのか?
27774ワット発電中さん:2009/01/15(木) 02:30:01 ID:eQhfmwcW
生活リズム計 や アクティグラフ のような
ログ装置を作りたいけど
製品並みに小型化するのは無理?
28774ワット発電中さん:2009/01/15(木) 03:15:33 ID:KjGQHlXg
生活リズム計とは
29774ワット発電中さん:2009/01/15(木) 08:32:43 ID:dxrVSMUd
ウエブサーバとか、メールサーバ、プリントサーバ、
ファイヤウオールあたりができると有用そうな
30774ワット発電中さん:2009/01/15(木) 09:53:04 ID:mGMCX0H4
>>25
メモリーの自由空間はさておき、
当時の68000(10MHz)よりも速いのは確かだ。
31774ワット発電中さん:2009/01/15(木) 10:57:52 ID:v/LRN4Io
生活リズム計=結局は時系列ログがとれる万歩計のようだ。
センサーをどうするか。
32774ワット発電中さん:2009/01/15(木) 11:17:48 ID:2CM8qbKm
スピリチュアルセンサーで
33774ワット発電中さん:2009/01/15(木) 11:38:21 ID:bImzXPru
流行の加速度センサーで、走ったときとか階段を登ったときの記録を取って、
一日の消費カロリーが表示されるような奴だと楽しいかもねぇ。

飛行機に乗った日はきっとすごい消費カロリーだぞ
34774ワット発電中さん:2009/01/16(金) 20:18:37 ID:Fm9SlROz
>>1
今度からは>>4のテンプレはUSB接続のだけでいいような気もする
35774ワット発電中さん:2009/01/16(金) 21:21:16 ID:droPFRO/
>>34
なんで?。根拠を示せよ
36774ワット発電中さん:2009/01/16(金) 21:52:18 ID:CmQPwZzn
最近増えてきたAtomのPCはCOM付きが標準だし、COMのライターを排除する必要はないと思う。
だが、紹介するサイトや商品の内容は見直して、変更、追加、削除があってもいいかもしれんね。
37774ワット発電中さん:2009/01/16(金) 22:43:36 ID:OqVmWfQW
COMだけは根強く残ってるね。流行ののATOM PCなんかパラレルまで現役だし。
38774ワット発電中さん:2009/01/17(土) 09:23:30 ID:7i/4AN2P
>>27
生活リズム計のIRをプロトコル解析して受信側をAVRの方が無難。
39774ワット発電中さん:2009/01/17(土) 09:27:05 ID:mad825RG
パラレルが無いと高速なPSコントローラ変換機が使えないのです。
格ゲーでは20msec(1.2フレーム)の遅延でさえ致命的なのですから
40774ワット発電中さん:2009/01/17(土) 09:34:24 ID:vcrRmjXN
 カタカタ ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (・∀・ )<  ついでだし これも買っとこ。 大人買い、大人買い。
   _| ̄ ̄||_)_\_______________________
 /旦|――||// /| 
 | ̄ ̄ ̄ ̄ ̄| ̄| . |
 |_____|三|/           そしてまたゴミが増える・・・・
41774ワット発電中さん:2009/01/17(土) 19:20:15 ID:MKJWLXk8
>>40
秋月とdigi-keyの罠ですねわかります
42774ワット発電中さん:2009/01/17(土) 19:45:03 ID:TmPZhpP9
とりあえず買っておいたものが本当にあとで役に立つことが結構あるから衝動買いを止めることが出来ない。
LEDとかスイッチング電源とかコネクタとかケーブルとか抵抗とかキャパシタとかインダクタとかレギュレータとか・・・。
43774ワット発電中さん:2009/01/17(土) 20:35:07 ID:Vemyear5
>>42
俺がカキコしてる。
44774ワット発電中さん:2009/01/17(土) 21:15:25 ID:J1v/rZOs
いや、俺のことだ
45774ワット発電中さん:2009/01/17(土) 22:21:12 ID:s4japbW7
俺、俺だよ。俺。
46774ワット発電中さん:2009/01/18(日) 03:02:38 ID:g2woxU3d
俺だってば
47774ワット発電中さん:2009/01/18(日) 04:06:05 ID:JrzeUPti
48774ワット発電中さん:2009/01/18(日) 09:15:00 ID:nFx5P8pR
まとめ買いしたを忘れて、またまとめ買い
そして再び…(ry
49774ワット発電中さん:2009/01/18(日) 13:49:55 ID:jcqHqoND
>>48
俺がカキコしてる。
50774ワット発電中さん:2009/01/18(日) 14:06:01 ID:7qkqNAfR
部品ばっかふえて 完成しないぞごるあ
51774ワット発電中さん:2009/01/18(日) 14:34:02 ID:EdRsyhL5
しょうがないよな。必要なパーツは千円分くらいだけど送料もったいないし

とかいってなぜか1万くらいになるわけだが。秋月は危険だw
52774ワット発電中さん:2009/01/18(日) 15:29:24 ID:gXxGoAG/
あまったパーツでなんか作ろうとするとまた数点足りなくて注文

無限ループ
53774ワット発電中さん:2009/01/18(日) 17:39:29 ID:g2woxU3d
>>52
ありすぎて困る
54774ワット発電中さん:2009/01/18(日) 21:21:13 ID:x/Vb62BL
ISPのピンがLEDのアノードに繋がっていて、
ISP以外のピンにカソードが繋がっていると、
書き込みのときに支障出る?
55774ワット発電中さん:2009/01/18(日) 21:23:48 ID:6eaFxapC
>>54
無いと思うよ。LEDには抵抗が直列に入ってる?
56774ワット発電中さん:2009/01/18(日) 21:28:21 ID:x/Vb62BL
入れる予定です。
支障があるかないかによって回路を変えます。
57774ワット発電中さん:2009/01/18(日) 21:37:31 ID:6eaFxapC
あと気になるのは直列に入れる抵抗の値だね。
あまり小さいとISPの信号の電圧レベルがちゃんとでないかも。
どのくらいまでOKかはAVRのデータシートとライタの仕様でも
確認してください。
58774ワット発電中さん:2009/01/18(日) 21:46:29 ID:eJVxGHkY
出力ピン数よりも多数のLEDを制御したい場合はどうするのが普通なんですか?
59774ワット発電中さん:2009/01/18(日) 21:49:51 ID:6eaFxapC
>>58
シフトレジスタ、CPLD(FPGA)、複数のAVRを使用
ケースバイケースで色々な方法があると思うよ
60774ワット発電中さん:2009/01/18(日) 21:50:10 ID:Hs/o/YEO
「ダイナミック点灯」でググって下さい。
61774ワット発電中さん:2009/01/19(月) 00:54:01 ID:Mp69DA2z
点灯専用のTiny2313を用意してI2Cあたりで直接やってもいいよね。コスト的に。
下手するとロジックICのが高いこんな世の中じゃ。
62774ワット発電中さん:2009/01/19(月) 01:08:42 ID:Bh/Vj0UL
>>58
勉強中な自分だと、色々あるけど、
とりあえずやってみるのは、ダイナミック点灯。
あとは
http://www.ednjapan.com/issue/2007/03/u3eqp3000000sq2v.html
こういうのも。
63774ワット発電中さん:2009/01/19(月) 01:16:03 ID:2Q5xnfAp
>>62
この回路、全消灯が出来ないように思えるけど良いのかな?
64熱暴走 ◆2SA784NN.A :2009/01/19(月) 01:26:29 ID:WdB0SNPO
>>2
> =行方不明。過去ログ持ってる人いたら提供よろしく
URLは判るが、過去ログ倉庫は失われているし、
俺も持っていない。

●PIC・AVR 初心者のためのスレッド-2サイクル目●
http://science.2ch.net/test/read.cgi/kikai/1040610345/
65774ワット発電中さん:2009/01/19(月) 01:50:03 ID:tCYtbGX0
H,L,Zで全部Z状態なら全消灯でない??
66774ワット発電中さん:2009/01/19(月) 03:03:01 ID:weQ0j9i3
最近はI/O ExpanderっていうSPI / I2Cの部品もあるね。
ATtiny2313の方が安いけど。
6758:2009/01/19(月) 07:45:08 ID:2v8l2KuA
>>59-66
ありがとうございました。tiny2313が安くて扱いやすそうに感じました。
68774ワット発電中さん:2009/01/19(月) 08:03:33 ID:GM2+W+a5
まぁアレですね、技術者としての意地というかポリシーでどうするか選択するってことなので
MPU2個使うか専用IC使うかディスクリートでやるかTTL探すか
コストだけみればtyny2313使うっていうのは魅力だよね、スレ的にもw
69774ワット発電中さん:2009/01/19(月) 08:15:10 ID:OJ3Dp3xD
Arduinoって何するもんなの? avrが乗ってるらしいけど・・・
70774ワット発電中さん:2009/01/19(月) 09:12:38 ID:Hnddo7PF
>>69
センサつないで情報収集システム作ったり、表示器つなげてアンビエントシステム作ったり。
ロボットに乗せて制御システムとして使ってる人もいるし、芸術分野で作品に組み込んでる人もいる。
71774ワット発電中さん:2009/01/19(月) 12:45:24 ID:pqA+7vVu
>>69
コンピュータや制御とかの専門家でない人向けのオ−プンなハード・ソフト開発環境
リアルタイム性の要求される「きつい」機器制御には向かないが、「ゆるい」制御とかに向いている
プロトタイピングツールとしても使えなくも無いし、そのまま最終物に持っていくことも可能

このスレ的には遊べるし、ものによっては実用品製作に使える
72774ワット発電中さん:2009/01/19(月) 13:22:19 ID:7TsOOFBn
>>71
>ものによっては実用品製作に使える

それは遠慮したいな
73774ワット発電中さん:2009/01/19(月) 13:41:18 ID:pqA+7vVu
>>72
Arduido 言語(gcc に変換されコンパイルされる)で書けない処理は出来ない
(ライブラリは自分で拡張できる)

Arduidoで出来ることは簡単にできる…(アナログを含む)ビット単位の入力や出力とか
SPIやI2Cも扱えるから、簡単なコマンドで操作できるものならセンス&制御は可能

例えば、「あるセンサーモジュールを評価したい」とかは楽チン
そのまま、Arduidoで実用になるなら Mega168なりに完成したバイナリーを焼けば完成品に
(AVRのブートローダーを使っているので、バイナリーはハード構成が同じ環境なら互換)

ま、作りたいものとの兼ね合いかな
74774ワット発電中さん:2009/01/19(月) 13:45:30 ID:myBSNsQE
>>72
実用っていってもピンキリだからいいんじゃない?
一発ものだったら、こういうのを使うのも悪くないとおもうんだけど。
75774ワット発電中さん:2009/01/19(月) 15:50:18 ID:+rifjzue
16bitのタイマー割り込みで1秒を数える時の誤差を少なくするには、
@できるだけ分周して割り込みを入れる
Aできるだけ分周しないで割り込み入れる
どちらの方法がいいでしょうか?
76774ワット発電中さん:2009/01/19(月) 16:05:55 ID:ujNsgpFY
>>75
誤差というのはどのような誤差を言っているのでしょうか。
タイマ割り込みの周期が1秒の整数比なら蓄積されていく誤差は無いと思うので
周期が長いか短いかは関係ないと思います。
77774ワット発電中さん:2009/01/19(月) 16:20:17 ID:+rifjzue
説明下手でスミマセン、、、
具体的には、tiny2313で水晶発振器12MHzを使い
誤差をできるだけ少なく1秒ごとにタイマー割り込みを入れたいのです。

割り込み中の処理でも誤差が出たりしますよね?
60分で1秒の誤差くらいの精度が出れば良いです。
78774ワット発電中さん:2009/01/19(月) 16:38:43 ID:Mp69DA2z
12MHz / 1024 = 11718.8だから
1秒 / 12MHz * 1024 * 11719 = 約1.00002秒。
60分では3600.08で0.08秒の誤差。これが許容できるなら
1024分周で11719とコンペアマッチすればいいんじゃないかな。
79774ワット発電中さん:2009/01/19(月) 16:44:16 ID:Mp69DA2z
正確に1秒にしたいなら12.8MHzの水晶に換える。
12MHz / 1024 = 12500と割り切れる。
80774ワット発電中さん:2009/01/19(月) 16:45:07 ID:Mp69DA2z
間違えた12.8MHz / 1024 = 12500ね。
81774ワット発電中さん:2009/01/19(月) 16:55:37 ID:Nl4QTTTc
>77
>割り込み中の処理でも誤差が出たりしますよね?

次の割り込み発生が遅れるんじゃないかという心配なら、それは関係ないぞ。
82774ワット発電中さん:2009/01/19(月) 17:14:25 ID:4c1+p1sk
10msの割り込みにすればいいんじゃないかな?
83774ワット発電中さん:2009/01/19(月) 18:04:16 ID:Mp69DA2z
>>82
12MHzで1024分周で60秒に6000回割り込むとして、
その内117での比較を4875回、118での比較を1125回
やれば誤差がなくなりますね。タイマ0で作れるし。
84774ワット発電中さん:2009/01/19(月) 18:17:27 ID:0W0uwHUD
>>78
12MHz / 256 = 46875 と割り切れるから
256分周で46875とコンペアマッチすればいいんじゃないか?
タイマ1な
85774ワット発電中さん:2009/01/19(月) 18:20:58 ID:Mp69DA2z
>>84
あーなるほど。

一応>>83を簡単にすると16回中117を13回、118を3回、これで0.16秒。
このサイクルを375回繰り返すとちょうど60秒。
86774ワット発電中さん:2009/01/19(月) 18:41:07 ID:Mp69DA2z
ということはタイマ0でやる場合、256分周だと125で
コンペアマッチすれば375回目で1秒ですね。
87774ワット発電中さん:2009/01/19(月) 19:41:03 ID:V9SRNOwh
TCNT0 += 130; //ほんとは131 (256-125の値で10msec毎にTIMER0_OVF_vect) 130は間違って255から125を引いてる
みたいな馬鹿やって
秋月で売ってるキンセキの高精度水晶ユニット(12.8MHz)使って「なぜ遅れるんだ?」と悩みまくること9時間。
88774ワット発電中さん:2009/01/19(月) 19:48:53 ID:KwM3kLJx
ATtiny2313で水晶発振子12MHzの8文集を
システムクロックとしたい場合のヒューズビットは、
Low: 01101110 でおkでしょうか?

自分で調べてみたのですが不安で聞いてみました・・・あってますかね?
あと、ヒューズビット書き換えの注意点とかありましたら教えてください。
89774ワット発電中さん:2009/01/19(月) 21:47:15 ID:+rifjzue
>>84
それでキレイに割れますね。気付きませんでした。
あと聞きたいのですが、

タイマー割り込み発動

すぐにTCNTリセット、カウントアップ開始

自分が記述した処理

割り込み終了

みたいな流れなんですか?
90774ワット発電中さん:2009/01/19(月) 21:52:11 ID:ujNsgpFY
>>89
割り込み処理じゃなくてCTC動作でリセットすれば良いと思いますよ。
91774ワット発電中さん:2009/01/19(月) 22:22:09 ID:Mp69DA2z
これでも正確に1秒になるはず。
3:1の比率で10msecカウンタを調節。
10msec単位ではあまり正確ではないが、1秒以下のカウンタが欲しい場合。
不要な場合はint_countをuint16_tにして375と直接比較すればいい。

volatile uint8_t int_count; // 割り込みカウンタ 0-3 or 0-4
volatile uint8_t ten_msec_count; // 10msec毎のカウンタ 0-99
volatile uint8_t sec_count; // 秒カウンタ // 0-255
ISR(SIG_OUTPUT_COMPARE0A) {
int_count++;
if ((ten_msec_count&3) == 3) { // 3 => 25
if (int_count == 3) { // (4 * 75) + (3 * 25) => 375 RATIO=3:1
goto update_10msec;
}
} else { // 0,1 2 => 75
if (int_count == 4) {
update_10msec: ;
int_count = 0;
++ten_msec_count;
if (ten_msec_count == 100) { // 10msec * 100経った
ten_msec_count = 0;
sec_count++; // 秒を更新
}
}
}
}

void timer0_init(void) {
int_count = 0;
ten_msec_count = 0;
sec_count = 0;
TCNT0 = 0;
OCR0A = 125; // 1.0 / 12000000 * 256 * 125 * 375 =>1.0
TCCR0A = 2; // CTC動作
TCCR0B = _BV(CS02); // 256分周
TIMSK=_BV(OCIE0A); // タイマカウンタ0比較A割り込み許可
}
92774ワット発電中さん:2009/01/19(月) 22:23:49 ID:+rifjzue
タイマー割り込み発動

マイコンが勝手にTCNTリセット、カウントアップ開始

自分が記述した処理

割り込み終了

ちょっと書き直しました。

上記のような流れで動くから、1秒ごとの割り込みで、
割り込み中の処理が仮に0.2秒かかったとしても、割り込みの間隔が
ずれないで、ずっと1秒ごとに割り込みが行われていくと・・・
そういう認識で大丈夫でしょうか?
93774ワット発電中さん:2009/01/19(月) 22:24:46 ID:Mp69DA2z
indentが・・
かちゅ〜しゃで>>91を見れば存在するんだけど。
94774ワット発電中さん:2009/01/19(月) 22:45:09 ID:Mp69DA2z
>>91は忘れてください。
分周64、比較値125、カウント15でやれば素直に1msecになる。
95774ワット発電中さん:2009/01/19(月) 22:47:33 ID:MzBxCqn3
winavr20081205のchengelogを読みたいんですけど、どこにあるの?
(すげー探したけど見つからないので教えてチョ)
96774ワット発電中さん:2009/01/20(火) 08:04:35 ID:FBTf+zqX
AVRでスイッチング電源を作りたいのですが、
どこかに参考になるサイトはありませんか?
97774ワット発電中さん:2009/01/20(火) 08:36:53 ID:piKMQjub
【昇圧】AVRやPICで定電圧電源を作りたい!【降圧】
http://science6.2ch.net/test/read.cgi/denki/1208755657/
98774ワット発電中さん:2009/01/20(火) 21:09:35 ID:AxP6X0mO
いきなりの質問で失礼します。
先日秋月にてAVRISP mkIIを購入したのですが、動作しません…。
USBで接続した際にWINDOWSからドライバのインストール画面が出たのでインストールしたのですが、
インストールエラーが出てインストールできませんでした。
またAVRstudioからアップグレードしようとしても、認識できないとの旨のエラーが出ました。
OSはXPを使っています。これは初歩的なミスなのでしょうか?それとも初期不良の類でしょうか…?
99774ワット発電中さん:2009/01/20(火) 21:32:12 ID:7qHsImGh
インストールに失敗したUSBドライバをデバイスマネージャから削除して再インストールしてみれば?
100774ワット発電中さん:2009/01/20(火) 21:41:35 ID:AxP6X0mO
>>99
レスありがとうございました。
何度か削除→再インストール(&再起動)を試したのですができませんでした・・・。
ネット上にある画像を見ると、USBケーブル側にLEDが1つ、平型配線側にLEDが1つあるようですが、
現在平型配線側のLEDが赤く光ってるだけです。接続する瞬間のみ1度USBケーブル側が光ります。
ドライバがインストールされていないと両方光らないのでしょうか?
101774ワット発電中さん:2009/01/20(火) 22:27:29 ID:pVnB4Tr6
>>99
まず、AVRISPmkIIの接続をはずして、ドライバ&AVRstudioをアンスコしてから、

 ttp://yuki-lab.jp/hw/AVRISPmkII/index.html
 ↑
 を参考にして、USB接続のタイミングを間違えなければ
 インスコできると思う。
102774ワット発電中さん:2009/01/20(火) 22:47:31 ID:O/lkk3HE
タイマーの比較一致割り込みで、
COMPAとCOMPBの割り込みを2つとも許可したら、
2つの割り込みのタイミングは干渉するんですか?
103774ワット発電中さん:2009/01/20(火) 22:52:51 ID:U7kxHk0f
>>102
同時に割込が発生しても干渉というか、ハード的には問題ない。まず優先
順位が高い方の割込が受け付けられ、割込処理内で多重割込を許可するか、
割込処理を抜けた時点で優先順位が低い方の割込が受け付けられる。

データシートのタイマ割り込みの優先順位の項を嫁。
104774ワット発電中さん:2009/01/20(火) 23:56:37 ID:AxP6X0mO
>>101
参考にしながら色々試していたら無事接続できました!!
皆様本当にありがとうございました。
105774ワット発電中さん:2009/01/21(水) 00:01:48 ID:bHS617Hv
>>96
昔のトラ技の記事で、tiny26あたりを使った記事があったはず。
確か、研究室のトラ技ライブラリで読んだ。
106774ワット発電中さん:2009/01/21(水) 03:18:20 ID:Acm5fbH0
AVRとは関係ないがAtomPCにPCカードが無いのはなんで。
107774ワット発電中さん:2009/01/21(水) 04:21:16 ID:R8KC3sZF
ほんとに全く関係ないな。
自作板ででも聞けよ。
108774ワット発電中さん:2009/01/21(水) 09:33:15 ID:Yt/N7+ac
PCMCIA自体レガシーだからさ。
109774ワット発電中さん:2009/01/21(水) 09:39:49 ID:eHaMF6js
レガシーが駆逐された今こそ
AVRもUSB付きのLineUpを増やして欲しい。
110774ワット発電中さん:2009/01/21(水) 11:12:03 ID:VHGEYvC3
FT232とかFT245(と、同等の機能)を内蔵したtinyシリーズとか出ないかねぇ・・・
USI用のピンとオルタナティブになってるようなやつとか。
111774ワット発電中さん:2009/01/21(水) 13:10:22 ID:p8dQYory
まぁ、FT232並にUSBシリアルが簡単にTinyで使えればそりゃ嬉しいけどねぇ。

同等機能っていってもUSBならシリアルに限定する方が手間なので、
AT90USBと似た感じにしかならんだろう。
CDCクラスの実装となると、Tinyだとフラッシュがそこそこ食われそうだしなぁ。
112774ワット発電中さん:2009/01/21(水) 13:46:43 ID:Yt/N7+ac
PCカードスロットに挿す物といえば、モデム/EtherNetNIC/USB2.0拡張カード/ワンセグ
と、この程度だが、いずれもUSBで間に合うし、USB2.0カードが必要なPCなんて、それ自体
のほうがレガシーなわけなので、今のマシンではスロットごと省略されていると思われる。
感想文終わり
113774ワット発電中さん:2009/01/21(水) 15:08:21 ID:LAtHjKEj
>>106
OEM向けにAtomやWinXPは一定のハード制限を呑むとかなり安く買えるわけだが
そこら辺の事情も含まれてるかも知れん
114774ワット発電中さん:2009/01/21(水) 15:31:04 ID:Acm5fbH0
研究用でPCカードがつけられる安い軽量ノートが欲しいんだよね。
115774ワット発電中さん:2009/01/21(水) 23:32:00 ID:dfrzCPf9
ATtiny2313でC言語を使ってプログラムの開発を行っているのですが、
プログラムのサイズが収まりきらないときがあり困ったことが何度かあります。

そこで、質問ですがプログラムをコンパクトにするには
どういった点に気をつけてコーディングすれば良いのか教えて下さい。
116774ワット発電中さん:2009/01/22(木) 00:10:45 ID:XgNgLatO
>>115
ここを参照
http://avrwiki.jpn.ph/wiki.cgi?page=AVR%A4%E8%A4%AF%A4%A2%A4%EB%BC%C1%CC%E4%28FAQ%29
加えてAVRのアーキテクチャの勉強をすれば、どんなコーディングをすれば小さくなるかの見通しを立てることができる。

あとは単純にROMが大きいデバイスを使う
数百円をケチるためにプログラムのシェイプアップに時間を費やすのは無駄
もちろん量産なら別だけどね
117774ワット発電中さん:2009/01/22(木) 00:25:35 ID:R4rsqDxO
どんなにコーディングを工夫しても収まらないものは収まらない、
こう言っちゃ何だけど、そういうことだってあるさ。

割り切るとか悟りとかの気持ちで機能を削除する。ときには必要なことさ。
このくらいの機能ならこの容量で収まるかな、って感覚がそのうち身に付くさ。

iアプリ30KBの壁で苦労した俺さ。
118774ワット発電中さん:2009/01/22(木) 02:32:18 ID:tZ5poS9c
外部バスが使えるmega8515やmega162を使ってみたいんですが、
DIPのやつを秋葉界隈で入手できませんかね。
mega128のボードが安ければそっちでもいいんですけど。
119774ワット発電中さん:2009/01/22(木) 03:23:33 ID:tZ5poS9c
高いけどatmega162がマルツで見つかりました。
120774ワット発電中さん:2009/01/22(木) 07:57:37 ID:7n4d6kJ/
>>119
解決したみたいだが、
通販でよければ、mega8515とmega162の両方あるみたい(価格は安いが送料が…)
ttp://www.microfan.jp/shop/9.html
121774ワット発電中さん:2009/01/22(木) 09:14:41 ID:GUBI9Ll3
>>115
フルアセンブラでどうぞ。
122774ワット発電中さん:2009/01/22(木) 09:24:46 ID:wktQVsKt
まぁ、printfやscanfを使わないとかが常套手段だけど、こうやって、アレも使わない・コレもダメ
ってやってくぐらいなら、最初からアセンブラの方が良かったってことになるわな。
漠然とした印象だけど1000ラインぐらいまでだったらアセンブラで開発してもそんなに苦にならん。
123774ワット発電中さん:2009/01/22(木) 10:54:17 ID:UWk8kYdt
>>115
マジレスだけど
コンパイルしたmain.binを逆アセンブル(avr-objdump)して
じっくり眺めてみると解決策が見つかることがある。
やや足が出ている程度なら、gcc-4系でなくgcc-3系のやや古い
avr-gccを使うと5%くらい小さくなる。
124774ワット発電中さん:2009/01/22(木) 12:28:21 ID:9z2+q/dP
絶対ムリだと思っても、数バイトずつ削っていけば収まることもあるよ。
まぁ8bitマイコンで遊ぶなら基本的な技能ではあるし、
無駄といわれようが、一度血の1バイト遊びにじっくり取り組むのはアリ
125774ワット発電中さん:2009/01/22(木) 19:08:31 ID:tZ5poS9c
便乗で質問です。
WinAVRのCでmainで生成されるpush/popがえらい無駄な気がします。
mainからはどうせ戻らないし、レジスタ破壊したままでも良いと思うのですが、
このmainのpush/popを抑制する方法あるでしょうか?
126774ワット発電中さん:2009/01/22(木) 19:12:14 ID:tZ5poS9c
あ、無限ループになってればpopのコードは省略されるみたいですね。
しかしmain呼び出し時にこれだけ無駄なコードが生成されます。

4f 92 push r4
5f 92 push r5
6f 92 push r6
7f 92 push r7
8f 92 push r8
9f 92 push r9
af 92 push r10
bf 92 push r11
cf 92 push r12
df 92 push r13
ef 92 push r14
ff 92 push r15
0f 93 push r16
1f 93 push r17
df 93 push r29
cf 93 push r28

16ワード、32バイトです。
127774ワット発電中さん:2009/01/22(木) 19:15:37 ID:tZ5poS9c
16ワードのpushということは、スタックとして16バイトのSRAMも無駄に
消費されることになります。2313のような環境では馬鹿になりませんね。
mainだけアセンブラで書けってことかな。
連投すいません。
128774ワット発電中さん:2009/01/22(木) 19:22:58 ID:tZ5poS9c
と考えてたら、別の環境でnakedを使っていたのを思い出しました。
__attribute__ ((naked))
int main (void) 〜
AVRでもこれで良いようです。
129774ワット発電中さん:2009/01/22(木) 19:37:59 ID:5yey4pmx
avrstudio4.14とWinAVR20080610で
makefileを自動的に作ってもらえなくて
面倒くさい思いをしているのは
私だけでしょうか?
130774ワット発電中さん:2009/01/22(木) 19:52:41 ID:6fvjM6z9
>>125
gccに定番のオプションがある。-fomit-frame-pointer だっけな。
131774ワット発電中さん:2009/01/22(木) 20:15:40 ID:tZ5poS9c
それって基本レジスタ渡しでフレームポインタのないAVRには関係なさげですよ
132774ワット発電中さん:2009/01/22(木) 20:26:43 ID:ZuR86UXz
教えて君の素人で申し訳ないですが、教えて頂けないでしょうか?
ATTINY2313-20PUが壊れることを恐れ、AVR WRTに載せられている
ATTINY2313-20PUのバックアップを取りたいのですが・・・。
シリアル接続のAVRSPでプログラムコード、ROMデータ、FUSEデータを
保存し、新しいATTINY2313-20PUに書き戻して AVR WRT に載せたのですが
うまく動作しませんでした。やはりプロテクト的な物があるのでしょうか?
133774ワット発電中さん:2009/01/22(木) 21:30:42 ID:dr5e4r6/
人の販売したものをコピーするなや。
134774ワット発電中さん:2009/01/22(木) 23:44:10 ID:19DANsXq
AVRの不正複製防御は米国軍のお墨付きだったよね。
135774ワット発電中さん:2009/01/23(金) 01:49:57 ID:6ztw6wTR
>>133
コピーではなく壊れたときの為の私個人用の保存です。
でも無理なようですね。書き込み失礼しました。
136774ワット発電中さん:2009/01/23(金) 01:55:39 ID:JzOSNo8/
それをコピーって言うんだ
137774ワット発電中さん:2009/01/23(金) 01:56:42 ID:6ztw6wTR
>>136
バックアップではないかい?
138774ワット発電中さん:2009/01/23(金) 02:28:34 ID:+ew/X188
つーかAVR WRT作ったとこに聞けよ
139774ワット発電中さん:2009/01/23(金) 09:31:58 ID:lQEQgc3d
コピーかバックアップかどうでもいいけど、そんなことで時間を潰すのは、
趣味としても楽しくないだろ?仕事なら1000円ちょっとのものの
バックアップなど無意味だし。
で、AVRの学習の一環としてなら自力で解析しなさいな。
140774ワット発電中さん:2009/01/23(金) 09:46:40 ID:zmm7sQ5j
>>125
へぇ?しばらくさわっていないけど2007バージョンあたりではそういうことはなかった気がするが・・・
141774ワット発電中さん:2009/01/23(金) 21:40:08 ID:YMalc+Rv
2313程度の中身でも コピーだのなんだのっていうほど
見えなかったり読めなかったりする構造になってるんだ?
142774ワット発電中さん:2009/01/23(金) 21:58:22 ID:07ysyZE+
つーかライタ程度なら仕様書読んで自分でソフト作った方が面白くない?
素人なら良い腕試しだと思う。
この程度作れなかったら今後のマイコン遊びも難しそう。
143774ワット発電中さん:2009/01/24(土) 00:22:38 ID:PwOVxfBI
>>135
AVRチップのプログラムが壊れた→ライターの故障→修理に出せ
144774ワット発電中さん:2009/01/24(土) 07:06:01 ID:zWDgGzP7
(上と関係ない)
ATtiny2313で、ある条件で一部のSRAM内容がランダムに書き換わる
(バッファオーバーランみたいな症状。配列は使ってないのに)
という不具合に遭遇してしまった。
同じ環境で違う固体に差し替えると全く症状が出ないから
固体不良だと思うけど、100円だからあきらめるしかないかな?
5個程試したうち、不具合が出るのはその1つだけだった。
いつのまにか壊したのかもしれないけど
固体の不具合と判るまで丸々1日潰れた。
145774ワット発電中さん:2009/01/24(土) 07:59:33 ID:zWDgGzP7
どうも特定のポート(PD2)に問題があるっぽい。
PD2に大雑把に100KHz以上のクロックを加え続けるとSRAMが書き換わる。
幸い、兼用機能は使ってないので、別のポートに変えてから症状は出なくなった。
なんでしょうこれ。
146774ワット発電中さん:2009/01/24(土) 09:32:11 ID:6GwdqRF5
後学までに正常個体と異常個体の読みだしたそれぞれのヒューズ値を教えてくれないか
147774ワット発電中さん:2009/01/24(土) 09:54:52 ID:zWDgGzP7
>>146
lfuse de
hfuse df
efuse ff
lock 3f
すべてこの設定です。
クロックは20MHzで、セラロックと水晶の両方試しました。
148774ワット発電中さん:2009/01/24(土) 14:30:21 ID:+pvMvDhA
>145
100KHz以上20MHz以下どの程度の値でもそうなるのかい?
149774ワット発電中さん:2009/01/24(土) 22:37:40 ID:zWDgGzP7
はい、100KHzといわず30KHz〜1MHzで確認。20MHzはちょっと試してないけど。
PD2を入力(DDRD:PD2=0 PORTD:PD2=0 ハイインピーダンス(Hi-Z))
にしてクロック入れ、その値を読み出す事が条件っぽい。
あまり遅いクロック(30KHz以下から)だとならない。
150774ワット発電中さん:2009/01/24(土) 22:44:53 ID:6loUvB6c
ttp://imakeprojects.com/Projects/haunted-usb-cable/Gfx/schematic.jpg
この回路で 1N4148 が2個直列でVCCに接続されているのはどういう意味があるですか?
151774ワット発電中さん:2009/01/24(土) 22:48:46 ID:R6EUI6cf
電圧を3V付近まで下げる意味がある
152150:2009/01/24(土) 23:00:02 ID:6loUvB6c
USBから供給される5Vそのままではだめなんですか?
さがしたらこんなものもありましたし
ttp://farm4.static.flickr.com/3046/2384144698_b0aef7ab09_o.png
153774ワット発電中さん:2009/01/24(土) 23:10:26 ID:R6EUI6cf
USBの信号の電圧は0〜3.6V(LS/FSの場合)と規定されています。
問題あるかどうか(回路をどうするかどこで妥協するか)は自分で判断するしかないと思います。
レギュレータを使ってバスパワーから3.3Vを作っている事例もあると思います。
154150:2009/01/24(土) 23:15:39 ID:6loUvB6c
よくわかりました。ありがとうございます。
155774ワット発電中さん:2009/01/24(土) 23:19:46 ID:7DvhnF4x
何の問題無いって言ったらお前はそれを信じるのか?
データシート見ろよ
156774ワット発電中さん:2009/01/25(日) 00:33:25 ID:qg3hFLHn
150の回路図は、ATTiny45を3.3Vで20MHz動作させているのが気持ち悪い。
152の回路図は、ATTiny45が5V動作なので入出力も5V。USBポートに5Vをかけるのが
気持ち悪い。
AVRは5V動作で入出力は3.3Vにするのが吉。

これなんかどう?
ttp://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?plugin=attach&refer=AVR%2FHIDaspx&openfile=HIDaspx-kairo1.png
157774ワット発電中さん:2009/01/25(日) 00:48:46 ID:qnPVFCCm
抵抗分圧やツェナーダイオード使うのは見たことある。
SDカード(3.3V)繋げる場合も同様の回路になる。
>>156の回路はツェナーダイオードだね。
ATTiny45だと内蔵RCでPLL使うのかな?
158774ワット発電中さん:2009/01/25(日) 10:05:27 ID:9fMddwZH
>>149
個体差があるってことだし、電源不安定になって化けるとか
そんなんじゃないの?
159774ワット発電中さん:2009/01/25(日) 22:36:09 ID:RDWuXSL6
亀すぎるけどTiny26廃盤なのか…ショック
160774ワット発電中さん:2009/01/25(日) 23:38:29 ID:oZtHu0/d
すいません、PICから移行してきたのですが、
AVRで読み出されないようにプロテクトをかけるには
どうやったらいいのでしょうか?
161774ワット発電中さん:2009/01/25(日) 23:42:05 ID:oZtHu0/d
Memory Lock Bitsあたりですかね?
162774ワット発電中さん:2009/01/25(日) 23:47:39 ID:oZtHu0/d
事故解決しますた
163774ワット発電中さん:2009/01/25(日) 23:48:14 ID:a6sVkie5
Lock Bits
164774ワット発電中さん:2009/01/26(月) 15:22:29 ID:cPzAAy6G
千石通販でもAVR扱いだしたな
165774ワット発電中さん:2009/01/26(月) 17:10:47 ID:qW2B+9z6
一方、秋月の通販カタログから多数商品が消失
LED、セラロック、ICソケット、基板類とかすら殆ど何も無い…データ更新ミス?
166774ワット発電中さん:2009/01/26(月) 17:14:05 ID:Lma8MhaO
update in progress.......
167774ワット発電中さん:2009/01/26(月) 18:03:45 ID:2wsOrdCe
秋月、サイトリニューアルしたのか。
更新トラブルだったの? 今は普通に見られるよ。
基板もセラロックも、取扱商品は従来と変わってないようだ。
168774ワット発電中さん:2009/01/26(月) 18:05:58 ID:tWs1j6cK
更新トラブルというより更新中って感じだと思われる。
169774ワット発電中さん:2009/01/26(月) 20:30:52 ID:gw0cv5nT
カード決済だが、電子部品で素人が1万も買うこと無いよな。
170774ワット発電中さん:2009/01/26(月) 20:39:35 ID:lPpfGfDS
Digikey効果が働けば無いこともない。
171774ワット発電中さん:2009/01/26(月) 20:56:25 ID:7PB4bnZN
AVR の Mega48 とかの TWI (I2C) モジュールで、master として slave からデータ受けとるとき、
ACK/NACK (TWCR の TWEA ビット) って事前に決めておかないとだめなんでしょうか?
受けとったデータを見て (例えばそれが 00 だったら) 終了 (NACK)、00 以外だったら続行 (ACK)、
みたいなことをやりたいのですが。
(slave は I2C EEPROM を想定してます)
172774ワット発電中さん:2009/01/27(火) 03:15:08 ID:W2MOrQgW
そうですね。
終了条件に達したら次のデータを空読みNAK応答するロジックになります。
173774ワット発電中さん:2009/01/28(水) 08:41:48 ID:jYXgqFjh
プログラムを書き込む時にも外部発振子がないと壊れたりします?外部クロック設定するときだけでいいと思ってたけど、書き込めないようなのでorz
174774ワット発電中さん:2009/01/28(水) 09:01:13 ID:cMnCjlZo
xtalつけてないけど 壊れた事は無い

ただし fuse bit間違えてつかえなくなったことはある
175774ワット発電中さん:2009/01/28(水) 11:56:16 ID:P6oGa0Io
Tiny2313あたりを使って、パラレルプログラムモードで
フューズビットを工場出荷状態にリセットするだけの
装置を作れないかな。
176774ワット発電中さん:2009/01/28(水) 12:14:35 ID:0uJZxoyx
177774ワット発電中さん:2009/01/28(水) 12:16:48 ID:rLkx9RC6
ぐぐるとあったはず
178774ワット発電中さん:2009/01/28(水) 12:33:01 ID:cMnCjlZo
179774ワット発電中さん:2009/01/28(水) 13:11:53 ID:P6oGa0Io
ムッハー!
やはり既に製作されてる方々が!

作る気力が沸いてきた
>>176-178
あんがとね。
180774ワット発電中さん:2009/01/30(金) 01:30:33 ID:R0sTHdGp
MEGA168-20PIでタイマー1が変なんだけど、タイマーだけ壊れるって事ある?

クロックは内蔵クロックで8MHz。
下記サイトのタイマー使わないウェイトルーチンを使って
1秒毎にLED点滅させるテストは成功するのね。
ttp://www.geocities.jp/kuman2600/c_memo.html#t25
だからクロックはキチンと8MHzで動いてる。

コレをタイマー使ったウェイトルーチンでやると遅くなる。
カウンター調節して約1秒毎に点滅するようにすると、どうも1MHzくらいなのね。

じゃあ1MHzって事で0.2秒毎にオーバーフローするように作ると、
なぜか0.8秒くらいになっちゃう。1秒と大差ない、これは変。
じゃあじゃあって事で4分の1にすると0.7秒くらい?
で、真っ赤になってカウンターを65536-1にすると早すぎて判らない。

現時点で一番怪しい俺様の思考回路は、
「クロック8MHzなら8,000,000回カウントしたら1秒」
「オーバーフロー使うならカウンターには65536-カウント数」
を基準に考えてる。何かアドバイスあったら聞かせてください。
181774ワット発電中さん:2009/01/30(金) 02:49:06 ID:aP4lJ9R6
>>180
前置分周器はいくらにセットされていますか。
8MHzクロックなら、256分周で 31250カウントで1秒になります。
オーバーフローなら 65536-31250=34286 を設定することになります。

182774ワット発電中さん:2009/01/30(金) 14:07:58 ID:HrhdNNi9
ヒューズビットが8分周になってるだけでは。
データシートよく嫁って事だけど。
183774ワット発電中さん:2009/01/30(金) 18:32:47 ID:brPkFOZ3
bascom avrの日本語マニュアルがほしい
184180:2009/01/30(金) 23:00:58 ID:R0sTHdGp
どうもです。
>>181
はい、その考え方でやってます。分周も解ってます。
>>182
ヒューズの事は言われると思ったんで
「タイマー使わないウェイトルーチンは期待どうり動く」と…

赤外線リモコン>PS/2キーボード作ってて、通信やらキーリピートやら…
幅は38KHzとか50usとか600msとか1/4秒とか、
使用法はウエイトだったり経過時間の判定だったり。

とりあえず上記のウェイト使って動く物は完成してるんだけど、
リモコンのリピートと手押し連打の区別がつかん状態で困ってる。
タイマーが使えたらリピート間隔以上空いたらボタンを離した事が解るんだけど。

185774ワット発電中さん:2009/01/30(金) 23:12:25 ID:b6mGyS2b
ソースコード公開すれば?
186774ワット発電中さん:2009/01/31(土) 00:02:43 ID:KS3yn60m
>リモコンのリピートと手押し連打の区別がつかん
リモコンによっては区別できないのがあるよ

リーダ|コード|リピート|リピート|・・
ってNECフォーマットのやつと、
リーダ|コード|リーダ|コード|リーダ|コード|・・
がある。後者(家電協)がそれ。

まあタイマの件は他のAVRで試せばはっきりすると思うけど。
>タイマー1が変なんだけど、
タイマ0はどうだったよ
187774ワット発電中さん:2009/01/31(土) 00:15:01 ID:KS3yn60m
一応、タイマ0でも256分周で250のCTC動作にして、
そのコンペアマッチ割り込みを125回カウントすれば1秒と計算できる。
(256 * 250 * 125 = 8000000)
188774ワット発電中さん:2009/01/31(土) 00:19:13 ID:RU8fe7Pq
>>175
http://homepage1.nifty.com/salt/USB-IO-Mini.htm
これで、ATtiny45 ならリセットできたよ。
189774ワット発電中さん:2009/01/31(土) 00:30:53 ID:KS3yn60m
あとおそらく、リモコンのリピートを区別できたとしても、
そのままでは間隔が速すぎて非常に使いにくいはず。(押し過ぎる)
マイコン側で適当にチャタリング処理して遅らせることになる。

リモコンパルス |a|a|a|b|b|b|c|c|c|c|
キー変換     |  a    |   b |  c   |
190774ワット発電中さん:2009/01/31(土) 23:52:19 ID:lzLWF3zq
データシートにIOポートは40mAが定格って書いてあるけど、
同時に全てのIOポートから40mA流しても平気なの?
191774ワット発電中さん:2009/02/01(日) 00:05:33 ID:5hlmS5vh
定格で40mAってどのあたりに記載されてますか。
とりあえずATTiny2313では絶対定格でVCC,GNDピンで
200mA超えるなって記載はあるので、全てのポートから
40mA流すことは無理だと思いますが・・・
192774ワット発電中さん:2009/02/01(日) 00:14:29 ID:/SKaEpdu
Operating Temperature.................................. -55°C to +125°C *NOTICE: Stresses beyond those listed under “Absolute
Maximum Ratings” may cause permanent damage
to the device. This is a stress rating only and
functional operation of the device at these or
other conditions beyond those indicated in the
operational sections of this specification is not
implied. Exposure to absolute maximum rating
conditions for extended periods may affect
device reliability.
Storage Temperature ..................................... -65°C to +150°C
Voltage on any Pin except RESET
with respect to Ground ................................-0.5V to VCC+0.5V
Voltage on RESET with respect to Ground......-0.5V to +13.0V
Maximum Operating Voltage ............................................ 6.0V
DC Current per I/O Pin ............................................... 40.0 mA
DC Current VCC and GND Pins................................ 200.0 mA
-----------------------------------------------------
Notes: 1. All DC Characteristics contained in this data sheet are based on simulation and characterization of other AVR microcontrollers
manufactured in the same process technology. These values are preliminary values representing design targets, and
will be updated after characterization of actual silicon.
2. “Max” means the highest value where the pin is guaranteed to be read as low.
3. “Min” means the lowest value where the pin is guaranteed to be read as high.
4. Although each I/O port can sink more than the test conditions (10 mA at VCC = 5V, 5 mA at VCC = 3V) under steady state
conditions (non-transient), the following must be observed:
1] The sum of all IOL, for all ports, should not exceed 60 mA.
If IOL exceeds the test condition, VOL may exceed the related specification. Pins are not guaranteed to sink current greater
than the listed test condition.
5. Although each I/O port can source more than the test conditions (10 mA at VCC = 5V, 5 mA at VCC = 3V) under steady state
conditions (non-transient), the following must be observed:
1] The sum of all IOH, for all ports, should not exceed 60 mA.
If IOH exceeds the test condition, VOH may exceed the related specification. Pins are not guaranteed to source current
193774ワット発電中さん:2009/02/01(日) 05:27:33 ID:0yGzqCAX
>>190
40mAは絶対最大定格ですから一瞬でも超えてはいけない条件です。
これ以外に日本語データシートのp117の注意書きに
@全ポートのIOLの合計が60mAを超えるべきではありません。
@全ポートのIOHの合計が60mAを超えるべきではありません。
と書いてあります。
これは厳しい条件ですが、測定条件のポートあたり10mA程度にしておくのが良いのではないでしょうか。
194774ワット発電中さん:2009/02/01(日) 16:15:11 ID:k3gSyYJK
それ以上に、全消費電流が200mAを超えられないわけだが・・・
195774ワット発電中さん:2009/02/01(日) 22:04:32 ID:6ER+WthW
前スレあたりでガイシュツだったハズだが・・・
196774ワット発電中さん:2009/02/01(日) 23:49:00 ID:vdMkSVlO
もう全ポート電流とか絶対定格規格の事はテンプレにいれようぜ。
197774ワット発電中さん:2009/02/02(月) 04:56:27 ID:7WM8oibj
余ってるI/Oを電源に繋いだら全ポート電流は増えるの?
198774ワット発電中さん:2009/02/02(月) 06:15:27 ID:jVAJr50b
天才発見
199774ワット発電中さん:2009/02/02(月) 23:19:32 ID:fTUDKHSo
>>197 その原理を利用すればトランジスタなしで白熱電球ぴかぴかできるな。
200774ワット発電中さん:2009/02/03(火) 00:15:21 ID:px0n1AZS
>>197
回生かっつうぅのw

201774ワット発電中さん:2009/02/03(火) 08:40:38 ID:K8dXfTTt
>>197
前に、寝ぼけてSinkポートの電流がsourceポートに出てくるようなこと書いた奴がいたな。

俺ですけどorz
202774ワット発電中さん:2009/02/03(火) 09:25:03 ID:9WCUr+qn
久しぶりにAVRに書き込もうとして、家の中ライタを探した。
すると,AT2313・HC4066・MAX232を搭載したライタが出てきました。
AVRDUDEであれこれ試しましたが、NG。
だれぞこないな古典的ライタを、後生大事に使っている香具師さんが
いたら、使えるソフトを教えてください。
203774ワット発電中さん:2009/02/03(火) 09:36:47 ID:hzDH0lNJ
AT2313の中身がわからないとなんともいえないけど
それって秋月のライタですか?
204774ワット発電中さん:2009/02/03(火) 12:05:37 ID:9WCUr+qn
失礼。自作といってもSWとか回路はコピーです。
トラ技のバックナンバーのダウンロードをあさったがなし。
早速のレスありがとうございます。
205774ワット発電中さん:2009/02/03(火) 12:09:57 ID:9WCUr+qn
失礼。自作と言ってもSW、回路はコピーです。
トラ技のバックナンバーにもなさそうです。
HC125が出てきたので、chaN式を製作開始中。
早速のレスありがとうございます。
206774ワット発電中さん:2009/02/03(火) 16:44:43 ID:rqnEw+Q3
大事なことなの(ry
207774ワット発電中さん:2009/02/03(火) 20:23:38 ID:MisG3gpX
>>197
電源ピンに流れる電流を低減するということなら効果があったりして。
余ってるポートの半分をVCCに接続してH出力にすると、Pch FETがONして低抵抗で内部の電源ラインに繋がって、
残りをGNDに接続してL出力にすると、Nch FETがONになって低抵抗で内部のGNDに繋がる、と。

FPGAだと、L出力してGNDを強化するのはよくやるよね?
208774ワット発電中さん:2009/02/03(火) 21:16:17 ID:CaBo9+M0
>>202
デバイスに単独給電してから、プログラマ接続して、ってパターンかも?
209774ワット発電中さん:2009/02/04(水) 10:19:42 ID:yTJgbf7H
コメントありがとうございます。ChaN方式完しましたので、あとで試して見ます。
この数年間H8&SH2ばっかりだったもので、復帰が大変です。

210774ワット発電中さん:2009/02/04(水) 19:43:33 ID:q/ed5awj
tiny2313にてLEDをダイナミック点灯させる方法として

#include<avr/io.h>

int main(void){
DDRB=0xFF

while(1){
portB=0x01;
portB=0x02;
portB=0x03;
}
return;
}

このようなプログラムでダイナミック点灯しますか?
それともやっぱりタイマー等を使用しないと出来ないものなのでしょうか?

分かる方、ご教授ください。お願いします
211774ワット発電中さん:2009/02/04(水) 20:43:06 ID:ZTzPFq+b
Ainy2313の動作クロックに近い早さで
{
 PB0につないだLEDが点灯(PB1につないだLEDは消灯)
 PB1につないだLEDが点灯(PB0につないだLEDは消灯)
 PB0, PB1につないだLEDが2つ共に点灯
}
を繰り返すので、結局2つのLEDが点灯しっぱなしに見えると思う。

あまりダイナミック点灯としての意味が無い様に思えるのだが…
212774ワット発電中さん:2009/02/04(水) 21:08:14 ID:TUrd2+3Y
>210は
0x01、0x02、0x04で3つのLEDをダイナミック駆動したいんじゃないか、
とエスパーしてみる。
213774ワット発電中さん:2009/02/04(水) 21:24:21 ID:RQN4/20O
212のいうようにやれば、ダイナミック点灯になるけど
他の処理も何かするならタイマつかってやったがいいよ。

PORTB = 0x01;
PORTB = 0x02;
PORTB = 0x04;
〜なんか処理
}
ってすると3個目だけON時間が圧倒的に長くなって他より明るく見えると思う。
214774ワット発電中さん:2009/02/04(水) 21:45:29 ID:q/ed5awj
>>211
あwwwwwwwすみませんwww
>>212さんの通りです。

>>213
なぜ、ON時間が変わってしまうのでしょうか?
よかったら教えてください^^;
215774ワット発電中さん:2009/02/04(水) 21:55:15 ID:TISTLx3z
ループエンドでジャンプが入るから、何もしなくても三つ目のLEDだけ数倍明るく点等しちゃうよ。
タイマー使うのが一番簡単で合理的(他でタイマー使っちゃってると厄介だけど)。
216774ワット発電中さん:2009/02/04(水) 22:04:24 ID:TUrd2+3Y
一応こういうのもありだ
「なんか処理」が長ければ暗くなるが

n=0;
while(1)
{
PORTB = 1<<n;
なんか処理
if (n == 2) n = 0; else n++;
}
217774ワット発電中さん:2009/02/04(水) 22:06:10 ID:TUrd2+3Y
暗くなるというか、ちらつきが目立つようになる、か
218774ワット発電中さん:2009/02/04(水) 23:24:31 ID:RQN4/20O
>>216
べつに本題からしたらどうでもいいんだけど。

n=0x01;
while(1)
{
PORTB = n;
なんか処理

if (n == 0x04) n = 0x01;
else n = n << 1;
}

てやったが、効率がいい。
219774ワット発電中さん:2009/02/05(木) 04:28:07 ID:o4dR/7Pb
「ダイナミック点灯」って何?ダイナミックの意味不明。

もしかして「点滅して見える?」という質問ぢゃ無いのでは?
君のwhile();から「消えないで〜」と言う叫びが聞こえる気がする…

タイマーって言うから「点滅の為のウェイト」かと思ったが、
「一瞬で消えてしまう(と思い込んでる)LEDを、高速に何度も点け直さねばっ!!!」
っと言う事なのでは…

ええとね、PORTB|=1;と一回1を書いたら点く。点きっぱなし。
PORTB&=0xfe;で0を書いたら消えるよ。

点滅させたいなら、
 PORTB|=1; // 点くよ
 for(i=0; i<255; i++); // ウェイトだよ。時間稼ぎ。
 PORTB&=0xfe; // 消えるよ
 for(i=0; i<255; i++);
 PORTB|=1; // また点くよ
 for(i=0; i<255; i++);
 PORTB&=0xfe; // 消える
こんな感じだが…
この時の「ウェイト」を関数にして、中でタイマーを使う事が多いね。
だからみんな「タイマー」と聞いて「点滅だ」と言うんだよ。
220219:2009/02/05(木) 05:18:55 ID:o4dR/7Pb
もしかして、AVRとLEDを抵抗なしで直結する気では…
なんか霊感が冴えて来て眠れないぞ!!

LEDは豆電球と違って抵抗がほとんど無い。銅線と一緒。
例えば電池の+と-にLEDを直結したらショートしちゃう。
だから普通は抵抗を挟む。そういう事はOK?

AVRにはポートのピン毎に「プルアップ抵抗」が内臓されててプログラムでON/OFF出来る。
先人の回路とかを拝見するとAVRにLEDを直結してる事が多いけど、
それは「先にプルアップONにしてからポートを出力に切り替える」
と言うプログラムになってるからショートしない。

いらんお世話だったら御免な。
あ、ついでに…LED点けるなら5Vで。3Vの回路では点かないよ。
221774ワット発電中さん:2009/02/05(木) 07:14:32 ID:DN+Anj5l
3Vでも大丈夫だろ
222774ワット発電中さん:2009/02/05(木) 08:28:38 ID:2vyhT0xD
3VはLEDの色によるかと、赤とかならいけるはず。
223774ワット発電中さん:2009/02/05(木) 08:37:29 ID:/HGVZ4/q
何を言ってるのか意味がわかんない・・・
変な電波受信しないほうがいいよ

ダイナミック点灯は点滅じゃなくて、
省電力とポートの節約でおこなうもの
これの場合はポートは減らないが、点滅させたいって話じゃないよ

あと、プルアップ抵抗をONして出力に切り替えるって
内臓プルアップはポートが入力のとき専用だろ

釣られてんのかな
224のうし:2009/02/05(木) 08:39:36 ID:spA/WcGk
Rなしでもダイナミックならいけることがある。
桁数が多いと各桁を一瞬でフラッシュするように点灯さすからRなしなんてことあった。

またTTL時代とは違って最近のI/O端子は出力に電流制限が
ついているのがある(普通?)からR無しでもいい場合がある。AVRはどうだかわからないけど意外といけたり‥
225774ワット発電中さん:2009/02/05(木) 08:58:30 ID:y5ZMF/vC
>>243
スタティックでもダイナミックでも消費電力は同じだろ
226774ワット発電中さん:2009/02/05(木) 09:04:53 ID:oEN6wUm8
>225
マトリクス組んだら違うと思うが
227774ワット発電中さん:2009/02/05(木) 09:31:39 ID:/HGVZ4/q
全部が同時にONなのと
同時には1個しかONじゃないのは違う

あと、ダイナミック点灯だと全体でのデューティ比を調整することもできる
228774ワット発電中さん:2009/02/05(木) 10:58:25 ID:ZnOqMNy9
>>226-227
スタティック点灯と違い、ダイナミック点灯は実際に点灯している
期間が短くなるから点灯時の電流を増やして輝度を上げる必要
がある。

スタティック点灯と同じ電流(制限抵抗値)では、平均化されて暗く
なる。

発光効率が変わらない限り、輝度は消費電力に比例するので、同じ
輝度条件であれば、消費電力は同等。
229774ワット発電中さん:2009/02/05(木) 12:03:53 ID:jNzLOCMZ
>>224
AT90SなAVRなら状況次第でそれ可能だったんだけど、
megaになってからは無理だな。
230774ワット発電中さん:2009/02/05(木) 12:04:11 ID:x0PEKnti
>>228
平均的にはスタティックと同等の発熱になるからちょっと無理した電流でもおk、ってこと?
231774ワット発電中さん:2009/02/05(木) 12:07:06 ID:oEN6wUm8
>>228
>輝度条件であれば、消費電力は同等。

勝手に条件設定ktkr
232774ワット発電中さん:2009/02/05(木) 12:23:55 ID:/HGVZ4/q
表示器か投光器かでかわるよね。
表示器なら目の残像効果で明るく見える。

例えば8*8のドットマトリックスとか使ったことあれば解ると思うが
各列のデューティ1/8でも十分きれいに見える。
でもスタティック点灯で定格電流の1/8でつけたりしたら相当暗くなるよ。

見た目
スタティックで定格電流>ダイナミックで定格電流>>>スタティックで定格電流/8

みたいな関係になるから、省エネ。
233774ワット発電中さん:2009/02/05(木) 13:05:24 ID:1AVOUcDp
>>220の言っているプルアップ抵抗で電流制限っていうのは嘘ですよね。
できるならすごく便利なんだけど。
234774ワット発電中さん:2009/02/05(木) 13:12:52 ID:jNzLOCMZ
>>233
ものすごーく暗くてもいいなら、できるw
データシート上はmega88でVcc5V、Vf2.0Vの条件で、80μAくらいは流れるはず。

まあ、できないと言った方がいいな。
235774ワット発電中さん:2009/02/05(木) 13:14:50 ID:EmlxMOCH
ちょっと妄想してみた。
LEDのカソード側をGND、アノード側をAVRのポートに接続
ポートをLOW=消灯、ポートをHiZ=点灯(内蔵プルアップ経由で電流が流れる?)
けど内蔵プルアップって50KΩくらいですよね。LEDには0.1mA程度しか流れないか・・・
236774ワット発電中さん:2009/02/05(木) 13:32:31 ID:5uX5xAPE
ピコーン(AAry

100μAで点灯するLED作ればいいじゃん。





って放置してても点灯しそうだがw
237774ワット発電中さん:2009/02/05(木) 13:41:34 ID:4KOAuSMs
>>231
概念的にはそんなもんじぇね?

LEDのデータシートの効率カーブとか
見比べたら色々条件は出てくるけれども。
238774ワット発電中さん:2009/02/05(木) 14:45:31 ID:BF/F9b4B
入出力設定ミスってて、内蔵プルアップで点灯したことあるよ。
赤色なら点滅してるのはっきり分かったけど緑とかじゃ無理かも。
239774ワット発電中さん:2009/02/05(木) 18:06:17 ID:7RkNecsM
>>224
AVRの短絡電流保護はなかなか強力だったぞ@Mega88
回路ミスで出力がGNDに短絡してたことがあったが、普通に動作してたんでしばらく気付かなかったことがある
妙に消費電流が多いんでAVR触ったらかなり熱かったんで気が付いた。その石は今でも元気です
>>230
LEDのデータシート見れば、ダイナミック駆動用の定格が書いてある
連続点灯時の数倍の電流が流せるはず。ちゃんと駆動パルス時間とかも守れよ
240774ワット発電中さん:2009/02/05(木) 18:53:25 ID:EN//mKq0
抵抗とかTrとか面倒くさいので、
3桁7セグLEDのアノードもカソードもtiny2313に直結してドライブしたことある。
PWMで電流抑えるとかも無し。
10時間ほど使ったけど、発熱も無く普通に使えていた。
でも電池の消耗が激しいので、セグメント側に8本抵抗を付けた。
コモン側は二つのピンから出力するようにしてるけど。
241774ワット発電中さん:2009/02/06(金) 00:24:10 ID:ylIbBMfe
>>228
人間の明るさに対する特性がリニアだったらその通りだが,実際は違う.
人間の感覚は対数特性だし残像効果も加わることから,
ダイナミック点灯時にLEDに与える電力量がスタティックのそれと比較し半分程度あれば同じ明るさと知覚できる.
242774ワット発電中さん:2009/02/06(金) 00:44:51 ID:PVg3MQ21
それはLEDの特性にもよるぞ。

平均電流が同じでもダイナミックにすると暗く見えるのと明るく見えるのがある。
243774ワット発電中さん:2009/02/06(金) 09:21:34 ID:pBp5HfmN
じゃあ、スタティックの回路でも点滅させれば電力削減できるんじゃね?
244774ワット発電中さん:2009/02/06(金) 09:39:00 ID:V6URZwn+
それはつまりPWMだな。
245774ワット発電中さん:2009/02/06(金) 13:23:15 ID:ilGQ1ZsM
AVRって最低電圧1.8Vってなってますけど
1.5Vでも動きますか?
246774ワット発電中さん:2009/02/06(金) 13:32:46 ID:J1dxVyft
>>241
>人間の感覚は対数特性だし残像効果も加わることから,

LEDむき出しだとそう思うけど、
チリ紙とかで拡散させると意外とリニアに見えるんだぜ。
247774ワット発電中さん:2009/02/06(金) 13:49:51 ID:J1dxVyft
>>245
乾電池で?

内部1MHzなら行けそうな気もするけど、
ロットや個体差も激しそうなので保障はできませんけど。

1.2Vくらいで死ぬだろうから電池の持ち
は恐ろしく悪いので止めた方がいいと思う。
248774ワット発電中さん:2009/02/06(金) 21:13:03 ID:ilGQ1ZsM
乾電池1本で動かそうとおもったんですけど、やっぱ無理ですか
249774ワット発電中さん:2009/02/06(金) 21:16:50 ID:D1Ui4e2f
乾電池で動かしたいだけなら昇圧で動くよ
250774ワット発電中さん:2009/02/06(金) 21:42:04 ID:8/VsiTML
例えばこんなやつ↓
ttp://strawberry-linux.com/catalog/items?code=12001
で昇圧する
251774ワット発電中さん:2009/02/06(金) 21:53:17 ID:b6QwfVb+
共立で売ってるHT7733AやHT7750Aも0.7Vから動いていいよ。
どれくらい使えるかは実験する必要あるけど。
前に電圧が安定しないとか言ってた人いたけど、ブレッドボードで組んで安定するわけが(ry

http://www.e-netten.jp/eleshop/cgi/search.cgi?syou=DC-DC%83R%83%93%83o%81[%83^&so=3
252774ワット発電中さん:2009/02/06(金) 22:16:17 ID:mGsFtqlo
1Trブロッキングの奴で出来るとパーツ少なくてよさそうなんだけどねー
LEDを繋ぐようなもんじゃないから、あれって不安定かな
253774ワット発電中さん:2009/02/06(金) 22:20:26 ID:H+/tsJmg
乾電池なぁ

液晶時計の工作で1か月は持つってどっかで見て、
自分は7セグで作って006Pで動かしたら(レギュレータで5V)、
1日で電池無くなったなぁ。
254774ワット発電中さん:2009/02/06(金) 22:49:43 ID:zzfyGf4t
ATTiny13Aと最近流行のOLEDで作るとか。
255774ワット発電中さん:2009/02/06(金) 22:58:39 ID:PVg3MQ21
OLEDって流行っているのか…
256774ワット発電中さん:2009/02/06(金) 23:19:32 ID:JBubuu3u
>253
液晶と7セグLEDは全然違うだろ
たとえば秋月のSC1602なんかだとバックライトつけなければ
待機時なら1mAも食わないけど
7セグLEDだとダイナミック点灯で1セグ当たり10mA位流して
平均4セグ位は点灯してるだろうからそれだけど常時40mAとか
食ってないか?
006Pだと500mAh程度だろうから 1日で切れるのは当然だね。
257774ワット発電中さん:2009/02/06(金) 23:29:55 ID:H+/tsJmg
うん。今なら分かるよw
AVR(というかマイコン)さわり始めて初めて時計作ったときの話。
いやー、マンガン電池で1日、アルカリでも1日半で切なかった。

1セグ10mAくらいだったと思う。4桁をダイナミックドライブ。
1桁点灯毎に数msスリープなんて小細工もしたけど焼け石に水だったというw
258774ワット発電中さん:2009/02/06(金) 23:30:31 ID:kAiFWsKL
>>243
それスタテイックって言えるの?
ダイナミック=動的
スタテイック=性的

って事でしょ?
259774ワット発電中さん:2009/02/06(金) 23:51:24 ID:JBubuu3u
>257
うんうん。LEDって省エネってイメージだけどマイコンで省電力動作
させようと思うと、とたんに大電流に思えてくる。
260774ワット発電中さん:2009/02/06(金) 23:57:27 ID:3dcqhqAl
オレなんか、性的にダイナミックだぜ
261774ワット発電中さん:2009/02/07(土) 00:16:54 ID:ean7Wt21
ちじんだりちじんだりするんですね。 わかります・・・
262774ワット発電中さん:2009/02/07(土) 00:31:10 ID:RmheVxgc
>>260
体力持たないので(COM側ポート電流許容値越えるので)
大人のおもちゃに頼る(トランジスタかませる)のですね
263774ワット発電中さん:2009/02/07(土) 01:54:25 ID:AJl4wDAu
低電流化の肝はなんなんでしょうか?
264774ワット発電中さん:2009/02/07(土) 08:55:30 ID:H72UDPiO
AVRだけでいけば如何にクロックを下げるかじゃないかな。
低クロックですめば電源電圧も低めにできるし。
できるだけスリープ掛けるようにしといて、ウォッチドッグも止めて。

これで結構減る気がする。
265774ワット発電中さん:2009/02/07(土) 09:03:06 ID:LfLNamyv
>>257
時計なら、見てないときは光らせる必要ないんだよな。
・・・・焦電センサーつけて人間を感知しなくなってから数分で
表示を止め計時と定期的焦電センサー監視だけにするとか。
トイレの自動照明みたいに、じっとしていると消えそうだけど。



266774ワット発電中さん:2009/02/07(土) 09:53:19 ID:AJl4wDAu
>>264
data sheet みると tiny 2313内蔵RC発振器,CKDIV8=プログラム(0),500kHz

5Vで0.2mA程度なんですけど 1.8mA ながれてますわ
コンパレータOFF 内部基準電圧  etc やっても1.2mA程度
267774ワット発電中さん:2009/02/07(土) 10:10:21 ID:DbXFSTHw
1.8V対応のライタ作ったときに性能評価も兼ねて実施したことがある。
水晶発振20MHz駆動のATTINY2313で1.3V辺りまで落としてもちゃんと動いてた。
1.2Vから怪しくなって1.1Vはほぼ動作不能だった。
268774ワット発電中さん:2009/02/07(土) 12:08:47 ID:LfLNamyv
>>266
それ、アイドル動作スリープ時の消費電流みたいだけど、意図とあっています?
時計みたいなもんなら、スリープをうまく使えば大部分アイドル動作になるはずだとは思うけど・・・
標準動作時なら、0.8mA。それでもちょっと多めですね・・・
269774ワット発電中さん:2009/02/07(土) 16:02:45 ID:ZYre9hw7
>>253
シリーズレギュレータ使った?あれって、出力電流を流さなくてもレギュレータで消費してしまう電流
(quiescent current)が数mA〜10mA程度流れるよ。
006Pだと300mAhぐらいしか容量ないから、無負荷でレギュレータをつないだだけでも30時間ぐらいで
電池切れを起こす。
Low quiescent currentタイプのレギュレータを選べば数10μAまで絞れるけど・・・
270774ワット発電中さん:2009/02/07(土) 19:24:54 ID:61hLWjiV
>>268

どうもです
みるところがちょっと違ってたようですね
271210:2009/02/08(日) 19:28:13 ID:CcwDZge1
遅レスすまそ

>>219-210
>「ダイナミック点灯」って何?ダイナミックの意味不明。
動的点灯、そのまんまだと思いますが。ネトか本か、どこかの資料から
覚えた言葉なのでそこまで特殊な単語ではないと思いますが・・・。

>もしかして、AVRとLEDを抵抗なしで直結する気では…
なんか霊感が冴えて来て眠れないぞ!!
ちゃんと電流制限抵抗を用います。


LEDは豆電球と違って抵抗がほとんど無い。銅線と一緒。
例えば電池の+と-にLEDを直結したらショートしちゃう。
だから普通は抵抗を挟む。そういう事はOK?

すみません、知りませんでした^^;
絶対定格を超えると焼ききれるという知識しかありませんでした。
定格を超えると短絡してしまうんですね。ありがとうございます。

>それは「先にプルアップONにしてからポートを出力に切り替える」
プルアップ回路を制限抵抗の変わりにできるんですね。
じゃあこれを有効にしておけばいいんですね。


272774ワット発電中さん:2009/02/08(日) 20:08:38 ID:t3QtrOsi
>>271
>プルアップ回路を制限抵抗の変わりにできるんですね。

できねえよ
そのレスから下を読めよ
273774ワット発電中さん:2009/02/08(日) 20:29:31 ID:BbKwQa8G
271を初心者質問スレに誘導しなくていいのか?
274774ワット発電中さん:2009/02/08(日) 21:59:34 ID:Sd7YDv09
>>271
キミにはPICがお似合いだよ、さようなら。
275774ワット発電中さん:2009/02/08(日) 22:03:21 ID:71uuX1JA
霊感がさえてる人の話は気にしないほうがいい


LEDってかダイオードは

印加電圧がVf以下:絶縁(R = ∞)
印加電圧がVf以上:Vfの逆起電力 + 導通(R = 0で仮定)

で通常の用途では考える。
だから定格を超えたら短絡するってのは違う。
定格の範囲内でも順方向電圧を印加してれば短絡してるような動きだから。

元のまま、絶対定格を超えたら焼ききれるって考えてていいよ。
276774ワット発電中さん:2009/02/09(月) 00:02:05 ID:uUptCO2s
AVR情報多い-chanさんのpage  http://elm-chan.org/

                         ↑のサイト見れなくない?どうしたの?(´・ω・`)
277774ワット発電中さん:2009/02/09(月) 00:04:32 ID:ZtRXMvg9
>>276
みれますよ。
278774ワット発電中さん:2009/02/09(月) 00:07:41 ID:uUptCO2s
>>277
漏れだけかw orz
279774ワット発電中さん:2009/02/09(月) 02:30:53 ID:dPXTHUlS
うちからだとhttp://elm-chan.org/は、centOS上のapache2のデフォページになる。
http://202.90.11.149/だと真っ白。一時的なものだと思う。
280774ワット発電中さん:2009/02/09(月) 13:14:55 ID:6iXfscM/
AVRのPWM機能を使いたいのですが、
PWMの周期は、タイマー0の場合OCR0(A,B)で決めれるようなのですが、
デューティ比はどのレジスタで決めるんでしょうか?
281774ワット発電中さん:2009/02/09(月) 13:19:48 ID:AFlDJYiN
http://www.nicovideo.jp/watch/sm6090346
キター━━━━(゜∀゜)━━━━!!!!
282280:2009/02/09(月) 13:44:20 ID:6iXfscM/
自己解決しました
OCR0AでTOPを指定して、OCR0BでON時間を指定するのですね(非反転の場合)
283774ワット発電中さん:2009/02/09(月) 13:53:45 ID:LliFSf81
>>281
ELMさんのにもこんなノリのがあったなあ・・・

予想を上回る出来に吹いたw
コメントにも書いたがメッセージ差し替えたライタプログラムも作ってがんがれw
「もう、ISPケーブル外してもいいよね・・・」
「あかん、まだまだや、EPROMとかVerifyとかまだまだやること一杯あるんや」


失礼しました>ポカーンとしている方々
284774ワット発電中さん:2009/02/09(月) 18:02:23 ID:EUZxOQlm
>>283
カードキャプチャーさくらだっけ
285774ワット発電中さん:2009/02/09(月) 19:43:17 ID:wED68fjR
が、がお・・・
286774ワット発電中さん:2009/02/09(月) 22:14:24 ID:6iXfscM/
アニオタうざ
287774ワット発電中さん:2009/02/09(月) 23:53:52 ID:LWc01Asi
出来ない香具師は黙ってろ
288774ワット発電中さん:2009/02/10(火) 00:02:02 ID:Ldotk9kU
なんだ
キモアニヲタ図星かよ

死ねって
289774ワット発電中さん:2009/02/10(火) 00:09:24 ID:RM4lGdLa
>>283
「もう、Writeしてもいいよね・・・」
「あかん、まだまだや、あの機能追加、ここの速度改善、まだまだやること一杯あるんや」
って感じだな・・・

デバッグはいつまでも続いていく・・・・
290774ワット発電中さん:2009/02/10(火) 00:44:03 ID:YNEpWiCX
AIRライタいいな。
オレも一つ自作るか。
291774ワット発電中さん:2009/02/10(火) 00:45:48 ID:n7W/vSpF
ageんなよ、無能。
292774ワット発電中さん:2009/02/10(火) 00:57:12 ID:CLOMUr4M
いいね
293774ワット発電中さん:2009/02/10(火) 01:14:26 ID:SGXYru3V
これだからニコ厨は嫌われる
294774ワット発電中さん:2009/02/10(火) 09:06:07 ID:KglMEk8j
すごいね
295774ワット発電中さん:2009/02/10(火) 20:55:35 ID:kbwyE3vf
プローブをどこにもつないでないのに、時々オシロに波形があらわれることがある
296774ワット発電中さん:2009/02/10(火) 20:57:19 ID:9IUT9AXo
フロート状態ならどんな波形があらわれても不思議じゃありません。
297774ワット発電中さん:2009/02/10(火) 21:41:07 ID:sTRWaKj4
ATmega88 とかのマニュアルにのっている
「本製品での新規設計は推奨されません」って
どういった意味で推奨されないんだろう?
298774ワット発電中さん:2009/02/10(火) 21:43:06 ID:O1+pZDIm
それより新しいデバイスがもうあって、
生産してないからとかかね?
299774ワット発電中さん:2009/02/10(火) 21:52:18 ID:NULyumI4
遠くないうちにディスコンにします。という意味だと思う。
300774ワット発電中さん:2009/02/10(火) 21:56:42 ID:sTRWaKj4
うむー。ATtiny2313には書いてないんだけどね・・・。
う〜ん。そういう意味であれば問題ないですね。
何か新規設計しても長期運用に向かない問題点があるのかと思ってしまった。
>>298-299 安心を有難う
301774ワット発電中さん:2009/02/10(火) 22:13:40 ID:O9LZp+Nl
>>297
ATmega88はATmega88P若しくはATmega88Automotiveへ移行して終息。

#既にATMega88はAtmelの本家AVR Productページには載ってない。

で、ATmega88Pも終息。
つまりATmega88PAにようこそ、って事。
302774ワット発電中さん:2009/02/10(火) 22:16:16 ID:ioZc01UY
Mega88がもうディスコンなのか、早いなぁ。
303774ワット発電中さん:2009/02/10(火) 22:25:57 ID:kbwyE3vf
書き込みにCHANさんのavrsp使ってるんだけど、
デバイスシグネチャが、88は1E-93-0Aで、88Pは1E-93-0Fなので
Unknown Deviceと表示されてしまう
304774ワット発電中さん:2009/02/10(火) 22:27:28 ID:sTRWaKj4
>>303
私もその状態になったのでもう一度ダウンロードして上書きしたら認識したお
バージョンアップされたのかな?
305303:2009/02/10(火) 22:28:53 ID:kbwyE3vf
ソースに自分でデバイス追加して再コンパイルして対処しました
306774ワット発電中さん:2009/02/10(火) 22:29:35 ID:smdDx8ep
秋で売ってるmega88Pも買わず未だに88を使っているよ。壊れんし
307774ワット発電中さん:2009/02/10(火) 22:30:32 ID:kbwyE3vf
88と88Pは何が違うんですか?
308774ワット発電中さん:2009/02/10(火) 22:31:35 ID:sTRWaKj4
>>307
どこかでピコパワーがうんぬんかんぬん書いてありましたね
309774ワット発電中さん:2009/02/10(火) 22:35:20 ID:O9LZp+Nl
>>302
pico power化出来て数が出てる奴は順次pico powerになるんじゃないかな…
310774ワット発電中さん:2009/02/10(火) 22:36:10 ID:/3AWVD73
レジスターも増えてるんだね
311774ワット発電中さん:2009/02/10(火) 22:38:22 ID:kbwyE3vf
汎用レジスタが増えてくれたらうれしいのに
312774ワット発電中さん:2009/02/10(火) 22:42:30 ID:sTRWaKj4
うーん。ADC 16bit版って出ないかな・・。
素直に外にADCつけてtinyかmegaで我慢しろといわれそうだけど
ttp://www.national.com/analog/adc?lang_choosen=ja_JP
313774ワット発電中さん:2009/02/10(火) 22:44:59 ID:kbwyE3vf
そんなに精度が必要なんて、何作ってるの?
俺なんてADCはいつも左揃えで上位8ビットしか使ってないよ
314774ワット発電中さん:2009/02/10(火) 22:48:20 ID:sTRWaKj4
>>313
んー。0〜1023だとレンジ切り替えやらが面倒なので・・・
計測器のほうで使えたらいいなとですね・・・
315774ワット発電中さん:2009/02/10(火) 22:59:06 ID:sTRWaKj4
話の進めをとめてすいません〜。
そろそろ寝ます。安心ありがとうでした
316774ワット発電中さん:2009/02/11(水) 00:33:33 ID:D+vDb4uR
その16bitのうち実質意味があるのは上位何ビットだろう
317774ワット発電中さん:2009/02/11(水) 07:12:30 ID:jK3nlXH+
mega88PAと88Pの違いは
使用電圧範囲の統合だけかな
318774ワット発電中さん:2009/02/11(水) 08:07:48 ID:1MAz88+w
>>316
確かに、4層基板起こさないと意味ない気がするな。
319774ワット発電中さん:2009/02/11(水) 13:22:00 ID:4lyxS7pj
>>314
16ビットADCを外付けするより、MSP430を使った方が安上がりだけどね。

>>318
両面基板でも、片面の大半をベタGNDに出来れば、結構ノイズを抑えられるよ。
320774ワット発電中さん:2009/02/11(水) 13:39:55 ID:1MAz88+w
>>319
アートワークにもよるけれどADC12ビットくらいならベタグラでもいけそうだけど、
ADC16ビットは厳しいと思うけどね。
321774ワット発電中さん:2009/02/11(水) 14:44:25 ID:LKUkDsen
tiny2313って、ADコンバータついてないんですか?
322774ワット発電中さん:2009/02/11(水) 15:29:59 ID:CHiIhzNN
そんなことまでいちいち人に聞いてたらこの先大変だから
データシートは見た方がいいよ。
323774ワット発電中さん:2009/02/11(水) 17:19:40 ID:CHiIhzNN
自分で判断しろやゴルァみたいで感じ悪いんで一応回答w
付いてないよ。
ついでに「tiny2313 ADコンバータ」でググるといろいろヒントが見られる。
324774ワット発電中さん:2009/02/11(水) 19:10:13 ID:DEGy3pJF
tiny261に移行しようぜ
325774ワット発電中さん:2009/02/11(水) 19:29:04 ID:jGZ47ijg
入手性考えたら現実的には秋月で250円で買えるmega88pじゃまいか
ピン配置が気に入らないけど
326321:2009/02/11(水) 23:12:42 ID:LKUkDsen
コンパレータで用が足りました
327774ワット発電中さん:2009/02/12(木) 00:40:41 ID:ykBAUQTJ
>>320
個人で精度、確度ともに12bitちゃんとだせる設備もってるってスゴス
328774ワット発電中さん:2009/02/12(木) 00:47:18 ID:yvEynvQe
新しいマシン買ったので取り合えず使ってなかったwin2000
いれてWinAVR-20081205入れて
今まで作ったプログラム(20060421)をコンパイルして
動かしたら動かなくなった・・・
書き込み環境かと思ったけど2006のバイナリを新マシンで
書き込む分には動くので2008で作ったhexファイルが悪いみたい。
いま調べてる最中なんだけど、2008で気をつけるポイントってあるのかしら?
329774ワット発電中さん:2009/02/12(木) 01:02:40 ID:yvEynvQe
取り合えず2006入れたら動いたけど、謎だ・・・
どこが原因でおかしいのか調べるにもプログラムが
でかいので調べる気がおきない・・・

こんど暇になったら調べてみるか・・・
330774ワット発電中さん:2009/02/12(木) 01:21:29 ID:Nnqp32pk
どうせ最適化とかそのあたりじゃねぇの?
331774ワット発電中さん:2009/02/12(木) 01:45:40 ID:73D5cUFe
最適化が原因なら、割り込み内や空ループで使う変数にvolatileを付ける。
WinAVRの最近のバージョンから影響が出るようになった気がする。
動くようになったら、廃止されたマクロとか定数定義も置き換えかな。
332774ワット発電中さん:2009/02/12(木) 04:13:14 ID:NTEk9kLa
>>328
「Win2000」の時点で間違ってる気がする。
333774ワット発電中さん:2009/02/12(木) 07:58:30 ID:6WlBdv8V
Win2Kでも関係ないっしょ
334774ワット発電中さん:2009/02/12(木) 08:56:26 ID:IXimSGJ5
>>328
20060421で正常に動いていたインラインアセンブラのプログラムが
20081205では正しく動かない。(コンパイルエラーにはならない)
原因はまだわからないが、2008では動かない。
335774ワット発電中さん:2009/02/12(木) 10:35:51 ID:YVKi0JXW
大方クロバーリストに入れるレジスタが足りてないとかだよ
レジスタの使い方が変わって今までたまたま動いてたのが動かなくなったと
336774ワット発電中さん:2009/02/12(木) 11:03:27 ID:0Uh9XW4H
>>334
両方のアセンブラリストを比べればわかるんじゃないか?
337774ワット発電中さん:2009/02/12(木) 22:39:01 ID:GgYTXn4p
Automotive AVRなんてシリーズがあるけど
車載用ってことだよね?
採用実績はあるの?
338774ワット発電中さん:2009/02/13(金) 01:13:35 ID:hQ+feEv/
329です。 情報どーも。
確かにvolatile付けてない変数もそれなりに
あったからそれかも・・・
液晶の制御なんだけど、画面がぐちゃぐちゃになる・・・
インラインアセンブラは使ってません。

原因の場所がわかればそのコード比較すればわかるけど、
コードがデカいんで挫折中。
わかったら報告します。
339329:2009/02/13(金) 01:15:11 ID:hQ+feEv/
もしかして2006のmakefileまんま2008で使ったからかな・・・
makefileの中なんて殆ど見てないや。
340774ワット発電中さん:2009/02/13(金) 01:50:44 ID:wm70EBn0
331です。
念のためなるべく正確に伝えると、
割り込みルーチン外で宣言していて、割り込みルーチン内で値を変更する変数にはvolatileを付ける、
のつもり。

ちなみに自分の環境は、WinAVR-20080610、WindowsXP-Pro-SP3
341774ワット発電中さん:2009/02/13(金) 07:12:53 ID:eo/4eM96
>>338
wait関連のトコロを_delay系に書きかえる、とかだね。
342774ワット発電中さん:2009/02/13(金) 09:46:21 ID:qaFh6l6F
>>338-339
F_CPUマクロ変数使っていて、それが違う値になっているとかは・・・ないのか。makefileはそのまま使っているのだな
あとはウェイトループが最適化次第で待ち時間が変わってしまうようなものを使っているか。

343774ワット発電中さん:2009/02/13(金) 12:41:21 ID:Nc4X6BEq
>>340
> 割り込みルーチン外で宣言していて、割り込みルーチン内で値を変更する変数にはvolatileを付ける、
> のつもり。

自分は以下のような目に遭いました。

typedef struct
{
char prm1;
char prm2;
} FOO;

volatile FOO gFoo;

割込み中で gFoo.prm1=1; にして、メインループで

while(1){

if (gFoo.prm1==1){
 (処理)
 break;
}
}

としたら gFoo.prm1=1 になったのにブレイクしなかった。
アセンブラソースを見ると while ループの直前に gFoo.prm1 をレジスタに
代入してループ内ではレジスタしかチェックしてなかった。

typedef struct
{
volatile char prm1; ←ここに volatile をつける
char prm2;
} FOO;

としたらちゃんとできた。
344774ワット発電中さん:2009/02/13(金) 12:53:25 ID:o9y0Vnd5
>>343
こういうの困るなあ
gcc自体のバグなのか仕様なのかAVRポートにバグがあるのか
こんな穴があったら眠れなくなるじゃねーか
gccのバージョンいくつですか?
345774ワット発電中さん:2009/02/13(金) 13:30:03 ID:wm70EBn0
>343は
>としたら gFoo.prm1=1 になったのにブレイクしなかった。
まで読んだ時点で先がわかって、
>volatile char prm1; ←ここに volatile をつける
こうするものじゃないかと自分は気付いたけど、
これはバグでも穴でもなくvolatileの付け所はもともとこういうものだと思うのだが。
346774ワット発電中さん:2009/02/13(金) 13:36:46 ID:qaFh6l6F
>>344
最適化では、どのルーチンが割り込みで実行されうるかというところまでは把握せず
単にそのルーチンの流れに沿って見て、その範囲で変更され得ないと判断したらそのように扱うと言うことだろうな。
(ここではwhile節内にgFoo.prm1を書き換える処理がない=>一度だけレジスタに入れてそれチェックで充分)
割り込みで変えられて、それをチェックするなら、そういう変数にはみなvolatileつけろってことだろう。
もしもmain側に初期設定としてgFoo.prm1=0;なんてのがあれば、if分毎最適化でなかったことにするのかも。
347774ワット発電中さん:2009/02/13(金) 14:31:06 ID:o9y0Vnd5
>>345
じゃあ構造体にvolatile付ける意味は何すか?
348343:2009/02/13(金) 15:00:18 ID:Nc4X6BEq
>>345
> これはバグでも穴でもなくvolatileの付け所はもともとこういうものだと思うのだが。

もしかして

volatile typedef struct
{
 char prm1;
 char prm2;
} FOO;

て書いてたら良かったの?
349774ワット発電中さん:2009/02/13(金) 15:04:14 ID:wm70EBn0
>347
構造体の代入をするとき。
「volatile 構造体」でググるだけでもいろんなことが出てくる。
350774ワット発電中さん:2009/02/13(金) 15:11:58 ID:wm70EBn0
>348
「volatile 構造体」でググってみるとまさに例が出てくるよ。

こういった話だともうCのスレ行った方がいいかな。
351774ワット発電中さん:2009/02/13(金) 15:12:07 ID:o9y0Vnd5
http://www.ed.kuki.tus.ac.jp/cgi-bin/vahwebx.exe/Ja_JP/cforaix/Extract/0/caix/language/ref/declarations.cv_qualifiers.htm
>const および volatile 修飾子が構造体、共用体、またはクラスに
>適用されるときは、構造体、共用体、またはクラスのメンバーにも適用されます。

だと認識してたけど。

ChaN氏の
http://elm-chan.org/docs/avrlib/suart.zip
この辺のコード見ても構造体メンバ変数にはvolatileは付けてないし。
どういう事ですかね?
352774ワット発電中さん:2009/02/13(金) 15:13:39 ID:o9y0Vnd5
>>349-350
具体的に判りやすい例を1つ挙げてもらえませんかね。
ググってもgccのバグとしか思えないんで。
353774ワット発電中さん:2009/02/13(金) 15:49:07 ID:qaFh6l6F
>>352
たぶん、>>343のようなコードだと、gFooという変数=gFoo.prm1/prm2があるアドレスに対するvolatile属性がつくだけなのでは。
つまり、構造体を指し示すアドレスは変更されるかも知れないと考えてくれるが、
アドレスの示す先のデータが突然変わるなんてことには無頓着だとか。
まあそれでも内容が変わりうるには違いないので、本当は構造体内の変数全部volatileにならないと変じゃないかとは思うのだけど
実際あちこちのコード例見ると、AVRGCCに限らず、メンバーにvolatileつけてるのがあたりまえってことは、それが暗黙の了解なのかなと・・・・
volatileをちゃんと解説してる本なんて持ってないからよくわからない・・・
354774ワット発電中さん:2009/02/13(金) 15:50:14 ID:o9y0Vnd5
一応ム板に質問してみた
http://pc11.2ch.net/test/read.cgi/tech/1233962622/193


ヘタなコードの書き方
http://pc11.2ch.net/test/read.cgi/tech/1208010023/241
>で、全メンバに同じCV修飾子をつけるなら、構造体自体を
>修飾したほうが素直だろってこと。

何を信じたらいいんだw
355デフォルトの名無しさん:2009/02/13(金) 16:08:27 ID:BGBIb36w
型修飾子は、常に変数に対して作用する。
だから、「volatileな構造体型」というものを定義することはできない。
「volatileな構造体変数」を宣言するか、「メンバ変数がvolatileな構造体」を定義すること。
356デフォルトの名無しさん:2009/02/13(金) 16:11:08 ID:BGBIb36w
ごめんよく見てなかった、構造体につけてるね。
バグだと思う。
357774ワット発電中さん:2009/02/13(金) 16:27:47 ID:o9y0Vnd5
>>353
そういやlinuxのカーネルソースにも
こんな感じの怪しいvolatileがあった気がする。
こういうとこでコンパイラを信用できないのは辛いなあ。

手元のプログラミング言語C++のリファレンスの型指定子の説明には
「volatile配列の各要素はvolatileであり、volatileクラスオブジェクトの
関数でない非静的メンバはそれぞれvolatileである」とある。
K&Rには「それは最適化に関係のある特別な性質をもつことになる」としか書いてない。

>>355-356
ありがとうございました。
358774ワット発電中さん:2009/02/13(金) 17:04:52 ID:t4lMC0Pe
>>355-356
テキトーな回答すんな、迷惑だろが

K&Rの定義ではvolatile型修飾子は最適化を抑制するべきものとされているが
ANSI C規格においてはその実際の動作は処理系定義であるとされている
つーわけでgccのマニュアルに書いてあれば仕様、なければバグ
359774ワット発電中さん:2009/02/13(金) 17:12:59 ID:o9y0Vnd5
>>343
ところで、この時のWinAVRのバージョン覚えてたら教えてくれないかな。
うちのWinAVR-20081205(-Os、-O3)では再現しなかった。

while(1){
if (gFoo.prm1 == 1) {
lds r24, 0x0094
cpi r24, 0x01
360343:2009/02/13(金) 17:33:42 ID:Nc4X6BEq
>>359
> ところで、この時のWinAVRのバージョン覚えてたら教えてくれないかな。
> うちのWinAVR-20081205(-Os、-O3)では再現しなかった。

20060421 で オプションは -03 でした。
361774ワット発電中さん:2009/02/13(金) 18:50:42 ID:vAJhAGsu
gFoo.prm1をwhileを抜けた後で参照(書き込み)してるとか?
362774ワット発電中さん:2009/02/13(金) 19:09:34 ID:WY5JVTPp
う−ん
俺も構造体メンバにvolatile指定することはあっても
丸ごと指定するっていう発想は無かったな
363774ワット発電中さん:2009/02/13(金) 20:05:33 ID:nQfBLjhC
>359,360
WinAVR 20050214 (gcc 3.4.3)、avr-gcc 3.4.3, 4.3.2 でも再現しない。
volatile の解釈は正しく >351 になっていた。
i386用だが 4.1.3 も同上。最適化かえてみたが同じ。
364774ワット発電中さん:2009/02/13(金) 20:05:33 ID:kM9VrWUX
俺は丸ごと指定する派
365774ワット発電中さん:2009/02/13(金) 22:39:35 ID:lQN8zQcn
volatileなんて使うぐらいなら、全部アセンブラで書いた方がすっきりすると思う
366774ワット発電中さん:2009/02/13(金) 23:59:20 ID:o9y0Vnd5
>>360
ありがとうございます。
インスコ失敗したんでちょっと確認できませんでした。
367774ワット発電中さん:2009/02/14(土) 10:50:35 ID:EtI/XEj0
>>365それは極論

俺も丸ごと派
メンバにvolatileなんて考えたこともなかった
勉強になるわ
368774ワット発電中さん:2009/02/15(日) 12:33:42 ID:QtT2092p
秋月でATmega88Pを買う予定なんですが、
ATmega88PってATmega88とは刻印で区別が付くでしょうか?


369774ワット発電中さん:2009/02/15(日) 14:23:42 ID:I+zFWVQL
秋月のATmega88っていつから「P」になったんですか?
370774ワット発電中さん:2009/02/15(日) 14:37:30 ID:wVK1SEQb
一時 在庫切れになったけど そこからだとおもう
在庫切れ前なので おれのはP無し
371774ワット発電中さん:2009/02/15(日) 15:13:48 ID:inM9fp4H
>368
俺のは88Pだった(買ったのは先月)
ttp://aikofan.dee.cc/aiko-densi/src/1234678139055.jpg
ちゃんと刻印にPついてる
372774ワット発電中さん:2009/02/15(日) 15:21:58 ID:FKDo7uuM
およそ1年前から P みたいだな。発売日 2008/02/18
ttp://akizukidenshi.com/catalog/g/gI-02268/
373774ワット発電中さん:2009/02/15(日) 15:26:17 ID:wVK1SEQb
2−3ヶ月前にかったけど Pありがあるなんて知らなかった・・・・
374774ワット発電中さん:2009/02/15(日) 15:52:10 ID:aWPBRpXz
前からあるやつの発売日おかしいよね

375774ワット発電中さん:2009/02/15(日) 16:15:25 ID:aEsTn3nM
割と最近、mega88の在庫切らしたじゃん。そこからmega88Pに変わったんじゃないかな。
発売日2008/02/18はmega88(Pなし)を取り扱い開始した日なんじゃない?
で、サイトリニューアルのタイミングで商品名称変更と説明補足と。

在庫切らす直前にたまたま店頭でmega88買っていたが、その時点ではmega88Pは無かったよ。
376774ワット発電中さん:2009/02/15(日) 16:23:41 ID:j4M/dy1y
>>375
リニューアル前にmega88(P無し)を注文したら、P付きが届いたよ。
んでメールしたでふ。(当時)いま発注分は全てP付きになっています。
サイトの更新が間に合っていませんとのことでしたでふ
377774ワット発電中さん:2009/02/15(日) 16:45:11 ID:aEsTn3nM
なんと。じゃぁ自分の勘違いかな。

在庫切れのレスがあった気がするので遡ってみたw
>244 名前:774ワット発電中さん[sage] 投稿日:2008/11/08(土) 22:41:23 ID:02r3Hgjc
>秋月のmega88売り切れって誰か100個買いでもしたんかー

自分が買ったのは2008/11/01で、これはmega88(Pなし)。
そういえば、店員に「メガはちはち下さい」と言って取ってもらった気がするので、
88Pがあったとしても88(Pなし)を渡してくれたのかもなぁ。
378774ワット発電中さん:2009/02/15(日) 16:50:07 ID:aEsTn3nM
あ、いや待て、>375と>376は別に矛盾してないな。
在庫切れの時に88Pに変わったと仮定して、次回入荷が2008/11/08以降。
サイトリニューアルは2009/01/26。

…ていうかどうでもいいですね。スマヌ。
379774ワット発電中さん:2009/02/15(日) 16:52:35 ID:j4M/dy1y
まぁ、でも秋月は良心的だったよ。
メールしたらmega88(P無し)をわざわざ送ってきたよ。
返信用封筒付いてたからmega88Pを送り返したけど。
380774ワット発電中さん:2009/02/15(日) 19:53:38 ID:VzVwGXYB
ATMEGA168のアナログ入力ピンの最大定格って何Vですか?
仕様書にはVccと書いてあったと思うのですが、これ以上かけると壊れてしまうのでしょうか?
381774ワット発電中さん:2009/02/15(日) 20:30:20 ID:ErIALUdW
Reading signature .. 0x00, 0x00, 0x00 .. OK!
382774ワット発電中さん:2009/02/15(日) 20:32:58 ID:siCxzQSz
アナログ入力の最大定格ってVcc+0.5Vくらいじゃなかったけ?

「絶対最大定格」ってのはそこに書かれている以上の
電圧とか電流とかを、一瞬でもかけたり流したりすると
機器はあぼーんするよって言う数値なので
建前上は「壊れる」

でも俺は実際に絶対最大定格を越えた値で使ったことが無いので
実際のところはどーよ?ってつっこまれると
「壊れるんじゃないかな? ま、ちと覚悟はしておけ」
としか言えない。
383774ワット発電中さん:2009/02/15(日) 20:34:03 ID:YtvD+3nd
13Vまでおおけえです
384774ワット発電中さん:2009/02/15(日) 20:35:56 ID:ZRKpghZ4
ピンにVCC以上掛けたら保護ダイオード通ってVCCのほうに流れていくだろ
Vcc+0.5Vくらい の 0.5Vくらい はダイオードの電圧降下分。
385774ワット発電中さん:2009/02/15(日) 20:38:03 ID:wVK1SEQb
>>383

一瞬で壊れました
386774ワット発電中さん:2009/02/15(日) 20:39:03 ID:gzK4TTuf
1023VまでOKです
387774ワット発電中さん:2009/02/15(日) 22:49:38 ID:ErIALUdW
AVR ISPmk][でもAVR WRT2でもArduinoDuemilanoveからもsignatureが「00,00,00,00,」になっちゃうんだけど
コレってチップ自体がダメぽ?
388774ワット発電中さん:2009/02/16(月) 02:59:11 ID:4W1l5XFH
>>387
ロックビットが設定されてたらデバイス自体が認識しないんだっけ。
00,00,00,00になるってどういう状態なんだろうね?私も知りたい
389380:2009/02/16(月) 09:00:46 ID:UtthB8ht
そうですか、、
アナログの測定対象がVcc以上になる時があるので
分圧でもした方がよさそうですね。
390774ワット発電中さん:2009/02/16(月) 09:12:37 ID:vb1VXlYF
>389
適当な抵抗噛まして,過電流さえ対処しとけば大丈夫。
(A/D端子はVCC+0.5V迄しか上がらない)
391343:2009/02/16(月) 09:29:40 ID:QyeeIfCb
343 です。

>>344-367 あたりでアドバイスをくれた皆さん、お騒がせしてすみません。

問題になったソースを確認してみましたが、私の勘違いだったみたいです。

typedef struct
{
 …
} FOO;

volatile FOO gFoo;

この書き方は思った通りに動く事を確認できました。

volatile typedef struct ←ここに volatile を書いてもダメ
{
 …
} FOO;

FOO gFoo;

これはバグではなく正しい解釈という事です。
392774ワット発電中さん:2009/02/16(月) 09:42:57 ID:7u8G0cBl
>387
ISPプロセス初期段階のリセット失敗。
ISPではリセットを速いパルスで叩くけど、比較的ハイインピのラインなので
回路によっては内部的に L に落ち切れなくなる。
保護ダイオードに過電流がながれてたりとか、
入出力端子に巨大なキャパシタが直接ぶらさがってたりとか。

どっか(ISP周り以外の)回路がおかしいから配線をみなおせ。
393774ワット発電中さん:2009/02/16(月) 11:01:17 ID:wW5Jmvr0
>>389
Vcc以下とそれ以上について、どちらも精密に測りたいのか、Vcc以上は測れなくてもいい(壊れなければ)のかで話が違うかな。
前者なら、分圧などで制限、
後者なら、制限抵抗(+できれば外付けのダイオードクランプ)

394774ワット発電中さん:2009/02/16(月) 12:03:36 ID:9ikJNwv2
13VはH8系のネタでした。
395774ワット発電中さん:2009/02/16(月) 13:53:19 ID:Tp7b2EMX
>>392
いやそれがブレッドボードでやっても同様なんダス。
共立AVRボードとかでも同様だったス。

ISPのライタしか持ってないのも今後困るだろうしって事で一応AVRドラゴン注文しておいたっス。
396774ワット発電中さん:2009/02/16(月) 14:07:33 ID:yodpoFUW
>>387
Vcc繋がってないとそんなんなった希ガスw
まさかとは思うが念の為
397774ワット発電中さん:2009/02/16(月) 14:18:34 ID:wW5Jmvr0
本来Vccはつなぐものじゃないとは思うけど、
ターゲット側のVcc給電は必要だし、それがライターのVccとあってないとおかしいことになるんだろうな・・・
ターゲットに電源亡ければVccもつなぐ事になるだろうし。

IOピンの保護ダイオード経由で中途半端に給電されちゃって中途半端に動くことはあるらしい。
398774ワット発電中さん:2009/02/16(月) 14:43:43 ID:Tp7b2EMX
ISPのVccって電源検出用だと思ってた。
Advancedで出てくるアレの。

と言うか、Vcc入れてないとAVR ISPmk][がそもそも使えなかった気がするっス。

ライタのVccってUSBバスパワーなのかな…?(AVR ISPmk][)
だとしたら、合わせるってなるとライタからVcc引っ張り出せるようにしないと?

新品未使用(多分。買ったまま)のヤツでも同様の現象があるんで
多分、どっか俺が間違えてるんだと思うんスけど、ブレッドボードから直接ISPにブスブス刺してもなるんスよね…。
共立さんが出荷の時点でリセット無効とか書き込み禁止とかになってるって事ってないっスよね?
399774ワット発電中さん:2009/02/16(月) 14:56:07 ID:h4zALqGd
ISPコネクタのVCCはISP用信号のレベルコンバータに使われていると思いますよ
400774ワット発電中さん:2009/02/16(月) 15:06:08 ID:wW5Jmvr0
>>398
ブレッドボードでやるときの回路図というか結線図を書いてみそ
401774ワット発電中さん:2009/02/16(月) 15:16:28 ID:wW5Jmvr0
AVRISPmkIIの場合は1.8〜5.5Vという幅広い電圧に対応するために
ターゲット電圧を取り込んでいるんだろうね。
ターゲットに電源供給してしかもVccを接続しないといかんということか。
402774ワット発電中さん:2009/02/16(月) 15:21:47 ID:Tp7b2EMX
>>400
職場なんで図は描けませんですorz

ISPコネクタからジャンパ線でMISOやらMOSIやらそれぞれ直接ぶち込んで
VccとGNDは外部から5Vのアダプタで、0.1μパスコンに。
VccとGNDはアダプタからとISPのVccとGNDに。
Arefは何も繋がず宙ぶらりんで。

って感じです。
今になって気付いたんスけど、AVccとAGNDってNCです?
403774ワット発電中さん:2009/02/16(月) 15:26:07 ID:r7rqfvKp
>>402
RESETは?
404774ワット発電中さん:2009/02/16(月) 16:33:42 ID:7bZHSpuV
>ISPコネクタからジャンパ線でMISOやらMOSIやらそれぞれ直接ぶち込んで

うっかり逆だったり、とか?
405774ワット発電中さん:2009/02/16(月) 16:35:13 ID:Tp7b2EMX
>>403
直結のみも、プルアップもダメでやんした。
ちなみにATmega168で。
406774ワット発電中さん:2009/02/16(月) 16:37:35 ID:Tp7b2EMX
>>404
一度、うっかり逆でダメだったんで入れ替えてリトライしたのですが、やっぱりダメでやんした。

まさかここまで皆様に親身になって頂けるとは…感動です!
407774ワット発電中さん:2009/02/16(月) 16:56:25 ID:h4zALqGd
ATmega168のデータシートを読む
Notes: 2. VCC - 0.3V < AVCC < VCC + 0.3V, however, AVCC should always be within 1.8 - 5.5V
とあるけどAVCCの処理は?
408774ワット発電中さん:2009/02/16(月) 17:02:39 ID:Tp7b2EMX
>>407
Vcc→AVcc
GND→AGND
といった具合に繋いでました。
409774ワット発電中さん:2009/02/16(月) 19:16:17 ID:ELSF6rxw
まさか発振してないなんて基本中の基本からミスってることは……ないよな、うん。
410774ワット発電中さん:2009/02/16(月) 19:45:17 ID:eWyHrMP0
AVR RWTでねちっこく見たらリセット無効になってました。お騒がせして申し訳御座いませんでした!
411774ワット発電中さん:2009/02/16(月) 20:05:31 ID:T1Rq75Pa
ID変わってんぞ?
412774ワット発電中さん:2009/02/16(月) 20:36:54 ID:pkK0UX0t
ATmega644PでRTCを使いたくてデータシートを読んだのですが、いまいち理解できませんでした。
RTCはタイマーのクロックとして32kHzを使用させるという解釈でいいのですか?

具体的にレジスタをどのように設定すればいいのでしょうか?
413774ワット発電中さん:2009/02/16(月) 20:48:32 ID:pkK0UX0t
追記
32kHzの発振器がマイコンの中に内蔵されていて
専用レジスタの設定で、それをタイマーの発振源
に変更するのでしょうか?

それとも、外部に用意されたクリスタルを
指定されたピンに接続してそれをタイマー
の発振源にするのでしょうか?
414774ワット発電中さん:2009/02/16(月) 21:16:44 ID:ECX59xGm
どっちでも使える
クロックソースの設定はレジスタじゃなくてヒューズで行う
415774ワット発電中さん:2009/02/16(月) 21:59:11 ID:srZ8CYCL
LM35ってピン間違えるとチンチンになるね。
精度狂ったかな?
416774ワット発電中さん:2009/02/16(月) 22:20:01 ID:jyuzsDTa
今、tiny2313を利用したちょっとした工作で、PD5に接続された
トランジスターの1秒あたりのON(PD5がloになる)時間を計測し、
0.7s以上loの時とPD5のlo時間が0.4s以下の時とloの状態が0.4s〜0.7s以内続く時の
3つの状態によってそれぞれ分岐をさせるプログラムを作りたいのですが、
どんな命令を使用したらいいか分かりません。

どなたか、何かヒントになりそうな意見ございませんか?

助言、指摘なんでもかまいませんのでよろしくお願いします
417774ワット発電中さん:2009/02/16(月) 22:53:40 ID:f6EkYecE
>416
ループでも割り込みでもいいけど一定間隔でPD5を監視して"H"だったら
カウンタ+1して。
1秒後にカウンタの値で分岐すばいいんじゃない(カウンタクリアも)
ピン変化割り込み使うと軽くなりそうだけど、PD5じゃ使えないか。
それにしてなぜPD5固定?
418416:2009/02/16(月) 23:03:59 ID:jyuzsDTa
>>417
>それにしてなぜPD5固定?
プリント基板を作ってから割り込み変化に気付きました^^b

PD5のままで、なにか良い方法はないものでしょうか^^;
419774ワット発電中さん:2009/02/16(月) 23:22:05 ID:yodpoFUW
だから・・・例えば10ms毎のタイマ割込みでサンプリングして
1秒(100カウント)中にPD5=Loのカウント数(〜39, 40〜70, 71〜)
で分岐すれば・・・ってこと。
420774ワット発電中さん:2009/02/16(月) 23:24:10 ID:tLx4ob2I
タイマー割り込み使って、10msくらいの割り込みで無限カウンタ(PD5アサート0でも可だが)で
ニゲート時の数値比較ですんなり行くんじゃないの?
タイマー無いなら無限ループ中でそういう事をすればOKだと思うが。
421774ワット発電中さん:2009/02/17(火) 00:41:18 ID:FrVPb0ea
タイマーの使い方をまだ熟知してないようだな
422774ワット発電中さん:2009/02/17(火) 00:43:40 ID:FrVPb0ea
DIPのチップとブレッドボードで試作してからプリント基板に移した方がよかったのでは
あとAVR Studioにデバッグ機能があるから、それである程度は確認できる
デバッグ機能ははじめて使う人にはとっつきにくい感じだけど、
これ使いこなせないようじゃこの先大きなプログラム組むときに大変だよ
423774ワット発電中さん:2009/02/17(火) 03:54:21 ID:6785rpBI
>>416
cnt=0;
for(i=0; i<10; i++){
 if(!(PIND&0x20)) cnt++;
 wait100ms(1); // ウェイトは>>180のリンク参考汁
}

if(cnt<4){ // 〜0.4s
} else if(cnt<7){ // 0.4s〜0.7s
} else { // 0.7s〜1.0s
}

単純に、これで良いという話?
あ、スペースは全角だから。ソースにコピペしないでね
424774ワット発電中さん:2009/02/17(火) 11:05:01 ID:aBLDB7NK
>>416
>トランジスターの1秒あたりのON(PD5がloになる)時間を計測し、
うーん、その信号のLo/Hiの持続時間はそれぞれどれくらい?
Loが0.7sec続いてHiが0.3sec続くようなのなら>>423でいいけど、
Loが7msec続いてHiが3msec続くようなのなら、これではだめになる。


425774ワット発電中さん:2009/02/17(火) 15:34:14 ID:BLyykUkl
ICPでいいじゃん、と思ったらピン限定か。じゃぁポーリングかなぁ。PD6だったらICPが使えたのにねぇ
426774ワット発電中さん:2009/02/17(火) 15:49:16 ID:MsllW4N4
ジャンパ飛ばせばいいんじゃね?
427774ワット発電中さん:2009/02/17(火) 15:53:21 ID:ESXZGTV7
1秒あたりなんだから1秒計測しておしまい、ってわけにはいかないのでは。
cntが連続していくつになるか数え続けて、
PD5状態が変わった時に条件分岐する処理になるかと。

cnt = 0;
for (;;) {
 if(!(PIND&0x20)) { // Tr = ON (PD5=lo)
  cnt++;
  if (cnt >= 7) {
   cnt = 7; //オーバーフローを防ぐ
   // OFFが0.7s以上
  }
 } else {
  if (cnt < 4) {
   // ONが0.4s以下
  } else
  if (cnt < 7) {
   // ONが0.4〜0.7s以下
  }
  cnt = 0;
 }
 wait100ms(1);
}
428774ワット発電中さん:2009/02/17(火) 15:56:04 ID:ESXZGTV7
ごめん
×OFFが
○ONが
429774ワット発電中さん:2009/02/17(火) 18:27:02 ID:KooFZhiW
もしかしたら、416は電波時計作ってるのかな?
トランジスタで受けて、1,0,マーカーを識別するとか。
430774ワット発電中さん:2009/02/17(火) 19:28:05 ID:aBLDB7NK
>>429すげ
431774ワット発電中さん:2009/02/17(火) 19:36:19 ID:MqIjCt1X
例えば350msのONのとき、wait100msだと読むタイミングで
3回カウントしたり4回カウントしたりするので
wait10msやwait1msにしないと精度がでないよ。
432774ワット発電中さん:2009/02/17(火) 19:51:48 ID:FrVPb0ea
エスパーがいるスレはここでつか?
433423:2009/02/17(火) 21:55:38 ID:6785rpBI
もはや416の思惑とは別次元かもしれませんが…

>>431
最初にwhile(PIND&0x20);してHiのあいだ空ループ、
ループを抜けた直後から等間隔なら、
あまり高レートにしなくても制度は確保できると思う。

仮に>>423をdata_read();という関数にしたとして、
main()
{
 while(1){
  if(!(PIND&0x20)) data_read();

  // 他の処理
 }
}
データを取りこぼすようならdata_read();の先頭で
wait1ms(5);とかしてタイミングをチとズラすとかする。

ここまで書くと俺が良く作る赤外線オモチャの受光部アルゴリズムまんまだよ。
4倍レートでサンプリングして何カウント?みたいな判定で誤動作してない。

この手のプログラムって、やたらタイマー使いたがる人が多いけど
wait+loopで済むならその方が単純明解だし、
他のマイコンにも移植しやすいソースになると思うんだよね。
434774ワット発電中さん:2009/02/17(火) 22:08:14 ID:TtehREVT
光速?
435774ワット発電中さん:2009/02/17(火) 22:10:21 ID:CyqPMjsE
436774ワット発電中さん:2009/02/17(火) 22:50:48 ID:Z0iuB0tH
> wait+loopで済むならその方が単純明解だし、

うっわ〜素人くさ〜
437431:2009/02/17(火) 23:19:56 ID:MqIjCt1X
>>433
Lエッジからならwait100msで問題ないです。
data_read();中は /*他の処理*/ が1秒間止まるので用途によっては心配かな。
438774ワット発電中さん:2009/02/18(水) 00:09:31 ID:NWz2dh0j
2313Vって時計用の32Khz水晶できちんと駆動するもんですか?
まだ9個あまってる>32Khz水晶
439774ワット発電中さん:2009/02/18(水) 00:28:27 ID:PVQLpuq2
適材適所.
必要がないのにわざわざタイマ割り込みを使わなくてもいい.
440774ワット発電中さん:2009/02/18(水) 11:48:34 ID:GsYq/EvV
>>433
>この手のプログラムって、やたらタイマー使いたがる人が多いけど
スリープ使いたいならタイマーは避けて通れないと思うよ。
ループだと電力浪費しまくる。
表示器がLEDとかFLで常時表示とかだと、関係ないけど。
441774ワット発電中さん:2009/02/18(水) 13:01:20 ID:/0I5zM/d
>>439
そんなコジキハウスみたいなのやめて、
基礎設計しようや。
442774ワット発電中さん:2009/02/18(水) 13:43:37 ID:T94y6Xo5
タイマー使えるときには大抵タイマー使っちゃうな。

一見意味不明なエラーが出るときもたまにあるけど、
それでも開発の効率が目に見えて落ちるほど難しい仕掛けではないと思う。タイマーって奴は。
443774ワット発電中さん:2009/02/18(水) 13:51:11 ID:RjutqNe8
他の処理も考慮せずに平然とwait100msなんて使うべきでない.
444774ワット発電中さん:2009/02/18(水) 17:56:49 ID:nDjW8XkC
玄人の振りをして結局何も意見出してない>>436が居るスレはここですか?
445774ワット発電中さん:2009/02/18(水) 22:15:06 ID:s+941Uei
>>443
俺、結構そういう処理入れちゃうけど、タイマー利用(?)とかで
みなさんどういう風にコーディングします?
自分の場合、例えばだけど、タイマーは7Segダイナミック点灯させておいて
main処理では平気でWait1secとかガシガシ入れたりする。
他の例は、バッファに入れた文字列をタイマー周期でUART出力とか…。
446774ワット発電中さん:2009/02/18(水) 22:33:41 ID:/0I5zM/d
タイマーの分解能以下ならWaitは必要かもしれないけど、
それ以上はタイマーを使用してフラグ管理するべき。
無駄なWaitは今後の拡張性を阻害する。

また、割込み中の処理は必要最小限に留め、
速やかに開放し、割り込み同士の衝突をなるべく避ける。
割込み同士が衝突せずとも待たされてブレが生じるので。

メインループはそれぞれの処理をひたすら呼ぶ。
メインに列記された擬似スレッド関数内ではFuncで
状態に応じた処理を施す。

一般的にはこんな感じ。
447774ワット発電中さん:2009/02/18(水) 23:23:51 ID:NLVcLq+4
>>445
いや、タイマー処理入れておいてループでウェイトとったらずれちゃうだろ・・・
それほど正確さを要する処理じゃないかも知れないけどさ
タイマー割り込み内でvolatile指定した1バイト変数をカウントアップして、
もしくはタイマ内で多バイトカウンタを回して、必要周回数に達したらvolatile変数のフラグを立てて
mainでは、その変数チェック→出番まだ→Sleep→タイマで起こされる→loop
出番があれば処理に飛ぶ
の連続で行けばいいのでは?
448774ワット発電中さん:2009/02/18(水) 23:35:10 ID:prUlWTeS
みんな タイマーを使おうぜ

wait関数はLEDを点滅させる入門用に用意してあるだけ。
wait関数でも目的は達成できるけど

やっぱり みんな タイマーを使おうぜ
449774ワット発電中さん:2009/02/18(水) 23:41:28 ID:NY3dk9n7
タイマ所持のスレはここでつか
450774ワット発電中さん:2009/02/18(水) 23:47:28 ID:hQS0b0YB
タイマ割り込みを使ってタスク切り替えだ!と叫び

AVRにOS(orマルチタスクモニタ)は必要か?スレと化す………訳で無く。
451774ワット発電中さん:2009/02/18(水) 23:56:27 ID:y4E3RUgp
クロックを1kHzにすれば、100ms待っても問題ないような気がする。
452774ワット発電中さん:2009/02/19(木) 00:01:27 ID:ZzZigkL/
やっぱりタイマーか外部割込みでタイミングとって、暇な時はSleepとか
普段使う石って数種類だし、まともに書いた一番機能使ってるプロジェクト持ってきて、
処理を削除したソースをベースにしてる
main { init呼出し後、スリープのループ }
init { 初期化 }
タイマー割り込み { カウントのみ }
その他割り込み関数とか

後はmainでカウンタ見て処理して、初期化とかタイマー調節すれば出来上がり
むしろwaitで他の処理とのタイミング気にする方がめんどい
クリティカルな処理は割り込み内に書くけど、それ以外はmainで処理するな
453445:2009/02/19(木) 00:06:02 ID:FZkk19Ey
みんなありがとう、勉強になる。

>>446,447
volatile uint8_t nFlag_hogeを用意してAVRの割り込み優先度のアレみたいにして
ISR(タイマ)で、旗揚げゲームさせて・・・。mainでは、関数へのポインタか
if()elseif・・・・あたりでごりごり処理するってところ?
なんちゃってマルチタスクってところでしょうか。

我流で似たようなことをいざ導入するとなるとグチャグチャになってしまう。
main内のスレッドA、B、C…あったとして、B処理中に(高優先)Aフラグ立って、
BでモタモタしてたらAのタイミング失うとか…。並列処理(?)しようとして
どれも中途半端で、スタックあふれてアボンとか。
454774ワット発電中さん:2009/02/19(木) 00:49:20 ID:ZzZigkL/
>>453
複数の処理をするならmain内の処理はタイマーの1ループ内に収まるようにしないとえらいことになるよ

本気でマルチタスクっぽくするなら、タイマー割り込み内でスタック操作して、
処理A,B,Cに順にリターンさせるとか。優先度つけるなら処理中フラグ見て処理先を決める
することなくなった処理は、他にCPU資源まわさなくてもいいならSleep、
他に廻したいなら強制的にタイマー割り込み発生させて次の処理に行くとかかな
まあそこまでする様な事に出会ったことは無いけど
455774ワット発電中さん:2009/02/19(木) 00:58:19 ID:hOL/HXtD
>>453
本格的なプリエンプティプな処理はオーバーヘッドと
デバッグの効率を考えるとAVR程度のマイコンではお勧めできない。
RAMの容量からしてナンチャッテで十分。
456774ワット発電中さん:2009/02/19(木) 01:07:16 ID:hOL/HXtD
高校のマイコン倶楽部の課題でやったのは
エレベーター制御。 モーターのPWM駆動ではなく単にシーケンス部分。

ゴンドラの制御に扉開閉及びスイッチ検知、
レゴとマブチモーターの組み合わせだけど、なかなか面白かった。
使ったのはH8だったけどね。
457774ワット発電中さん:2009/02/19(木) 10:36:00 ID:mTAf1qiO
しかし考えてみたら、電力消費や正確さを優先するなら、ICPかなにかを使うわな。

それをせずに、Tinyごときにマルチタスクとか面倒な仕組みを導入するのは疑問だ
いい加減なハードの欠陥を、大掛かりなソフトで隠すのはよくない兆候な希ガス
458774ワット発電中さん:2009/02/19(木) 10:59:09 ID:92Y2GGdi
それくらいのことで、「大掛かり」などとは程度が知れるな。
459774ワット発電中さん:2009/02/19(木) 11:41:39 ID:hOL/HXtD
>>457
そんなアナタはPICスレがお似合いだよ
460774ワット発電中さん:2009/02/19(木) 12:08:40 ID:aPxeSfyb
>>453
マルチタスクなんて大げさなことを考えず、どちらがお手軽かでいいのでは?
たとえば、1回きりの初期化のwaitでタイマ使うのもばからしいし、それほど正確さは要求されない、たとえばLCD制御の100usウェイトでタイマ使うのもあほくさい。そういうのは_wait_us()とかでいいと思う。
それに対して、繰り返し出現する比較的長いwaitとかで、そこそこ正確さもいるなら、やっぱりタイマ使った方が楽に正確さ確保できると思う。

電波時計の奴は・・・消費電力が気にならないなら&平行して行う処理に時間数十msecとかかかるものがないなら、どっちでもいいかな?
461774ワット発電中さん:2009/02/19(木) 12:13:09 ID:V8VwnsNh
AVRはレジスタ多いからタスク切り替えだけで大変だ
H8みたいにレジスタを束ねられないしメモリも少ない
やるとしたら必然的に協調型で作るしかない
時間の掛かるタスクは自前で切り上げるように書く必要がある
462774ワット発電中さん:2009/02/19(木) 12:22:00 ID:vr4twLul
H8とかだとシンクとソースでドライブ能力が違うのでシンクで使いますが
AVRだとソースとシンク、どちらを使うのがベターでしょうか。
VCC,GNDともピンが1本の石だとどちらでも大差無いような気もしますが。
463774ワット発電中さん:2009/02/19(木) 12:22:48 ID:aPxeSfyb
>>457
ICP使うには、入力信号が信用できないとなあ・・・
まあ、連続入力で有効にする機能(名前忘れた)と、
あり得ないほど短いパルスを切り捨てる処理を入れれば大丈夫かもしれんけど。

・・・なんかICP使った方がとっても楽なように思えてきた。ややこしいけど。
464774ワット発電中さん:2009/02/19(木) 12:24:06 ID:aPxeSfyb
>>462
mega以降はどっちでも同じなので、電源落ちてるとき・断線やショート時など含め相手の都合か、わかりやすい方、慣れてる方でいいと思う。
465774ワット発電中さん:2009/02/19(木) 16:45:19 ID:NuUe/mFd
シンクとソースって何ですか?
466774ワット発電中さん:2009/02/19(木) 17:10:13 ID:V8VwnsNh
台所にある排水溝と蛇口
467774ワット発電中さん:2009/02/19(木) 17:31:18 ID:um4UXMlb
いやいや、流し台と調味料
468774ワット発電中さん:2009/02/19(木) 18:08:02 ID:hOL/HXtD
>>465
ソースはプラス側へ(PNP型ドライバー)
シンクはマイナス側へ(NPN型ドライバー)
469774ワット発電中さん:2009/02/19(木) 20:16:08 ID:k2xf1nff
シンクはすーっ、でソースはふーっ
470774ワット発電中さん:2009/02/19(木) 21:09:58 ID:g4xBuTUL
ブルドッグ
471774ワット発電中さん:2009/02/19(木) 21:16:04 ID:yE83IlEI
>>469
実に上手い表現だなぁ


2ch的に。
472774ワット発電中さん:2009/02/19(木) 23:21:33 ID:92Y2GGdi
さすがAVRスレ、書込みのレベルが酷いな。
もっと技術的な内容で議論しろよ。
473774ワット発電中さん:2009/02/19(木) 23:21:54 ID:92Y2GGdi
さすがAVRスレ、書込みのレベルが酷いな。
もっと技術的な内容で議論しろよ。
474774ワット発電中さん:2009/02/19(木) 23:28:12 ID:V8VwnsNh
gcc使えるし素直だし
特に議論する事ないんだよ
475774ワット発電中さん:2009/02/19(木) 23:38:28 ID:g4xBuTUL
PICみたいなお子様チップと違ってねw
476774ワット発電中さん:2009/02/20(金) 01:15:49 ID:J3BkzmAj
PICにだってgccぐらいあるぞ。しかもMicrochip純正でな。
477774ワット発電中さん:2009/02/20(金) 03:39:24 ID:Er2SbvV4
1命令4サイクルのPICで頑張れw
478774ワット発電中さん:2009/02/20(金) 08:32:54 ID:VLh0YqOd
考えてから、ソースも晒せってことだよ
479774ワット発電中さん:2009/02/20(金) 08:46:50 ID:rvLHFQVF
ネタ切れと言ってもこれは酷い・・・
480774ワット発電中さん:2009/02/20(金) 13:49:13 ID:C3oodhYO
SPIでSDカードの読み書きがしたいのですが、
ATtiny2313でできるでしょうか?
SRAMが128バイトしかありませんけど。
481774ワット発電中さん:2009/02/20(金) 15:13:53 ID:56KRKHhe
>>480
SRAMを外付けすればおk
ttp://www10.ocn.ne.jp/~noe/micon/gpslog/gpslog.htm
482774ワット発電中さん:2009/02/20(金) 17:04:35 ID:kbiX/pTa
SDは1ブロック512バイトがデフォルトだけど、それはFATの制限であって
確かブロックのバイト数を変更するコマンドがあった気がする
1ブロック64バイトぐらいに変更すればtiny2313でも扱えるかもしれない
483774ワット発電中さん:2009/02/20(金) 22:31:46 ID:/vwsieCp
読み出して、要らないデータを捨てればいいんじゃないでしょうか。
2313を複数個使うという手もあります。
484774ワット発電中さん:2009/02/20(金) 22:51:48 ID:kbiX/pTa
あとは何に使うのかということだ
音楽データみたいにストリーミングデータなら、読んですぐ処理すれば
メモリにセクタ全部蓄える必要がないから、それほどメモリは多く使わない
485774ワット発電中さん:2009/02/21(土) 00:02:37 ID:QIDCex1s
俺は事故とか自殺とか拷問とか刑罰は平気で見るんだけど
自傷行為かつ死なないというシチュエーションだけはだめだ
自傷行為でも最後に死ぬのが分かってると、なぜか安心して見れる
あと他人に痛めつけられてるのも見れる
でも死なないのに自分を傷つけているというその行為、
たとえば死なない程度のリストカットとか、ペニスを真っ二つに裂くとかは、
なぜかとんでもなく嫌悪感を覚えて自分の体が傷つけられてるような気持ち悪さを感じる
486774ワット発電中さん:2009/02/21(土) 00:04:08 ID:QIDCex1s
すまんスレ間違えた
487774ワット発電中さん:2009/02/21(土) 00:19:07 ID:9+GHB6s3
絶対定格越えで死亡するのはいいけど
バグって無限ループで暴走しまくるのは苦手なんですね
488774ワット発電中さん:2009/02/21(土) 01:45:06 ID:8Yx40OYZ
>>483-484
書き込みはどうするの?
489774ワット発電中さん:2009/02/21(土) 10:09:16 ID:S0D2Zjt1
ブキミなスレ違いだな
490774ワット発電中さん:2009/02/22(日) 22:13:56 ID:bgDci5Hj
Arduinoを汎用AVRライタにできないかと試しているのですが、
http://www15.atwiki.jp/arduino/pages/22.html
参考になりそうなAVRライタのソースコードをおしえてください。
アセンブラでなくCで書かれているものが嬉しいです。

Macなので
http://www.geocities.jp/arduino_diecimila/bootloader/index.html
が使えないのです。
491774ワット発電中さん:2009/02/22(日) 23:24:54 ID:+36eWvuY
>490
素直にVMware買ってください。
自分もメインはMacだけど何かとwinは必要になるよ。
492774ワット発電中さん:2009/02/22(日) 23:45:01 ID:5+7SsuYW
>>491
それなら素直に中古のWindowsノートを買うほうが建設的じゃないでしょうか?
493774ワット発電中さん:2009/02/22(日) 23:57:15 ID:sASxSaXb
>>490
今年になってD2XXドライバ(BitBangモードが使えるドライバ)の
Mac版(Intel, Tiger以降)が出たので、もしかするとMacでもできるかも
知れません。

http://www.ftdichip.com/Drivers/D2XX.htm
494774ワット発電中さん:2009/02/23(月) 00:00:46 ID:HNcFCKlu
>492
場所とるので2台もいらないのです。
ほとんどMacで事足りてるので。
495774ワット発電中さん:2009/02/23(月) 00:02:25 ID:BdQUkhpo
>490-492
横レスながら。
パラレルポートも付いた古いデスクノートを買うと、いっそう良い。
と思うのはオレだけでしょうか?

シリアルすら付いてないような新しいもの、携行型などは当然ながら避けるとして。
496774ワット発電中さん:2009/02/23(月) 00:02:33 ID:VbOEoO5q
失礼、Power PC用のもあるみたいですね。
MacからのBitBangはまだ試してないので、ぜひやってみてください。
497774ワット発電中さん:2009/02/23(月) 00:08:57 ID:VbOEoO5q
>>490
ちなみにここにArduinoをISPライタにする方法が書いてありますが、これではだめ?
FT232RのBitBangモードは使っていません。

http://arms22.blog91.fc2.com/blog-entry-219.html
498774ワット発電中さん:2009/02/23(月) 00:12:53 ID:o7/6xdQt
Mac?なにそれ、おいしいの?
499774ワット発電中さん:2009/02/23(月) 00:23:25 ID:WiCP7+Sx
Mac信者はこれだから・・・
500774ワット発電中さん:2009/02/23(月) 00:23:55 ID:v+i2Avfl
>場所とるので2台もいらないのです。
>ほとんどMacで事足りてるので。

2台置けないならMacは捨てればいいよ
501774ワット発電中さん:2009/02/23(月) 00:51:05 ID:HNcFCKlu
案の定の脊椎反射だなあ。

信者でもないんだけど、まいいや。
502774ワット発電中さん:2009/02/23(月) 01:03:34 ID:AGXZN6Rl
自覚が無いのも信者の特徴だな。
503774ワット発電中さん:2009/02/23(月) 02:30:46 ID:YaAAt8LG
AVRでテスターを作ろうと思うのですが、
内蔵の基準電圧の1.1Vはどれぐらいの精度なんでしょうか
分かる方いましたら教えてください
504774ワット発電中さん:2009/02/23(月) 03:05:13 ID:WTchTO0F
ここから使いたい品種のデータシートをダウンロードして下さい。
http://www.atmel.com/dyn/products/datasheets.asp?family_id=607
505490:2009/02/23(月) 11:12:43 ID:lKWOZj3j
皆さんありがとうございます。

http://www.arduino.cc/playground/uploads/Code/programmer2.txt
このコード+avrdudeで試した結果です。
avrdude -vv -c avrisp -p t2313 -P /dev/tty.usbserial-A9005bvI -b 19200

http://ja.pastebin.ca/1344568

ライタのバージョンは取れてるみたいですが、シグネチャがとれてません。
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.

ライタの実装が簡易的なモノだからなのかなあと思っています。
Arduinoって普通のCのコードで書けるので普通のmega8/88/168
シリアルライタのソースコードを改造すれば使えるのではないかと思った
ので質問させていただきました。

>>496
情報ありがとうございます。
できそうな雰囲気ですね。試してみます。
506774ワット発電中さん:2009/02/23(月) 11:46:24 ID:tvblun1u
>>505
ターゲットチップ(2313)のクロックはどうなってます?
以前、AVRisp2をavrdudeで使ったときに、
クロック設定をまちがえて同じようなエラーを出した事があるので。
507490:2009/02/23(月) 12:32:55 ID:lKWOZj3j
買ってきたまま(秋月でレール買い)の状態です。
なので、8MHzの8分周で1MHzです。

ターゲットに送るSCKを調節してみます。
508490:2009/02/24(火) 04:01:55 ID:e7SaMkRF
MacでBitBang成功しました。
http://www15.atwiki.jp/arduino/pages/23.html
が、Arduinoのシリアルドライバと共存できない?かもです。

AVR-ISPスケッチの方はどうもうまくいきません。
SCK速度のタイミングをいろいろ変えてみたのですが、シグネチャを
取ることができませんでした。

509774ワット発電中さん:2009/02/24(火) 10:04:53 ID:SdGYpiGg
>>476
ぶっ、PICでC言語ったって、使える域には程遠いだろwww
再帰的コード書いたら即死だろ。
510774ワット発電中さん:2009/02/24(火) 10:28:41 ID:6+KM/GKy
マカにAVRやる資格はねーよw
失せろ
511774ワット発電中さん:2009/02/24(火) 10:39:46 ID:iUKt/i40
>>509
ぷっ、
小規模マイクロコントローラで再帰コード使うってwww
512774ワット発電中さん:2009/02/24(火) 12:03:54 ID:k6P8BEyP
再帰できないと使える域に達しない>>509がいるスレはここでつか?
513774ワット発電中さん:2009/02/24(火) 13:15:01 ID:QhduvfP5
MACって書いたら怒るんだろ?Macって書かないとw
あんだけインテルチップやらWindowsやらに罵声あげときながら
内側にはインテル入ってるのを使ってるマックユーザーw
変なプライド持ってるからマックユーザーって大嫌いだったりする。

マカを辞書で調べたら
「Linuxに変わってからやっとマルチタスクに感動してる数世代遅れている可愛そうな人たち」
と書いてあった。
514774ワット発電中さん:2009/02/24(火) 13:19:46 ID:OKa2zWp7
Windows vs Mac
PIC vs AVR
515774ワット発電中さん:2009/02/24(火) 13:27:03 ID:QhduvfP5
Windows vs Mac って、もともとvsって考えてないからw
宗教団体林檎を相手にしたくないからねぇ

PIC vs AVR 、PICって昔あった画像形式?
516774ワット発電中さん:2009/02/24(火) 17:46:53 ID:iUKt/i40
んでもってAVRは無停電電源なのか?
517774ワット発電中さん:2009/02/24(火) 20:12:32 ID:k6P8BEyP
はぁ?
518774ワット発電中さん:2009/02/24(火) 20:43:34 ID:A7deQWfL
UPSではなくて?
519774ワット発電中さん:2009/02/24(火) 20:50:10 ID:OkIcGHUd
入力電位変動が大きいときに、それを安定化させるためのハードないし機能を
AVR (Auto Voltage Regulator) と言う。
Uninterruptible Power Supply とは独立な機能だがUPSに持たせていることはおおいな。
520774ワット発電中さん:2009/02/24(火) 21:00:03 ID:k6P8BEyP
スレタイにAVR「マイコン」って書いてあるの読めない?
521774ワット発電中さん:2009/02/24(火) 22:43:48 ID:idYzqjpC
>>518-519
あ、素で間違った(汗

>>520
>>515の続きで遊んでもいいだろ
522774ワット発電中さん:2009/02/25(水) 04:46:18 ID:QCbw8hz2
>>520
AVR搭載マイコンでつね、わかりまつ。
523774ワット発電中さん:2009/02/25(水) 16:40:07 ID:iDosD3jw
このスレからいくとマイコンでAVRを作るべきだろ
524774ワット発電中さん:2009/02/25(水) 21:05:17 ID:ONAlMWIK
>>512
ん? 実用に耐えないで堪えたか?
じゃレベルを下げて’文字列’すら満足に使えないPICのCですが何か?
525774ワット発電中さん:2009/02/25(水) 21:17:15 ID:O34yeEjC
文字列使えないとかまたまたご冗談をw………冗談だよね?
526774ワット発電中さん:2009/02/25(水) 21:42:21 ID:ZhqPrs29
’文字列’を扱えるCってあるの?
527774ワット発電中さん:2009/02/25(水) 21:54:14 ID:kJlL6lj0
>>526
だな。あるのは配列とポインタだけか。
528774ワット発電中さん:2009/02/25(水) 23:17:45 ID:f0/BEeWp
int x = 'ab'; で memcpy(&x, "ab", 2); 相当の動作をする C が稀にあった。
で PICでたまに名が出てくる HiTech Cのどこぞのアーキ用が該当していたような...
というのが '文字列' の真意じゃないかとエスパーしてみる。

文化圏が違うと冗談かどうかの判断が難しくてな。
529774ワット発電中さん:2009/02/25(水) 23:40:44 ID:kJlL6lj0
>>528
まあこれはあくまで文字列ではなく、バイト文字を使って表現できるワード文字だよなあ。

530774ワット発電中さん:2009/02/25(水) 23:43:37 ID:81n+NhDj
VC++だと'abcd'が通っちゃうな。
バイト並びはエンディアンの関係で逆になるけど。
531774ワット発電中さん:2009/02/25(水) 23:47:05 ID:QCxo8Dpe
PICとマックな奴は、N88日本語BASICで良し。
ぴゅー太でもファミリーベーシックでも
532774ワット発電中さん:2009/02/25(水) 23:49:58 ID:IwNuDSuM
C++ならstrigsクラスあるだろ…
というかデータ型とそれに伴う演算をユーザで定義できるんで却下。
533774ワット発電中さん:2009/02/26(木) 00:03:40 ID:k5/T5COZ
std::string
534774ワット発電中さん:2009/02/27(金) 00:27:16 ID:xTOyAb0S
まさか、アセンブラーだと文字列が扱えないとか言い出すのか?
535774ワット発電中さん:2009/02/27(金) 01:05:08 ID:flzCRNa+
アセンブラで文字列扱えるの?
つか、AVRのアセンブラでデータ領域を定義する方法を教えてほしいんだけど
536774ワット発電中さん:2009/02/27(金) 01:47:46 ID:IG6WpZn3
>>535
DB
DW
537774ワット発電中さん:2009/02/27(金) 07:31:51 ID:V4pU+j0v
え?文字列命令ってあるの?
538774ワット発電中さん:2009/02/27(金) 08:20:17 ID:xTOyAb0S
おまえは、8ビットの整数だけ扱ってろよ
539774ワット発電中さん:2009/02/27(金) 09:39:32 ID:VmM/K4Mw
>>535
アセンブラではできないが、他の高級・中級言語でできることなんて存在するの?
(面倒くさいとかは別にして)
そんなこと、あり得ないと思うんだが・・・
540774ワット発電中さん:2009/02/27(金) 11:42:48 ID:o6ISOtNF
AVRfreaksが重くてindex以外見れないんだが俺だけ?
541774ワット発電中さん:2009/02/27(金) 14:27:15 ID:flzCRNa+
AVRWikiも見れねえ
542774ワット発電中さん:2009/02/27(金) 21:39:51 ID:LHM+mScC
「Microchip社、Atmel社の買収を断念」
http://www.ednjapan.com/content/l_news/2009/02/u0o686000001l6mr.html
543774ワット発電中さん:2009/02/27(金) 22:26:18 ID:wD5mIKEL
神風じゃ〜
神チップAVRのご加護じゃ〜
544774ワット発電中さん:2009/02/27(金) 22:33:31 ID:pm2ELOMG
でもいっそ買収されたほうが個人へのユーザーサポートはよくなったかもしれないね。
545774ワット発電中さん:2009/02/27(金) 22:36:17 ID:WLGI+WU3
買収されたらAVRのチップは終息と思われます
546774ワット発電中さん:2009/02/28(土) 00:52:52 ID:2YOwKtC0
不況で何処も厳しいからなぁ…
547774ワット発電中さん:2009/02/28(土) 02:06:25 ID:GnrI4vzl
不況がAVRを救った。
548774ワット発電中さん:2009/02/28(土) 11:22:18 ID:q5ioO+L6
549774ワット発電中さん:2009/02/28(土) 11:29:43 ID:C0YHDbTO
そもそもAVRの利益って少ないんじゃね?
元々メモリーやPLDメーカーだし。
550774ワット発電中さん:2009/02/28(土) 14:23:40 ID:DqOyIlT2
今さらPICのアセンブラ書けと言われても、もう無理なのでこの判断は素直に嬉しい。
551774ワット発電中さん:2009/02/28(土) 16:23:14 ID:VGwxrP3c
PICが1命令1クロックで動くようになって
レジスタの指定にバンク切り替えが必要なくなれば
AVRを捨ててもいいと思っている
552774ワット発電中さん:2009/02/28(土) 16:29:36 ID:kyyYeEfg
>>551
それなんてdsPIC?
553774ワット発電中さん:2009/02/28(土) 16:56:28 ID:dWNtpoxh
牛刀だな・・・
554774ワット発電中さん:2009/02/28(土) 17:14:04 ID:oX1Q6WGp
>>549
RFも何気に強いよ。
555774ワット発電中さん:2009/02/28(土) 18:11:01 ID:lGs7GRhv
PICPICってさー、PICの話は画像フォーマットスレに逝け
556774ワット発電中さん:2009/02/28(土) 18:16:23 ID:PBV+rzuT
>>551
あと、bit0−bit7まで連続して8ビットあるポートがあることも重要。
557774ワット発電中さん:2009/02/28(土) 20:49:08 ID:DfMDV20r
秋月にmega8 @200円 入荷したよん
http://akizukidenshi.com/catalog/g/gI-02868/
558774ワット発電中さん:2009/02/28(土) 21:56:10 ID:6BOEgG9H
何気にうれしい
ガンバレAVR
559774ワット発電中さん:2009/02/28(土) 22:31:19 ID:ToOOYri9
>>557
これmega88とどう違うの?
16MHzで安いってだけですか?
560774ワット発電中さん:2009/02/28(土) 22:44:33 ID:VGwxrP3c
たいていの用はTiny2313で足りるから、Megaシリーズって買ったことないなあ
2313は100円だから、30個まとめ買いしてある
561774ワット発電中さん:2009/02/28(土) 22:47:05 ID:1hlSowS8
ADがないのが残念なんだよな
562774ワット発電中さん:2009/02/28(土) 23:38:58 ID:MClyDmEx
逆にISPやるのに余計なこと考えなくていいからmegaにしちゃってる
563774ワット発電中さん:2009/03/01(日) 01:38:07 ID:wXvKC6cW
ちょっと教えてください。
ホストとシリアル(非同期)で通信したいのですが、ピン数節約のため内蔵RC発振で
動かしたいのです。
このとき、最初にホストから特定のデータを送ることにより、発振周波数を補正して
安定的に通信できるようにするというテクニックがあったと思うのですが、
これを使ってる解説かコード例のwebページをご存知でしたら教えてください。
だいぶ前に見たんですが今ググっても見つけられなくて。。
PICだったかも?
564774ワット発電中さん:2009/03/01(日) 07:34:34 ID:0OCpF8W9
>>557
ちょ、、え、ま、、、、、
mjoy大量製作の為にマルツポチッったばかりなのにorzorzorz
565774ワット発電中さん:2009/03/01(日) 08:30:51 ID:+XtQid7C
mega88P 129/131命令/PWMx6/ADCx6/低消費動作x6/PCICR有り
mega8 128命令/PWMx3/ADCx6/低消費動作x5/PCICR無し

あと違うところはどこだろう?文字ってのは無し

mega8
ttp://reef.path.ne.jp/~hero/pdf/mega8.pdf
566774ワット発電中さん:2009/03/01(日) 08:37:05 ID:+XtQid7C
書き損じたけど、mega8ってmega88やmega88Pの廉価版なの?マジ話
567774ワット発電中さん:2009/03/01(日) 10:36:54 ID:wqRS1nAW
mega8はmega88が出る前の品種じゃないの?
mega8はディスコン候補だったような気がする。
と、調べずに書いてみる。
568774ワット発電中さん:2009/03/01(日) 13:19:04 ID:in+g6s79
mega88だとI/O領域が拡張されていて、拡張されたI/O領域には通常の
IN,OUT命令が使えず、メモリアクセス(LD,ST)でしか使えない(当然遅い)
悪いことに、mega8→mega88系で通常領域から拡張領域へmega8の時から
あるI/Oまでごっそりと移動している。
特に$00〜$1FまではSBIS,CBI等が使えて便利だったのに

PIC乃バンク切り替えもそうだけど、無理に拡した場合の弊害って所かな
569774ワット発電中さん:2009/03/01(日) 14:40:47 ID:73s7sZsH
gccでC言語でしかやらない俺には関係ないですね
570774ワット発電中さん:2009/03/01(日) 14:57:53 ID:9C+NecmD
571774ワット発電中さん:2009/03/01(日) 15:01:46 ID:in+g6s79
>569
でしょうね、話題にもあまりあがらないし。
なんかのUSB関連のところでI/Oアクセスが遅くなって
mega8の代わりにはmega88が使えないって読んだくらいかな。
572774ワット発電中さん:2009/03/01(日) 15:08:36 ID:pCr5a1DZ
>>570
ま、300円くらいならお小遣い稼ぎということでいいんじゃね?
LED点灯するだけの本とか、インストール手順見せるだけの雑誌記事とかもあるわけだし。
573774ワット発電中さん:2009/03/01(日) 15:26:46 ID:+WI73rR2
>>570
ネット上に溢れてるのに買うやつの気が知れん。
574774ワット発電中さん:2009/03/01(日) 16:05:27 ID:Unpt9cHh
サポートしてくれるなら300円は安いかも知れんよ。
2chで聞くよりいいだろ
575774ワット発電中さん:2009/03/01(日) 16:24:48 ID:n3zDwgsf
>>559
本家のmigration noteを見れば一発だよ。
ttp://www.atmel.com/dyn/products/app_notes.asp?family_id=607
のAVR094:Replacing ATmega8 by ATmega88
これによれば、
・Interrupt Vectors
・Bit and Register names and locations
・Oscillators and Start up Delay
・Brown Out Detection
・USART Control Register access
・Internal Voltage Reference
・Programming Interface
・Operational Voltage Ranges
が違うぞと・・・もちろん対応方法も出ている。
あと、物理的な改良点として
・Extended operating ranges as e.g.  [email protected], [email protected], [email protected]
・Lower Power Consumption
・Decreased EEPROM write time
・Prescaler on system clock
・On-Chip Debugging with debugWire
・Pin Change Interrupt
・Enhanced Watchdog Timer with Interrupt mode
・10 bit resolution on all ADC channels
・Timer/Counter0,2 extended with PWM and Compare units
・Master SPI mode in the USART
・General Purpose I/O Registers
・Output the system clock on I/O pin
だそうな。
576774ワット発電中さん:2009/03/01(日) 18:28:55 ID:V3h1xU4c
シリアル(非同期)の周波数を補正
解説
http://www.eonet.ne.jp/~jr3kbu/avr/avr4/avr4.htm
コード例
http://homepage2.nifty.com/denshiken/AVW003.html

>>563が前に見たのは上の方だと思う
577774ワット発電中さん:2009/03/01(日) 21:17:26 ID:wXvKC6cW
>>576
ありがとう!!!
助かりました。
578774ワット発電中さん:2009/03/01(日) 22:58:04 ID:xIeO+4KY
何気にデータシート読んでて、タイマーにCTCモードなんてのがあるのを初めて知った
今までいつも割り込みがあるごとにカウンタ0にリセットしてたけど、これは便利
579774ワット発電中さん:2009/03/02(月) 21:46:04 ID:JlTsK51c
う〜・・。
tiny2313で並列動作させる為にタイマー触ってるんですが
ISR(SIG_OVERFLOW0){
に飛んでくれない。ググっても出てこないし最悪だー
580774ワット発電中さん:2009/03/02(月) 22:46:20 ID:nGL8QUY7
ISR(TIMER0_OVF_vect){
でやって味噌
581774ワット発電中さん:2009/03/03(火) 01:20:40 ID:emWP0MDg
WinAVRが最新版なら>>580だよな
いつからか忘れたけどSIG_***は使えなくなってる(***_vectに変わって、移行期間も終わった)
コンパイラがwarning吐いてるはずだけど(そのメッセージでググれば見つかるはず)、
warningだけでコンパイル自体は通るのがミソ。むろん割り込み先には飛ばないけど
Cだとよくwarningでるけど、放置しないでちゃんと読んでキャストとか修正した方が後々困らなくてすむと思ふ
582774ワット発電中さん:2009/03/03(火) 05:41:42 ID:1ZtyhYYt
うはぁう。皆さん有難う御座います。
#include <avr/io.h>
#include <avr/interrupt.h>
〜略(wait関数)〜
ISR(TIMER0_OVF_vect){
sbi(PORTB,1); // 黄色LED
wait2(100);
cbi(PORTB,1);
wait2(1000);
}

int main(void){
DDRB = 0xff;
PORTB = 0x00;
TCCR0A = 0b00000010; /* 標準ポート動作 + CTC */
TCCR0B = 0b00000101; /* タイマ0の分周比=1/1024 */
TIMSK = 0b00000010; /* タイマ0溢れ割り込み許可 */
sei();
while (1){
sbi(PORTB,0); // 赤LED
wait2(100);
cbi(PORTB,0);
wait2(1000);
}
}
なんですが、赤点滅のみになってます。きびちい
583774ワット発電中さん:2009/03/03(火) 07:06:17 ID:earn5MhU
CTCモードを使うなら、
オーバーフロー割り込みじゃなくて、比較A(OCR0Aってレジスタだっけ?)の
コンペアマッチ割り込みじゃね?
584774ワット発電中さん:2009/03/03(火) 07:15:13 ID:qV47GG7E
こんなんでどうかな

#include <avr/io.h>
#include <avr/interrupt.h>
〜略(wait関数)〜
ISR(TIMER0_COMPA_vect){
sbi(PORTB,1); // 黄色LED
wait2(100);
cbi(PORTB,1);
wait2(1000);
}

int main(void){
DDRB = 0xff;
PORTB = 0x00;
TCCR0A = 0b00000010; /* 標準ポート動作 + CTC */
TCCR0B = 0b00000101; /* タイマ0の分周比=1/1024 */
OCR0A=250; //この値を1〜255の間でいじると黄色LEDが点滅する周期がかわると思う。
TIMSK = 0b00000010; /* タイマ0溢れ割り込み許可 */
sei();
while (1){
sbi(PORTB,0); // 赤LED
wait2(100);
cbi(PORTB,0);
wait2(1000);
}
}
585774ワット発電中さん:2009/03/03(火) 08:12:17 ID:1ZtyhYYt
自分で書いてて思ったんですが根本的な使い方間違ってますねw
並列処理は諦めたほうがいいのかな〜・・
586774ワット発電中さん:2009/03/03(火) 08:27:40 ID:1ZtyhYYt
ぬわぁ〜〜。折角サンプル頂いたのにだめっぽいです(涙

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

#define F_CPU 1000000UL

#define sbi(BYTE,BIT) BYTE|=_BV(BIT) // BYTEの指定BITに1をセット
#define cbi(BYTE,BIT) BYTE&=~_BV(BIT) // BYTEの指定BITをクリア

void waits(volatile long m){
while(m > 0){
m --;
}
}

ISR(TIMER0_COMPA_vect){
sbi(PORTB,1); // 黄色LED
waits(1000);
cbi(PORTB,1);
waits(30000);
}

int main(void){
DDRB = 0xff;
PORTB = 0x00;
TCCR0A = 0b00000010; /* 標準ポート動作 + CTC */
TCCR0B = 0b00000101; /* タイマ0の分周比=1/1024 */
OCR0A=250; //この値を1〜255の間でいじると黄色LEDが点滅する周期がかわると思う。
TIMSK = 0b00000010; /* タイマ0溢れ割り込み許可 */
sei();
while (1){
sbi(PORTB,0); // 赤LED
waits(10000);
cbi(PORTB,0);
waits(30000);
}
}
赤点滅のみでした・・・
587774ワット発電中さん:2009/03/03(火) 09:17:34 ID:ipuVR67M
>>582
wait2()ってどんな関数?wait2(100)でどれだけ待つんだ?
割り込みの中に長時間waitなんて入れたらむちゃくちゃになるぞ。

やるならwait機能ごと割り込みに持たせて

char ISR_flag=0;
ISR(TIMER0_COMPA_vect){
ISR_flag++;
if (ISR_flag&1) sbi(PORTB,1); else cbi(PORTB,1); // 黄色LED
}
とか。
ところで、sbi(),cbi()ってどんな定義してるの?
標準ではとっくに廃止されてたと思っていたが。
588774ワット発電中さん:2009/03/03(火) 09:27:09 ID:1ZtyhYYt
>>587
#define sbi(BYTE,BIT) BYTE|=_BV(BIT) // BYTEの指定BITに1をセット
#define cbi(BYTE,BIT) BYTE&=~_BV(BIT) // BYTEの指定BITをクリア
で、sbiとcbiは定義しています。wait2は、巷に良く出ている
インラインアセンブラーの分でしたが、>>586 のソースに変更しました。
589774ワット発電中さん:2009/03/03(火) 09:45:06 ID:ipuVR67M
>>588
まず、そのウェイトが割り込み頻度より長ければ、そもそも割り込みの意味をなさない。
なんだけど、黄色LEDがつかないと言うことは、そもそも割り込みがかかっていないことを匂わせる。
まずは、DDRBがちゃんと出力設定されているのか、ポートとLED接続ピンの関係は本当に正しいか、
配線は正しいか、LED逆につないでないかw、メインループで黄色LED点滅プログラム走らせたらちゃんと見えるか点検を。

それと、これクロックいくらで動いてる?
およそ250×1024クロックに一度の割り込みなので、10MHzで動かしていたりすれば1周期25.6msecで
点滅としては見づらいことになっているかもしれない。
それと、点灯時間も1000ループなので、おそらく数千クロック程度、こちらも10MHz駆動で1msec以下。
点灯として視認できていないだけじゃないのかなあ。
赤点滅の1/10の時間光ることになるはずだが、どう?

それと、>>586に間違い有り。
タイマー比較一致割り込み使っているのに、その割り込み許可をしていない(TIMSKはオーバーフロー割り込み許可のまま)
割り込みがかからないのはこれかも。
問題はこっちかな?
590774ワット発電中さん:2009/03/03(火) 09:45:32 ID:ipuVR67M
>>588
まあとにかく、割り込み内にループ入れるのはやめよう。
591774ワット発電中さん:2009/03/03(火) 10:17:22 ID:ipuVR67M
>>586
あ、クロック書いてあったな
#define F_CPU 1000000UL 1MHz駆動でいいですか?

ただ、このクロックはMakefile内に書いた方がいいかも。
ソース内に書くとしてもincludeより前がいいと思います。
その方がライブラリやインクルードファイルにもかかるので。

もう一つおせっかいを書くなら、間違いを減らすため、ビット名定義を有効に使おう。
明示的にゼロにするビットは、コメントに書くか、念を入れるなら(0<<bitname)で書くとか。
TCCR0A = (1<<WGM01); /* 標準ポート動作 + CTC、WGM01のみ1 */
TCCR0B = (0b101<<CS00); /* タイマ0の分周比=1/1024、WGM02=0 */
TIMSK = (1<<OCIE0A); /* タイマ0比較A割り込み許可 */
592774ワット発電中さん:2009/03/03(火) 10:21:30 ID:1ZtyhYYt
なんか皆さん本当に親身になってアドバイスして下さってありがとうございます。
言われた通りに色々とチャレンジしてみようとおもいます。
とにかく感謝感激です。さて頑張ります
593774ワット発電中さん:2009/03/03(火) 11:23:22 ID:earn5MhU
もしかしてコンパイラの最適化でwaitが効いてないんじゃない?
594774ワット発電中さん:2009/03/03(火) 11:26:03 ID:earn5MhU
あっでも赤は点滅してるのか
595774ワット発電中さん:2009/03/03(火) 12:23:13 ID:gnjz2w7P
割り込み許可がちがうんじゃね?
596774ワット発電中さん:2009/03/03(火) 13:36:54 ID:fdf4I+df
(1<<ビット名定義)よりも
_BV(ビット名定義)の方がスマートに見える
597774ワット発電中さん:2009/03/03(火) 13:57:33 ID:1ZtyhYYt
皆さん、ありがとうございます。とりあえず点滅しはじめました。
#define F_CPU 1000000UL

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

#define sbi(BYTE,BIT) BYTE|=_BV(BIT) // BYTEの指定BITに1をセット
#define cbi(BYTE,BIT) BYTE&=~_BV(BIT) // BYTEの指定BITをクリア

void waits(volatile long m){
while(m > 0){
m --;
}
}

ISR(TIMER0_COMPA_vect){
PORTB ^= _BV(1); // 黄色LED
}

int main(void){
DDRB = 0xff;
PORTB = 0x00;

TCCR0A = (1<<WGM01); /* 標準ポート動作 + CTC、WGM01のみ1 */
TCCR0B = (0b101<<CS00); /* タイマ0の分周比=1/1024、WGM02=0 */
OCR0A = 250;
TIMSK = (1<<OCIE0A); /* タイマ0比較A割り込み許可 */

sei();

while (1){
sbi(PORTB,0); // 赤LED
waits(10000);
cbi(PORTB,0);
waits(30000);
}
}
まだまだ勉強と実験は続いています。皆さんのアドバイスのおかげです。
598774ワット発電中さん:2009/03/03(火) 14:02:50 ID:DfM4RNfi
C言語だとsbi cbiマクロの方が一瞬で判るし間違いもなくて良いイディオムだと思う。
ビット演算直接は新しい版でなぜか推薦されてるっぽいけど改悪じゃないかな。
定義した時アセンブラのヘッダと共有できないって理由なのかな?
599774ワット発電中さん:2009/03/03(火) 20:55:26 ID:aZzzHHCF
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【スバル】サンバーバン/ディアスワゴン【1BOX】28 [軽自動車]
600774ワット発電中さん:2009/03/03(火) 22:11:16 ID:Gqpuxq8c
>>598
たぶん、特殊な許可フラグとかの絡みでトラブルになるのを恐れたのでは
なんていったら|=とか&=も一緒か。
601774ワット発電中さん:2009/03/03(火) 22:22:16 ID:s/GTEHd7
>>598
mega88や168世代になって、もとのアセンブラ命令のcbiやsbiではアクセス
できない拡張I/O領域が出てきたからそこら辺の配慮もあるのかも
602774ワット発電中さん:2009/03/03(火) 22:32:18 ID:yGAhegtJ
その辺配慮しなくていいのがCの良さなんだけどな。

同じビット操作でもアドレスによってアトミックになったりならなかったりするのが嫌んな感じ。
603774ワット発電中さん:2009/03/04(水) 00:10:22 ID:TOgPRk5z
おまえらの優しさに涙した
少数派は団結だよな
604774ワット発電中さん:2009/03/04(水) 00:11:32 ID:0yuj21rC
>>598
アセンブラのsbiやcbi命令との混同を避ける為では?
頭の中では理解していても、sbi()やcbi()ならアセンブラのsbiやcbiが使われる物と勘違いする場合もあるだろうし。
605774ワット発電中さん:2009/03/04(水) 00:19:08 ID:I3kP8efi
AVRってさ業務用とかに使われてんの?
趣味とかホビーだけ?
606774ワット発電中さん:2009/03/04(水) 00:48:24 ID:v8mrHWqj
業務用にも使われてるよ。
607774ワット発電中さん:2009/03/04(水) 00:52:36 ID:11UQzqlf
少なくともここでは趣味だけだろうな。

業務に使っているような人がこんな所で情報収集してるとは思えん。
608774ワット発電中さん:2009/03/04(水) 07:45:35 ID:1X47AFEU
さーせん
609774ワット発電中さん:2009/03/04(水) 08:29:20 ID:1nY94+Su
>業務に使っているような人がこんな所で情報収集してるとは思えん。

どうしてそう思うのか・・・
プロは数人居るぞ
610774ワット発電中さん:2009/03/04(水) 08:37:11 ID:KSFyr83M
>>605
俺の使っているキーボード(Kinesis)は開腹したらAVRだった。
コンシューマでは使われているよね。
611774ワット発電中さん:2009/03/04(水) 09:30:31 ID:hbyepAki
>>604
いっそ、インラインアセンブラでsbi/cbiマクロを作るといいかもな。
対象外レジスタだとエラーになってくれるし。

>>605
玄人指向の玄箱とか、相当のバッファローのNASには使われているな(メインではないが)。
612774ワット発電中さん:2009/03/04(水) 10:48:51 ID:0Oneai7v
制御系やゲームとかだと割り込み中ではフラグやカウンタ処理のみだけして、
メインループで疑似マルチするけどね。
高度な人とかだと多重割り込みをうまく使ったり再帰したりしてるけど。
613774ワット発電中さん:2009/03/04(水) 12:05:50 ID:55/tiq3v
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【MoE】-Master of Epic-E鯖隔離スレDay97 [ネットwatch]
【MoE】-Master of Epic-E鯖隔離スレDay96 [ネットwatch]
WRT■リンクシス製品ユーザー集まれ-8■BEFSR [ハードウェア]
ASUS Terminator … ターミネーター8 [自作PC]
【スバル】サンバーバン/ディアスワゴン【1BOX】28 [軽自動車]
614774ワット発電中さん:2009/03/04(水) 12:25:12 ID:hbyepAki
>>612
フラグだけを使うなら割り込み自体要らないしね。
615774ワット発電中さん:2009/03/04(水) 13:00:43 ID:4Fo02y9W
>>614
結構使うよ。非同期で複数の割り込みが発生する場合なんかに重宝してる。
616774ワット発電中さん:2009/03/04(水) 13:44:42 ID:hbyepAki
>>615
うん、AtmelのUARTサンプルとかにも使っているしね。
617774ワット発電中さん:2009/03/04(水) 20:50:20 ID:nzx2BuDl
>>605
KORGのnanoKey(MIDIキーボード)にmega32が使われているらしい
618774ワット発電中さん:2009/03/05(木) 22:10:55 ID:q169NxRh
上で話題になってるWinAVRの割り込みベクタの指定方法、
 ISR(TIMER0_COMPA_vect) こういうの。
これってプログラム中で割り込みベクタを別の用途に切り替える事が出来ないよね。

あとPORTDとかも。
1つのサブルーチンをPORTCとPORTDで使いたいとなると
同じプログラムを2つ入れるしか無いじゃん?

こういう場合メモリマップ上のレジスタ直指定とかで
ISR()もPORTxも使わないで書くしかないよね。

ついでに言うとsbi、cbiなんかも移植性を考えて使わない。
(1<<OCIE0A)とか、そもそも「何ビット目か」を示す変数だってのが間違っている。
C言語のファイルオープンとかだってモードなんかは単に「|」(or)するだけ。

俺の場合そういう事が多くて、
どうもこのWinAVRって仕様が御粗末に思えて仕方ない…

みんなは何かスマートな技とか編み出して使ってるの?
619774ワット発電中さん:2009/03/05(木) 22:48:46 ID:C2RJ9mt0
日本語版 AVRLib - C
12. 関数の引数としてIOポート名を渡すには?
http://www11.ocn.ne.jp/~akibow/avr-libc-user-manual-1.4.3/FAQ.html#faq_port_pass

を読んでみたらどうだろう。


あと、割込みを多用途は関数ポインタで良いんじゃね?

#define null ((void*)0)

void(* HogeEventHandle)(void);


ISR(TIMER0_COMPA_vect)
{
if(HogeEventHandle != null)
{
 HogeEventHandle();
}
}

若干関数呼び出しのオーバーヘッドが増えるけど。
620774ワット発電中さん:2009/03/05(木) 23:37:35 ID:uRH3eI2v
>>618
そもそもプログラム領域のフラッシュって実行時書き換えできないきがする。
621774ワット発電中さん:2009/03/06(金) 01:21:45 ID:DbtosoOo
>>619
AVRの場合、割り込み中の関数呼び出しは若干どころじゃなく、
論外に片足突っ込むレベルだと思う。
ベクタを直接修正できない以上、switchやgcc拡張のラベル配列、
もしくはアセンブラでジャンプテーブルでも使うしかない。
622618:2009/03/06(金) 05:09:38 ID:pKyX372c
>>619
リンクありがとう。
結局、公式にもソコだけ標準スタイルを崩すしか無いって言ってる訳ですね。

それにしてもアレの「この工夫されたマクロ」とかは論外だよなぁ…
公式がああも質問側の意図が理解できてないのに泣き笑いした…

>>620
結局>>619>>621の言うベクタ内で別んトコへ飛ぶべしと言う事ね。
それをスマートにやる技は何か有る?という話。

inline関数が使えるならswitch方式がマシっぽいかなぁ…
WinAVRってinline関数って使える?
(どのバージョンでも安全にという意味も含めて)
623774ワット発電中さん:2009/03/06(金) 07:22:17 ID:GErC1czW
そもそも動的に何かを行うのが、静的に行う場合よりも
オーバーヘッドが少ないなんてあんまりないんじゃないかと思うんだけど。

ループだって手で書き下した場合のほうが概ね速いコードを吐くし、
クリティカルなところは泥臭くなっても仕方ない。
624774ワット発電中さん:2009/03/06(金) 11:26:34 ID:B+qVqA0b
>>619
というか、そもそもAVR程度のマイコンで割り込み内でできる処理なんてそんなにでかい処理無理なんだから、

#define TIMER0_COMP_PROC_A (0)
#define TIMER0_COMP_PROC_B (1)
#define TIMER0_COMP_PROC_C (2)
volatile char TIMER0_COMP_SELECT=TIMER0_COMP_PROC_A;

ISR(TIMER0_COMPA_vect)
{
if(TIMER0_COMP_SELECT==TIMER0_COMP_PROC_A)
{
 /* PROC_A処理 */
}
else
if(TIMER0_COMP_SELECT==TIMER0_COMP_PROC_B)
{
 /* PROC_B処理 */
}
else
if(TIMER0_COMP_SELECT==TIMER0_COMP_PROC_C)
{
 /* PROC_C処理 */
}
}

なんて処理で充分なのではと思う。TIMER0_COMP_SELECTをメインで切り替えればOK。
割り込みベクタや関数ポインタすげ替えるのもいいけど、実際問題それで切り替える処理がいくつあるのか、
そのいくつかの処理は事前に分かっている処理じゃないのか?と思うので。
625774ワット発電中さん:2009/03/06(金) 12:56:08 ID:B+qVqA0b
>>622
>それにしてもアレの「この工夫されたマクロ」とかは論外だよなぁ…
>公式がああも質問側の意図が理解できてないのに泣き笑いした…
訳文はIOポート名とありますので、それならマクロでも問題ないのですが、オリジナルを見たら、IOポート名とも定数とも書いてありませんね。
>How do I pass an IO port as a parameter to a function?
確かにこれだけだとIOポートアドレスが変数である可能性もありますから、マクロで解決する場合には引数がポートアドレスを表すマクロである場合限定だと注釈は要りそうです。

626618:2009/03/07(土) 00:04:20 ID:pKyX372c
返事書いてたら長文になったから捨てた。
失礼ですけど、気になったトコだけ…

>>625
そもそもPORTDがポインターだったら
質問も回答側の勘違いもする要素が無かったと思うんですよね。
「変数と同じ感覚でポートが使える」なんて仕様は作者の自己満足機能かと。

>>624
俺としては定数に名前付けるのも長い変数名も大嫌いなんですが…

define使って下記のように書くくらいなら
 #define TIMER0_COMP_PROC_A (0)
 #define TIMER0_COMP_PROC_B (1)
 #define TIMER0_COMP_PROC_C (2)
enum使ったらば?
 enum {
  TIMER0_COMP_PROC_A=0,
  TIMER0_COMP_PROC_B,
  TIMER0_COMP_PROC_C
 };
defineと違ってenumはint型なんで注意。
知ってたら御免。
627774ワット発電中さん:2009/03/07(土) 01:48:44 ID:RUAOGXSa
>>618
>>619は的確に答えてると思うんだが。FAQも普通だ。
俺にはあなたの意図がわからない。
BVも、コーディングが楽になるからやってるだけで、_BVマクロ通した後は
>単に「|」(or)するだけ。
じゃないのかね。
後、関数ポインタよりswitchの方が優れてる理由は何?スタック?

>>621
論外になるのは相当割り込み周期が短いときだけじゃない?
しかもそこまで短いときは関数呼び出しよりも割り込み自体の
オーバーヘッドの方がよっぽど効いてくるわな。
俺は普通に関数使うし、シミュレータで確認しても全然問題ないレベルだよ。
628774ワット発電中さん:2009/03/07(土) 07:04:47 ID:IEvRa2H/
>>627
割り込み内から関数を呼び出すのが問題になるのは、時間よりもスタックの要求量じゃないかな。
実際、これやると割り込みルーチンのpush/pop量が半端じゃなくなる。
呼び出す関数にもよるし、RAMが多いAVRならこれもたいした問題じゃないけど。

629774ワット発電中さん:2009/03/07(土) 07:11:01 ID:IEvRa2H/
>>626
3つくらいで、その後増える見込みがないなら、enumより列挙を選ぶなあ。
行数増えるし、あなたが書いているとおりintだし(使用する側で(char))
630774ワット発電中さん:2009/03/07(土) 07:14:49 ID:IEvRa2H/
つづき
あなたが書いているとおりintだし、たぶんchar変数と組み合わせても、
比較時点で型変換はいるのではないかな
使用する側で(char)を噛ませる手もあるけど、めんどい
可読性とか標準Cの流儀もいいけど、AVRのプログラムなんで、ある程度はサイズも
きにしなければいけないと思うよ。8kRAMのmegaとかならあまり関係ないかもしれんけど。


631774ワット発電中さん:2009/03/07(土) 08:21:39 ID:QpITKI0o
まあ、AVRを使ってるならavr-gccに限定しても良いと思うから
__attribute__((packed))

移植性がなんちゃらとかいうなら、コンパイラの種類拾って
#ifdef
とかで、gccの時だけ有効にするとか
632774ワット発電中さん:2009/03/07(土) 08:33:34 ID:d83F7iZY
>>629
同意。
ハード要素をenumはあまりお勧め出来ない。
633774ワット発電中さん:2009/03/07(土) 08:39:33 ID:Agw8dUyP
>>626
おそらく、あの手のFAQって実際のQ&Aと自作自演のw想定問答集が混ざっているんでしょうが、
大元のよくある質問ってのは、マクロ定義名を渡すだけで、マクロで済むような用途がほとんどなんだろうとは思う。
動的にPORTDをPORTBにしたいってのじゃなくて、ソース上で呼び出し元でPORTDをPORTBに
書き換えればいいような、関数もどきがしたいという用途。
たぶん、そのFAQの元になった問答ではちゃんと質問者の意図を読んでいたのだろうと思いますよ。
だが、そういうのはちゃんと書かないとわからねえよな。このFAQみてマクロでやって、
実際にはvariable=hogehoge;に展開されてるのを知らずに動かねぇぞ(゚Д゚)ゴルァなんて
やる人もいる気はする。エラーも出ないしねえ・・・汎用FAQにするにはちょっと問題がある。

>「変数と同じ感覚でポートが使える」なんて仕様は作者の自己満足機能かと。
それは読み過ぎでは?ただのCプリプロセサのマクロであって独自仕様でもなんでもないのだから。
ただ単に、「(PORTDマクロ定義を渡すだけなら)、マクロで展開させて最適化に任せるのがベターですよ」
といってるだけでしょう。はっきりと前提条件()内を書いてないからアレだけど。


634774ワット発電中さん:2009/03/07(土) 18:25:11 ID:F0aDFHpw
昨日から千秋ゼミのページのavrspxライタを作ってた。
全くライタを持ってない状況からだったので、そこの下のCOMだけで書ける奴で
鶏卵問題を解決しようとしてハマったorz
最初にユニバーサル基板上で同回路を作りつつ書いたAVR(念のため2個作っておいた)が
原因ではまることに。

USBのHID認識だけは正常で、write&verifyがいくらやってもおかしい。
USBにするために最初の回路は破棄してしまっていたので(ブレッドボードは
使ってないのでそこからが問題ですけど)再度回路作る。
ICソケット上に立体配線版を作って書き直したらあっさり成功。

先人達の功績に感謝しつつ、これから何を作ろう。
635774ワット発電中さん:2009/03/07(土) 18:30:21 ID:uu+d4dWV
今回の反省点を生かして新しいライターを作ればいいんじゃないでしょうか。
どんどんライターの完成度を高めて行って下さい。
636774ワット発電中さん:2009/03/07(土) 18:33:17 ID:Agw8dUyP
ライターだけじゃなく、ぉぉぉぉおおおと思わせる面白いものも作ってください〜
俺も何つくろ?もう1年作ってないや。
637774ワット発電中さん:2009/03/07(土) 18:34:44 ID:vx2tVO8H
Loto6用 ランダム数字発生器
638774ワット発電中さん:2009/03/07(土) 18:35:53 ID:EKLi6gC2
手抜きじゃなく、まともなRNGを使うという縛り付きか?
639774ワット発電中さん:2009/03/07(土) 18:50:37 ID:vx2tVO8H
いやゲイル理論搭載機 笑

なんか オカルト満載なきがしてしょうがないのだが
今週はえらい結果になった
640774ワット発電中さん:2009/03/07(土) 18:53:27 ID:Xg+/zk1h
エンジンの制御コンピューター製作中
車じゃなくてエコラン
641774ワット発電中さん:2009/03/07(土) 18:53:58 ID:F0aDFHpw
とりあえずライタはそこそこの完成度でできた。

ケースはハードオフで拾ったUSB-ADSLモデム(USBコネクタもここからいただいたので)に
納めてノンプレッシャーソケットを乗っけて市販品ぽくは仕上げてみた。
LEDもなんとかはめ込みそれっぽくなりました。


失敗しながら箱に穴あけたりUSBのチェックしたり基板はぼろぼろですので
中は見せられませんけど。
ttp://bbs6.as.wakwak.ne.jp/view2.cgi?id=120151&code=201&image=1236419543.jpg
642774ワット発電中さん:2009/03/07(土) 19:03:39 ID:053So5Fr
四角い穴あけ大変だよね
643774ワット発電中さん:2009/03/07(土) 19:07:16 ID:Agw8dUyP
>>641
ケースにワロタw
644774ワット発電中さん:2009/03/07(土) 20:47:17 ID:x6FJZAhi
ubuntu 8.10の標準のgcc-avr(4.3.0)はバグがあるので注意が必要。
645774ワット発電中さん:2009/03/07(土) 22:08:14 ID:F0aDFHpw
なんか消えてたのでうpし直しました。
ttp://kissho.xii.jp/1/src/1jyou67541.jpg

箱のサイズといいUSB接続といい改造してくれと叫んでましたのでw
646774ワット発電中さん:2009/03/07(土) 22:29:40 ID:vNUxCL8I
>>628

割り込み内で関数コールすると入口/出口の push/pop が合計20個ぐらい増えるよね。
でもアセンブラで書いてた時代のソースを移植したりすると便利さに負けてついつい
やっちゃうw。
アセンブラなら関数ポインタによるコールでも

 lds ZL,ptr_L
 lds ZH,ptr_H
 icall

でできるし、必要なレジスタだけ退避したり、割込み専用レジスタを決めて
push/pop 自体を排除できたりもしたよ。
647774ワット発電中さん:2009/03/07(土) 22:54:07 ID:t5rpfHKj
gccならスタック退避させない関数も作れるから

 void __attribute__((naked)) subfunc(void) { ... }
 ISR(HOGEHOGE) {
  subfunc();
 }

て感じでソースは別関数だがオーバーヘッドはjmp/retの分だけに
できるんじゃないかな?試してないけど。
648774ワット発電中さん:2009/03/07(土) 23:10:16 ID:G+py6NsC
ttp://himitsu.jpn.ph/denshikosaku/adpcmplayer/adpp.html
これを作ってみたんですが、音が出ません
電源を入れるとブツッというような音が出るんですが、音楽が鳴りません
音楽は、このページに書かれてるとおりにSDをフォーマットしてフォルダを作ってコピーしました
何が原因なのか見当もつかないので、どなたかアドバイスお願いします
649774ワット発電中さん:2009/03/08(日) 00:38:51 ID:pfmV6aYw
tiny2313で適当に見積もってみた。
それぞれ比較や分岐とかのクロックは省略。

1) 割り込み中の関数呼び出し
無条件にr18-r31の12レジスタについて退避復帰が発生する。
レジスタ数 * PUSH * POP = 12 * 2 * 2 = 48clk
関数自体の呼び出し復帰に 3+4clk
呼び出し関数内のレジスタ退避等でもclkが掛かり、
毎回55clk以上掛かることになる。スタックも余分に使う。
ただし全関数でインライン展開が効く状況だと短くなる。

2) swtich
一定の条件数に達するとジャンプテーブルに切り替わる。
その際Zレジスタを使うのでr30-r31が余分な退避対象になり8clk
間接ジャンプに3clk
毎回11clk

3) ラベル配列
static void *table[] = {&&L1, &&L2, &&L3};
goto *table[state];などとする。
2)と同様にジャンプテーブルを使うコードになる。
ただの間接参照なのでswitchよりも若干短くなる。
同じく毎回11clk

4) 割り込み中の関数ポインタテーブル呼び出し
間接呼び出しでZレジスタを使う以外は1)と同じ。
インライン展開も効かないので効率は一番悪い。
そのぶんコードは見やすくなる。
毎回55clk以上

自分では割り込みだけわざわざアセンブラに直したりする。

>>647
naked指定はローカル変数や暗黙の一時変数を使う状況だと
やばいかもしれない。どうやばいのかはうまく説明できない。
出力リストの確認が必要。
650774ワット発電中さん:2009/03/08(日) 00:43:29 ID:pfmV6aYw
↑正確にはYレジスタを除くr18-r27,r30-r31の12レジスタ
651774ワット発電中さん:2009/03/08(日) 00:45:34 ID:dQu/AjRK
>648 どのソフト使ってADPCMの音楽ファイルつくった?
652648:2009/03/08(日) 10:55:52 ID:7RjW61SM
>>651
ADPCMは、Windowsのサウンドレコーダーで作りました
そこのページで公開されてるソフトは、エンコード中に落ちてしまいました

653774ワット発電中さん:2009/03/08(日) 11:18:21 ID:eg75vh5O
>>652
入っているコーデックにもよると思うのですが、サウンドレコーダーで作成する場合複数のADPCMコーデックが選択可能と思うのですが、何を選びました?
ttp://himitsu.jpn.ph/denshikosaku/adpcmplayer/adpp.html
で必要な形式については、ちゃんとこのページで書かれていますが、それと合致する形式のを選びました?
654774ワット発電中さん:2009/03/08(日) 11:24:32 ID:lfSjZng4
ADPCMならMP3のように統一フォーマットとでも思っているのでしょうかねぇ。
655648:2009/03/08(日) 11:44:29 ID:7RjW61SM
鳴りました!IMA ADPCMにしたら鳴りました
どうもありがとうございました
656774ワット発電中さん:2009/03/08(日) 20:30:02 ID:98HGdbEJ
最近アイディアが浮かばない俺に面白い電子工作を提案汁
657774ワット発電中さん:2009/03/08(日) 20:38:22 ID:TUiu0XJ0
>>656
スタンドアロンの2chビュア
658774ワット発電中さん:2009/03/08(日) 20:39:04 ID:7GnmYc+F
>>656
ぱっと思いついたのは>>648とRTCを使って
現在時刻を読み上げる時計。
で、>>648のPWMってインチキだよね。
本当のPWMはアナログと三角波との比較で
PCMはある地点の値をCode化したものだから
n倍アップサンプルして各地点と仮想的な三角波との比較をするべきなんだと思う
659774ワット発電中さん:2009/03/08(日) 21:36:32 ID:zZ6JbzKx
>>658
>本当のPWMはアナログと三角波との比較で
それはPWMの実現方法の一つであって、
パルス幅変調するなら手段はなんでも文字通りPWMなんじゃないの?
660774ワット発電中さん:2009/03/08(日) 21:47:30 ID:GCSInPFu
>>658 それにラジオの時報で時刻合わせする機能を追加してくれ
661774ワット発電中さん:2009/03/08(日) 21:51:04 ID:pfmV6aYw
そして自爆装置
662774ワット発電中さん:2009/03/08(日) 22:00:40 ID:kkZDb8bj
>>656
キッチン電子はかりにマイコン付けて「こさじ少々」とか喋らせたい。
あの歪みゲージってどうにかなるもんなのだろうか?
663774ワット発電中さん:2009/03/08(日) 22:59:58 ID:sVsBT3/E
>>648のソース読もうと思ったんだけど、長すぎてワケワカメ
ファイルシステムの知識がないと読むのは無謀なのか
Cならまだ読めるんだけどなあ
664774ワット発電中さん:2009/03/08(日) 23:14:23 ID:cAPFJlIv
どうにかなるってのは?

昔、共立でキットを買ったけど、今は売ってないみたい。
ストレンゲージだけなら手に入る。
665774ワット発電中さん:2009/03/08(日) 23:53:35 ID:+jhkPis/
>>662
はかりの方の出力部から信号盗んでしゃべる方式にすればストレンゲージは
自分では調達不要じゃないか?
666774ワット発電中さん:2009/03/09(月) 01:08:44 ID:zhln5gSy
電子工作だけ、だとワリとすぐネタ切れになって、ひたすらライターを作るハメにw
もっと広い範囲の工作に電子を付加、だとアイデアも沢山でるよ
もともと、こんなのやる人間はモノ作りすきだろ?
メカとかと組み合わせるのも楽しいよ
667774ワット発電中さん:2009/03/09(月) 04:11:59 ID:z0aExoci
ひたすらライターを作りたくなってきたよw

ピックアップが死んでるDCが余ってたりするので、電源がそのまま色々使えそう。
3.3,5,12Vが使えるのでHVライタもターゲットに給電も可能そうだし。

フタをあけたらノンプレッシャーソケットというのがいいかも?
668774ワット発電中さん:2009/03/09(月) 22:28:49 ID:KDzaMEM6
ギャングライターを作ってくれ
669774ワット発電中さん:2009/03/09(月) 22:36:32 ID:KDzaMEM6
ついでにDVDが焼けるとか、。
AVRとPICを自動判別してどっちでもOKとか。
670774ワット発電中さん:2009/03/09(月) 22:43:28 ID:KGIgEZaC
ライターは多いけどBootLoaderは少ないんだよね。
ファーム入りSDカードを挿すと勝手にVerUpするとか、
UARTを直接繋いで焼き込めるとかなにげに便利そう。
671774ワット発電中さん:2009/03/09(月) 22:44:53 ID:oMX9WZBK
石焼ビビンバでも焼ければ最高なんですが
672774ワット発電中さん:2009/03/10(火) 13:21:41 ID:oxOnzotj
>>670
UARTとか、USBのブートローダは結構いろいろあるだろう。
SDカードも、難しいことを言わなければ簡単だと思う。
673774ワット発電中さん:2009/03/10(火) 13:33:57 ID:54Wdo+1i
ATmega88+AVR STUDIO+WINAVR gccでA/Dやってるんですが電圧計が作れない。
LCDでADC0からの数値は表示されてるんですが・・・。
色々調べて 電圧=(AD変換値/1023)×5.0でやってもだめだし、
プルアップ無しや有りで試してるけど電圧に変換するのがさっぱり。
内蔵RC8MHzの分周期128で、基準電圧は内部AVCCやAREFでの5Vに。
3.15Vとか表示したいんですがどうしても出来ません・・・
Googleで調べたら皆さんきちんと表示されてる・・・。しかも電流まで。
12Vくらいまで計れる電圧計が作りたいんですが教えて頂けないでしょうか?
小数点すら出ず1週間以上気合いれたのですがギブアップです
674774ワット発電中さん:2009/03/10(火) 13:45:17 ID:dEImL3nU
>>673
すまんが、何ができていないのかが全然ワカラン。
固定小数点表示か?ADC自体か?できたけど結果がでたらめだってことか?

とりあえずどういう状態だから「できません」と言っているのかを書いてくれ。
AVR使いにエスパーはいない。たぶん。
675774ワット発電中さん:2009/03/10(火) 15:37:24 ID:aJq6uyK5
AD変換値を10bitでやってるとすると
ADの値は
0~1023

これを1024で割ると、必ず0になる(整数の場合)。

やるなら、
(AD値*5000) / 1024 [mV]
とか
(AD値/1024.0)*5.0 [V]
676774ワット発電中さん:2009/03/10(火) 16:54:09 ID:54Wdo+1i
皆さんエキスパート&エスパーでございます m(_ _)m
3.58とかの電圧値をLCDに表示させようとした場合、
以下のソースのlcd_put_str()では無理ですよね?

void lcd_put_4bit(char bitdata){
LCD_PORT &= ~(LCD_DATMASK << LCD_DATS);
LCD_PORT |= (LCD_DATMASK & bitdata) << LCD_DATS;
LCD_PORT ^= LCD_E;
wait(10);
LCD_PORT ^= LCD_E;
}
void lcd_put_ch(char ch){
lcd_put_4bit(ch >> 4);
wait(10);
lcd_put_4bit(LCD_DATMASK & ch);
wait(10);
}
void lcd_put_str(char *str){
while(*str != 0){
lcd_put_ch(*str);
str ++;
}
}
出来ていることは、ADCからの数値を取得しLCDに表示するところまで。
行いたい事は、12V程までの電圧を0.00V単位くらいの精度で
LCDに表示させたいです。
677774ワット発電中さん:2009/03/10(火) 17:26:39 ID:r2q2LLkn
一部じゃなくてソース全部さらしてくれ
678774ワット発電中さん:2009/03/10(火) 17:29:40 ID:54Wdo+1i
長ったらしくて見苦しくないかな・・・迷惑かと思って一部にしたのですが
679774ワット発電中さん:2009/03/10(火) 18:00:21 ID:IFO8csbW
>>678
http://ja.pastebin.ca/
一般的なペーストビン - 単純ネット協力


>>656
ラジオのタイマー録音がほしい。

AM/FMで、ADCで音声データにして、SDカードに保存する。
イーサネット経由でHTTPでどこかのサーバに飛ばして
MP3ファイルとして保存ってのも便利かも。


680774ワット発電中さん:2009/03/10(火) 19:40:15 ID:lEws5g1w
>>676
ADCのからの値は表示できてて、lcd_put_strもあるって事は、
数値をLCDに表示ができない、つーか文字列に変換できないって事かな
ADCを表示してるって事はitoa()をつかってると予想

まず内部的には電圧値は1000倍とかにして整数値であつかう方が楽、っていうかfloatは容量食いすぎるので却下
計算時に0にならないよう、計算順は>>675の指摘に注意
おなじくintがオーバーフローしないようにlongへのキャストも必要かも?(実際にコンパイルしてないので不明)
あとは文字列への変換時に小数点を入れてやる

int voltage = (int)( (((long)AD値) * 5000)/1023 ); //mVに変換、MAX500万超えるので計算時はlongでオーバーフロー防止
int upper = voltage / 1000; // 整数部
int lower = voltage % 1000; // 小数部
char buf[5]; // オーバーフローに注意
buf = itoa(upper);
lcd_put_str(buf);
lcd_put_str("."); // 小数点表示
buf = itoa(lower);
lcd_put_str(buf);

AD値の範囲によってはintじゃなくてuintやulongで、オーバーフローしないように注意
あくまで分かりやすいように書いたから、かなり無駄なコードになる&有効数字分の0が出ないけど
小さく、速くしたいなら0.1%くらいの誤差は無視して1023ではなく1024で、あとビット演算をうまく使うべし
681774ワット発電中さん:2009/03/10(火) 20:17:57 ID:uEegaeQU
そもそも1023までしか無いA/Dで12.00Vを0.00V単位では表示できません。
10.23Vにすると小数点を入れるだけで済みますよ。
682774ワット発電中さん:2009/03/10(火) 20:50:55 ID:aJq6uyK5
>>680
int voltage = (int)( (((long)AD値) * 5000UL)/1023 );
せっかくならこうしたが良いかも。
まあ、どうせ同じコードを吐くと思うけど。

あと、直接12Vをマイコンに突っ込むことは無いと思うけど
分圧すれば当然計算式が変わる。
683774ワット発電中さん:2009/03/10(火) 22:01:03 ID:54Wdo+1i
お返事送れてすいません。皆さんアドバイスありがとうございます。
いまから早速やってみます。
684774ワット発電中さん:2009/03/10(火) 22:23:23 ID:l8hrN0Sz
mega164とかXTAL1, XTAL2が共用ピンになっていないAVRって、
内蔵RCで動かすときに、XTAL1, XTAL2の処理はどうするのが推奨?
オープンでいいのかなぁ・・・探し方が悪いのか、データシートに見当たらない。
685673:2009/03/10(火) 23:55:35 ID:54Wdo+1i
何とか出来たような出来てないような?
3端子レギュレーターで5V作ってるのに4.98〜5.00と変動があるので
毎回ソース若しくは半固定ボリュームで調整する必要があるのかな・・・。
あと何も接続していない状態だと0Vじゃなく揺らぐんですね
適当にアップローダーを探してアップしました。pass: 673
http://77c.org/d.php?f=nk6265.zip
686673:2009/03/11(水) 02:13:21 ID:pkih9t1d
ADC0とGND間に4.7kΩ入れ忘れてた・・。揺らぎは止りました。
しかし、基準電圧を確実に5.00Vにする方法って無いのでしょうか・・・。
安定化電源から三端子レギュレーターへ入れているわけですが、
きちんとパスコンや電解コンデンサー等はいれてあります。
687774ワット発電中さん:2009/03/11(水) 03:35:56 ID:OBuWc9nu
そもそも、本当にその測定結果が正しいと言えるの?
688673:2009/03/11(水) 05:59:36 ID:pkih9t1d
>687
他のデジタルテスターで1次電池などを計測して比較してみました。
アドバイスのおかげで正確に出ていました
689774ワット発電中さん:2009/03/11(水) 09:20:35 ID:UE0C7jiN
>>686
>きちんとパスコンや電解コンデンサー等はいれてあります。
データシートにあるような回路工夫はとってます?
最下位ビットまで信用するなら、あそこまでやらないとダメだと思うよ。

>>685
流れちゃったなあ・・もう見られないわ
690774ワット発電中さん:2009/03/11(水) 09:20:39 ID:UE0C7jiN
>>684
XTAL1/2は反転増幅器の入出力らしいので、理屈の上ではXTAL1をプルアップかなにかしたほうがいいのだろうけど、
たぶん発信源としてXTALを選ばない時点で内部でプルアップか増幅器自体電源切っているかしてるのでは?
691774ワット発電中さん:2009/03/11(水) 09:35:51 ID:SBAeoKsV
>>690
d。どうにもデータシート上での記述がみつからないんだよね。とりあえず、
オープンで動きはするけど、ちょっと不気味・・・
692774ワット発電中さん:2009/03/11(水) 13:04:07 ID:OBuWc9nu
>>688
一次電池やデジタルテスタは電圧が変動するし誤差だらけでアテにならないぞ。
そもそもそこまで精度を求め始めるとA/D変換の誤差が(略
693673:2009/03/11(水) 14:05:38 ID:pkih9t1d
>>689
再度アップしておきます〜(^^) パスは、673 です。
ttp://77c.org/d.php?f=nk6270.zip

一応データシートのような工夫はやっています。
あとADC0で電圧計るとADC1の数値に影響が出るのは私だけなのかな・・(TT
694774ワット発電中さん:2009/03/11(水) 14:28:18 ID:7BFATNj3
>>693
プログラムよりも基板の写真を見せて。
695673:2009/03/11(水) 14:56:43 ID:pkih9t1d
>>692
一応デジタルテスターのほかにオシロスコープでも比較はしてあります。

>>694
パンツの写真見せてって言われるくらい恥ずかしいな。
696774ワット発電中さん:2009/03/11(水) 15:24:46 ID:m92KlyQl
>>693
> upper = voltage / 1000; // 整数部
> lower = voltage % 1000; // 小数部
> itoa(upper, buf, 10);
> lcd_put_str(buf);
> lcd_put_str(".");
> itoa(lower, buf, 10);

このやり方だと、10.001を表示させると10.1になってしまったりすると思いますが・・・?
ゼロを補う工夫が要ります。
また、整数部と小数部にわけるのもいいけど、この場合は、mV単位のintで計算して、
それを固定小数点文字列に変換する関数、もしくはダイレクトにlcdに送る関数を作った方がいいと思う。

基準電圧を正確にしたいなら、AREFにツェナーダイオードとCRDの組み合わせで定電圧源を
供給するってのでどうでしょ。それか、内蔵定電圧源を使うとか。どうせ12Vを入力するので
分圧か何かするでしょうから。
測定リファレンスになる電圧源もこういうので作ったらより安定すると思う。

それと、電圧への変換だけど
>voltage = (int)( (((long)data) * ADC_STDV) / 1023 ); // mVに変換
ここは/1024でいいんじゃないかな。
出力1023は、Vin=Vrefではなく、Vin≧1023/1024*Vrefだと思う。
データシート上はADC=Vin*1024/Vrefになっているよ。よってvoltage=ADC*Vref/1024。
切り捨てで電圧値を表示するならそうするべきだと思う。
四捨五入するなら512で割って1足してから2で割ればいいか・・・そこまでする精度あるかどうかしらんけど。
697774ワット発電中さん:2009/03/11(水) 15:33:45 ID:4CxucV2c
自分でwait_usやwait_msを作らずとも
util/delay.hを使えば良いんじゃなかろうか。

あと誤差がうんぬんっていうなら、A/D変換は
loop_until_bit_is_setなんかで待たずに、
Sleep&割り込みでCPUをとめてみたら?
698774ワット発電中さん:2009/03/11(水) 15:46:13 ID:m92KlyQl
>>695
>パンツの写真見せてって言われるくらい恥ずかしいな。
せめてアナログ部GND面がデータシートのような状態になっているか+回路図。
699673:2009/03/11(水) 16:44:58 ID:pkih9t1d
皆さん、アドバイスありがとうございます。
まだまだ改良点がありそうですね(T_T

>>696
5.0Vの時に/1024だとなぜか5.0Vにならず、/1023だとだとキッチリ5Vに・・・。
LCDに直接送る関数ですかー。まずは基準電圧を正確にかな?
うぐぁ〜 頭がパニくってきました。

>>697
一度 delay.h でシンプルにやってみます。
697さんが言われた通り実験してみますね

>>698
ノイズ対策ですよね・・・。現在はたぶん怒られるくらいの状態・・・。

皆さんのアドバイスで改良を加えていきたいとおもいます。
本当にありがとうございます。
700774ワット発電中さん:2009/03/11(水) 19:12:47 ID:m92KlyQl
>>699
>5.0Vの時に/1024だとなぜか5.0Vにならず、/1023だとだとキッチリ5Vに・・・。
そもそもADCにVrefジャストの電圧を計測する能力はなく、
1023/1024*Vrefが、測れる最大電圧なんだと思います。
だからVrefが5VのADCを5Vの計測でチェックしても本当はだめじゃないかな。

>一度 delay.h でシンプルにやってみます。
delay.hの_delay_ms()と_delay_us()マクロは、かなり短いウェイトしか実現できませんので注意してください。
8MHz駆動だと、_delay_ms()は32.768msecまで、_delay_us()は98usecまでしか使えません。
また、このマクロの引数に変数を突っ込むと無駄にメモリ食いますので注意です。

登場場所が多いとそのたびにループルーチンを挿入されてしまいますので、
厳密さが要らないなら関数化した方がいいでしょう。
void delay_ms(unsigned int time) { while(t--) { _delay_ms(1); } }

delay_usの方は、ループや関数オーバーヘッドもバカにならないのですが、lcd用途ならこれでいいかと思います。
void delay_10us(void) { _delay_us(10); } /*8MHzなら関数オーバーヘッドで1usくらい狂う*/

701774ワット発電中さん:2009/03/11(水) 19:19:09 ID:bjjq0OOU
誤差が出るのはあたりまえ
702774ワット発電中さん:2009/03/11(水) 19:32:52 ID:m92KlyQl
>>701
だわな。
703774ワット発電中さん:2009/03/11(水) 22:54:29 ID:4dmkOiIJ
>>695
基盤見せるの恥ずかしいってのスゲーわかるw
コードも恥ずかしいけど、基盤は・・・
704774ワット発電中さん:2009/03/11(水) 23:05:48 ID:Cft0f4Fg
基板
705774ワット発電中さん:2009/03/11(水) 23:08:11 ID:7BFATNj3
>>703
基盤と書くのは恥ずかしいゾ。

基板ね
706705:2009/03/11(水) 23:10:23 ID:7BFATNj3
リロードせずに書き込むのも恥ずかしい。
707673:2009/03/11(水) 23:31:39 ID:pkih9t1d
皆さん親切な人が多いですね(^^) 心強いです。
708774ワット発電中さん:2009/03/11(水) 23:55:06 ID:m92KlyQl
暇で寂しいんだよ

俺だけ?
709673:2009/03/12(木) 01:37:41 ID:wnHZEj+O
この板の人たちで会社作ったら凄いでしょうね
710774ワット発電中さん:2009/03/12(木) 03:27:23 ID:74gToQie
案外そうでもないかもしれないよ?w
好きと仕事は別の方がうまくいく事が多いし。


AVR-DoperってHVSPの12Vはセルフインバートで作ってたのね、回路図見て驚いた。
しかもかなり簡易かつ正確っぽいし。
711774ワット発電中さん:2009/03/12(木) 10:04:32 ID:2RxqehHm
HVSPはいらんけど、USB一本でデバッグ用のシリアルモニタと、
ISPが賄えるのはいいなぁ。AVR-Doper
712774ワット発電中さん:2009/03/12(木) 18:33:51 ID:b2MmfHH9
>>746
まあそろばんはメモリだけって感じだな。
ALUとソフトウェアは人間が持っている。
713774ワット発電中さん:2009/03/12(木) 18:45:44 ID:ETXKA3DM
746だと明後日ぐらいかなー
714774ワット発電中さん:2009/03/12(木) 18:49:55 ID:4anTiUmS
>>712
そろばんはI/O機能も持ってるよ。
715774ワット発電中さん:2009/03/12(木) 19:06:08 ID:b2MmfHH9
>>714
俺のそろばんは背中を掻けるし楽器にもなるぞ!
・・・・いいかげんにやめます

って誤爆な俺に温かいレスありがとうorz

716774ワット発電中さん:2009/03/12(木) 21:50:42 ID:mYuX5xEl
HI-TECHがMicrochipの完全子会社になることで合意…双方のサイトで告知済み
これでHI-TECHのコンパイラーがサポートするのは Microchipの製品だけへ

ATMEL買収断念の後は、こう来たか…AVRはGCCで良かった
717774ワット発電中さん:2009/03/12(木) 22:00:53 ID:30Do8oPS
PICも16/32bitはGCCなんだけど。

さすがに8bitなPICはgccでは無理だったみたい。
718774ワット発電中さん:2009/03/12(木) 22:04:58 ID:bPav3cU+
ROMとRAMのアドレスぶった切りな構造だからさすがのGCCも面倒見れないよね。
719716:2009/03/12(木) 22:11:07 ID:mYuX5xEl
>>717
C18以降のコンパイラがGCC(C++抜き)なのも、下位Chip用のGCC移植断念も知ってる

AVRは、Microchipの「競合各社の開発環境を潰す」戦略に巻き込まれないで済む
という意味で書いた
720774ワット発電中さん:2009/03/12(木) 23:40:02 ID:I4VpjgUn
俺の中ではMicrochipはすっかり腹黒会社です。
721774ワット発電中さん:2009/03/12(木) 23:42:07 ID:MXqy1qcI
オールドタイプだからな。
722774ワット発電中さん:2009/03/12(木) 23:52:28 ID:DZAc4NUA
AVR用の環境を作って成功すればMicrochipに買ってもらえるってことか・・・
723774ワット発電中さん:2009/03/13(金) 06:58:56 ID:uxk9BuvK
公式の開発環境もEclipse用のプラグインもあるのに
さらにどんな環境を作るつもりなんだ?
724774ワット発電中さん:2009/03/13(金) 10:03:11 ID:BgPjmLDe
>>723
そりゃ、きっとなんだ・・
萌えなアレがあれこれアシストしてくれるんだよ。
「ご主人様、コードがダメすぎてメモリ内に収まりそうも無いですぅ。おとなしくアセンブラで書きやがれ!」みたいな。
725774ワット発電中さん:2009/03/13(金) 10:11:57 ID:65IyZ4x5
>>723
シミュレータでIOレジスタが萌え擬人化されて一生懸命働いているAVRStudioは・・・・ちょっといいかもw
726774ワット発電中さん:2009/03/13(金) 10:17:43 ID:Y/vssMVG
>>724
ツンデレってやつですね
727774ワット発電中さん:2009/03/13(金) 10:23:31 ID:IUlBdV5J
今後予想されるMicrochipの動きとしてはAVR互換チップの開発だな。
728774ワット発電中さん:2009/03/13(金) 10:25:49 ID:BgPjmLDe
>>726
「あなたのために数えてあげてるんじゃないんだからね!」by TCNT0
729774ワット発電中さん:2009/03/13(金) 10:27:10 ID:BgPjmLDe
>>727
atPIC?
730774ワット発電中さん:2009/03/13(金) 15:52:27 ID:0cZLAH2K
hidspxできたので「よーしパパ、usbRS232つくるぞ〜」と頑張ったら、
もう一つライタになったorz

ほとんど同じ回路だしねw
731774ワット発電中さん:2009/03/13(金) 22:24:14 ID:aoODcHpy
Mega88でシステムクロックが8MHzなのでa/d変換クロックをck/64
にしているのですが、A/D変換が行えません。ちなみにck/2に設定
すると変換が行われます。なぜでしょうか?
8MHz/64=125KHzでちょうどいいと思うのですが・・・
732774ワット発電中さん:2009/03/14(土) 00:43:50 ID:5w8nXF+R
待ち時間が短いんだろう
733774ワット発電中さん:2009/03/14(土) 01:59:18 ID:CADIkyDJ
ちょっと位自分で調べようという気持ちがあってもバチはあたらないと
思うけどね
734774ワット発電中さん:2009/03/14(土) 08:06:36 ID:lATvTQvf
まぁ>>731がどの程度調べたか>>733が分かってる可能性は、
>>733がこの問題をエスパーレスできる可能性と同程度に低いだろうけどね
735774ワット発電中さん:2009/03/14(土) 09:47:23 ID:mmWce1Ws
>>734
どこまで調べたかとか、どういう方法でADCしてるのか書かない時点でどっちもどっちでしょう。

>>731
というわけで、情報は小出しにせずにうざいと言われるくらい出さないと、スレが荒れるだけ。
ADCルーチンだけでもここに書いてみましょう。
736774ワット発電中さん:2009/03/14(土) 17:59:51 ID:KrMOPZwi
ATmega164のPCINTなんだけどPCMSK3 = 0b00111100としてPD2〜PD5までの
PCINTを許可した後、

PIND |= (_BV(PD6) | _BV(PD7) ) ; とPD6, PD7のトグルアクションをしたときPCINT3割り込みが
発生しちゃうのって何故なんだろ。ちなみに、この部分のコンパイル結果は
in r24, 41-32
ori r24,lo8(-64)
out 41-32,r24
になってる。

ここを
PIND |= _BV(PD6) ;
PIND |= _BV(PD7) ;
と分けて書くと、予定通り割り込みはかからないんだけど・・・
(こういう風に書くと、コンパイル結果も
sbi 41-32,6
sbi 41-32,7
になってる。当たり前の結果だけど)
737774ワット発電中さん:2009/03/14(土) 18:20:58 ID:t/dNEhXN
>>736
トグル動作でどうしてPINを読み込んでる(|=)んだ?
1を書けば反転するんだから、読み込んだ値に1があったら勝手に反転するぞ
738774ワット発電中さん:2009/03/14(土) 18:27:30 ID:KrMOPZwi
>>737
いや、PIND |= 0b11000000なわけだから、PD0〜PD5は影響を受けないはずではないの?
739774ワット発電中さん:2009/03/14(土) 18:34:08 ID:KrMOPZwi
>>737
あぁ・・・すまん。その通りだわ・・・何勘違いしてたんだろorz
740774ワット発電中さん:2009/03/15(日) 01:13:32 ID:jKKX1D79
簡単に購入できる一番安いAVRって秋月の2313なのかな?
8ピンで十分なんだけど50個くらい必要になったんだ。
741774ワット発電中さん:2009/03/15(日) 02:39:59 ID:T7PpivtT
ピンが多くてもいいなら2313でいいんじゃない?A/Dついてないけど。
742774ワット発電中さん:2009/03/15(日) 09:39:41 ID:gFR5xfv0
AVR400: Low Cost A/D Converter
743774ワット発電中さん:2009/03/15(日) 13:35:20 ID:oJLbkTSV
>>740
秋月ならtiny2313-20PU、18個以上 @90円 だね。
送料やクレジットカードの使いにくさを割り引いても
安いからいいか。
744774ワット発電中さん:2009/03/15(日) 16:40:02 ID:7a2eThFw
なんかほかにも買う物あるならDigiKeyで適当に見繕ったが安いかも。
種類も色々選べるし。
745774ワット発電中さん:2009/03/15(日) 16:42:15 ID:NLTxQLeJ
ふと思ったんだが、同種の大量のAVRに同じ内容を書き込みたいときってさ、読み出ししなければ重ねていっぺんにできないかな。
できる確証は無いけど、できない理由もいまいち思い付かなくて。
746774ワット発電中さん:2009/03/15(日) 17:02:03 ID:fHD21HVv
パラレルプログラミングならBUSYbitをORして出来ると思われる。
シリアルは何となく不安。
747774ワット発電中さん:2009/03/15(日) 17:05:47 ID:ruuzZyJ5
COMを使って1ビットで書き込む方式なら、何も見ないで一方通行で書くから
重ねても可能かもしれないが…根本的に間違ってる気がしなくもないw

安全に書く方が(本来)目的だとは思うけど、実験として数十個同時書き込み可能な
方法を考えてみるのも面白いかもね。
もしくはギャングライタとかw
748740:2009/03/15(日) 22:34:56 ID:jKKX1D79
やはり秋月で2313が手軽そうだね。
デジキーは手頃そうなのが見つからなかったよ。
そういえば、50個も書き込み作業が発生するのか。
ゼロプレッシャーソケット位は買った方が良いかもな。
教えてくれてありがとう。
749774ワット発電中さん:2009/03/15(日) 23:48:21 ID:oJLbkTSV
>>747
そのあとのベリファイが結局個別になるから、
パラレルでもシリアルでも、ベリファイするなら一気にというのは無理になりそうだ。

>>748
制作物、ISPコネクタはつけないの
750774ワット発電中さん:2009/03/16(月) 00:16:21 ID:tARF/Q7B
>>749
ブートにCRCチェック入れとくだけじゃ駄目かな?>ベリファイ
書き込み用電源利用して、書き込んだ後にリセットして特定ピンが立っていたらアウトみたいな。
751774ワット発電中さん:2009/03/16(月) 01:03:57 ID:xpY0YoRS
>>750
なるほど、領域がもったいないけど、可能ですね。
ただそのCRCチェックとその出力領域が化けていれば困るんで、
特定ピンが立っていなければアウトとか、何か特定パターンでLEDでも点滅させる
(その装置がLED使うなら)がいいかな。正常起動通知を兼ねて。

でも、2313クラスなら、詰め込むプログラムがぎりぎりなら辛いかな・・・
752478:2009/03/16(月) 10:26:16 ID:2V6I5JoP
>>749

ISPはパターンだけ引いて実装はしない予定です。

753774ワット発電中さん:2009/03/16(月) 10:55:37 ID:iBJ9LD6X
>>748
ChaNさんのところで紹介されてるみたいに親亀小亀クリップ作って書いちゃえば良いんじゃない?
ttp://elm-chan.org/works/avrx/report.html
754774ワット発電中さん:2009/03/16(月) 11:19:58 ID:6xt4jG6l
>>753
あのクリップ、CHaNさんみたいにピンヘッダで作ると
微妙な調整しないと固かったり接触悪かったりで大量使用には向かないよ
自作するなら平ピンのICソケットがいい気がする。長持ちしないから工夫が必要だけど
素直に↓とか使ったほうが幸せになれると思う。50個くらいならこれでいいんじゃね
後でプログラム修正するのも楽だし
ttp://www.sunhayato.co.jp/products/details.php?id=04046&u=852
755754:2009/03/16(月) 11:25:42 ID:6xt4jG6l
2313ならこっちの20ピンだったな。スマソ
ttp://www.sunhayato.co.jp/products/details.php?u=850&id=04046
756774ワット発電中さん:2009/03/16(月) 13:02:43 ID:FSjCO/lJ
WinAVR-20090313がリリースされている
757774ワット発電中さん:2009/03/17(火) 14:32:04 ID:r3EZSBGZ
ttp://arduino.cc/en/Tutorial/AnalogInput
このページの変数valはloop()の中のローカル変数でもよいのに
グローバルに宣言されています。
グルーバルで宣言した方がよいことがあるのでしょうか。
スタックの関係?メモリ消費量の関係?


ちなみにArduinoのコードは
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}
こんなコードとがっちゃんこされて普通にgccでコンパイルされます。

758774ワット発電中さん:2009/03/17(火) 15:26:07 ID:7SMBiHXy
>>757
main()がないけどどうなってるのかな?
と思ったら・・・・これ、gccじゃないのか。Wiringって言語なんだな。
用例とか見てるとローカルスコープ変数に関する記載がどこにもない。
もしかしたら、ローカル変数という概念がない言語(グローバルと関数引数しかない)のかも。
http://wiring.org.co/learning/reference/index.html
759774ワット発電中さん:2009/03/17(火) 16:05:48 ID:HKWDPiTA
>>757
対象がプログラム初心者だから、一箇所で宣言しているだけだと思う
760774ワット発電中さん:2009/03/17(火) 19:52:16 ID:r3EZSBGZ
>>758
http://arduino.cc/en/Tutorial/AnalogInput
こいつは、
http://ja.pastebin.ca/1363192
こんな風にされてgccでコンパイルされるので
実質、普通にC/C++言語なんです。
そのページにない機能でも使えます。ポインタとか。

>>759
なるほど。
761774ワット発電中さん:2009/03/18(水) 07:06:05 ID:BxUvxeNy
>>757

他の関数をつくって拡張するとき、グローバルを使った方がやりやすそうな
タイプの変数だけどね。

762774ワット発電中さん:2009/03/18(水) 07:35:17 ID:1u7NYTJD
>>760
そうだったんですか。ろくに調べずに失礼しました
763774ワット発電中さん:2009/03/20(金) 14:08:24 ID:0+1Eiy81
Bluetoothのシリアルポートを使ってAVRに書き込めた人いる?
最近小型化が進んでるから数センチ角のモジュールを繋いで書き込む対象から電源もとれれば手軽になれば便利そうだが、無理だよねやっぱり。
764774ワット発電中さん:2009/03/20(金) 14:55:16 ID:LYNzFF+u
自己書き換えにすれば何でもいける。
BluetoothでもJigBeeでも赤外線リモコンでも。
765774ワット発電中さん:2009/03/20(金) 20:57:12 ID:QBtPK+qw
連休で時間ができたから>>648のやつ組んでみた
結構いい音で鳴るもんなんだな
まあ再生だけならMP3プレーヤがあるから
録音機能がつくと価値が出てくるかもしれない
766774ワット発電中さん:2009/03/21(土) 10:54:21 ID:nqSoHRsm
必要に応じてそれぞれ決められた音声(肉声)をスピーカーから出すってなると、
SDカードに音声ファイル入れて、どのファイルがどの音声かの番号を覚えておいて
再生させる以外方法ってないですよね?
2MbitのEEPROM(23EE020)とかなら大量に在庫があるんだけど生かせれば・・・
767774ワット発電中さん:2009/03/21(土) 10:58:46 ID:91K803b4
>>766
ユーザーが音声の差し替えする必要がないなら、ファイルシステム使わなくてもいいんじゃない?
case1ではEEPROMの何番地から何バイトを再生とかでもいいと思う。
768766:2009/03/21(土) 11:54:18 ID:nqSoHRsm
>>767
なるほど。SDカードの変わりにEEPROMっていう感じですね。
ちょっとEEPROMのデータ調べてみます。(過去のものなので・・・)
アドバイスありがとうございます。
769766:2009/03/21(土) 11:56:45 ID:nqSoHRsm
PH29EE010の間違いでした。
770774ワット発電中さん:2009/03/21(土) 17:28:00 ID:5Zcq1REA
>>768
一番安いmicroSDに直接ハンダ付けしてみるって手もある、もちろん使うときはファイルシステムなしで。
771774ワット発電中さん:2009/03/21(土) 21:42:26 ID:OSySRQxn
>>770
これかな?
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews36#q31214ab

このページの内容は役に立ちましたか?

1 2 3 4 5
非常に低い 非常に高い
772774ワット発電中さん:2009/03/21(土) 22:54:08 ID:5Zcq1REA
>>771
いやアダプタにではなく直接。
最近のmicroSDは安すぎだよね、数百円で512MBが買えるし500円出せば2GBとおつりがくるしさ。
773774ワット発電中さん:2009/03/21(土) 23:49:25 ID:8y2Muair
最近はカードよりソケットの方が高いからな。
774774ワット発電中さん:2009/03/22(日) 05:30:56 ID:rlbpK9Ru
>>771
[ブレッドボード用SDCARDアダプタの試作]ってやつだよね
すっごい。これは思いつかなかった。
変換ソケットだけはどんどんあまっていくから作ってみよう
775774ワット発電中さん:2009/03/22(日) 12:55:33 ID:zXmRhTdq
>>774
ああ、たしかにシリアルEEPROMを買ってくるよりmicroSDは安い。

しかもmicroSDの容量はAVRの64Kの中から見たら無尽蔵だ。
776774ワット発電中さん:2009/03/22(日) 13:28:58 ID:7ZEN0Dv+
気温や湿度のデータロガーに使ったら2GB埋まるのに何日かかることやら。
777774ワット発電中さん:2009/03/22(日) 15:40:14 ID:rlbpK9Ru
>>776
1年分を記録させてグラフ化・・・
そして1年後、SDカードが壊れてたとか orz
778774ワット発電中さん:2009/03/22(日) 18:46:15 ID:pHI2LpNB
>>774
へぇ、SDカードって100milピッチなのか・・・これはいいな。
L字ヘッドピンを使えば便利になるかな?
779774ワット発電中さん:2009/03/22(日) 18:49:57 ID:pxsiPrQd
変換基板でええんちゃう?
カード検出端子も出てるし。
780774ワット発電中さん:2009/03/22(日) 19:07:23 ID:PCIK9p+r
>>774
こりゃいい。さっそくマネしました

>>779
値段が10倍高いよう
781774ワット発電中さん:2009/03/22(日) 19:33:18 ID:7ZEN0Dv+
秋月でも8MBのSDが100円でEEPROMの出番無くなってしまった。
ttp://akizukidenshi.com/catalog/g/gS-02549/
782774ワット発電中さん:2009/03/22(日) 20:31:31 ID:9qyD8oDj
>>778
いや100milではないんですよ。
でも微妙にずらすとギリギリ収まってくれる。
783774ワット発電中さん:2009/03/22(日) 22:06:41 ID:80/vVqrY
F特性なんてパスコンにも使いたくないな。せめてX7R。
784774ワット発電中さん:2009/03/22(日) 22:07:23 ID:80/vVqrY
誤爆
785774ワット発電中さん:2009/03/23(月) 03:43:50 ID:w5YlHzgY
>>782
写真を見るとたしかに微妙ですねー
786774ワット発電中さん:2009/03/23(月) 08:21:22 ID:XHOPeH0F
>>778
おー、L字のピンヘッダー使えばいいね、アッタマい〜
早速やってみようっと。
787774ワット発電中さん:2009/03/23(月) 18:25:12 ID:ANY+zH7g
Tiny45が一度も書き込むことなく(直前のavrspx -rは反応した)お亡くなりになり
取り合えずヒューズリセットしてみたいんだが
手軽なリセット回路とか載ってるとこあったら教えてくれ
788774ワット発電中さん:2009/03/23(月) 22:29:15 ID:gsIMbA1b
45ならぐぐれば見つかるだろ
789774ワット発電中さん:2009/03/23(月) 23:04:23 ID:YQsXgFv6
Atmelの推奨するAVR用ISPコネクタって、基板側は2x3のピンヘッダなのはわかるんだけど、
コネクタ側はなに使うんですか?

共立で売っているQIコネクタでいいんですか?

「QIコネクタ06P(3P×2列)[R指]/QII-6 (-) 」一番下
http://www.e-netten.jp/eleshop/cgi/search.cgi?syou=%83R%83l%83N%83^&hinmei=QI%83R%83l%83N%83^&so=3

790774ワット発電中さん:2009/03/23(月) 23:10:33 ID:Is/Z5UWt
>>789
好きにやればいいじゃね?
俺は共立のこのセットで使ってるけど。

BOXプラグ6P(直型) JS-1200-06 (-/) 55円
ケーブル圧接型ソケット6P FC-6P (-/) 55円
791774ワット発電中さん:2009/03/24(火) 00:03:19 ID:hhZyadOA
ありがとう。
フラットケーブルを持ってる場合はこっちの方が楽みたいですね。
5Pケーブルなら工具無しでも圧接できそうだし。
792774ワット発電中さん:2009/03/24(火) 10:10:10 ID:FVJ7Ce0y
俺はこれ使ってる
http://www.sengoku.co.jp/mod/sgk_cart/search.php?code=2ASU-6HK3
無駄に高いけど、失敗知らず
793774ワット発電中さん:2009/03/24(火) 11:10:15 ID:BfF8JOuU
マルツだと

ボックスヘッダ 6P 基板取付け 115円
https://www.marutsu.co.jp/user/shohin.php?p=40243
フラットケーブルコネクター6ピン 157円
https://www.marutsu.co.jp/user/shohin.php?p=40245
794774ワット発電中さん:2009/03/24(火) 20:47:28 ID:zFlNIMSl
ATtiny85−20PU
って8k使い切れないんですけど
795774ワット発電中さん:2009/03/24(火) 20:52:17 ID:qFnrljHg
自分は秋月で売ってるピンヘッダの2列のメスを切って削って使ってる、いままでミス無し。
796774ワット発電中さん:2009/03/24(火) 23:27:34 ID:nqzC/zUX
ピンとピンを導通させるプログラムができてしまったんだが、そんなことあり得るのか?マイコンがおかしいのかと変えてやってみたがどれも同じ結果、テスター変えても同じ、導通してるのにマイコン壊れない・回路の動作に影響ない、電源切ると導通しなくなるという状況。
797774ワット発電中さん:2009/03/24(火) 23:38:21 ID:rFORdThY
ソース晒して他人の環境で再現実験が確実かと・・・
798774ワット発電中さん:2009/03/24(火) 23:55:10 ID:qllVklxE
それ以前に、電源入った回路内の導通なんか正しく測れるの?
799774ワット発電中さん:2009/03/25(水) 00:22:48 ID:d1TOvis9
>>798
信じてくれないかもしれないが、晒す為の環境がない。

>>799
取り外しできるように、mega64サイズのはマイコン乗ってるだけの基板使ってるんだよ。マイコンのピンそれぞれをユニバーサル基板にさせるぐらいに延長させて。部活動でやってる事だから、下級生がマイコン殺したり回路ミスったりすることがよくあるからな。
800774ワット発電中さん:2009/03/25(水) 00:24:05 ID:d1TOvis9
>>799
安価ミスったが気にするな
801774ワット発電中さん:2009/03/25(水) 00:31:43 ID:pSRIAEho
いや、だから、たとえマイコン単体でもそれは回路なんだよ。
電源入った状態じゃテスターでピン間の導通なんて正しく測れるとは限らないでしょ。

と言ってるつもりだったのだが、ご理解いただけなかったところを見ると素なのか・・・・・orz
802774ワット発電中さん:2009/03/25(水) 01:16:51 ID:TFLfWWRQ
そんな事がありうるのかどうかを聞きたいなら
「そんなこと」の詳細を書いてほしいね。

もし両方出力ポートで同じ向きになってるなら
Vcc、あるいはGND経由で導通するかもしれないし、
電位差がある状態なら、抵抗測定モードで
テスター繋いでも計れるはずないし。

マイコンをどうしたら、どんな状態になったのか。
なぜ導通してると判断したのか。
その辺を書いてよ。
803774ワット発電中さん:2009/03/25(水) 01:23:40 ID:Yg4Op/k4
導通テスターはリード棒に電圧が掛かってます。その電圧がゼロになると導通。
"ONしているトランジスタと電源"
"ONしているFETとFET" でも導通します。
804774ワット発電中さん:2009/03/25(水) 01:48:52 ID:AwRjtRTP
つーか、出力ピン設定でHighになったピン同士は当然「導通」してるんじゃないの?
両方ともFETでVccに接続状態ですよね?
805774ワット発電中さん:2009/03/25(水) 02:04:04 ID:Yg4Op/k4
はい、High-HighやLow-Lowだと電源経由で導通します。
High-Lowでもゼロ電圧以下になる場合は導通と判断されるでしょう。

又、入力ピンに導通テスターをあてると電源以上の+電圧やGND以下の−電圧が
掛かるので(インサーキットテスター以外は)マイコンを壊す可能性があります。
806774ワット発電中さん:2009/03/25(水) 02:43:48 ID:d1TOvis9
>>801その説明で理解しました。はい、ほとんど素なのは認めます。回路設計は自分じゃないですし。
>>802状況はマイコンのVccピン及びGNDピンのみ、それぞれVcc、GNDに接続、導通ピンはどちらも出力設定で何も繋いでない状態でした。GNDにも繋いでません。導通テスターの結果で判断しました。
807774ワット発電中さん:2009/03/25(水) 05:37:39 ID:mt/PLK2h
ねぇねぇ。プルアップ・プルダウンって 2k 〜 4.7kΩ が多いみたいですが、
自己放電の為にGNDに落とす時って0kΩ以外なら何でもいいのでしょうか?
808774ワット発電中さん:2009/03/25(水) 06:36:22 ID:+geV6Y7a
E=IRでIが耐えられるならOK?
809774ワット発電中さん:2009/03/25(水) 09:09:19 ID:vejUH4/e
>>807
2K〜4.7Kって小さくねえ?
AVRだよね、47K〜100Kくらいでいい気がするけど。
810774ワット発電中さん:2009/03/25(水) 10:06:16 ID:vo5rHKzv
配線の引き回し延長も考慮して決めろよ
811774ワット発電中さん:2009/03/25(水) 10:37:49 ID:3yGXmrRB
AVR未経験者です。ATMEGA48のライターで使いやすいのを教えて。
812774ワット発電中さん:2009/03/25(水) 10:44:05 ID:mt/PLK2h
>>811
人に教えてもらう時の話し方を・・(略
まずググれ。
813774ワット発電中さん:2009/03/25(水) 10:54:58 ID:mt/PLK2h
>>808-809
なるほど。サイトによっては2kや4.7kになっているんですよね。
AVR内部に搭載のプルアップ抵抗値は、20kΩ〜100kΩと書いてますね。
もう少し調べてみます。
814774ワット発電中さん:2009/03/25(水) 13:49:25 ID:T7EgVjLT
プルアップ/ダウン抵抗にあまり大きい抵抗を使うと波形が鈍って
立ち上がり/下がりが遅くなったりする、みたいなことをどこかで
見たんですが、合っていますでしょうか?
815774ワット発電中さん:2009/03/25(水) 13:55:46 ID:HtxDK6Tr
OD出力のことではないですかね。
816774ワット発電中さん:2009/03/25(水) 18:15:47 ID:vejUH4/e
未使用ピンに対するプルダウン/プルアップと、オープンドレインに使うのだと抵抗値も違ってくるね。
波形がなまって困るところなら、小さくするか、そもそもプルアップなんか使わない。
AVR板だから、プッシュスイッチのオープン防止なんかだろうと思って100Kでいいと言いますた。
817774ワット発電中さん:2009/03/25(水) 18:32:41 ID:VecDL8oR
>>807
入力容量の充放電だけ考えれば小さい分はそれでいいけど、
入力元のインピーダンスが高かったらあまり小さいとHi/Lowにならないぞ。消費電流も増えるし
あまり大きいと離れたスイッチとかに使うならノイズに弱くなる
多くの回路で無難な値が4.7kあたり、ってだけ。AVRの入力なら>>809くらいでもOK、ノイズ多そうなら小さくする、後は回路しだい
>>814
だいたいあってる。「あまり」が回路によって違うけど。
AVRの入力なら具体的に、・・・と思ったら入力容量載ってないよ。等価回路に記号だけ書いてある
TWIの方から推測すると10pF位?まあMHzオーダーの入力入れなければあまり気にしなくてもいいんじゃね
スイッチング用のFETをドライブする時とかはかなり重要になるけど
818774ワット発電中さん:2009/03/26(木) 02:34:34 ID:DTVQO6qu
>>811

趣味の工作なら半田付け必要だけど、AVRDRAGONでない?
みんなはどんなライター使ってるんだろう。

819774ワット発電中さん:2009/03/26(木) 06:45:16 ID:/oT9aauZ
>>818
俺はマルマンかな
820774ワット発電中さん:2009/03/26(木) 12:30:19 ID:tJIxYLc5
ジッポーだろ、JK
マルマンはパイポだ。
821774ワット発電中さん:2009/03/26(木) 15:37:09 ID:ITZFWx4v
好きなライターは王雀孫です
茄子は臭すぎてだめでつ
822774ワット発電中さん:2009/03/26(木) 21:14:27 ID:2g/9jUDA
チルチルミチルに決まっておろうが。
823774ワット発電中さん:2009/03/26(木) 21:24:41 ID:tRwNnUR7
チルチルお兄ちゃん♪
チルミルってチルチルミチルの略なんかね
824774ワット発電中さん:2009/03/26(木) 23:16:41 ID:/oT9aauZ
おや、マルマンってライター無かったかい?
825774ワット発電中さん:2009/03/26(木) 23:28:56 ID:J+ETpU0w
「わたしはコレで会社を辞めました」のCMでパイポがあんまり売れて、
本業のライターの売れ行きに響いたので、そのCMの発案者がクビになった。
っていう都市伝説があった。
826774ワット発電中さん:2009/03/27(金) 06:41:13 ID:6yBF/KdV
>>825
まぢすか?! 有りそうで怖いな。
JTの売れ行きにも響きそうですしねぇ<当時
827774ワット発電中さん:2009/03/31(火) 00:11:57 ID:lx4gBC5V
ネタがなくてつまらんので、自分がAVRマイコンを使って作ったものを紹介していきましょう。


俺は、テレビリモコンで動く車を作ったよ。タミヤのギアボックスとか使って。
あと、温度計とか大麻ーとか
828774ワット発電中さん:2009/03/31(火) 01:52:35 ID:90QdM45M
大麻取締法には気を付けてな。

自分は時計用の水晶発振子で時計を作ったり、タッチセンサとか既にあるものの模倣と味付け程度のレベル。
紛失したアンプのリモコンの代わりをどうにかできないかと考えてるが、どう考えても無理だよなぁw
829774ワット発電中さん:2009/03/31(火) 07:07:13 ID:SmKMOhrd
かなりむずかしい
830774ワット発電中さん:2009/03/31(火) 07:25:16 ID:oGwy1uLr
USBBLASTERマイコンでエミュレートした奴をAT90USB162に移植中
…ごめんまたライターが増えちゃう
831774ワット発電中さん:2009/03/31(火) 08:00:13 ID:mZXl7aD7
おれはテレビに映るアナログ時計かな、
チャイム付きで。
832774ワット発電中さん:2009/03/31(火) 08:55:44 ID:4BbCEkru
mega8で、PSのネジコンを、デュアルショック2互換にするアダプタを作った。
833774ワット発電中さん:2009/03/31(火) 09:35:28 ID:eopUFUcw
>>831
秋月でカメラモジュール買って、目覚まし時計を映しとけ。
834774ワット発電中さん:2009/03/31(火) 11:40:39 ID:SmKMOhrd
835774ワット発電中さん:2009/03/31(火) 20:17:10 ID:OIoSxeKX
AVRはじめようとおもうが
秋月の買うとしたらATMEGA88Pあたりを買っとけば
だいたい間違いないです?
836774ワット発電中さん:2009/03/31(火) 20:19:10 ID:lx4gBC5V
何を作りたいかによる
837774ワット発電中さん:2009/03/31(火) 20:27:57 ID:OIoSxeKX
>>836
自分がたいした事できないんで、
まずは簡単な温度センサとかをいじって
そのうちグラフィックLCDとかに波形を表示してみたりとかできたらいいね
くらいのイメージです、ハイ。
838774ワット発電中さん:2009/03/31(火) 20:47:35 ID:lx4gBC5V
温度センサー使うなら、AD変換使うと思うんで、88Pでおkだと思う。
グラフィックLCDは88Pだと、ちと厳しいかも試練。
839774ワット発電中さん:2009/03/31(火) 21:14:51 ID:mZXl7aD7
>>833
はいはいPIC君の嫉妬嫉妬と。
840774ワット発電中さん:2009/03/31(火) 21:15:11 ID:OIoSxeKX
>>838
ちと厳しいすか。
将来的にやってみたいという感じですので
そのときにまたチョイスしてみようかな。
とりあえず88Pで遊んでみます
841774ワット発電中さん:2009/03/31(火) 21:17:22 ID:9R9sHNv6
ハイ。
842774ワット発電中さん:2009/03/31(火) 22:03:48 ID:EIkJoqiQ
>>832
切実にうp希望
デュアルショック互換に出来ればXFPS経由で箱○でネジコンが使える…
843774ワット発電中さん:2009/03/31(火) 23:26:58 ID:hzoR9msq
>>842
自分で作るのが楽しいんだろ!!
844774ワット発電中さん:2009/03/31(火) 23:27:50 ID:ZW/4oDSS
>>840
温度センサーがアナログ出力なら、ADポートに繋げばいいだけなので、
グラフィック液晶に15本くらい取られても、88だったらなんとか。
他にスイッチとかいろいろつけるならピン数が足りないかも
845774ワット発電中さん:2009/03/31(火) 23:58:46 ID:3EUjgano
>>840
GLCDの表示画像やフォントで容量食われるから、もしやるならmega128とかの容量と足が多いのをオススメ
846774ワット発電中さん:2009/04/01(水) 05:39:28 ID:Bi2e1ekh
俺は、ネジコンをGTFproにするのをつくった。
847774ワット発電中さん:2009/04/01(水) 07:22:42 ID:dSFQIBT4
液晶はフレームバッファを違うマイコンでやらせるのも面白い。
間はSPIとかにしといてやって。
848774ワット発電中さん:2009/04/01(水) 10:30:07 ID:zJXzvmeg
tiny261とかだと温度センサ内蔵なんだけどね・・・
849774ワット発電中さん:2009/04/01(水) 11:11:25 ID:yvdmOb/n
秋月にないだろが
850774ワット発電中さん:2009/04/01(水) 12:15:59 ID:um6SsJrr
>>846
それはnegtusbが有るからいらないかな…
でもグランツーリスモはGTFは補正掛かるんだっけか?
851774ワット発電中さん:2009/04/01(水) 16:45:37 ID:TEIV8UVS
88Pで遊ぶなら、>>648のやつやってみれば?
852774ワット発電中さん:2009/04/01(水) 17:04:20 ID:Bi2e1ekh
>>850
俺も持ってるよ、アレ。
でも、某氏はGTFproに対応する気がないみたいだし、
自分で作ってみたかったんだよね。
853774ワット発電中さん:2009/04/01(水) 18:42:07 ID:hUlOplva
>>852
ネジコンでよく出来るねw
ハンコンだとフィードバック遅くてシュルハンしてたらスピンするけど、ネジコンだとクイック過ぎてまっすぐ走れなそうな気がするwww
854774ワット発電中さん:2009/04/03(金) 02:47:06 ID:6rEAa9E4
試しながら学ぶの一番最初の回路が動かない。だれか助けてください
ISPで接続してのATtiny2313へのプログラム書き込みはちゃんと成功するのにLED点滅しない
テスターでちゃんと回路できてることは確認した。LEDが壊れてるわけでもなかった
なんでじゃああああ
855774ワット発電中さん:2009/04/03(金) 03:42:43 ID:DdcS2WuR
>>853
そのあたりは調整してて、センター付近はだるいようになってます。
逆に俺は、ハンコンでは真っ直ぐ走れません。
856774ワット発電中さん:2009/04/03(金) 03:55:17 ID:6rEAa9E4
ごめん違うtiny2313にしたら動きました
857774ワット発電中さん:2009/04/03(金) 10:17:02 ID:nHutXjIr
>>856
ちょっと興味ある。それって秋月で買った?
俺もレールで買ったやつのうち、一個だけ動作がおかしい
(出力がHに上がりきらない。まるで中途半端なプルアップを
しているオープンドレイン出力みたいな感じ)

ロット不良じゃあるまいな?
858774ワット発電中さん:2009/04/03(金) 10:18:56 ID:snyrWK3Z
一個だけなら、静電気くらって出力が半死状態なんじゃね?
859774ワット発電中さん:2009/04/03(金) 21:17:24 ID:6rEAa9E4
分かりました。ごめんなさいマイコンのせいではありませんでした。
最初はとりあえずすぐ打てるC言語の方のサンプルで試していたんです。
それで動かなかったので違う2313に交換したんですが、その交換する前に
アセンブラでコード打ち直していたんです。
そしてそれを消去にチェックを入れずに書き込んでいた。もちろん動かない
でも、新しい2313は空だから消去しなくても上手く書き込めてちゃんと動く。
そういうことでした。

そしてC言語のコードが一回目上手く動かなかったのはこれのせいでした。
ttp://mycomputer.cqpub.co.jp/avr02/
----------------------------------引用----------------------------------
現時点での最新版 WinAVR-20080610では、 「Project Option」ウインドウの「Optimization」
の初期値が「-Os」となっています。
このままでは、テスト・プログラムのうち、空ループによる時間待ちを使用しているプログラムでは空
ループが最適化されてしまい時間待ちしなくなります。
そこで、空ループを使用するプログラムについては、この設定を最適化を行わない「-O0」に変更します。
--------------------------------------------------------------------------
もちろんこの時、消去やらベリファイやら色々試してたんですが、アセンブラに書き換えた後は
一度消去にチェック入れずに書き込んで動かず、その後すぐAVR外して新しい2313に交換しちゃってた。
それでAVR交換したから動いた。と勘違いしていました。
次のコード試そうとして今気づいた
860774ワット発電中さん:2009/04/03(金) 21:35:20 ID:iNam6AF6
俺も最初、最適化の関係でLED点滅しなくて2日も悩んだ・・・
自分も試しながら学ぶAVR入門で勉強しましたよ。

あと、コンパイラのバージョンが最近のじゃないと、本に載ってる割り込みを
使ったプログラムが上手く動きませんので注意して下さい。
自分は2005年のバージョンを使ってたから割り込みの
プログラムが動かなくて徹夜してしまった・・・
861774ワット発電中さん:2009/04/03(金) 23:35:55 ID:CglRF8gE
>>859
ソフトマイマーのときは
#define nop() __asm__ __volatile__ ("nop")
と定義しておいて
nop(); をループ内に書けば最適化しても大丈夫。

AVRの本を3冊確認したけどみんな ; や {} でループしているので
悪い見本を真似してしる気がします。
862774ワット発電中さん:2009/04/03(金) 23:45:47 ID:DMCjcgJv
ちょろいICを制御しようとしてCで手持ちの90S2313youのプログラム書いたら
フラッシュ125%だとよ。他の手持ちはmega88。はぁ、書き直すか。
863774ワット発電中さん:2009/04/03(金) 23:50:17 ID:6rEAa9E4
>>860
最初のコードでこれはなかなかの罠ですよね。
これから始めようってところだから何がどうなってるのか予想もつかなかったし
WinAVRは最新のを使ってます。ありがとう
>>861
volatileで最適化を抑制できるんですね。volatileって初めて知りました。
864774ワット発電中さん:2009/04/03(金) 23:58:45 ID:JwBG6nHG
for(n = 0; n < 100; n++) PINB;
これで桶。asmは不要。
865774ワット発電中さん:2009/04/04(土) 00:12:39 ID:a6mB90SV
>>863
volatileは、割り込みでフラグを立てるときには必須になる。

while(1){
 if ( flg==true ){
   break;
 }
}

このflg変数が割り込みで変化するような場合、この
 if ( flg==true ){
   break;
 }
の部分は、コンパイラの最適化で削除されてしまう可能性がある。

こういう場合、flgの宣言は
volatile int flg;
という様にしておくと、最適化で削除されることはない。
 
866774ワット発電中さん:2009/04/04(土) 09:27:12 ID:CoOt2j4n
>>864
へぇ〜、これ最適化で消えないのか。試してみたら-Osでもちゃんと残っていた。

    for(n = 0; n < 100; n++) PINB;
 8c: 96 b3   in   r25, 0x16  ; 22
 8e: 8f 5f   subi  r24, 0xFF  ; 255
 90: 84 36   cpi   r24, 0x64  ; 100
 92: e1 f7   brne  .-8     ; 0x8c <main+0x20>

UDRみたいに読み込んだだけで動作するポートもあるからこうなっているのかな。
867774ワット発電中さん:2009/04/04(土) 10:01:34 ID:EAlXO+R5
ループ待ちならRJMP PC+1の方がいいんじゃないか?
同じサイズで2倍待てるよ。
868774ワット発電中さん:2009/04/04(土) 10:40:56 ID:CoOt2j4n
>>867
面倒だからねえ・・・一応インラインアセンブラでできるけど。
__asm__ __volatile__ ("nop");
__asm__ __volatile__ ("rjmp L_%=" "\n\t" "L_%=:" "\n\t");

でも、ループ自体が1周3クロックあるので、nop使用で1周4クロックがrjmpで1周5クロックになるだけ。2倍は待てない。
nop式でループ数が255を越える場合でも、318相当まで8bitループカウンタで対応できるようになるだけだからなあ。
そういう場合でも、2バイト犠牲にしてnopを複数使ってわかりやすい方がいいかなと思う。
もしくはカウンタを16bitにして。
869774ワット発電中さん:2009/04/04(土) 10:57:48 ID:EAlXO+R5
>>868
一応 asm("rjmp .+2") でいけるみたい。
でもたしかにループ処理の分があるから2倍は無理だったね。

リンカマップからの連想でやってみたらいけたのだけど、このあたりの
構文のドキュメントってどこにあるのかな。gasのドキュメント?
870774ワット発電中さん:2009/04/04(土) 11:24:40 ID:CoOt2j4n
>>869
おお、こんな方法があるのか。
基本的には入出力オペランドやラベルを展開してgasに渡しているのだから、gasのドキュメントが基本なんでしょうね。
お手軽にはコンパイル時出てくるlssやlstファイルのアセンブラの記述を試してみることかな?
>>866のでも、 brne .-8ってのが出てきているな。
871774ワット発電中さん:2009/04/04(土) 17:10:20 ID:apSrtP2D
ソースを見ないでレスしてるから、外してたらスマンだけれど、
時間待ちループにどうして、_delay_us()や_delay_ms()を使わんの?
872774ワット発電中さん:2009/04/04(土) 17:37:46 ID:y3TD1cZX
>>871
valatileの話題から派生したから。
873774ワット発電中さん:2009/04/04(土) 17:40:01 ID:apSrtP2D
>>872
あ、いや>859のソースの話
874774ワット発電中さん:2009/04/04(土) 17:56:34 ID:CoOt2j4n
>>871
ウェイトループ自身が面白いからかなあw
>>859の件は、「以前は」_delay_XXマクロってちょっと制限がきつくて使いにくかったからだろうか。

以前は_delay_ms()とかは使える限界が短いのでだめだと俺も
思っていたけど、いつの間にか改良されているな。知らんかった。

F_CPUが16MHzで_delay_ms(1000)とやると、こんなコード吐く。

 8a: 80 e1   ldi  r24, 0x10 ; 16
 8c: 97 e2   ldi  r25, 0x27 ; 39
 8e: 20 e9   ldi  r18, 0x90 ; 144
 90: 31 e0   ldi  r19, 0x01 ; 1
 92: f9 01   movw r30, r18
 94: 31 97   sbiw r30, 0x01 ; 1
 96: f1 f7   brne .-4    ; 0x94 <main+0x28>
 98: 01 97   sbiw r24, 0x01 ; 1
 9a: d9 f7   brne .-10    ; 0x92 <main+0x26>

内部ループが4クロック×0x0190-1=0x063Fクロック、
外部ループがおよそ0x063Fクロック×0x2710クロック=15990000(d)で、
16MHzで999.375msec。ちゃんと出せるようになってるな。
F_CPU変えてコンパイルしてみると、どうやら内部ループが0.1msecになるようになってるみたいだ。
故に限界は6553.5msecまで伸びている。

delay_us()の方は、16bitカウンタシングルループになっている。
16MHzなら4095usecまでOKになっているな。
875774ワット発電中さん:2009/04/04(土) 21:18:13 ID:getVzKK/
単純に命令の実行時間とかを感覚的に理解しやすくするためじゃないの?
入門用書籍なんだし
876774ワット発電中さん:2009/04/04(土) 22:42:29 ID:a6mB90SV
>>871
_delay_us()
みたいにシビアなやつだと、中で何やっているのか気になるので
(CPUのクロックに依存する/しない とか)
それだったら自分で書いたほうがいいや。とかそういう気になるんだ。
877774ワット発電中さん:2009/04/04(土) 23:15:09 ID:JdWuGRZa
>>876
そんなのコンパイル後のアセンブラソース読めばわかるじゃん
878774ワット発電中さん:2009/04/05(日) 00:36:41 ID:WRGY+I89
>>877
そんな手間かけるのがイヤなんだってばww
879774ワット発電中さん:2009/04/05(日) 00:53:44 ID:DxUgsgqs
>>878
avr-libcのマニュアル読めばいいじゃん
http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html
880774ワット発電中さん:2009/04/05(日) 01:08:09 ID:sz5HW7MC
CPUのクロックには依存する(だろうと考えるのが常識)ので、うろ覚えの時は
ビルド方法を調べないと〜とか面倒を感じることはあるな。そんなんだったら
自分で待ちたい程度カウントさせたほうが脳と指の負荷が軽い。自分で書くなら
どんなマイコンでも同じ書き方だから指が思った瞬間に打ってる。
881774ワット発電中さん:2009/04/05(日) 01:10:07 ID:WRGY+I89
>>879
そんな手間かけるのがイヤなんだってばww
882774ワット発電中さん:2009/04/05(日) 01:13:50 ID:OuZX51Ve
ウェイトにどんな方法をとるかなんてのは、単にプログラミング・スタイルでしかないな。
883774ワット発電中さん:2009/04/05(日) 01:21:16 ID:QAEG7sQY
AVR StudioってCとアセンブラの同時表示出来なかったっけ?
884774ワット発電中さん:2009/04/05(日) 02:45:59 ID:49d2qLSZ
>>881
お前には向いてない。やめろ。
885774ワット発電中さん:2009/04/06(月) 22:40:40 ID:S3K7uElN
見事なスレスト
886774ワット発電中さん:2009/04/06(月) 23:59:31 ID:f5JqamOI
まぁ、なに使うにしてもマニュアルを読むのは大切だね。
ところで、オーディオの光デジタルをAVRに入れて、R-2Rラダー抵抗でアナログにするってのいけるかな。
どっかで見たことある気がするんだけど…
887774ワット発電中さん:2009/04/07(火) 00:19:28 ID:kzGQcrmh
SPDIFのDPLL作るのが20MHzでも微妙。
光パルスの最小幅は48KHz*128=6.144MHzで理論上13MHzでいけるけど、
USBと違って途切れなく受ける必要があるのが難点。
俺は諦めちゃった。
888774ワット発電中さん:2009/04/07(火) 00:33:55 ID:nhSsB15l
>>886
ttp://www.ueno.no-ip.org/tube-audio/

だったとおもうのだが、今は移転したのかな??
spdifレシーバ自体はCS8414か何かを使っていた筈だけど。
AVRはデジタルアッテネータとして使っていたね。
889774ワット発電中さん:2009/04/07(火) 01:43:12 ID:5i5U3mLu
そっか。やっぱAVRだけでーなんてそう単純にはできないんだね。
お手軽に手作り気分を味わうなら専用のいいICがあるみたいだし。
とても参考になったよ、ありがとう。
890774ワット発電中さん:2009/04/07(火) 09:57:34 ID:JJ1sJCNI
>>889
AVRはお手軽〜高機能までカバーしてると思って愛用してますが、
お手軽のいいICってたとえばどういうのがありますか?
891774ワット発電中さん:2009/04/07(火) 10:47:38 ID:5i5U3mLu
千石にあったやつで、データシート斜め読みだから合ってるかは微妙だけど、PCM1794ADBRってやつ。
俺はぶきっちょだから実装するのがアレだけど、SPDIFとUSBでいけるみたいでヘッドフォンを駆動できるって記憶してる。
892774ワット発電中さん:2009/04/07(火) 11:40:39 ID:JJ1sJCNI
>>891
ありがとうございます。見てみます。
893774ワット発電中さん:2009/04/08(水) 08:12:58 ID:eP+pV4LD
>>891
ぐぐると無料サンプルみたいだから、貰って実験してみては?
ttp://focus.tij.co.jp/jp/docs/prod/folders/print/pcm1794a.html
894774ワット発電中さん:2009/04/08(水) 18:10:27 ID:pw8fKZQK
AVR初心者です。
「試し・・AVR入門」本、AVRISP mk-II、ATtiny2313を購入し、勉強を始めたのですが、
プログラムの書込み途中でエラーになり困ってます。

AVRStudio Ver4.16 Build628、AVRISP mk-II、Win-XP(SP3)で使用しております。
AVRISPl mk-II上のLEDは緑色でOK、リセットピンはVccに10kΩでプルアップ(削除でも実施済)

Mainタブ:Device and Signature Bytes=ATtiny2313
     Programming Mode and Target Settings=ISP Frequency 125.0 kHz
HW Settingsタブ:Voltages リードできている→Getting VTARGET.. 5.0V.. OK

ProgramタブのDevice−Erase Device を実施すると以下のメッセージで「ISP Mode Error」
ウィンドウが表示される。

------------------------------------------
Setting mode and device parameters.. OK!
Entering programming mode.. FAILED!
Leaving programming mode.. OK!
------------------------------------------

パスコン0.1uFあり。電源はUSBからの5.0Vと電池x3でも実施。AT90S2313でも実施。
回路を全て外し、tiny2313+パスコン+リセットプルアップのみでAVRISP mk-II接続で実施。

いずれの方法でも症状は変わりません。

過去のスレで同様の内容があるのですが、結果(解決策)が出ていません。
AVRマイコン総合スレ Part9
http://hagephone.dip.jp/test/read.cgi/denki/1192625746/

解決策をご教示下さい。よろしくお願いします。
895774ワット発電中さん:2009/04/08(水) 18:31:34 ID:uXjwJXDJ
ISPのクロックスピードを低くしてみるとかは試しましたか?
896774ワット発電中さん:2009/04/08(水) 18:34:50 ID:uXjwJXDJ
>Programming Mode and Target Settings=ISP Frequency 125.0 kHz
既に試しているようですね。
見落としてました>>895は忘れてください
897774ワット発電中さん:2009/04/08(水) 18:43:16 ID:Os8a01PB
>>894
接続ケーブルとISPの配線の長さは大丈夫?
898774ワット発電中さん:2009/04/08(水) 19:14:32 ID:pasnpJKb
>>895
逆に速くしたほうがいい場合も。
いずれにせよ、スピードは速くしたり遅くしたりして試したほうがいい。
電源は、ちゃんとした安定化電源の5Vを入れたほうがいいと思うなぁ
899774ワット発電中さん:2009/04/08(水) 19:34:17 ID:sBOTmshb
AVRISP mk-IIはPCから見てUSB上のシリアルポートに見えているのかな?
ポート番号はAVRStudioの指定してる番号と合ってるのかな?
900774ワット発電中さん:2009/04/08(水) 19:45:37 ID:eP+pV4LD
案外PC側のシリアルポートの設定だったり?
ケーブルとかハブとかも?
901774ワット発電中さん:2009/04/08(水) 20:01:23 ID:pw8fKZQK
早速の返信ありがとうございます。
>>897
ブレッドボードを使用しているため、AVRISP mk-IIのコネクタから10cmほどの
ケーブルで接続しています。
短くないと障害になるのでしょうか?
>>898
初め設定を分からずに実施していたので、1MHzでやったと思います。
他の周波数もやってみます。
安定化電源は手元にないので、ちょっと難しいです。
>>899
Erase Device を実施するとLEDが点滅(一瞬赤)になるのでポートは
合っていると思います。
AVRStudioで指定しているポートはどのようにしてみればいいのでしょうか?
902774ワット発電中さん:2009/04/08(水) 20:08:36 ID:pw8fKZQK
>>900
電圧の確認やAVRISP mk-IIのFirmware Upgradeなど正常に終了しております。
(Firmware Upgrade時はLED緑点滅)
よって、つなぎもできていると思ってますが・・・
これでは正しくつながっているとは言えないのでしょうか?
903774ワット発電中さん:2009/04/08(水) 20:20:44 ID:pw8fKZQK
>>898
設定できる全ての周波数でやってみました。
8M→6.48kHzまでは今までの症状と同じですが、100Hz、51.1Hzでは
USBの接続が切り離され、再度USBを接続しなおして、つながるという
ような状態になりました。
100Hz、51.1Hzでは以下のメッセージでした。

Setting mode and device parameters.. OK!
Entering programming mode.. FAILED!
Leaving programming mode.. FAILED!
904774ワット発電中さん:2009/04/08(水) 21:41:04 ID:9nZkErc/
>>901
AVRStudioで指定しているポートはどのようにしてみればいいのでしょうか

メニューでTools->Program AVR->Connectで
ツールとポートが選択できるはず。
905774ワット発電中さん:2009/04/08(水) 21:42:58 ID:9nZkErc/
症状が間違えて外部クロック設定したときに似てるな
906774ワット発電中さん:2009/04/08(水) 22:01:41 ID:cFlAUbKt
>>894
Programming mode自体に入れないってことは
接続自体が変である気もします。
具体的にAVRISPコネクタのどことtiny2313のどこを結線しているのか
書いてみませんか?
(MISOとかMOSIという表記ではなく、ライタ側はコネクタ内の物理的な場所で、AVR側はピン番号で。)

http://www.atmel.com/dyn/resources/prod_documents/AVRISPmkII_UG.pdf
26ページにISPコネクタの絵がありますが、これはターゲット側のピンヘッダを上から見たときの配置です。
ブレッドボードを使用しているとのことですが、もしかしてAVRISPコネクタ側にジャンパケーブルを、
この図を参照につないでいませんか?(コネクタ側はこれと鏡像になる)
907774ワット発電中さん:2009/04/08(水) 22:27:45 ID:pw8fKZQK
>>897
>>901
AVRISP mk-IIのコネクタからデバイスまでの接続が10cmほどあったのを
専用にユニバーサル基板で作成し、AVRISP mk-IIのコネクタからデバイスまで
の全て信号を2cm以内にしましたが、状態は変わりません。

何か解決に向けたアドバイスをいただければと思ってます。
よろしくお願いします。
908774ワット発電中さん:2009/04/08(水) 22:39:14 ID:cFlAUbKt
>>907
ケーブルは50cmくらいあっても大丈夫だよ。
909774ワット発電中さん:2009/04/08(水) 22:57:26 ID:pw8fKZQK
>>906
ご丁寧にありがとうございます。
ユニバーサル基板で配線しましたので、基板の部品面視です。
接続は以下の通りです。

●が1番ピン
デバイスはATtiny2313-20PU

        
        ┌──17
   20───○○○───10
   18───●○○───1
     19──┘
       

 パスコン0.1uF:20−GND(10)
 プルアップ10k:20−1
 電源 :20
 GND:10
910774ワット発電中さん:2009/04/08(水) 23:02:22 ID:Tk4LO3Ei
うっかりなにかの拍子で、あるいは中古を使っていて、ヒューズビットがファクトリデフォルトじゃなくなってたりしてね・・・
911774ワット発電中さん:2009/04/08(水) 23:06:57 ID:z0+rZucd
ヒューズビットがデフォルト状態かどうか、念のため確認してみるとか。
912774ワット発電中さん:2009/04/08(水) 23:10:28 ID:z0+rZucd
リロードしたら同じこと考えてる人がw
たまに報告挙がってるよね。
何故かヒューズビットがデフォルトじゃなかったとかって。
913774ワット発電中さん:2009/04/08(水) 23:22:47 ID:pw8fKZQK
>>910
>>911
デバイスは先日秋月で購入したので新品です。
ツールも含め初めてAVRを使っているので、まだヒューズビットの単語自身
を理解できていません。本は読んでいるのですが・・・
デバイス内に設定されているレジスタがあるようなものなのでしょうか?

もし、上記の憶測が当たっているとしたら、まだデバイスと通信できていない
状態では?と思ってます。

理由:メニューでTools->Program AVR->Connect後、USB選択してFusesタブを
   選択するとエラーになります。
   ヒューズビットが見れていない!?

手元にオシロもないので分かりませんが、リセットもうまくいってないような
気がします。
914774ワット発電中さん:2009/04/08(水) 23:29:32 ID:uXjwJXDJ
ISPの通信ができないとライタからはヒューズビットも読み込めないと思います。
けどここまで色々試してダメだとオシロで波形をみるとかしないと原因はわからないかもしれませんね。
もしくはダメ元で外部発振器をつなげてみるとかくらいでしょうか。
915774ワット発電中さん:2009/04/08(水) 23:39:52 ID:1T2ggS4W
まさかのターゲットのマイコンに電源が供給されてないパターンかも
916774ワット発電中さん:2009/04/08(水) 23:50:46 ID:hC8MSLle
とりあえずなにかクロック入れてみたらいいんじゃね?
917774ワット発電中さん:2009/04/08(水) 23:57:00 ID:cFlAUbKt
>>911
ISPに入れないみたいだから、パラレルライタでもないと確認しようもないな。

>>909
あってるね。AVRにライタ以外の電源はちゃんと供給して・・いるって書いてたね。
他の人が書いているけど、あとはクロックつなげる・入れるか、別のAVRチップに変えてみるか・・・
918774ワット発電中さん:2009/04/09(木) 00:07:46 ID:bFk4iH1e
>>914
>>917
いろいろなアドバイスありがとうございます。
明日、会社で時間をとって(内緒で)オシロで波形を見てみようと思います。
今日のところはありがとうございました。
919774ワット発電中さん:2009/04/09(木) 00:15:39 ID:MWAl/rHs
もう一度よ〜く配線を見直してみたら?
本人はそう繋いだつもりでも、実物はそうなっていなかったなんてことはよくある。
あるいは半田不良とかヨリ線の中の1本がヒゲのようにどこかにショートしてるのとか
が見つかるかもしれないし。
920774ワット発電中さん:2009/04/09(木) 00:20:20 ID:wUcPkIUt
オレもそう思う。
>909
のピンNo.は合っているので、落ち着いて配線確認してみる。
ブレッドボードの接触不良とか配線がずれてるとかあるので
いっそISPの配線をはずしてやり直してみるとか。
921774ワット発電中さん:2009/04/09(木) 00:41:43 ID:5R+6seq5
できるだけEZUSBのようなキットを使わずUSB機器を作りたいんですが、ググっても
余り情報が出てきません。何かお勧めな本ありませんか?
922774ワット発電中さん:2009/04/09(木) 00:59:39 ID:SIqAJfTx
一度ACアダプターや安定化電源から5V取って
マイコンのみ(LED等全て外す)をISPケーブル繋げてやってみては?・・・ってもうしてるか・・・。
USBの場合、さし直したり、差し込む場所変えたり、再起動したりで
認識したりしたりするからね・・・。
リセットピンのプルアップ抵抗などすべて外してパスコンだけでやってみました?
923774ワット発電中さん:2009/04/09(木) 08:13:41 ID:EQRtqeEY
ほとんど可能性ないような気もするけど、
リセットピンのプルアップ抵抗の値とかそれまわりの配線はどうだろう。
1pin-(ISP端子)-抵抗-5V
それと、AT90S2313でやったときはクロック入れた?
924774ワット発電中さん:2009/04/09(木) 08:18:02 ID:kTPh2ZCa
>>921
本じゃないがFT232RL BitBangModeでググれ
コードがいろいろ見つかる
925774ワット発電中さん:2009/04/09(木) 09:04:58 ID:Ja5DmD9Q
2313の20ピン-10ピン間の電圧、1ピン-10ピン間の電圧はそれぞれどのぐらいになってる?
あと、1ピン-10ピン間の電圧が書き込もうとしたときに0V近くまで落ちる?
926774ワット発電中さん:2009/04/09(木) 11:46:42 ID:/HEVQiTA
俺管理者権限ないPCで書き込もうとしたらエラーで書き込めなかったことがある。確認してみたら?
結局管理者権限もらって作業してるが、皆は似た症状出たことある?
927774ワット発電中さん:2009/04/09(木) 15:07:25 ID:IZ0XyQZs
日本語のAVR-LibCが消えてる
どうしたんだろう
928774ワット発電中さん:2009/04/09(木) 15:45:05 ID:mG0jDZ83
929774ワット発電中さん:2009/04/09(木) 17:19:25 ID:E3voJo47
かきかえもなか
930774ワット発電中さん:2009/04/09(木) 23:36:03 ID:bFk4iH1e
>>894
その後の報告です。
結果としてAVRISP mk-IIの不良でした。
購入店で新品交換したもので接続したところエラー解消しました。

波形確認もしましたが、AVRISP mk-IIのコネクタまでは、ECHOBack(応答)
確認できたので、AVRISP mk-IIが怪しいということになりました。
(確認デバイスは、ATtiny2313、ATmega88P)

交換後、AVRStudio は4.13で最新、AVRISP mk-IIのFirmwareを購入時
Version:1.10のままで行いました。
最新は Version:1.12のようですが、Upgradeすると動かないということが
あると心配なので、1.10のまま使ってます。

FirmwareのDowngrade というのは可能なのでしょうか?
可能ならUpgradeして試したいところですが・・・

AVRISP mk-IIの初期不良だったのか、最新Firmwareにしたために起こった障害
だったのか分かりません。
いずれにしましてもAVRISP mk-IIを変えたことにより障害解消できました。

ありがとうございました。
931774ワット発電中さん:2009/04/10(金) 00:05:51 ID:lcnNizfA
がんばったな
932774ワット発電中さん:2009/04/10(金) 00:31:16 ID:s7a8RsJw
それはそれは。。。
おつ
933774ワット発電中さん:2009/04/10(金) 00:37:02 ID:mcBnkYwi
AVRISPのファームとAVR Studioが抱いてるファームがずれてたら動かなかったことがある
(AVRISPが古かった)
それはMk2じゃなくて無印AVRISPだったかな・・・忘れた
934774ワット発電中さん:2009/04/10(金) 00:44:55 ID:jhH4HU1p
後に伝説となる超高性能ライターを>894が作製するきっかけとなる事件であったことを、
この時は誰も知ることはなかった・・・
935774ワット発電中さん:2009/04/10(金) 05:30:34 ID:SkmTRMir
>>930 超おつでした。
936774ワット発電中さん:2009/04/10(金) 09:06:22 ID:D3AebT2O
>>930
>ECHOBack(応答)確認できたので、AVRISP mk-IIが怪しいということになりました。
なるほど・・・・

最初に書き込んでみるターゲットは、信号線にLEDつないでみるといいかもしれないね。
書き込みを超スローにすると、内容まではワカランが信号の有無くらいは分かるぞ。
937774ワット発電中さん:2009/04/10(金) 19:10:56 ID:JQDWPFAB
そもそも人間の体は12歳ぐらいですでに性行為が可能で20歳ぐらいがピークなんだが
社会的、精神的に見た場合まだ未成熟なために、18歳未満だと犯罪として扱われてしまう
逆に30歳過ぎは社会的にはまだ青年から中年にさしかかった程度なんだろうけど、
性的にはもはや老年の域に達していて、遺伝子の劣化、流産や難産、性欲の減少などが見られる
そんなわけで俺は、セックスに関しては30過ぎたら老人だと思っている
938774ワット発電中さん:2009/04/10(金) 19:11:47 ID:JQDWPFAB
すまん誤爆だ
やっちまった・・・
939774ワット発電中さん:2009/04/10(金) 19:23:29 ID:nnNcZgoW
AVなR指定とな!?
940774ワット発電中さん:2009/04/10(金) 21:39:08 ID:gN+lamD9
>>939
だれうま

で、tinyなやつとmegaな奴がいるわけだ。
941774ワット発電中さん:2009/04/10(金) 22:20:23 ID:jMPlJLEJ
maturedなdeviceもあるでよ
942774ワット発電中さん:2009/04/10(金) 23:46:43 ID:J5/LZWV9
俺のブートローダーを流し込んでやるぜ、のスレはここでつか。
943774ワット発電中さん:2009/04/11(土) 00:01:13 ID:xVqCozqM
>930を見て不安になり、買っておいたAVR-ISPmkUを使ってみたら
オレンジ点滅で動きましぇん。電源5Vなのに4.5Vと表示している。
アップグレードしても同じ。

AVR-ISP(無印)やでんし研のライターでは動くので調べていたら
本体内のISPコネクタが180°逆に差してあるのを発見。
フラットケーブルの圧接方向が左右で違うので差す側を間違えてるみたい。
944774ワット発電中さん:2009/04/11(土) 00:01:55 ID:XT9SGafW
今のフラッシュを吸い取る方法は知らんけどファイルでのダウングレードの手順

古いAVR Studioをインストール
C:\Program Files\Atmel\AVR Tools\STK500\AVRISP-mkII.DAT
を大事に取っておき、新しいAVR Studioの所へコピー。
手動ファーム更新を実行。これでFirm Ver. 0x010aが0x0105になったよ。
945774ワット発電中さん:2009/04/11(土) 11:49:31 ID:34TEZdmU
>フラットケーブルの圧接方向が左右で違うので差す側を間違えてるみたい。

ひでぇな、チェックせずに出荷するのか、流石は中国クオリティー
946774ワット発電中さん:2009/04/11(土) 17:34:40 ID:QGAcNenb
JTAGICEmk2のフレキシブルフラットケーブル(FCC)にはしょっちゅう泣かされた
947774ワット発電中さん:2009/04/11(土) 17:36:05 ID:QGAcNenb
間違えたFCCじゃなくてFFCだ
948774ワット発電中さん:2009/04/11(土) 17:40:11 ID:QPlR4ZxW
>>946
>JTAGICEmk2

あと読みにくいから文字詰めないでくれ〜
949774ワット発電中さん:2009/04/11(土) 17:45:16 ID:MwQUr/NU
>>948
http://www.atmel.com/dyn/resources/prod_documents/doc2562.pdf
公式にもJTAGICEの部分は切れ目ないみたい。
950774ワット発電中さん:2009/04/11(土) 20:52:21 ID:zKI2rNwf
カタカナにするとジェタガイスか・・・ありだな。
951774ワット発電中さん:2009/04/12(日) 00:52:09 ID:3q7Lz0Tx
今までhexファイルのサイズ=マイコンに書き込むプログラムのサイズだと思ってた。
tiny2313に書き込むhexファイルのサイズがぎりぎり2kBに収まって、
もうこれ以上詰め込めないな、と思っていたけど調べたら実は
プログラムのサイズは700バイト位しかなかった。
馬鹿すぎる
952774ワット発電中さん:2009/04/12(日) 00:58:01 ID:zK00X1jI
>>951
WinAVR使ってるなら、コンパイル時にプログラムサイズと使用%とかが出るぞ
MakeFileのバージョンにもよるけど
953774ワット発電中さん:2009/04/12(日) 01:48:32 ID:zKnXlBmk
まあ、hexファイルの中身は情報つきのテキストなんだから
ファイルサイズ 対 実体 がそんくらいの割合なのは推して知るべし
954774ワット発電中さん:2009/04/12(日) 03:14:01 ID:Z8RYJC7v
中身を見たことがなかったんじゃないかな
955774ワット発電中さん:2009/04/12(日) 20:11:42 ID:Uww0OBmw
AVR初心者です。(マイコン初心者です。)
AVRIPSmkUを買ってAVRに書き込みしようとしたのですが、
最初は緑色だったLEDが途中から赤とオレンジ?見たいな色に交互に点滅します。
しかも書き込みができません。
OSはVista
AVRstudio4.14
Build 589
直し方を教えてください。
956774ワット発電中さん:2009/04/12(日) 20:53:27 ID:foeZMGqC
AVRIPSmkUて人気あるね。不良も多いね。
957774ワット発電中さん:2009/04/12(日) 21:58:17 ID:G6C9YAse
AVR-ISPmkUのLEDは、緑=電源正常, 赤=電源OFF, オレンジ点滅=リセット異常。
接触不良とか配線を確認してみたら
958774ワット発電中さん:2009/04/12(日) 22:05:10 ID:Uww0OBmw
>>957接触不良とか配線とかは問題ないです。
赤とオレンジが交互に点滅する前までLEDは緑でした。
基盤の故障はないと思います。
959774ワット発電中さん:2009/04/12(日) 22:49:11 ID:G6C9YAse
>957はISPコネクタ側のLEDのことだけど
表面にでてないUSB側のLEDは緑だよね?
960774ワット発電中さん:2009/04/12(日) 23:05:26 ID:Uww0OBmw
USBのほうは緑です。
ISPのほうが赤とオレンジ交互に点滅します。
961774ワット発電中さん:2009/04/12(日) 23:06:37 ID:h46bSjVR
>>955
書き込もうとしているCPUの種類は書いてないし
結線図はないし、どんなプログラムをどの様にして
書き込もうとしているのかわからんし。

まぁ「AVR初心者です。(マイコン初心者です。)」って書けば
なんでも許してくれると思うその根性の直し方を教えてやれ
962774ワット発電中さん:2009/04/12(日) 23:09:24 ID:LOrV8K3s
Red - Orange Blinking -- Upgrade mode ってなってますけど
ファームウェアの更新中だったのではないでしょうか?
963774ワット発電中さん:2009/04/12(日) 23:22:41 ID:Uww0OBmw
tools⇒AVRISPmkII upgrade
で元に戻りました。
皆さん本当にありがとうございます。
>>961ごめんなさい。
今度からは注意します。
ありがとうございました。
964774ワット発電中さん:2009/04/12(日) 23:37:19 ID:Q+rHZozQ
AVRのリセットピンを無効にしてしまったんですが、
どうやったら解除できるんでしょうか
965774ワット発電中さん:2009/04/12(日) 23:44:00 ID:e27DGgHo
リセッター でグーグル先生に聞いてみる
966774ワット発電中さん:2009/04/13(月) 00:12:28 ID:s+/Cew/B
AVRISPmkIIはリセッターかわりにできないんだっけ?
967774ワット発電中さん:2009/04/13(月) 00:15:30 ID:jjpcvsmY
シリアルプログラミングにはリセット信号が有効であることが必須な気がします。
968774ワット発電中さん:2009/04/13(月) 07:13:56 ID:117vZQAo
読み方は「エーブイアール」なの「アーヴェ」なの?
969774ワット発電中さん:2009/04/13(月) 07:57:47 ID:9Tden/R0
アーブル
970774ワット発電中さん:2009/04/13(月) 11:13:22 ID:hbkmmYEY
アービャアー
971774ワット発電中さん:2009/04/13(月) 11:40:54 ID:WmA9g7p9
アヴァー
972774ワット発電中さん:2009/04/13(月) 12:44:31 ID:/MWRFW79
Adult Video R18 か エヴァ
973774ワット発電中さん:2009/04/13(月) 13:06:45 ID:/MWRFW79
まぁググってあげたわけだが・・・
・(開発者の名前から) Alf og Vegard's RISC
・Atmel's greater Vision/Versality/Value RISC
という説があるらしい・・・が、定かではないみたいだ。
974774ワット発電中さん:2009/04/13(月) 22:05:56 ID:tY2t9p7G
だれかSPIモニター作ってちょ
975774ワット発電中さん:2009/04/15(水) 00:48:37 ID:4zIslMKP
AVRはAVRなのさ
976774ワット発電中さん:2009/04/15(水) 01:45:31 ID:EX0cD+A2
AVR is not PIC.
977774ワット発電中さん:2009/04/15(水) 18:33:30 ID:CaRw/IDw
にせJTAG markUを使ってたけどついに動かなくなった。_| ̄|○
978774ワット発電中さん:2009/04/15(水) 18:46:10 ID:mrT0fDme
頑張って新たなライタをw
979774ワット発電中さん:2009/04/15(水) 20:58:39 ID:0jps32gm
ゴールドライタンを呼ぶんだ
980774ワット発電中さん:2009/04/15(水) 22:36:38 ID:GqvEnjhu
そろそろライタから旅立つ時
981774ワット発電中さん:2009/04/16(木) 06:20:21 ID:dzsuGZfS
【ESC SV 2009レポート】
Atmel vs Microchip
ttp://pc.watch.impress.co.jp/docs/news/event/20090416_125465.html
982774ワット発電中さん:2009/04/16(木) 07:44:24 ID:ANaHTHnA
xmega、どこにも売ってないと思ってたけど
アメリカのdigikeyなら買えるんだな

http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=ATXMEGA64A1-AU-ND

だれか使ってみた人居る?
983774ワット発電中さん:2009/04/16(木) 08:55:51 ID:58l9538l
>>981
おお。AVRって結構な一大勢力だったんだな。
マインドシェアつーか、紙面シェアでずいぶんとPICが上のように錯覚してた。

売上比1:2だからランチェスターの法則で1:4の感覚ってことかな。
984774ワット発電中さん:2009/04/16(木) 09:55:07 ID:w/bjXt4o
985774ワット発電中さん:2009/04/16(木) 11:28:06 ID:AONNZMeC
>>982
1個買ってみようかとおもったら

合衆国輸出管理令に基づき、お求めの製品を発注書に記入することはできません。

て。
だから、日本のdigikeyじゃ売ってないのか
986774ワット発電中さん:2009/04/16(木) 18:49:29 ID:AxoCxPwE
合衆国輸出管理令とは、どんな基準で輸出禁止なんだろ。
わけわかめ
987774ワット発電中さん:2009/04/16(木) 19:19:37 ID:3QM4xQfP
総連経由で渡ったxmegaがテポドン2号に使われていたからね。
988774ワット発電中さん:2009/04/16(木) 19:57:13 ID:et56FS1E
xmega…
32MHzと内蔵SRAM32kは魅力だけど
AWEXとかHi-Resとかあまり興味ないなぁ。
暗号機能は仕事で使う分には意味あるのだろうが。

DMAもMACとかUSBとかSSCとか積んでないし。
素直にメモリ空間が増えるAVR32かSAMに乗り換える人が増えるんじゃないか?
989774ワット発電中さん:2009/04/16(木) 20:17:35 ID:nIPw7PxS
>987
それマG?

990774ワット発電中さん:2009/04/16(木) 20:52:22 ID:GfX8EWcx
6ピンAVR出たね。
/www.atmel.com/dyn/resources/prod_documents/doc8127.pdf
991774ワット発電中さん:2009/04/16(木) 20:58:38 ID:jVBHWVHu
>>989
んなわきゃない。たぶんPICで十分。
992774ワット発電中さん:2009/04/16(木) 21:07:14 ID:ic2mqI5B
>>986
- AES and DES Crypto Engine

 これじゃないのか。

 日本でも,暗号化のついた製品の輸出は規制かかるはず。
 詳しくは↓輸出令第9項(7)暗号装置又はその部分品 を参照。
 
http://www.meti.go.jp/policy/anpo/kanri/shyourei-matrix/matrix9.htm

暗号装置であって、次のイからホまでのいずれかに該当するもの(中略)

イ デジタル方式の暗号処理技術(中略)
(一) 対称アルゴリズムを用いたものであって、アルゴリズムの
鍵の長さが56ビットを超えるもの
(二) 非対称アルゴリズムを用いたものであって、アルゴリズムの
安全性が次のいずれかの有する困難性に基づくもの
1 512ビットを超える整数の素因数分解
2 有限体上の乗法群における512ビットを超える離散対数の計算
3 2に規定するもの以外の群における112ビットを超える離散
 対数の計算

 とまぁ、いろいろある。
 アメリカにも似たような輸出規制があってひっかかるんだろう
993774ワット発電中さん:2009/04/16(木) 21:58:37 ID:AxoCxPwE
>>992 暗号が引っかかるんですね。
ありがとうございました。勉強になりました。
994774ワット発電中さん:2009/04/17(金) 00:18:13 ID:F4bUCMrZ
unsigned char x[32000];
これでコンパイル通るんだけどなんでATmega168でこんなに確保できるの?
これって32kbyteだよね?168のデータシート見る限りじゃこんなにメモリないのに
995774ワット発電中さん:2009/04/17(金) 00:38:25 ID:GGItosPG
リンク時にオーバーフローをハネるように設定してないからじゃね?
996774ワット発電中さん:2009/04/17(金) 00:42:24 ID:d61xJJv2
実際に領域を使わない限りは実行もできてしまうんでは?
SPがオーバーフローしてもちゃんと元に戻ってくれば問題ないし。
997774ワット発電中さん:2009/04/17(金) 01:15:56 ID:F4bUCMrZ
ありがとう。確保するプログラムは書き込めてしまうけど、AVR上ではちゃんと
確保できてるわけではないのね。
for(int i=0;i<32000;i++)x[i]=0xff;いれてもエラーでないから確保できてるのかと思った
オーバーフローをハネる設定ってデフォでONのこれですよね?
33000だとエラー出るんだけど、32000までだと出ない
error: size of array 'x' is negative
998774ワット発電中さん:2009/04/17(金) 06:18:50 ID:slTzuNob
それは16bit Intで、33000(0x80E8)が負になるって言ってんだから違うと思う

てか、そんなエラー始めてみたな
999774ワット発電中さん:2009/04/17(金) 08:17:31 ID:tt9lg1zq
ttp://www.chitaro.com/src/chitaro0325.lzh.html

作りかけだけど、
Mega168の入手が日本で困難なのがなぁ・・・
1000774ワット発電中さん:2009/04/17(金) 08:28:20 ID:Ysyx9sze
マルツでかったよ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。