FC2ブログ

最近の記事 - RSS

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ITU(タイマー)について。

サーボがまだ無いので、それまでにノウハウを蓄積したい。

とりあえずPWMを出力しても確かめる方法が分からないので、タイマーとして遊んでみる。

【簡易タイマー】

まあこれだけなんだけど…。

しかしタイマーはちょっと分かりにくい。
今回はソースを拝借して弄っただけだが、もしサンプルが無かったらきっとちんぷんかんぷんだろう。

とりあえず、色々調べた今日の収穫としては、
ITUをPWM出力モードにして出力する場合、決まったポートからしか出せない。
というか、ポートそれぞれに色々な役割が決まっていることを知らなかった…。
好き勝手にポートの役割を決められると思っていた(;´ω`)

ちなみにITU0でPWM出力した場合、PIOポートAのBit2(開発キットのCN1の10番ピンかな?)から出力されるらしい。
サーボをゲットしたら試してみたいと思う。
果たしてどうなるか…。

ちなみに簡易タイマーのソースはこちら。
#include <3052.h>
#include "myfunc3052f.h"

int ITU_Count;

void int_imia0()
{
    // TCNT の値が GRA と一致したとき呼ばれる
    ITU0.TSR.BIT.IMFA = 0; // 初期化
    ITU_Count++; // カウント増加
}

void StartItu0()
{
    ITU0.GRA = 31249; // 10msec
    ITU.TSTR.BIT.STR0 = 0; // タイマストップ
    ITU0.TCNT = 0; // タイマカウント値クリア
    ITU.TSTR.BIT.STR0 = 1; // タイマスタート
}

int main(void)
{
    int c; // 表示用数字
    char buf[256]; // 数字整形用

// 割り込み禁止(初回のみ)
DI;
    P5.DDR = 0xff; // ポート5を全て出力に設定
    P5.DR.BYTE = 0x00; // 消灯

    initLCD(); // LCD定義
    cls_lcd(); // LCDクリア
    lcdprintf("1secカウンター"); // LCDに文字列送信

// 割り込み可
EI;
    initITU0(1,1); // ITU0の初期化
    StartItu0(); // カウントスタート
    c = 0;

    // 無限ループ
    while(1)
    {
        // 100msごとに実行される
        if (ITU_Count == 10)
        {
            ITU_Count = 0; // カウントリセット
            P5.DR.BIT.B1 = !P5.DR.BIT.B1; // LED1のON/OFF
            c++;
            buf[0] = '0' + (c /10000) % 10;
            buf[1] = '0' + (c /1000) % 10;
            buf[2] = '0' + (c /100) % 10;
            buf[3] = '0' + (c /10) % 10;
            buf[4] = '.';
            buf[5] = '0' + (c /1) % 10;
            buf[6] = '\0';
            cur_pos(0,1); // LCDの更新ターゲット(2行目)
            lcdprintf(buf); // LCDにbufを描画
        }
    }
}
※タブを全角スペースに変換しているのでこのままコピーしても動きません。
参考元はいつものPukiWiki

参考元とちょっと違うのは、RAM上でデバックしているため容量が足りなくて sprintf が使えなかったりしたためである。
それと注釈は私が勝手につけたので見当違いな部分があるので注意が必要である。

どうでもいいけど、動画の最初のロゴはふと思いついたから作っただけ。
くっつけておいてなんだけど、ちょっと邪魔な気もする…。
スポンサーサイト
管理者にだけ表示を許可する

トラックバックURL

http://nukopan.blog58.fc2.com/tb.php/10-a5b71710

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。