ニックネーム: 居酒屋ガレージ店主
★ZAQのBlogari停止のため、あれこれ「データ吸い出し」対策しています。 新規記事はとりあえず停止。 コメント書き込みはまだ有効です。 (JH3DBO 下間憲行)
2014年09月28日(日)
トラ技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/
※ブログ管理者が承認するまで表示されません
コメントを記入  
お名前(必須)
 
パスワード:
 
メール:
 
URL:
 
非公開:  クッキーに保存: 
※非公開にチェックを入れると、管理者のみにコメントが届きます。
ブログの画面には表示されません。
captcha


※画像に表示されている文字を入力してください(半角・大文字/小文字の区別なし)。
文字が読みづらい場合はこちらをクリックしてください。
小文字 太字 斜体 下線 取り消し線 左寄せ 中央揃え 右寄せ テキストカラー リンク