f-tomohiko の回答履歴

全70件中21~40件表示
  • H8マイコンでの割り込み(シリアルポート入力で)

    マイコン:AKI H8/3048F 開発環境:GCC Developer Lite マイコンとパソコンをRS-232Cケーブルでつないでいます。 ハイパーターミナルを使用して、マイコンを制御したいと考えております。 それで、パソコンのキーボードから入力があった時だけ、割り込みを実行したいです。 割り込みが無い場合は、パソコンでマイコンを制御することができたのですが、割り込みを追加したら、うまくいかなくなりました。 アセンブラを使用せずに、C言語だけでプログラムを完成させたいと思っています。 SCI1からの割り込み処理をするには、どの様にしたらよいのでしょうか? どうか、お願いいたします。

  • H8マイコンでの割り込み(シリアルポート入力で)

    マイコン:AKI H8/3048F 開発環境:GCC Developer Lite マイコンとパソコンをRS-232Cケーブルでつないでいます。 ハイパーターミナルを使用して、マイコンを制御したいと考えております。 それで、パソコンのキーボードから入力があった時だけ、割り込みを実行したいです。 割り込みが無い場合は、パソコンでマイコンを制御することができたのですが、割り込みを追加したら、うまくいかなくなりました。 アセンブラを使用せずに、C言語だけでプログラムを完成させたいと思っています。 SCI1からの割り込み処理をするには、どの様にしたらよいのでしょうか? どうか、お願いいたします。

  • H8/3052 ディップスイッチについて

    こんにちは。 今研究で秋月書店のH8/3052のマイコンを使っています。 LED,LCD,タクトスイッチを動作確認のためのC言語のプログラムはできましたが、ディップスイッチのC言語がうまくかけないため動作確認できません。 ディップスイッチによってLEDかLCDなどを動作させるC言語のプログラムの情報がありましたら教えていただけませんか?

  • VISTAのMACアドレス

    Windows VISTAのMACアドレスを調べる方法を教えてください。

  • デジタル回路の課題です。

    排他的論理和を否定和もしくは否定積のみで構成し、その回路図を描け。 どなたか解説お願いします。

  • 関数の中のループについて

    typedef struct{ int num; char basic_gainen[MAX][32]; int particle[MAX]; }Gainen; int main (void){ Gainen g1, g2; char str1[256] = "外国_の_大型_の_船"; char str2[256] = "大型_の_船"; char buf[256]; divide(&g1, str1);//文字列の中から助詞と名詞を取得 divide(&g2,str2);//文字列の中から助詞と名詞を取得 printf("gainen:%s\n",print(&g1,buf)); printf("gainen:%s\n",print(&g2,buf)); if(hikaku(&g1,&g2)==1) printf("一部の単語は一致する\n"); } //二つの文字列を比較し、一部一致するかどうかの判定 int hikaku(Gainen *g1, Gainen *g2){ int n,i; if(g1->num != g2->num){ if(g1->num >= g2->num) n = g2->num; else n = g1->num; printf("n:%d\n",n); for(i=n;i>0;i--){ printf("inside loop i:%d\n",i); if(g1->particle[n] != g2->particle[n]) return 0; else if(strcmp(g1->basic_gainen[n],g2->basic_gainen[n]) != 0 ) return 0; } } return 1; } divide関数を省略させて頂きます。 hikaku関数のところで、二つの文字列の助詞と名詞が一致しなかったら0を返すその以外は1と返すというふうにしたいですが、実行したらhikaku関数から0の値wが返された。ループの数を表示したら、上のやり方でループがまわらないというのはわかったんです。上の条件判断はいけないですか?ご教授よろしくお願いします。

  • H8 3052について

    マイコン、電気回路初心者です。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただきたいです マイコン初心者です。。。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただけたら幸いです。 回転数を算出の式として次を用いたいと思います(精度はあまり気にしないでください。。。) 回転数[rpm]=60[sec]/1回転に要する時間[sec] リードスイッチとマグネット4つを使い回転数を算出したいと思っています。 リードスイッチが4つカウントしたときの時間(1回転に要する時間)を上の式の分母(t)に入れ演算させたいです。 ITUのタイマー割り込みを使い分母の時間をカウントをしカウントが4のときt=0と考えてました。 しかし、カウントを迎えてもtは永遠に1ずつ足され続け0に戻りません。 プログラムの考え方が違うのでしょうか? 使用環境からロータリーエンコーダ、フォトトランジスタなどが使えません。 チャタリングについては、本からRC積分回路(0.1μFとVccに10KΩ)使い、そこからさらに74HC04通してつかっているのですが・・・見よう見まね状態です。 開発環境はHEWを使っています。 勉強不足だと思いますが、10日くらい悩んでいます。力を貸してください。よろしくお願いします。 僕が立てたプログラムは次の通りです。 vector 12 IRQ0 (リードスイッチ 立下りエッジで割り込み要求) __interrupt(vect=12) void INT_IRQ0(void) { count++; INTC.ISR.BIT.IRQ0F=0; } vector 28 IMIA1 __interrupt(vect=28) void INT_IMIA1(void) { ITU1.TSR.BIT.IMFA = 0; taco_interrput-=1; if(taco_interrput==0) { t++; } taco_interrput=1; } void main() {   set_imask_ccr(1); //割り込み禁止   INTC.ISCR.BIT.IRQ0SC=1; //タコメータ 入力立下りエッジで割り込み発生   INTC.IER.BIT.IRQ0E=1; //IRQ0割り込み許可(タコメータ)        ITU1.TCR.BIT.CCLR=1; //ITU1カウンタクリア要因  ITU1.TCR.BIT.TPSC=3; //ITU1 3.125MHz  ITU1.GRA=3125-1; //ITU1 3.125MHz/3125=1000Hz、周期1ms(0からカウントされるため必ず-1)  ITU1.TIER.BIT.IMIEA = 1; //ITU1 IMFAフラグによる割り込み許可  ITU.TSTR.BIT.STR1=1; //ITU1タイマスタート  taco_interpput=1; //ITU(imia)割り込み回数1 割り込み先で1に戻るので無限  while(1)  {   if(count==4)    {     time=t;     t=0;     count=0;     n=60[sec]/time;    }   if(count>4) //カウントが4より大きくなってしまったとき    {     t=0;    count=0;    }  } } (LCDのプログラムは長いので省きました) LCDの液晶を使い以下のことは確認をしています。 ・カウントが4を迎えたときカウントは0に戻っています。(IRQのカウントのことです) ・カウントを何回与えてもtが0に戻りません。なので演算されてないです。(tは永遠に1ずつ足され続けてます) 回転数の使う範囲は50~200rpmです。 tのカウントを0に戻す記述をどうしたいいのかよろしくお願いします。

  • H8S 2462のプログラミング方法

    H8S/2462マイコンのプログラミング(Ethernetプログラミング含む)をHEWを使って始めることにしました。 Renesasホームページからソフトウェアマニュアル、ハードウェアマニュアルをダウンロードし勉強したのですが、プログラミングを始める初歩のステップが、どうすれば良いのか分かりません…。 例えば、今までR8C/Tinyマイコンでのプログラミングを行ったことがあるのですが、R8C/Tinyは市販の参考書も多く、すぐにプログラミングを始めることができました。 ところがH8S/2462についての参考書が(探したのですが)見当たらず、困っています。レジスタ定義のヘッダファイルすら見つかりません…。 どなたかH8S/2462マイコンのプログラミング方法について精通されている方がおられれば、参考になるWEBサイトや参考書を紹介頂けないでしょうか? どうぞ、よろしくお願い致します。

  • H8 3052について

    マイコン、電気回路初心者です。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただきたいです マイコン初心者です。。。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただけたら幸いです。 回転数を算出の式として次を用いたいと思います(精度はあまり気にしないでください。。。) 回転数[rpm]=60[sec]/1回転に要する時間[sec] リードスイッチとマグネット4つを使い回転数を算出したいと思っています。 リードスイッチが4つカウントしたときの時間(1回転に要する時間)を上の式の分母(t)に入れ演算させたいです。 ITUのタイマー割り込みを使い分母の時間をカウントをしカウントが4のときt=0と考えてました。 しかし、カウントを迎えてもtは永遠に1ずつ足され続け0に戻りません。 プログラムの考え方が違うのでしょうか? 使用環境からロータリーエンコーダ、フォトトランジスタなどが使えません。 チャタリングについては、本からRC積分回路(0.1μFとVccに10KΩ)使い、そこからさらに74HC04通してつかっているのですが・・・見よう見まね状態です。 開発環境はHEWを使っています。 勉強不足だと思いますが、10日くらい悩んでいます。力を貸してください。よろしくお願いします。 僕が立てたプログラムは次の通りです。 vector 12 IRQ0 (リードスイッチ 立下りエッジで割り込み要求) __interrupt(vect=12) void INT_IRQ0(void) { count++; INTC.ISR.BIT.IRQ0F=0; } vector 28 IMIA1 __interrupt(vect=28) void INT_IMIA1(void) { ITU1.TSR.BIT.IMFA = 0; taco_interrput-=1; if(taco_interrput==0) { t++; } taco_interrput=1; } void main() {   set_imask_ccr(1); //割り込み禁止   INTC.ISCR.BIT.IRQ0SC=1; //タコメータ 入力立下りエッジで割り込み発生   INTC.IER.BIT.IRQ0E=1; //IRQ0割り込み許可(タコメータ)        ITU1.TCR.BIT.CCLR=1; //ITU1カウンタクリア要因  ITU1.TCR.BIT.TPSC=3; //ITU1 3.125MHz  ITU1.GRA=3125-1; //ITU1 3.125MHz/3125=1000Hz、周期1ms(0からカウントされるため必ず-1)  ITU1.TIER.BIT.IMIEA = 1; //ITU1 IMFAフラグによる割り込み許可  ITU.TSTR.BIT.STR1=1; //ITU1タイマスタート  taco_interpput=1; //ITU(imia)割り込み回数1 割り込み先で1に戻るので無限  while(1)  {   if(count==4)    {     time=t;     t=0;     count=0;     n=60[sec]/time;    }   if(count>4) //カウントが4より大きくなってしまったとき    {     t=0;    count=0;    }  } } (LCDのプログラムは長いので省きました) LCDの液晶を使い以下のことは確認をしています。 ・カウントが4を迎えたときカウントは0に戻っています。(IRQのカウントのことです) ・カウントを何回与えてもtが0に戻りません。なので演算されてないです。(tは永遠に1ずつ足され続けてます) 回転数の使う範囲は50~200rpmです。 tのカウントを0に戻す記述をどうしたいいのかよろしくお願いします。

  • H8 3052について

    マイコン、電気回路初心者です。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただきたいです マイコン初心者です。。。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただけたら幸いです。 回転数を算出の式として次を用いたいと思います(精度はあまり気にしないでください。。。) 回転数[rpm]=60[sec]/1回転に要する時間[sec] リードスイッチとマグネット4つを使い回転数を算出したいと思っています。 リードスイッチが4つカウントしたときの時間(1回転に要する時間)を上の式の分母(t)に入れ演算させたいです。 ITUのタイマー割り込みを使い分母の時間をカウントをしカウントが4のときt=0と考えてました。 しかし、カウントを迎えてもtは永遠に1ずつ足され続け0に戻りません。 プログラムの考え方が違うのでしょうか? 使用環境からロータリーエンコーダ、フォトトランジスタなどが使えません。 チャタリングについては、本からRC積分回路(0.1μFとVccに10KΩ)使い、そこからさらに74HC04通してつかっているのですが・・・見よう見まね状態です。 開発環境はHEWを使っています。 勉強不足だと思いますが、10日くらい悩んでいます。力を貸してください。よろしくお願いします。 僕が立てたプログラムは次の通りです。 vector 12 IRQ0 (リードスイッチ 立下りエッジで割り込み要求) __interrupt(vect=12) void INT_IRQ0(void) { count++; INTC.ISR.BIT.IRQ0F=0; } vector 28 IMIA1 __interrupt(vect=28) void INT_IMIA1(void) { ITU1.TSR.BIT.IMFA = 0; taco_interrput-=1; if(taco_interrput==0) { t++; } taco_interrput=1; } void main() {   set_imask_ccr(1); //割り込み禁止   INTC.ISCR.BIT.IRQ0SC=1; //タコメータ 入力立下りエッジで割り込み発生   INTC.IER.BIT.IRQ0E=1; //IRQ0割り込み許可(タコメータ)        ITU1.TCR.BIT.CCLR=1; //ITU1カウンタクリア要因  ITU1.TCR.BIT.TPSC=3; //ITU1 3.125MHz  ITU1.GRA=3125-1; //ITU1 3.125MHz/3125=1000Hz、周期1ms(0からカウントされるため必ず-1)  ITU1.TIER.BIT.IMIEA = 1; //ITU1 IMFAフラグによる割り込み許可  ITU.TSTR.BIT.STR1=1; //ITU1タイマスタート  taco_interpput=1; //ITU(imia)割り込み回数1 割り込み先で1に戻るので無限  while(1)  {   if(count==4)    {     time=t;     t=0;     count=0;     n=60[sec]/time;    }   if(count>4) //カウントが4より大きくなってしまったとき    {     t=0;    count=0;    }  } } (LCDのプログラムは長いので省きました) LCDの液晶を使い以下のことは確認をしています。 ・カウントが4を迎えたときカウントは0に戻っています。(IRQのカウントのことです) ・カウントを何回与えてもtが0に戻りません。なので演算されてないです。(tは永遠に1ずつ足され続けてます) 回転数の使う範囲は50~200rpmです。 tのカウントを0に戻す記述をどうしたいいのかよろしくお願いします。

  • H8S 2462のプログラミング方法

    H8S/2462マイコンのプログラミング(Ethernetプログラミング含む)をHEWを使って始めることにしました。 Renesasホームページからソフトウェアマニュアル、ハードウェアマニュアルをダウンロードし勉強したのですが、プログラミングを始める初歩のステップが、どうすれば良いのか分かりません…。 例えば、今までR8C/Tinyマイコンでのプログラミングを行ったことがあるのですが、R8C/Tinyは市販の参考書も多く、すぐにプログラミングを始めることができました。 ところがH8S/2462についての参考書が(探したのですが)見当たらず、困っています。レジスタ定義のヘッダファイルすら見つかりません…。 どなたかH8S/2462マイコンのプログラミング方法について精通されている方がおられれば、参考になるWEBサイトや参考書を紹介頂けないでしょうか? どうぞ、よろしくお願い致します。

  • H8S 2462のプログラミング方法

    H8S/2462マイコンのプログラミング(Ethernetプログラミング含む)をHEWを使って始めることにしました。 Renesasホームページからソフトウェアマニュアル、ハードウェアマニュアルをダウンロードし勉強したのですが、プログラミングを始める初歩のステップが、どうすれば良いのか分かりません…。 例えば、今までR8C/Tinyマイコンでのプログラミングを行ったことがあるのですが、R8C/Tinyは市販の参考書も多く、すぐにプログラミングを始めることができました。 ところがH8S/2462についての参考書が(探したのですが)見当たらず、困っています。レジスタ定義のヘッダファイルすら見つかりません…。 どなたかH8S/2462マイコンのプログラミング方法について精通されている方がおられれば、参考になるWEBサイトや参考書を紹介頂けないでしょうか? どうぞ、よろしくお願い致します。

  • H8S 2462のプログラミング方法

    H8S/2462マイコンのプログラミング(Ethernetプログラミング含む)をHEWを使って始めることにしました。 Renesasホームページからソフトウェアマニュアル、ハードウェアマニュアルをダウンロードし勉強したのですが、プログラミングを始める初歩のステップが、どうすれば良いのか分かりません…。 例えば、今までR8C/Tinyマイコンでのプログラミングを行ったことがあるのですが、R8C/Tinyは市販の参考書も多く、すぐにプログラミングを始めることができました。 ところがH8S/2462についての参考書が(探したのですが)見当たらず、困っています。レジスタ定義のヘッダファイルすら見つかりません…。 どなたかH8S/2462マイコンのプログラミング方法について精通されている方がおられれば、参考になるWEBサイトや参考書を紹介頂けないでしょうか? どうぞ、よろしくお願い致します。

  • H8 3052について

    マイコン、電気回路初心者です。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただきたいです マイコン初心者です。。。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただけたら幸いです。 回転数を算出の式として次を用いたいと思います(精度はあまり気にしないでください。。。) 回転数[rpm]=60[sec]/1回転に要する時間[sec] リードスイッチとマグネット4つを使い回転数を算出したいと思っています。 リードスイッチが4つカウントしたときの時間(1回転に要する時間)を上の式の分母(t)に入れ演算させたいです。 ITUのタイマー割り込みを使い分母の時間をカウントをしカウントが4のときt=0と考えてました。 しかし、カウントを迎えてもtは永遠に1ずつ足され続け0に戻りません。 プログラムの考え方が違うのでしょうか? 使用環境からロータリーエンコーダ、フォトトランジスタなどが使えません。 チャタリングについては、本からRC積分回路(0.1μFとVccに10KΩ)使い、そこからさらに74HC04通してつかっているのですが・・・見よう見まね状態です。 開発環境はHEWを使っています。 勉強不足だと思いますが、10日くらい悩んでいます。力を貸してください。よろしくお願いします。 僕が立てたプログラムは次の通りです。 vector 12 IRQ0 (リードスイッチ 立下りエッジで割り込み要求) __interrupt(vect=12) void INT_IRQ0(void) { count++; INTC.ISR.BIT.IRQ0F=0; } vector 28 IMIA1 __interrupt(vect=28) void INT_IMIA1(void) { ITU1.TSR.BIT.IMFA = 0; taco_interrput-=1; if(taco_interrput==0) { t++; } taco_interrput=1; } void main() {   set_imask_ccr(1); //割り込み禁止   INTC.ISCR.BIT.IRQ0SC=1; //タコメータ 入力立下りエッジで割り込み発生   INTC.IER.BIT.IRQ0E=1; //IRQ0割り込み許可(タコメータ)        ITU1.TCR.BIT.CCLR=1; //ITU1カウンタクリア要因  ITU1.TCR.BIT.TPSC=3; //ITU1 3.125MHz  ITU1.GRA=3125-1; //ITU1 3.125MHz/3125=1000Hz、周期1ms(0からカウントされるため必ず-1)  ITU1.TIER.BIT.IMIEA = 1; //ITU1 IMFAフラグによる割り込み許可  ITU.TSTR.BIT.STR1=1; //ITU1タイマスタート  taco_interpput=1; //ITU(imia)割り込み回数1 割り込み先で1に戻るので無限  while(1)  {   if(count==4)    {     time=t;     t=0;     count=0;     n=60[sec]/time;    }   if(count>4) //カウントが4より大きくなってしまったとき    {     t=0;    count=0;    }  } } (LCDのプログラムは長いので省きました) LCDの液晶を使い以下のことは確認をしています。 ・カウントが4を迎えたときカウントは0に戻っています。(IRQのカウントのことです) ・カウントを何回与えてもtが0に戻りません。なので演算されてないです。(tは永遠に1ずつ足され続けてます) 回転数の使う範囲は50~200rpmです。 tのカウントを0に戻す記述をどうしたいいのかよろしくお願いします。

  • H8 3052について

    マイコン、電気回路初心者です。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただきたいです マイコン初心者です。。。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただけたら幸いです。 回転数を算出の式として次を用いたいと思います(精度はあまり気にしないでください。。。) 回転数[rpm]=60[sec]/1回転に要する時間[sec] リードスイッチとマグネット4つを使い回転数を算出したいと思っています。 リードスイッチが4つカウントしたときの時間(1回転に要する時間)を上の式の分母(t)に入れ演算させたいです。 ITUのタイマー割り込みを使い分母の時間をカウントをしカウントが4のときt=0と考えてました。 しかし、カウントを迎えてもtは永遠に1ずつ足され続け0に戻りません。 プログラムの考え方が違うのでしょうか? 使用環境からロータリーエンコーダ、フォトトランジスタなどが使えません。 チャタリングについては、本からRC積分回路(0.1μFとVccに10KΩ)使い、そこからさらに74HC04通してつかっているのですが・・・見よう見まね状態です。 開発環境はHEWを使っています。 勉強不足だと思いますが、10日くらい悩んでいます。力を貸してください。よろしくお願いします。 僕が立てたプログラムは次の通りです。 vector 12 IRQ0 (リードスイッチ 立下りエッジで割り込み要求) __interrupt(vect=12) void INT_IRQ0(void) { count++; INTC.ISR.BIT.IRQ0F=0; } vector 28 IMIA1 __interrupt(vect=28) void INT_IMIA1(void) { ITU1.TSR.BIT.IMFA = 0; taco_interrput-=1; if(taco_interrput==0) { t++; } taco_interrput=1; } void main() {   set_imask_ccr(1); //割り込み禁止   INTC.ISCR.BIT.IRQ0SC=1; //タコメータ 入力立下りエッジで割り込み発生   INTC.IER.BIT.IRQ0E=1; //IRQ0割り込み許可(タコメータ)        ITU1.TCR.BIT.CCLR=1; //ITU1カウンタクリア要因  ITU1.TCR.BIT.TPSC=3; //ITU1 3.125MHz  ITU1.GRA=3125-1; //ITU1 3.125MHz/3125=1000Hz、周期1ms(0からカウントされるため必ず-1)  ITU1.TIER.BIT.IMIEA = 1; //ITU1 IMFAフラグによる割り込み許可  ITU.TSTR.BIT.STR1=1; //ITU1タイマスタート  taco_interpput=1; //ITU(imia)割り込み回数1 割り込み先で1に戻るので無限  while(1)  {   if(count==4)    {     time=t;     t=0;     count=0;     n=60[sec]/time;    }   if(count>4) //カウントが4より大きくなってしまったとき    {     t=0;    count=0;    }  } } (LCDのプログラムは長いので省きました) LCDの液晶を使い以下のことは確認をしています。 ・カウントが4を迎えたときカウントは0に戻っています。(IRQのカウントのことです) ・カウントを何回与えてもtが0に戻りません。なので演算されてないです。(tは永遠に1ずつ足され続けてます) 回転数の使う範囲は50~200rpmです。 tのカウントを0に戻す記述をどうしたいいのかよろしくお願いします。

  • H8 3052について

    マイコン、電気回路初心者です。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただきたいです マイコン初心者です。。。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただけたら幸いです。 回転数を算出の式として次を用いたいと思います(精度はあまり気にしないでください。。。) 回転数[rpm]=60[sec]/1回転に要する時間[sec] リードスイッチとマグネット4つを使い回転数を算出したいと思っています。 リードスイッチが4つカウントしたときの時間(1回転に要する時間)を上の式の分母(t)に入れ演算させたいです。 ITUのタイマー割り込みを使い分母の時間をカウントをしカウントが4のときt=0と考えてました。 しかし、カウントを迎えてもtは永遠に1ずつ足され続け0に戻りません。 プログラムの考え方が違うのでしょうか? 使用環境からロータリーエンコーダ、フォトトランジスタなどが使えません。 チャタリングについては、本からRC積分回路(0.1μFとVccに10KΩ)使い、そこからさらに74HC04通してつかっているのですが・・・見よう見まね状態です。 開発環境はHEWを使っています。 勉強不足だと思いますが、10日くらい悩んでいます。力を貸してください。よろしくお願いします。 僕が立てたプログラムは次の通りです。 vector 12 IRQ0 (リードスイッチ 立下りエッジで割り込み要求) __interrupt(vect=12) void INT_IRQ0(void) { count++; INTC.ISR.BIT.IRQ0F=0; } vector 28 IMIA1 __interrupt(vect=28) void INT_IMIA1(void) { ITU1.TSR.BIT.IMFA = 0; taco_interrput-=1; if(taco_interrput==0) { t++; } taco_interrput=1; } void main() {   set_imask_ccr(1); //割り込み禁止   INTC.ISCR.BIT.IRQ0SC=1; //タコメータ 入力立下りエッジで割り込み発生   INTC.IER.BIT.IRQ0E=1; //IRQ0割り込み許可(タコメータ)        ITU1.TCR.BIT.CCLR=1; //ITU1カウンタクリア要因  ITU1.TCR.BIT.TPSC=3; //ITU1 3.125MHz  ITU1.GRA=3125-1; //ITU1 3.125MHz/3125=1000Hz、周期1ms(0からカウントされるため必ず-1)  ITU1.TIER.BIT.IMIEA = 1; //ITU1 IMFAフラグによる割り込み許可  ITU.TSTR.BIT.STR1=1; //ITU1タイマスタート  taco_interpput=1; //ITU(imia)割り込み回数1 割り込み先で1に戻るので無限  while(1)  {   if(count==4)    {     time=t;     t=0;     count=0;     n=60[sec]/time;    }   if(count>4) //カウントが4より大きくなってしまったとき    {     t=0;    count=0;    }  } } (LCDのプログラムは長いので省きました) LCDの液晶を使い以下のことは確認をしています。 ・カウントが4を迎えたときカウントは0に戻っています。(IRQのカウントのことです) ・カウントを何回与えてもtが0に戻りません。なので演算されてないです。(tは永遠に1ずつ足され続けてます) 回転数の使う範囲は50~200rpmです。 tのカウントを0に戻す記述をどうしたいいのかよろしくお願いします。

  • H8 3052について

    マイコン、電気回路初心者です。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただきたいです マイコン初心者です。。。 h8 3052で回転計を作製をしたいのですが・・・知識を貸していただけたら幸いです。 回転数を算出の式として次を用いたいと思います(精度はあまり気にしないでください。。。) 回転数[rpm]=60[sec]/1回転に要する時間[sec] リードスイッチとマグネット4つを使い回転数を算出したいと思っています。 リードスイッチが4つカウントしたときの時間(1回転に要する時間)を上の式の分母(t)に入れ演算させたいです。 ITUのタイマー割り込みを使い分母の時間をカウントをしカウントが4のときt=0と考えてました。 しかし、カウントを迎えてもtは永遠に1ずつ足され続け0に戻りません。 プログラムの考え方が違うのでしょうか? 使用環境からロータリーエンコーダ、フォトトランジスタなどが使えません。 チャタリングについては、本からRC積分回路(0.1μFとVccに10KΩ)使い、そこからさらに74HC04通してつかっているのですが・・・見よう見まね状態です。 開発環境はHEWを使っています。 勉強不足だと思いますが、10日くらい悩んでいます。力を貸してください。よろしくお願いします。 僕が立てたプログラムは次の通りです。 vector 12 IRQ0 (リードスイッチ 立下りエッジで割り込み要求) __interrupt(vect=12) void INT_IRQ0(void) { count++; INTC.ISR.BIT.IRQ0F=0; } vector 28 IMIA1 __interrupt(vect=28) void INT_IMIA1(void) { ITU1.TSR.BIT.IMFA = 0; taco_interrput-=1; if(taco_interrput==0) { t++; } taco_interrput=1; } void main() {   set_imask_ccr(1); //割り込み禁止   INTC.ISCR.BIT.IRQ0SC=1; //タコメータ 入力立下りエッジで割り込み発生   INTC.IER.BIT.IRQ0E=1; //IRQ0割り込み許可(タコメータ)        ITU1.TCR.BIT.CCLR=1; //ITU1カウンタクリア要因  ITU1.TCR.BIT.TPSC=3; //ITU1 3.125MHz  ITU1.GRA=3125-1; //ITU1 3.125MHz/3125=1000Hz、周期1ms(0からカウントされるため必ず-1)  ITU1.TIER.BIT.IMIEA = 1; //ITU1 IMFAフラグによる割り込み許可  ITU.TSTR.BIT.STR1=1; //ITU1タイマスタート  taco_interpput=1; //ITU(imia)割り込み回数1 割り込み先で1に戻るので無限  while(1)  {   if(count==4)    {     time=t;     t=0;     count=0;     n=60[sec]/time;    }   if(count>4) //カウントが4より大きくなってしまったとき    {     t=0;    count=0;    }  } } (LCDのプログラムは長いので省きました) LCDの液晶を使い以下のことは確認をしています。 ・カウントが4を迎えたときカウントは0に戻っています。(IRQのカウントのことです) ・カウントを何回与えてもtが0に戻りません。なので演算されてないです。(tは永遠に1ずつ足され続けてます) 回転数の使う範囲は50~200rpmです。 tのカウントを0に戻す記述をどうしたいいのかよろしくお願いします。

  • PIC16F877を用いたC言語でのAD変換について

    PICを用いてAD変換をしようとしていますが,思うように出力が出ず困っています. 可変抵抗を用いて0-5V間を調整可能な入力をAN0ピンに接続し,AD変換の結果をBポートに出力しようとしています. 使用条件は,mikroC使用,PIC16F877使用,C言語使用,水晶20MHz,Aポート入力(AN0ピンアナログ入力),Bポート出力,Tad=1.6μsです. 以下のプログラムで間違っている点をご指摘いただきたいと考えています. unsigned int out_b; void port_initialize() { INTCON=0; //割り込みなし ADCON0=0x81; ADCON1=0x8E; //AD変換中の入力範囲設定は電源と共有 TRISA = 0x3f; //AD変換用ポート(1で入力) TRISB = 0; //出力用ポート(0で出力) PORTB = 0; } void value_initialize() { out_b=0; PORTB=out_b; } void main() { port_initialize(); value_initialize(); while(1){ //endless ADCON0=0x81; //AD変換bitを選択 Delay_us(24); //アクィジション時間+AD変換後の待ち時間 ADCON0=0x85; //AD変換開始 Delay_us(20); //AD変換待ち時間 out_b=ADC_Read(0); PORTB=out_b; } }

  • H8S/2633と超音波距離計の組み合わせ

    大学での研究として、H8マイコンを使用しています。 H8マイコン(H8S/2633)と超音波センサを利用した距離計を組み合わせようとしています。 超音波距離計はこちらで購入したものです。 http://www.japan-elekit.jp/product/24 表示回路の部分が異なりますが、回路図はほぼこちらと同じです↓ http://www.japan-elekit.jp/zoom/1703 ---------------------------------------------------------- 使用しているものは出力を読み取る部分がありませんので、 PIC16F84の3番ピンと6番ピンの信号をH8で受信して 超音波反射時間を求め、距離情報に変えようとしてます。 ---------------------------------------------------------- ここで質問なのですが、 H8S/2633でそのような計算は出来るのでしょうか。 マイコンへの取り込み方から教えて頂けないでしょうか。 ※プログラムはC言語を使用します。 (大学の授業で勉強した程度の知識しかありません) ※マイコンについてはほとんど知識がありません。

  • PIC16F877を用いたC言語でのAD変換について

    PICを用いてAD変換をしようとしていますが,思うように出力が出ず困っています. 可変抵抗を用いて0-5V間を調整可能な入力をAN0ピンに接続し,AD変換の結果をBポートに出力しようとしています. 使用条件は,mikroC使用,PIC16F877使用,C言語使用,水晶20MHz,Aポート入力(AN0ピンアナログ入力),Bポート出力,Tad=1.6μsです. 以下のプログラムで間違っている点をご指摘いただきたいと考えています. unsigned int out_b; void port_initialize() { INTCON=0; //割り込みなし ADCON0=0x81; ADCON1=0x8E; //AD変換中の入力範囲設定は電源と共有 TRISA = 0x3f; //AD変換用ポート(1で入力) TRISB = 0; //出力用ポート(0で出力) PORTB = 0; } void value_initialize() { out_b=0; PORTB=out_b; } void main() { port_initialize(); value_initialize(); while(1){ //endless ADCON0=0x81; //AD変換bitを選択 Delay_us(24); //アクィジション時間+AD変換後の待ち時間 ADCON0=0x85; //AD変換開始 Delay_us(20); //AD変換待ち時間 out_b=ADC_Read(0); PORTB=out_b; } }