トラ技ARMライタ mbedであれこれ
トラ技ARMライタ、初通電の続き。
mbed環境でのarmマイコンの処理具合を調べてみました。
ソフトでパルスを出したときの変動です。
armマイコン、なにせRISCアーキテクチャ。
実行速度を向上させるためにあれこれ手がつくされています。
※こんなの
ADD{s}
SUB{s}
MOV{s}
これらの命令「{s}」のところに以下の実行条件が入ります。
EQ ゼロ判断
NE ゼロじゃない
CS,HS キャリーあり
CS,LO キャリーなし
MI マイナス
PL プラス
:
実行前のフラグを判断して、その命令を実行するか
どうかを決めるのです。
条件ジャンプ命令を使わなくても、命令実行条件を
判断できるわけです。
人が考えて書く機械語じゃなく、高級言語が最適な実行
命令を選んじゃいます。
それを確かめてみました。
たとえば、こんなループ。
単純にパルスを8つ出すだけ。
for(n = 0; n < 8; n++){
led1_on;
led1_off;
}
オシロで観察すると (クリックで拡大↓)
Lのパルス幅が変動しています。
for文の終了判定に
「for」じゃなく「while」でループさせても同じ波形が
出ました。
n = 8;
while(n){
led1_on;
led1_off;
n--;
}
う〜む。
http://smartdata.usbid.com/datasheets/usbid/2000/2000-q4/armdui0040dj011-00.pdf
↑
ここの27ページ「5.4」に解説が見つかります。
で、こんなループにすると。
n = 8;
while(1){
led1_on;
led1_off;
n--;
if(n == 0) break;
}
「if」で判定してwhileを抜け出します。
すると、こんなパルスに(クリックで拡大↓)
パルス列の時間変動はなくなりましたが、L区間の時間が
倍ほどになっています。
おそるべし、RISCマイコン。
|
2014年9月28日 09時18分
|
記事へ |
コメント(0) |
トラックバック(0) |
|
・電子回路工作 |
トラックバックURL:http://blog.zaq.ne.jp/igarage/trackback/3903/
※ブログ管理者が承認するまで表示されません