質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.32%

  • C

    3997questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • マイコン

    73questions

    マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

割り込みを使ったLED点滅プログラムで悩んでます。助けてください。

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 2,456

CatNet

score 8

#include <htc.h>
__CONFIG(FOSC_EXTRCIO & WDTE_OFF & ^PWRTE_ON& BOREN_OFF & MCLRE_OFF & CP_OFF& IESO_OFF & FCMEN_OFF)

  void main(void){
    GIE = 1;
    T0IE = 0;
    PSA = 0;
    PS2 = 1;
    PS1 = 1;
    PS0 = 1;
    TMR0 = 0;
    TRISIO = 0b00000000;
    T0IE = 1;

    while(1);
}
void interrupt cat_int(void){
    if(TMR0){
        while(1){
            TMR0 = 0;
            GP2=1;
            __delay_ms(500);
            GP2=0;
            __delay_ms(500);
            return;
        }
    }
}
このプログラムがビルドできなくて困ってます。
具体的にどこが間違っているのでしょうか。
又、エラーが出た際の対処法というかどこを見れば、わかるよみたいなことを教えてください。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

この手の質問をする場合には、
1.開発環境が何か?
  OS:Windows であれば、バージョン、エディション 
       Linux であれば、ディストリビューションとバージョンエディション
  IDE(統合開発環境)を使っているのであれば、バージョン、エディション
  GNU系、コマンドライン系であれば、GNUxxとか、
  コンパイル時のコマンドライン:Make の指定やら
  ⇒他人が確認する上で、必要な情報です。
2.ターゲットとするMCU:マイコンは何か?
3.ターゲット環境はどうしているのか?
   ICEを使っているのか、エバボードを使っているのか、
   何らかの既製品であればメーカー、型番やら。自作であれば、自作やら。

>このプログラムがビルドできなくて困ってます。
ビルドエラーの内容も掲示するべきです。
⇒なぜか?
  掲示板では、貴方のやっている事は、書かれた事でしかわかりません。
  残念ながら、貴方のPCの画面を、隣にいて覗く事は出来ないのです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/06 15:17

    遅れてすみません。
    えっと、まず、
    OSは、Windows8.1 with Bingの最新バージョンで
    開発環境はMPLAB X IDE v2.35で
    ターゲットは、PIC12F683で
    書き込み方は、PICkit3でブレッドボードを通して書き込んでます。
    えっと、いろいろあってビルドはできるようになりました。
    書き換えたプログラムはこれです。
    #include<htc.h>

    #include <xc.h>



    // CONFIG
    #pragma config FOSC = INTOSCIO
    #pragma config WDTE = OFF
    #pragma config PWRTE = ON
    #pragma config MCLRE = OFF
    #pragma config CP = OFF
    #pragma config CPD = OFF
    #pragma config BOREN = OFF
    #pragma config IESO = OFF
    #pragma config FCMEN = OFF

    void main(void){
    while(1){
    GIE = 1;
    T0IE = 0;
    T0CS = 0;
    PSA = 0;
    PS0 = 1;
    PS1 = 1;
    PS2 = 1;
    TMR0 = 0x00;
    TRISIO = 0xff;
    T0IE = 1;
    }
    }
    void interrupt cat(void){
    if(T0IF = 1){
    T0IF = 0;
    GP2 = 1;
    GP2 = 0;
    return ;
    }
    }

    キャンセル

  • 2015/04/06 15:20

    でも、肝心なLEDが点滅しません。プログラム自体は大丈夫なのでしょうか?
    プログラムが大丈夫なのなら、あとは大丈夫なのですが…。

    キャンセル

  • 2015/04/06 15:21

    もしよければ、回答お願いします。

    キャンセル

  • 2015/04/06 16:02

    一連の投稿の継続ですね。
    初期化が正しいかどうか、プログラムでのレジスタの扱いが正しいかどうかは、
    視ていません。

    1.まずは、割り込み無しで、
    LEDを点灯させましょう。
    なぜか?GPIOの設定、LED+抵抗の接続が正しいかどうか
    確認できます。
    2.次に、割り込みを使わずに、
    LEDを点滅させてみましょう。
    3.ここで、割り込みの登場
    2.で点滅させた考え方を、
    割り込みで行う場合は、どうするのかを
    考えましょう。

    LEDには、プラスマイナスがあるのは御存じだと思いますが、
    マイコンのGPIOは、設定により、
    端子に、電圧が出るモードと、電流を吸込側:オープンコレクタのモードが
    あります。マイコンにより、プルアップ、プルダウンが出来る物もあります。
    マイコンは、種類毎に、GPIOの端子に流せる、最大の電流値があります、
    これを超えると、異常発熱、ラッチが起こったり、最悪、焼損します。
    LEDには、印加する電圧により、適切な抵抗を直列につなぎます。
    LEDの抵抗の計算式は、
    秋月 抵抗 計算
    http://akizukidenshi.com/download/led-r-calc.pdf
    [LED] LEDと抵抗の計算1/順電圧と順電流
    https://sites.google.com/site/mathrax2010led/led/-arduino-ledno
    などに、解説があります。
    最近の高輝度型LEDは、眩しいので、抵抗値は加減してください。

    割り込みのプログラムで、
    GP2 = 1;
    GP2 = 0;
    としても、
    PIC12F683 の様なMCUとても、高速で動作しています。
    LEDは点滅しないか、しても、人の目には見えないかも。

    割り込みの考え方。
    割り込みのインターバル:周期が十分遅い場合は、
    偶数回目:点灯、ON
    奇数回目:消灯、OFF
    という考え方をしたり、
    割り込みのインターバルが早い場合は、
    100~1000カウント毎に、
    点灯、消灯の状態を切替たり。

    ICEを使わないでのデバッグ方法は、
    1.これは大丈夫、ここは確実という、取っ掛かりを作る。
    そして、少しずつ機能を確認しながら追加。
    2.コードの修正がある程度まとまったら、無駄、無理の削除、コードの清書
    ICEが使える場合は、
    1.初期化、IOの状態を、ICEで確認。
      手動でポートを叩いて、動作の確認
    2.プログラムのステップ実行と、通常実行の使い分け。

    キャンセル

  • 2015/04/06 16:06

    MPLABには、デバイスシュミレータが有りませんでしたか?
    シュミレータを使うと、チップ単体相当のデバッグや、
    簡単なIOをシュミレーションできる可能性があります。
    ICEが無くても、ソースコードデバッグが可能な場合が多いです。

    キャンセル

  • 2015/04/07 12:22

    シミュレーターというのは、頭にありませんでした。試してみます。
    >PIC12F683 の様なMCUとても、高速で動作しています。
     忘れてました…。確かにこんなプログラムじゃ、見えないですよね。
    プログラムも試行錯誤し、シミュレーターも使いながらやってみたいとおもいます。
    今回も丁寧にありがとうございました。

    キャンセル

同じタグがついた質問を見る

  • C

    3997questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • マイコン

    73questions

    マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。