Renesas Rulz - Japan
Renesas Rulz - Japan
  • User
    Join or sign in
  • Site
  • Search Japan.RenesasRulz.com
  • User
  • Renesas Rulz
  • FAQ
  • パートナー
  • 半導体セミナ
  • eラーニング
  • ヘルプ
  • More
  • Cancel
  • かふぇルネ
  • がじぇるね
  • English Community
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-SAKURA フォーラム タイマ割込みを利用したいのですが上手くいきません
  • Forums
  • Blog
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 GR-SAKURA

 GR-KURUMI

 GR-COTTON

 GR-CITRUS

 GR-PEACH

 GR-KAEDE

 GR-ADZUKI

 GR-LYCHEE

 GR-ROSE

 GR-MANGO(*)

 SNShield

 Web Compiler

 IDE for GR

 TOPPERS関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • Replies 12 replies
  • Subscribers 280 subscribers
  • Views 5951 views
  • Users 0 members are here
  • タイマ
  • タイマ割込み
  • gr-sakura
  • tmr
Options
  • Share
  • More
  • Cancel
Related Tags
  • Ehternet
  • ethernet
  • gr-sakura
  • GR-SAKURA GR-KURUMI I2C
  • gr-sakura rtc
  • GR-SAKURA SDMMC
  • GR-SAKURA 液晶 aitendo
  • i2c
  • lcd
  • mruby
  • sd_card
  • sdmmc
  • SDカード
  • serial
  • spi
  • udp
  • USB仮想シリアル
  • Windows8 serial com driver
  • がじぇっとルネサス
  • がじぇるね
  • シリアル
  • タイマ割込み
  • ネットワーク
  • ライブラリ
  • 割り込み
Related

タイマ割込みを利用したいのですが上手くいきません

Tsuji Shin ichi
Tsuji Shin ichi over 8 years ago

IDも作ってしまいましたので早速ながら?質問させて頂きますsad

GR-SAKURAではタイマ割込みはどのように利用すればいいのでしょうか。

なひたふさまがこちらhttp://japan.renesasrulz.com/gr_user_forum_japanese/f/4/t/78.aspxで

TMRなら、というような表現がありましたので自分なりに調べてみようと思い

RX62N周辺のWebクイックラーニングを参考にコーディングを試みましたが上手くいきません。

TMR01の16bitカスケード接続で定期的に自前関数を呼びたいのですが…

抱えている問題は2点です。

  • Webコンパイラで#pragma interruptが通らない(Warning)
  • 組み込み関数がインクルードできず、setpsw_i()が呼べない

あと、ここまでやってふと思ったのですが、もしかしてintvect.cあたりで

ハンドラ?を設定すれば自前関数が適に呼び出せるのでしょうか?

そもそもArduinoではloop()から起動時間を見るプログラムにするものでしょうか?

初心者すぎて滅裂な質問かと思いますが、助言よろしくお願いしますblush

ソースは…どうやって添付するのでしょう…か…

  • Reply
  • Cancel
  • Cancel
Parents
  • digiponta
    digiponta over 8 years ago

    約10usec間隔のタイマー割り込みで、200usec周期前後の2相のパルス信号を生成させてみました。

    これらのパルスでトランスを駆動して、現時点、1200Vこれの昇圧ができました。

    現在、1500Vを目標に調整中です。

    • image.jpg
    • View
    • Hide
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 小俣 誠二
    小俣 誠二 over 7 years ago in reply to digiponta

    私も約10usec付近の任意のタイマーを試しておりますが、上手くいきません。

    なひたふ様が仰るinterrupt.cが何処にあるのかわかりませんので、intvec.c内の1509行目を

    //void Excep_TMR1_CMIA1(void){ }

    とコメントアウトしました。

    そして、iodefine_gcc63n.hとintvect.hをインクルードし、

    tsuji様の書かれたサブルーチンで実行しましたら、

    rxduino.cpp:(.text.startup+0x3): undefined reference to `setup'

    とエラーが出てしまいました。

    初心者のため、まだよく理解していないのかもしれませんが、どなたかお教えください。

    よろしくお願いします。

    --------------------------------------

    #include <rxduino.h>

    #include <iodefine_gcc63n.h>

    #include <intvect.h>

    volatile int state = LOW;

    void Excep_TMR1_CMIA1(void)__INTTERUPT_FUNC;

    void init_tmr16(){

       MSTP(TMR0) = 0;

       TMR0.TCORA = 48000 * 20 / 8192 - 1;

       TMR1.TCORA = 50 - 1;

       TMR0.TCR.BIT.CCLR = 1;

       TMR1.TCR.BIT.CCLR = 1;

       TMR1.TCCR.BIT.CSS = 3;

       TMR1.TCR.BIT.CMIEA = 1;

       IEN(TMR1,CMIA1) = 1;

       IPR(TMR1,CMIA1) = 1;

    }

    void start_tmr16(){

       TMR0.TCCR.BYTE = 0x0E;

    }

    void Excep_TMR1_CMIA1(void){

     digitalWrite(PIN_LED0, HIGH);

    }

    void sutup(){

     pinMode(PIN_LED0, OUTPUT)

     init_tmr16(); // カウンタの初期化

    }

    void loop(){

    start_tmr16(); // のカウント開始

    }

    --------------------------------------

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
Reply
  • 小俣 誠二
    小俣 誠二 over 7 years ago in reply to digiponta

    私も約10usec付近の任意のタイマーを試しておりますが、上手くいきません。

    なひたふ様が仰るinterrupt.cが何処にあるのかわかりませんので、intvec.c内の1509行目を

    //void Excep_TMR1_CMIA1(void){ }

    とコメントアウトしました。

    そして、iodefine_gcc63n.hとintvect.hをインクルードし、

    tsuji様の書かれたサブルーチンで実行しましたら、

    rxduino.cpp:(.text.startup+0x3): undefined reference to `setup'

    とエラーが出てしまいました。

    初心者のため、まだよく理解していないのかもしれませんが、どなたかお教えください。

    よろしくお願いします。

    --------------------------------------

    #include <rxduino.h>

    #include <iodefine_gcc63n.h>

    #include <intvect.h>

    volatile int state = LOW;

    void Excep_TMR1_CMIA1(void)__INTTERUPT_FUNC;

    void init_tmr16(){

       MSTP(TMR0) = 0;

       TMR0.TCORA = 48000 * 20 / 8192 - 1;

       TMR1.TCORA = 50 - 1;

       TMR0.TCR.BIT.CCLR = 1;

       TMR1.TCR.BIT.CCLR = 1;

       TMR1.TCCR.BIT.CSS = 3;

       TMR1.TCR.BIT.CMIEA = 1;

       IEN(TMR1,CMIA1) = 1;

       IPR(TMR1,CMIA1) = 1;

    }

    void start_tmr16(){

       TMR0.TCCR.BYTE = 0x0E;

    }

    void Excep_TMR1_CMIA1(void){

     digitalWrite(PIN_LED0, HIGH);

    }

    void sutup(){

     pinMode(PIN_LED0, OUTPUT)

     init_tmr16(); // カウンタの初期化

    }

    void loop(){

    start_tmr16(); // のカウント開始

    }

    --------------------------------------

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
Children
  • てっちゃん
    てっちゃん over 7 years ago in reply to 小俣 誠二

    あ、まず

    #include <intvect.h>

    はいらないかも。

    void Excep_TMR1_CMIA1(void)__INTTERUPT_FUNC;

    void Excep_TMR1_CMIA1(void){

    digitalWrite(PIN_LED0, HIGH);

    }

    あとsetupもスペルみすだし、セミコロンもないし

    あと、gr_commonのなかにある

    intvect.c

    の1500行くらいのところにある

    void Excep_TMR1_CMIA1(void)

    を注釈にしておけば

    とりあえずはコンパイルとおるんじゃない

    うごくかどうかはまた別の問題だとはおもうけど。

    /*GR-SAKURA Sketch Template Version: V1.02*/

    #include <rxduino.h>

    #include <iodefine_gcc63n.h>

    #include <intvect.h>

    volatile int state = LOW;

    void Excep_TMR1_CMIA1(void)__INTTERUPT_FUNC;

    void Excep_TMR1_CMIA1(void){

    digitalWrite(PIN_LED0, HIGH);

    }

    void init_tmr16(){

      MSTP(TMR0) = 0;

      TMR0.TCORA = 48000 * 20 / 8192 - 1;

      TMR1.TCORA = 50 - 1;

      TMR0.TCR.BIT.CCLR = 1;

      TMR1.TCR.BIT.CCLR = 1;

      TMR1.TCCR.BIT.CSS = 3;

      TMR1.TCR.BIT.CMIEA = 1;

      IEN(TMR1,CMIA1) = 1;

      IPR(TMR1,CMIA1) = 1;

    }

    void start_tmr16(){

      TMR0.TCCR.BYTE = 0x0E;

    }

    void setup(){

    pinMode(PIN_LED0, OUTPUT);

    init_tmr16(); // カウンタの初期化

    start_tmr16(); // のカウント開始

    }

    void loop(){

    }

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 小俣 誠二
    小俣 誠二 over 7 years ago in reply to てっちゃん

    > てっちゃん様

    ご指摘頂き有難う御座いました。スペルみすとセミコンを直し、カウント開始の場所をsetup内に移しましたら、無事動作しました。

    Tsuji様の指摘の通り、intvec.hは入れないと通りませんでした。

    この度は有難うございました。今後ともよろしくお願いします。

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • digiponta
    digiponta 11 months ago in reply to てっちゃん
    ご無沙汰してます。このタイマー、今も、GR-SAKURAで使えますか?
    __INTTERUPT_FUNCでエラーが出ます。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • digiponta
    digiponta 11 months ago in reply to digiponta

    自己フォローですが、GR-SAKURA用プロジェクトテンプレート(Ver V2.23)に、下記の対応で、動作しました。

    [インクルードファイルは、下記3つ]    
    #include <Arduino.h>
    #include <iodefine_gcc63n.h>
    #include <rx63n/interrupt_handlers.h> [修正箇所]
    (1)
    修正前: void INT_Excep_TMR1_CMIA1(void)
    修正後: void Excep_TMR1_CMIA1(void)

    (2) interrupt_handlers.c の対応か所のコメントアウト
    #if 0 /* H.I. */
    // TMR1_CMIA1
    void INT_Excep_TMR1_CMIA1(void){ }
    #endif

    ご参考

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2020 Renesas Electronics Corporation. All rights reserved.