1read 100read
2012年07月電気・電子38: AVRマイコン総合スレ Part25 (497) TOP カテ一覧 スレ一覧 2ch元 削除依頼
トランスを使わないAC100V回路設計 (400)
スイッO電源 5台目 (403)
電子立国日本の敵Samsungをどう叩き潰すか?part4 (273)
FPGA TTL CPU PICでメカや電卓を作ろう (509)
【電気】理論・回路の質問【電子】 Part10 (548)
Arduino 信者は何故、かくもキモくてバカなのか? (438)

AVRマイコン総合スレ Part25


1 :12/07 〜 最終レス :12/08
           _____
         /       /|
       /   ( ゚∀゚) /.∠フ   個人でも手軽に使える
     /       /.∠フ || . Atmelの8-bit RISCマイクロプロセッサを
   /  __    o/.∠フ ||    中心に語るスレッドです。
 ∠| ̄ ̄凵 ̄ ̄|∠フ ||     *AAは「AVR H8 etc. マイコン総合スレ Part3」からいただきました。
 .|| |_____|/||
Atmel AVR 8-Bit RISC     http://www.atmel.com/products/avr/

2 :
◎前スレ◎
Part24 http://uni.2ch.net/test/read.cgi/denki/1332128409/
Part23 http://uni.2ch.net/test/read.cgi/denki/1323175269/
Part22 http://kamome.2ch.net/test/read.cgi/denki/1314856582/
Part21 http://kamome.2ch.net/test/read.cgi/denki/1303948383/
Part20 http://kamome.2ch.net/test/read.cgi/denki/1290517183/
Part19A http://kamome.2ch.net/test/read.cgi/denki/1284117177/
Part18 http://science6.2ch.net/test/read.cgi/denki/1267885927/
Part17 http://science6.2ch.net/test/read.cgi/denki/1261051995/
Part16 http://science6.2ch.net/test/read.cgi/denki/1252285807/
Part15 http://science6.2ch.net/test/read.cgi/denki/1247238097/
Part14 http://science6.2ch.net/test/read.cgi/denki/1239940189/
Part13 http://science6.2ch.net/test/read.cgi/denki/1231687664/
Part12 http://science6.2ch.net/test/read.cgi/denki/1223778551/
Part11 http://science6.2ch.net/test/read.cgi/denki/1212840469/
Part10 http://science6.2ch.net/test/read.cgi/denki/1203495784/
Part9 http://science6.2ch.net/test/read.cgi/denki/1192625746/
Part8 http://science6.2ch.net/test/read.cgi/denki/1177933605/
Part7 http://science6.2ch.net/test/read.cgi/denki/1162464623/
Part6 http://science4.2ch.net/test/read.cgi/denki/1148195387/
Part5 http://science4.2ch.net/test/read.cgi/denki/1125327648/
Part4 http://science3.2ch.net/test/read.cgi/denki/1108290187/

3 :
貼り忘れ
Part19 http://kamome.2ch.net/test/read.cgi/denki/1277467349/
<参考になるページ>
・AVR-wiki: http://avrwiki.jpn.ph/wiki.cgi
 もう一つのリンク先: ttp://himitsu.jpn.ph/avrwiki/wiki.cgi
・AVR情報多い-chanさんのpage: http://elm-chan.org/
・avrfreaks.net avrgccその他AVR関連の総本山(英語): http://www.avrfreaks.net/
・TAP-Config: http://ww2.tiki.ne.jp/~maro/
・自分で作ってしまえ!電子工作スレッドテンプレート集: http://jbbs.shitaraba.com/bbs/read.cgi/study/3329/1067910158/
・AVR.jp 日本語のAVR資料他: http://www.avr.jp/
・ATMega168日本語データシート(翻訳中): http://awawa.hariko.com/chira-ura/
・AVR アセンブラのマニュアル(ユーザーズガイド): ttp://www.atmel.com/Images/doc1022.pdf
・インストラクション(命令セット)の解説: ttp://www.atmel.com/Images/doc0856.pdf
・条件付きアセンブルの解説(アセンブラ ver. 1.74対応): ttp://www.atmel.com/Images/doc2550.pdf
・アセンブラとCの連携方法: ttp://www.atmel.com/Images/doc1234.pdf
あとは知らん

4 :
※もしテンプレに入れて欲しいurlなどがあるなら、
キーワード「テンプレ」をレスに含めること
リンク切れ報告の場合も同様

5 :
前の>>995
ARMのgccだけど、こんなコードが
for (i = 0; i < 100; i++) {array[i] = 0;}
こんなコードの処理に変わっててビビった事がある
for (i = 100; i !=0; i--) {*p++ = 0;}
定数と比較するより0との比較の方がコードが少なくなるから
iの判定条件変えてた

6 :
>>5
数式や訳の解らんプログラムよりも立派な作品例をみせてくれよ。

7 :
AVRでサンプルプログラム(LED点滅)
http://www.mcm.co.jp/avr/files01/WinAVR-01-20080527.pdf のリスト1)
をATMEL STUDIO6でビルド成功してmarkUで書き込み完了OKになっても
接続しているLEDが何も反応しない時の原因の切り分け方はどうするのがいいでしょうか?

8 :
>>5
(A)optimize殺しつつ、〜[i]が 皆無のアセンブラソースみたいなCソース書く
あるいは
(B)optimizerに頼りつつvolatile駆使して、ポインタ使えない奴でも解読容易なCソース書く
の、どっちの人が多いのかな?w
俺は、最初に書いたコードが、Z80アセンブラな、オッサンなもんで
ギガ単位のメモリつんでる環境でも、while(*p++ = *q++);みたいなCソース書いているなぁ
>>6
えっ?w

9 :
>>7
LEDチカチカするコードじゃなくて、
点灯しっぱなし、
消灯しっぱなし、
の二通りのコードつくって、それぞれ、実行してみて、
LEDにつながるAVRの端子の電圧をテスタで計ってみる

10 :
>>7
反応しないって?
点滅しないのか、点灯しないのか、点灯しっぱなしなのか...

11 :
全く点灯しない。(点滅もしない。)
Vccに5Vあるのは確認できた。
>>9の方法をやってみる。

12 :
クロック間違えたか、分周だかの設定を間違えて、点滅が長くなってる予感

13 :
だとしても1個は点灯するかと...
ただしPB0に問題なくLEDが接続されていればだが
俺的には回路っぽい気がする

14 :
>>12
逆に、超高速で点滅してて、生身の眼球では消えてるように見えてるだけとかw

15 :
>5
pはいつ初期化されたんだ?

16 :
i=100の近辺だろ。gccがloopを逆順に回して終了条件まで改変しやがった、
という意味なんだからそこに突っ込んでやるなよw
まぁ、30年前のフォートランコンパイラでも
for(i=0;i<100;i++) for(j=0;j<100;j++) { array[i,j] = 0 ;}
みたいな2重forループを、array[i*100+j]的な1重ループへの改変、
ってのやってたから、「このパタンはこう改変」するって言うTIPSが
gccにテンコ盛りに盛り込まれてんだろうね。

17 :
え、最適化がどういうものか
わかって書いてるの?

18 :
pgr

19 :
gccのソースまでは読んだ事ないよw
大学の頃にコンパイラ・コンパイラの分厚い本斜め読みして、
1)字句解析→2)構文解析→3)コード生成部が構文木からマシンコード生成
という基本の勉強したのと、
「どうせ、最適化やる3)コード生成部は自動生成できないんだから
yaccとかbison使うのはかったるいすよね〜」と、のたもうてた、
ハイスキルUNIX使いの人の話聞いて、「へ〜」って感心してたぐらいw
まぁ、20年前の知識だw
「この形の構文木はこう改変してもかまわん」というルール集が
羅列インプリされてるだろう、と思ってたけど違うのか・・
スレチになりそうだから、ちょっと話題かえるけど、avrのニーモニック体系って、
Cでソースかいてgccでバイナリつくってる限りでは、
このニーモニックは絶対出てこない、というような特徴的な命令ってあるのかな?
ほら、x86系CPUのマルチメディア向けの拡張命令みたいな感じの・・・
1命令で、OUTPUTポートの任意BITをON/OFFできるのがpicとちがって
avrのウリらしいけど、gccの吐くバイナリにも、その命令でてくる?
最適化殺した時には、出てきてなかったような記憶がある。
ちゃんと調べたわけではないんだけどね。

20 :
>>11
プログラムはきちんと転送されてるのか?
クロックは発振してるかとか、リセット入りっぱなしとか、そういうのは大丈夫なのか?
AVRはまず大丈夫だが。
あと、CPUはずした状態で、ポートGNDに落とすかすれば、LEDはちゃんとつくんだよな?

21 :
クロック絡みじゃないとすると、リセットピンの抵抗か
はずかしながら、これは未だに良くやる

22 :
LEDの逆付けとか

23 :
> ほら

24 :
>>19
CBI SBIとかは使ってくれるよ
最適化無しは試した事ないけど...
なのでフラグとかSRAMに置かずに汎用IOレジスタを使ってた
...気がするw
しばらく触ってないんで

25 :
最近のPICもLATを使えばピンの状態に関係なくビット制御できるようになったけどね

26 :
>>14
消えないってw
暗くなるだけ...もともとギリな抵抗値なら点灯しないかもだが
なぜか炎のコマが頭に浮かんだw

27 :
>>19
noinline
void noinline_bitset(uint8_t *port, bit) {
*port |= 1<<bit;
}
noinline_bitset(&PORTB, 0);
みたいなことするとin outのまま。
arduinoライブラリのデジタルIOがこんなことしてて、
数十クロック無駄にしてる。

28 :
in outじゃねーよlds stsだw
ポートのアクセスは可能な限り直接書くべし

29 :
>>24 >>27-28
そう、そう、CBI,SBIだったね
Clear,Setで、直観的で良いな〜w
PORTB &= ~(1<<PORTB3); /* 直観的に何やってるか全然わからんオマジナイww */
なんてCソース行からCBIを生成しろ、なんて、
無茶ブリを頑張ってるんだな〜gccえらいわw
>>26
秋月なんかで仕様不明で売ってるバカ安LEDに
電圧と同じKΩ抵抗つなげりゃ、焼いちまう事はあるまい、と
くら〜く、ちんまり、ポッって感じでしか光らせたことしかないもんでw

30 :
去年作ったヤツのhoge.lssを見てみたら
while(1) {
WDR;
if(bit_is_clear(PINC,0)) break;
}
みたいなコードがあって、アセンブラは
wdr
sbic 0x06,0
rjmp .-6
だった
素晴らしいw

31 :
>>29
> そう、そう、CBI,SBIだったね
> Clear,Setで、直観的で良いな〜w
> PORTB &= ~(1<<PORTB3); /* 直観的に何やってるか全然わからんオマジナイww */
> なんてCソース行からCBIを生成しろ、なんて、
> 無茶ブリを頑張ってるんだな〜gccえらいわw
その程度は簡単だろ。 実際はgcc内部ではなく、移植するCPU毎に書く
アセンブラソースへの置き換え部分の作りだと思うが。
演算サイズがバイト単位で、SETの場合、セットするビットが1バイト中1つ
だけで固定(ビット位置指定は命令コードに含まれるため、ビット位置が
可変だと自己書き換えコードになるため)であることが必須。
それと確かAVRの場合、CBI,SBI命令は全RAM空間に対しては使えなかったので
ポインタ渡しの場合、ビット位置が固定でも、CBI,SBI命令の範囲外に対する
操作が必要になる場合、ポインタの範囲を調べて条件分岐が必要になり、
その分余分なコード追加とステップ数増加で相殺される。
というか、BIT命令なんてZ80だってあるんだが?

32 :
直前の読み出し操作に意味があるかどうかなんてコンパイラには判らんのだからしょうがない
ビットフィールドで他のビットは要らん事を教えてやれ

33 :
>>31
Z80はIOに対してビット操作出来なかった記憶が...
最後に触ってから10年以上経ってるんで、曖昧だけど

34 :
>>33
AVRはそもそもI/O空間がない。
Z80でも例えば8255を/RD・/WR信号へ、/IORD・/IOWRの代わりに/MEMR・/MEMW
を繋げば、メモリ空間にマップしてメモリと同等にアクセスできる。
モード2割り込みを使う前提のZ80周辺LSIは、ちょっと現実的ではないが、
外部回路で割込ベクタを読み込むサイクルの時だけ、/IORD・/IOWRが繋が
るように細工してやれば、できなくはない気がする。

35 :
Z8なんとかとか、
どうでもいいわけで

36 :
スレチではあるが、
Z80とZ8とは区別してくれよ

37 :
メモリマップドI/Oとか久しいな

38 :
>>34
8255を見て少しだけ記憶が蘇ったw
Z80のI/OポートアドレスとAVRのI/Oがゴッチャになってた...
そもそもAVRスレにZ80なんか引っぱり出してくるから...
と言い訳してみるw

39 :
>>37
ARMはメモリマップドじゃないか?

40 :
実は点滅してたようです。
点滅はサンプルプログラムで
void DELAY(void)
{
  unsigned char a,b;
    for (a=1; a; a++)
     for (b=1; b; b++)
      ;
}
でしたが、これでは点滅が速すぎて点灯してないと思ってましたが
_delay_ms()関数に入れ替えたら「点滅」が視認できました。

41 :
オリジナルのコードでも、a,bの宣言にvolatileつけるか
最適化をOFFにすりゃ点滅するんじゃね?w
2重LOOPの中が空文だから無駄処理認定されて関数丸ごと無視されてる予感w

42 :
>>40
LEDに使ってる抵抗値は?

43 :
>>41
pdfには最適化の事も書かれているのに...
>>40は無視を決め込んでいるようだ

44 :
ルネサス(SH.RX)もメモリマップトIO

45 :
今時、IOマップドIOの石って、なんかあるの?

46 :
8051の派生品はそうだよ

47 :
>>45
ほとんどのパソコンに使われているIntel 8086系と互換CPU。

48 :
私の認識は、
「I/OマップドのCPUは遅れている」
(古いしがらみを引きずっている)
なんですけど間違ってますか?
I/Oもレジスタもじぇーんぶデータメモリに割りふったRは良い!

49 :
>>48
間違ってますなあ・・・
>>34みたいなZ80を例に持ち出す古株(笑)すら認識を誤ってるから
仕方なのか?ただのにわかか?
そもそもCBI SBIで指定するアドレスは何なのか判ってんのか?
IO空間に対してなんだが?
データシート読んだことないのかなあ?
AVRにもIOアドレスはきちんと存在してますので誤解なきよう
IO操作をメモリ命令として処理すると1サイクル余計に掛かって
速度が犠牲になるのは理解してるのかな?
普段コンパイラで無意識的にI/Oアドレスに直せるものは
勝手に直ってるから気にしてないだけだよ
もし糞遅いメモリマップドなんかに強制するマイコンなんか作ったら
誰も使ってねえよ

50 :
>>49
えーとですね、御指摘の点は
純粋に命令のコード空間への割り当てだけの問題ではないでしょうか。
頻繁にアクセスする領域には便利な命令を用意しておこうという配慮から
特定のメモリ領域にしか使用できない命令(たとえばSBI、Inなど)が
存在しているのかと思っていました。
I/O用の命令が存在するからI/Oマップドと言われるならその通りです。
私の「認識」は忘れてください。

51 :
ATmega328PをATMELStudio6でC言語で使ってますが、
  DDRB = 0xFF;
を書かなくても
PORTB &= ~(1<<i);
PORTB |= (1<<i);
などが(正常に?)実行されます。
仕様が変わったのでしょうか?それともおかしいのでしょうか?

52 :
avrいじりはじめて3カ月のニワカもんだが・・・
DDRに0設定して、IOポートを入力モードに設定しているときに
PORTに1を書き込んだら、入力PORTをPULLUPする設定になるから
入力PORT端子をテスタで計ったら高い電圧が測定できるはず。
PORTに0書き込んだらPULLUPやめる設定になって電圧が落ちる。
なので、入力モードにもかかわらず、PORTへの0,1書き込みによって
入力PORTの電圧が上がったり下がったりするように見える。
だが、これは、オシロで波形をみるとわかるのだが、
PORT値の1を0に書き換えた時には、電圧が落ちるのが、
時間がかかっていて、裾が広がったパルスになってる。
方形波を出力しようとプログラムしてるのに、でてくるパルスが、
立ちあがりは鋭いのに立ち下がりがダレている、
というのは、DDRに1を設定しわすれている可能性あり。

53 :
90S1200なんてメモリ無いから完全な”ポートマップドI/O”
2313でRAM載せたからついでにメモリにもマッピングするようになって
MEGA88あたりで、I/Oが64バイト空間にも収まらず拡張I/Oレジスタ
I/Oのある領域によるアクセスの違いは、1bitセットするだけでこれだけ
$00-1F($20-$3F) SBI xxx,n (1命令,1clk)
$20-3F($40-$5F) IN R16,xxx SBR R16,n OUT xxx,R16 (3命令 3clk)
------($60-$FF) LDS R16,xxx SBR R16,n STS xxx,R16 (3命令 5clk)

54 :
char hour=0;
int a;
a= -1;
hour += (char)a;
hourが-1になりません (; ;

55 :
細かいことは気にすんな

56 :
>>52
プルアップしない ≠ プルダウンする
であり
プルアップもプルダウンもされてない入力 = 高インピーダンスで浮いた状態の入力
電圧が落ちるのに時間が掛かるのは、ピンの浮遊容量に充電された電荷が
オシロのプローブ内部抵抗で放電されるのに時間がかかる。
プローブ倍率を×1(1MΩ)から×10(10MΩ)にするともっと遅くなるし、
ピンを指で触ったり、ノイズを拾うと電圧が上がる。

57 :
>>49
申し訳ないが、判っていないのはアンタの方だよ。
AVRのI/Oエリアは、6502の0ページアドレッシングや、6809のダイレクト
ページアドレッシングと変わらない。0ページアドレッシングや、ダイレ
クトページアドレッシングは、アブソリュートアドレッシングに比べて、
命令長が短いので(命令フェッチサイクルが減る分)実行時間も短い。
アドレス範囲を限定することで、命令長を短くして、結果的に実行速度が
上がっているだけ。命令ニモニックは単に人間に対する区別でしかない。
重要なのはOPコードマップと命令長。
>>48
I/OマップドI/Oの方が、IN/OUT命令を特権命令にすることで、簡単にI/O
アクセスをトラップできる。 一方メモリマップドI/Oの場合、I/Oがメモリ
空間上のどこにマップされるか判らないので、外部のアドレスデコーダや、
MMUなどでアドレス範囲を特定して、割り込みを掛ける等、いろいろ面倒。
なので、メモリマップドI/Oは、大規模なシステムには向かないと思う。
Appleが、Motorola 68Kや、PowerPCを捨てて、最終的にIntelに乗り換えた
のは正解だと思う。

58 :
>>56
そうw なので意図的に、「プルアップしない」という表現にしてみたww
ということで、>>51 の方には、データシートの
I/O-Ports
→Ports as General Digital I/O
→→Switching Between Input and Output
の所にある、Port Pin Configuraions の表を参照する事オススメ
ところで、avrって、PIN単位に、
a)プルアップする
b)プルアップしない
を設定できるけど、「プルアップしない」を、
b1)プルダウンする
b2)トライステート(Z)のハイインピーダンス
のいずれかに、する、と言うのは、chip全体でしか設定できないんだよね?
俺のアプリ目的では、これが非常にツライww
このせいで外付けディスクリートが増えちまった

59 :
>>57
48です。勉強になりました。どうもありがとうございます。

60 :
>メモリマップドI/Oは、大規模なシステムには向かないと思う。
そうでもないような
armの勢いいいし
要は下回りを作る連中次第なんじゃないの
あとは値段とか?

61 :
>58
AVRでプルダウンなんて出来たか?
デジタル入出力の内部構成的にもプルダウン抵抗ないし。

62 :
>>58
Rの入出力ポートの状態は4通りで、各ピンそれぞれに設定可能
 1 入力:プルアップ抵抗あり
 2 入力:プルアップ抵抗なし(Hi−Z)
 3 出力:ロー出力
 4 出力:ハイ出力
*入出力を切り替えながら使用する時は予期しないH/L出力や
 プルアップの有無になったりしないよう注意。
*リセット中、初期設定が済むまで外部回路が変な動作をしないように注意。
ってところでOKでしょうか?諸先輩方。

63 :
その4つの状態を切り替えるときに、
”この状態”から、”その状態”に、瞬時に切り替えたいのに、
”あの状態”を経由しないとだめ、というパタンがあって、
外付け部品と、使用ピン数が増えてしまい、28ピンAVRの
使用を諦め、44ピンAVRと格闘中w
ISPでかけなくて、JTAGでしかかきこめないということで、泣いてるww

64 :
>>63
ISPで書き込めないAVRとは? kwsk
MISO MOSI SCLK 端子に、何か外部から出力するデバイスがISP中にも繋がる
設計になっているせいでは?
普通は、外部デバイス〜ISP端子間に、1kΩ〜2.2kΩくらいの抵抗をかま
して、ISPコネクタは、AVRのISP端子直結にしておく。
そうしておけば、外部デバイスの駆動能力よりも、ISPコネクタからの
直結駆動能力が勝つので、大抵は書き込める。

65 :
>>63
何をしてるのか知らないけど...
PUDセットしてもダメなん?

66 :
>>60
I/Oトラップの簡単な実装という意味では>>57の言う通りなんだけど
コード空間/データ空間/IO空間をそれぞれ分割したり
アクセス違反トラップするお仕事はMMUって専門家がいるからね。
MMUを用意するならば別にCPU側の負担になる訳では無いって事よ。
ARMとかAVR32のコントローラ向けにもMPUって管理機構が付いてるし。
こういうやり方の方がが自由度は増すしメモリ管理の一元化も出来るんで便利なんだ。

67 :
>>64
新しいヤツはJTAGとPDIに移行。
いわゆるISPはなくなる方向じゃね?

68 :
>>66
I/Oトラップみたいなのは
アプリ(今時の言い方かな?)で勝手にリソース変えられると困るから
CPUに組み込まれた機能じゃあ
I/Oアクセスするのにメモリ空間でも専用空間でも変わらんと思うけどね
メモリ空間の決まった場所にI/Oが配置されてるほうが使い勝手がいいねって感じじゃあ、AVRとかは

69 :
>>57
> なので、メモリマップドI/Oは、大規模なシステムには向かないと思う。
>
> Appleが、Motorola 68Kや、PowerPCを捨てて、最終的にIntelに乗り換えた
> のは正解だと思う。
今は Intel でも メモリマップドI/O だよ。
IN/OUT は、ISA バスの時代。PCI は メモリマップドI/O。
面倒くさいことに、PCI 空間をまず物理メモリ空間にマップして、
MMU 使って仮想空間にマップするという 二重のマップをしているんだよ。
あとキャッシュがあるからね、キャッシュが効く物理メモリ空間、効かない空間というのは、
また別の管理。

70 :
1から読んだけど
説1を説2で上書きする議論が延々と続きますねww

71 :
『メモリマップドI/Oは、大規模なシステムには向かないと思う。』
死の間際まで言ってるといいよ(笑い

72 :
>>69
> 今は Intel でも メモリマップドI/O だよ。
> IN/OUT は、ISA バスの時代。PCI は メモリマップドI/O。
どっから、こういう嘘を仕入れてくるんだろう?
PCIバスは、32ビット(または64ビット)のアドレス/データバスと、制御線
としてC/BE[3:0]という制御線があって、これの組み合わせで、メモリの
リード/ライトとI/Oのリード/ライトがあるんだが?
第一、汎用バスのPCIバスは、CPUアーキテクチャとは無関係。

73 :
第二は?ww

74 :
>>72
x86にあるinbやoutb命令がどういう動きするのか説明してくれよ

75 :
>>72
> PCIバスは、32ビット(または64ビット)のアドレス/データバスと、制御線
> としてC/BE[3:0]という制御線があって、これの組み合わせで、メモリの
> リード/ライトとI/Oのリード/ライトがあるんだが?
>
> 第一、汎用バスのPCIバスは、CPUアーキテクチャとは無関係。
Intel でどう PCI を使っているかの話をしているんだが。
それは、例えば Linux のソースコードを読めばわかる話。
inl/outl といったマクロが、どう展開されるのか見れば、
単なるメモリアクセスになっていることが分かる。

76 :
なんでAVRと関係ない話を延々としてるの?
AVRは ”I/OマップドI/O”+”メモリマップドI/O” だろ

77 :
>>76
分からないので教えて下さい。
メモリやI/Oを内蔵していないCPUなら、
たとえばコントロールバスのIORQ信号を使用した入出力であれば
I/Oマップドと判断できました。
Rはワンチップなので内部構造が分かりません。
どのような理由で「RはI/Oマップド+メモリマップド」と
判定されたのでしょうか?
私の勉強不足だと思うのですが、ふと疑問に思ったものですから。

78 :
専用の命令(AVRならIN,OUTにSBIC,SBIS)に専用のI/Oアドレスマップがあれば
”I/OマップドI/O”だろ、最初のAVRの90S1200から引き継いでいてそのままだ。
90S1200はI/Oはメモリ(レジスタ用の32バイトだけだが)上には割ついていおらず
専用命令でしかアクセス出来ない。そこから拡張していくついでにメモリ領域にも
割りつけて(この時点で”I/OマップドI/O”+”メモリマップドI/O”)、さらにI/Oの
64バイト限界を超えてしまったので”メモリマップドI/O”専用の領域ができた。
>たとえばコントロールバスのIORQ信号を使用した入出力であれば
極論だけど、この考えだと外部アドレスバスがA0-15まで出てるCPUがあって
0x8000-0xFFFFをメモリマップドI/Oにしていたら、A15の名称をIORQにしただけで
”I/OマップドI/O”になるって事?

79 :
>>78
なるほどそういう事ですか。
私は単純にMEMRQ信号を使用すればメモリマップドでアクセス対象はメモリ、
IORQ信号を使用すればI/Oマップドでアクセス対象はI/Oだと思っていました。
Rは90S1200のI/Oマップドのみから、
CPUの成長と共にメモリマップドが追加され、
さらにメモリマップドのみも追加、と変化していったわけですね。
了解しました。

80 :
あ、すみません、忘れていました、
アドレスA0〜A14とコントロールIORQ信号でアクセスできる空間は
0〜7FFF番地のI/O空間です。

81 :
I/OマップドI/Oなんて初めて聞いたよ。
2ch用語か?

82 :
>>81
組込みプログラムやってる人なら、みんな知ってる普通の技術用語ですよ。

83 :
>>75
ロクにハードウェアの知識がないのがシャシャリ出て話を混ぜ返すなよ。
ホントゆとり脳は使えねぇな。
Linuxのドライバコードをどの程度読んだのか知らないが、全てのPCIデバ
イスがメモリ空間上にレジスタをマップしているわけではない。
PCIデバイスでも、リソース(I/Oレジスタ)がI/O空間にしか割り当てられて
いないデバイス、メモリ空間にしか割り当てられていないデバイス、メモリ
空間とI/O空間との両方に割り当てられているデバイス、すべてある。
例えば、うちのPCのPCIスロットには、TI製のPCI-1225というカードバス
コントローラ(PCI-PCMCIAブリッジ)が刺さっているが、こいつはメモリ空間
(D7FFF000〜D7FFFFFF, FFEFF000〜FFEFFFFF, F9A00000〜FD9FFFFF, 000DF000
〜000DFFFF)とI/O空間(F900〜F9FF,F800〜F8FF)の両方を占有している。
また、コンテック製のPICバス接続のGPIBボード「GP-IB(LPCI)FL」は、I/O
空間(BA00〜BA3F,BB00〜BB7F)のみを占有し、メモリ空間は使用していない。
ハーバードアーキテクチャのAVRが、フラッシュとRAMが同じアドレスを
持つ独立した空間に存在しているのと同じように、I/OマップドI/Oの場合、
I/O空間とメモリ空間は、同じアドレスを持つ独立空間として、パラレル
ワールドとして存在する。
カードバスコントローラに、1MB以下のメモリ空間が割り当てられている
のは、ISAバスとの下位互換性(拡張BIOS領域)を保つため。
I/Oアドレスが16bitなのは、PCIバスの制限ではなく、x86アーキテクチャ
では、32bitになってもI/O空間は昔どおり64KBのままだから。

84 :
>79,80
私には理解できないけど、あなた的にはCPUのインストラクションやアーキテクチャは関係なく
CPUから直のIORQ信号の有/無がI/Oマップド/メモリマップドの違いなのね。
それじゃ外部バスの無いMCUは永遠に不明ということでいいんじゃない、あなたにとっては

85 :
俺もI/OマップドI/Oなんて初めて聞いたが(w

86 :
ポートマップドI/Oってwikipediaにはあるな。>I/OマップドI/O

87 :
>>84
永遠に不明だと進歩しないので聞いてみましたです、はい。
そしたらI/O用命令の有無だと回答があったので、
なるほど、そういう事でRは「I/Oマップド+メモリマップド」かと理解したのですが
もしもRが可変語長で全データメモリ領域でSBI、INとかが使えるのなら
「I/Oマップド」になるのかなとかちょっと悩みました。
まだまだ理解が足りないという事ですね。
今後もいっそう精進いたしますのでご勘弁を。

88 :
使用言語を「英語」、検索対象言語を「英語のみ」に設定してGoogleで
検索してみた。
"port mapped I/O" で検索... About 13,800 results (0.13 seconds)
"I/O mapped I/O" で検索.... About 96,100 results (0.27 seconds)
コンピュータ業界長いが、ポートマップドI/Oなんて、初めて聞いた。(w

89 :
そろそろ誰かまとめてくれよ。

90 :
本日の論点
1)RはI/OマップドI/Oか、メモリマップドI/Oか、
  それともI/OマップドI/O+メモリマップドI/Oか?
2)メモリマップドI/OとI/OマップドI/OのどちらのCPUが有用か?
3)用語「I/OマップドI/O」と「ポートマップドI/O」はどちらが適切か?
難しいな。じゃぁね。

91 :
>>88
そうなのか。
おれは逆にI/O mapped I/O知らなかった。いままで一度もみたことなかった。
なにかの教科書的な本で何度かPort mappedのほうは見たことがあった。
自分は業界にいないしCS専攻でもないので専門的な本は読んでない。

92 :
結論 : 全角英字は止めよう。

93 :
>>90
thx!

94 :
外部バスに出ていない物はI/Oマップでもメモリーマップでも無く、すべてCPU拡張レジスタ操作だと思う。
便宜上メモリー操作でアクセス出来たり専用命令が用意されえいるだけだろう。

95 :
ここらで違うネタを
パーツ棚に2313や328が20個ぐらい残ってるんで
久々に何か作ろうかな...と思ってるんだけど
何か作りたいって意欲だけで、その「何か」が出て来ないw
そこでスレ住人に質問!
今作ってる、または最後に作ったモノって何ですか?

96 :
言い出しっぺとして、自分のを晒します
っと言っても大したモノは作って無かったり
最後は...
XBeeで自宅の現在の総消費電力、外気温、湿度、気圧、GM管などのデータを集めて
パネルにまとめて表示するモノかな
複数のXBee+AVRセットの中のマスターにSD付けてログ取りもさせてます
ちなみにGM管は事故以前から持っていたもので...
コレ作ったのは家族に消費してる電力を見せるのが目的です
壁に取り付けたパネルには秋月のバーLED x4と4桁7セグLED x7を付けました
…で、節電意識は高まったのか?
んー ビミョーw

97 :
写真で見せてよ

98 :
消費電力計る回路に興味あり。
今SSRで電源管理してるけどSSRからの発熱半端なくて、本末転倒かもと疑問が消えないのでいろいろ計測andLogしたい。

99 :
>>97
適当に作ってるからハズいなw
アップ出来る所教えてくれたら...

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
☆電気・電子の宿題,試験問題スレ☆11 (231)
【赤青黄】 LED初心者の集うスレ 【フルカラー】 (886)
第一種電気工事士の合格を目指すスレ (413)
【Arduino】フィジカル・コンピューティング3【OSC】 (499)
【ネオジム】磁石・マグネット総合【Rイト他】 (217)
PIC専用のスレ Part39 (702)
--log9.info------------------
アシモフとクラーク (443)
【今こそ】スペースオペラを語ろう【スペオペ】 (422)
劇場版 ガンダムOO (577)
【FSS】ファイブスター物語【永野護】8 (953)
SF・FT・ホラー板に1000階建てのビルを建てよう (256)
SPACE BATTLESHIP ヤマト (682)
レイ・ブラッドベリ 4 (732)
村上龍の選評問題。 (717)
恒川光太郎 (256)
【Bujold】ビジョルド総合Part1【ネタバレ可】 (878)
【妄想】 スタートレック新シリーズ 9 【全開】 (719)
今こそ「眉村 卓」について語るときじゃないか?4 (436)
歴史改変SF 4 (553)
【ウィリアム】サイバーパンク小説【ギブソン】 (310)
早川ちゃんとやろうよっ! 20 (616)
筒井康隆総合スレッド part21 (299)
--log55.com------------------
川崎の事件についてどう思う?
m9(-_-)
雑談独り言ワッチョイ5月23日鈴木宗男「維新の丸山!おまえは逃げてないで謝れ」
ヒッキーのプラモ事情
テストスレ
数学雑談
1999年度(平成11年)生まれの引きこもり
ヒキだけど歯医者に行きたいpart6