ricardo_ の回答履歴

全144件中101~120件表示
  • (H8マイコン)タイマ割込で変更したグローバル変数がメインループ内で認識されない

    H8マイコンの学習をしています。 LEDを一定時間ごとに点滅させるためにタイマ割込を使用して時間稼ぎ処理を行おうとしました。 1ms毎の割込でグローバル変数をインクリメントし、メインループ内でグローバル変数が一定値以上になるまで無限ループする処理を作成しました。 しかし、メインループの数値チェックの無限ループが終了せずLEDが点滅しません。 原因についてお知恵を拝借できないでしょうか。 何卒よろしくお願いいたします。 以下は環境およびコードです。 マイコン:H8/36109(H8/H300 Tinyシリーズ) 使用ツール:HEW4, E8a (main.c) #include "iodefine.h" volatile unsigned int cnt; //グローバル変数 void main(void) {   cnt = 0;   while(cnt < 1000); //ここで無限ループのまま(補足も参照)   IO.PDR2.BIT.B0 = IO.PDR2.BIT.B0; //ここにブレークをかけても引っ掛らない } (intprg.c) #include <machine.h> #include "iodefine.h" extern volatile unsigned int cnt; #pragma section IntPRG  (略) // vector 22 Timer V __interrupt(vect=22) void INT_TimerV(void) {   cnt++; //(補足参照)   TV.TCSRV.BIT.CMFA = 0; //コンペアマッチフラグクリア } (hwsetup.c) void HardwareSetup(void) {   IO.PCR2 = 0xff; //出力ポート      //タイマVの設定   TV.TCRV0.BYTE = 0x4b; /* CMFA有効, コンペアマッチAでクリア, φ/128 = 125kHz */   TV.TCRV1.BYTE = 0x01; /* 外部入力禁止 */   TV.TCORA = 125; /* 1ms */   TV.TCSRV.BYTE = 0x00; /* フラグクリア, 出力禁止 */ } (補足) 割込動作内でブレークをかけるとブレークがかかり、そこからステップ実行するとグローバル変数が変化していることを確認しました。 同様に、メインループの数値チェック無限ループでブレークをかけ、条件を満たすようにグローバル変数を手動で書き換えステップ実行すると無限ループを脱出しました。

    • 締切済み
    • noname#251988
    • C・C++・C#
    • 回答数5
  • main(int argc,char **argv[])の意味を教えて下さい

     今晩は、Cの初心者です宜しくお願いします。  main関数の引数で、int main(int argc,char **argv[])とint main(int argc,char *argv[])と書かれている場合がありますが、 「**argv」と「*argv」の意味の違いはどのようなもので、どのように使い分けるのでしょうか。 また、必ずポインタ型でとるという決まりでしょうか。 宜しくお願いします。

  • フィルターの設計に関する質問

    http://fx.104ban.com/up/src/up7230.jpg TI社のFilterProを使って上記のようなカットオフ周波数300kHzでpoleが6のフィルター設計を行い、 その周波数応答を見てみたのですが、 なぜか200kHzあたりでゲインが増大するという現象が見られています。 それ以外は特に問題ないのですが、これはなぜなのでしょうか? 周波数特性グラフでは300kHzほどで群遅延は増大していますが、 ゲインはずっと平坦になっています。 それなのにゲインが増大する理由が分かりません。 一応、全ての素子が間違っていないかチェックしてみたのですが、 間違いはありませんでした。 この理由について教えて頂けますでしょうか?

    • ベストアンサー
    • motarou
    • 科学
    • 回答数6
  • メモリアクセス時間の計測方法

    今あるソースを書いていますが、計算時間が多くを占めるのか、メモリアクセスが多くを占めるのかを調べたいです。その方法としてアセンブラで記述し、load/store命令、あるいはadd等計算命令をそれぞれ計って足し合わせる、という方法が考えられますが、大きなソースコードだと大変なので、定量的に算出したいと思っています。 例えば、以下のようなコードの //----- ~ //----- の部分に対しては、計算に対してメモリアクセスがほとんどを占めるため、計算時間はほぼ0であると考えることで、メモリアクセスの時間を概略計測することはできると思います。しかし、レジスタにデータを置いてひたすら計算してからメモリに戻す、という場合には同手法は使えないと思いますが、そのような場合にはどうやって計測すれば良いでしょうか? #include <stdio.h> #define NUM_ITER (1000) float a[NUM_ITER], b[NUM_ITER], c[NUM_ITER]; int i; //----------------------- for(i=0; i<NUM_ITER; i++){ c[i] = a[i] + b[i]; } //----------------------- int j; for(j=0; j<NUM_ITER; j++){ printf("%f\n", c[i]); }

  • ポインタのポインタについて

     Cの初心者です、宜しくお願いします。  **(ポインタのポインタ)って言うのがあるみたいですが、どのような場合に使うのでしょうか。

  • AC電流の測定(DC電圧計にて)

    ACモータを駆動させる回路があります。 その回路にACモータではなく、擬似負荷(抵抗負荷)を接続して 負荷に流れる電流を測定して回路の検査を行いたいのですが、 測定するのはDC電圧計しかありません。 電圧はAC100Vです。 交流電流の考え方が良く分からないのですが、下記で電流の代替測定は可能でしょうか? (1)擬似負荷に低抵抗(0.1Ω程度)を直列に接続する。 (2)低抵抗の両端の電圧はAC電圧なので、ダイオードブリッジを通してコンデンサ付けて平滑させてDC電圧化 (電圧小さいと思うので、オペアンプで増幅させる)させる。 (3)そのDC電圧を測定する。 (4)DC電圧を計算して電流値として読み替える。 (DC電圧/増幅分/√2)/低抵抗=電流値 以上、根本的に何か間違っているようでしたらその旨もご指摘御願いします。

  • 中南米旅行について!緊急!!

    困ってます! 急なのですが、10月20日頃から南米へ旅行することになりました。 アメリカ・オーランドからの出発で、イグアスの滝・マチュピチュ・ナスカ・ウユニ塩湖が見たくて、そこから中米のグアテマラ・ベリーズ・メキシコに行きます。 全くの突発的な旅行のため、情報類が全くそろいません。 1 ブラジルINでペルー方面かペルーINブラジル方面へ  の旅か、どちらのほうが安いのか? 2 南米に使える時間は30日間、これはキツイ日程なの  か? 3 黄熱病の予防接種は必要なのか? 4 ブラジルのビザをオーランドで取得するにはどうす  るのか? 今から自分でも全力で調べますが、経験者の方の意見ほど貴重なものはありません。どうかよろしくお願いします!!!

  • USART通信で文字化け

    __CONFIG( WDTDIS & UNPROTECT & BORDIS & MCLRDIS & PWRTEN & HS & LVPDIS ); // // test.c 2009/07/30 HI-TECH C Compiler // プリスケーラ1/256 セラミック発振子10MHz使用 1命令当り102us // unsigned char buff[10]; unsigned int RecCnt=0; main(){ /*Port initalizeなど .................... */ RCSTA = 0x90; TXSTA = 0x24; SPBRG = 0x40; //BaudRate 9600 FOCS 10MHz unsigned int i; while(1){ putch('A'); for(i=0; i<60000; i++); putch('K'); for(i=0; i<60000; i++); } } ヘッダーファイル #ifndef _SERIAL_H_ #define _SERIAL_H_ #define BAUD 9600 #define FOSC 10000000L #define NINE 0 // Use 9bit communication? FALSE=8bit #define DIVIDER ((int)(FOSC/(16UL * BAUD) -1)) #define HIGH_SPEED 1 #if HIGH_SPEED == 1 #define SPEED 0x04 #else #define SPEED 0 #endif #define RX_PIN TRISB1 #define TX_PIN TRISB2 /* Serial initialization */ #define init_comms()\ RX_PIN = 1; \ TX_PIN = 1; \ SPBRG = DIVIDER; \ RCSTA = (NINE_BITS|0x90); \ TXSTA = (SPEED|NINE_BITS|0x20) void putch(unsigned char); unsigned char getch(void); unsigned char getche(void); #endif void putch(unsigned char byte) { unsigned int i; /* output one byte */ while(!TXIF) /* set when register is empty */ continue; TXREG = byte; } unsigned char getch() { /* retrieve one byte */ while(!RCIF) /* set when register is not empty */ continue; return RCREG; } 上記が自分で作成したUSART通信を使用したプログラムです。AとKを送信しています。ですがハイパーターミナルで受信した文字列を見てみるとまったく異なる文字や空白など文字化けをしていました。 前に作成した時は正常に表示されたのですが、今また流用してみると文字化けしていました。 発振子に10MHz使用でBRGH=1(高速)と9600bps→SPBRG=0x40 原因はここだと思うのですが、、、謎です。 丸投げな感じですが、どうか分かる方回答をお願いします。

  • オシロスコープで位相をみる方法を教えて下さい。

    ある2つの信号の位相がそろっているのかそろっていないのかを オシロスコープで調べたいのですが、どうすれば良いのでしょうか? 例えばファンクションジェネレータを使って10 kHzの正弦波をオシロスコープを入れた状態でファンクションジェネレータでその正弦波を位相を動かしたとしても、 オシロスコープでは正弦波は横に動きません。 これはどうすれば位相も考慮して画面に表示してくれるようになるのでしょうか?

    • ベストアンサー
    • KUZUY
    • 科学
    • 回答数6
  • オシロスコープの外部トリガについて

    大学で爆発の研究をしている学生です。 爆発現象をできるだけフィルタのない生の信号で観測したいのですが、 うまくオシロスコープ上でトレースを見ることができません。 今までは内部トリガでトリガをかけていたのですが、 それでは問題があると思い、爆発させる際に出す放電スイッチを うまく外部トリガとして用いることができないかと考えています。 オシロスコープの初心者なので、どこに接続すれば良いのか レンジはどの程度に設定すれば良いのか いまいちわかりません。 よろしければ測定のポイントなどと一緒にアドバイスお願いします。 ちなみにオシロスコープは日立のデジタルストレージVC-6045及び、岩通のアナログSS-7811の2種類を用いて実験しています。

  • オシロスコープの外部トリガについて

    大学で爆発の研究をしている学生です。 爆発現象をできるだけフィルタのない生の信号で観測したいのですが、 うまくオシロスコープ上でトレースを見ることができません。 今までは内部トリガでトリガをかけていたのですが、 それでは問題があると思い、爆発させる際に出す放電スイッチを うまく外部トリガとして用いることができないかと考えています。 オシロスコープの初心者なので、どこに接続すれば良いのか レンジはどの程度に設定すれば良いのか いまいちわかりません。 よろしければ測定のポイントなどと一緒にアドバイスお願いします。 ちなみにオシロスコープは日立のデジタルストレージVC-6045及び、岩通のアナログSS-7811の2種類を用いて実験しています。

  • (1+(1/n))^nの極限でeの値を求める

    lim_n→∞ (1+(1/n))^nのとき値がeに近づいていくということは知っていますが、(1+(1/n))^nを計算機に入力し、nの値をだんだん大きくしていくと(1+(1/n))^nがeより大きくなってしまいます。 何故このようなことが起こっているのか詳しく説明してくれる方いませんか?

    • ベストアンサー
    • noname#200754
    • 数学・算数
    • 回答数6
  • (1+(1/n))^nの極限でeの値を求める

    lim_n→∞ (1+(1/n))^nのとき値がeに近づいていくということは知っていますが、(1+(1/n))^nを計算機に入力し、nの値をだんだん大きくしていくと(1+(1/n))^nがeより大きくなってしまいます。 何故このようなことが起こっているのか詳しく説明してくれる方いませんか?

    • ベストアンサー
    • noname#200754
    • 数学・算数
    • 回答数6
  • 年末年始スペイン、3日で観光するのにオススメはありますか?

    年末年始にスペインに行くことになりました。 女2人旅です。 休みが6日しかないので、現地滞在は3日間と少しになると思います。 そこであちこち周るのではなく、1都市をきちんと観光することにしました。 自分で調べたのは以下の3都市なのですが、この中で1都市を選んで3日間で観光するならどこがオススメですか? ちなみに闘牛には興味ありません。 ・マドリード:プラド美術館はとても魅力的だが、治安が悪いらしいので女二人では心配 ・バルセロナ:ガウディの建築とピカソ美術館があるので、プラド美術館を諦めた分も楽しめそう。治安は普通? ・グラナダ:アルハンブラ宮殿とミハスは行きたい。歴史好きの自分としてはグラナダという響きに憧れるが、格安航空券のサイトで検索をかけたら飛行機がありませんでした。 本当はツアーでさくっと行きたいのですが、同行の友人がイギリス在住のため個人で航空券とホテルを手配します。 スペインに詳しい方よろしくお願いいたします。

  • タヒチは何故、旅費が高いのですか?

    タヒチは何故、旅費が高いのですか? 周辺のニューカレドニア、フィジーに比べて非常に高いです何故でしょうか?

  • 年末年始スペイン、3日で観光するのにオススメはありますか?

    年末年始にスペインに行くことになりました。 女2人旅です。 休みが6日しかないので、現地滞在は3日間と少しになると思います。 そこであちこち周るのではなく、1都市をきちんと観光することにしました。 自分で調べたのは以下の3都市なのですが、この中で1都市を選んで3日間で観光するならどこがオススメですか? ちなみに闘牛には興味ありません。 ・マドリード:プラド美術館はとても魅力的だが、治安が悪いらしいので女二人では心配 ・バルセロナ:ガウディの建築とピカソ美術館があるので、プラド美術館を諦めた分も楽しめそう。治安は普通? ・グラナダ:アルハンブラ宮殿とミハスは行きたい。歴史好きの自分としてはグラナダという響きに憧れるが、格安航空券のサイトで検索をかけたら飛行機がありませんでした。 本当はツアーでさくっと行きたいのですが、同行の友人がイギリス在住のため個人で航空券とホテルを手配します。 スペインに詳しい方よろしくお願いいたします。

  • 組み込みアカデミー LEDを1個点灯のはずが2個点灯してしまいます

    組み込みアカデミー第1回 LEDを1個点灯のはずが2個点灯してしまいます。 対象は付録の「NE-R8C/25」です。動作確認プログラムのslos.hwsを実行するとLED1と2が交互・同時点灯を繰り返し、正常に動作しています。 ところが以下のプログラムをC:\WorkSpace\step01\step01\step01.a30として実行してもLEDが2個点灯してしまいます。 プログラム中 LED1点灯のところがMOV.B #11111110b,p2でもLED1と2同時に点灯してしまいます。 指定されたsfr_r825.incファイルはc:\WorkSpase\STEP01\STEP01以下にコピーしています。 .INCLUDE sfr_r825.inc ;SFR定義ファイルのインクルード .SECTION PROGRAM,CODE ;コードセクション .ORG 0009000h Start: MOV.B #11111111b,pd2 ;入出力ポートP2を出力ポートに設定 BCLR p2_0      ;LED1点灯  BSET p2_1      ;LED2消灯 Loop: JMP Loop .SECTION FIXVECTOR,ROMDATA .ORG 0FFFCh Reset: .LWORD Start|0FF000000h .END

  • 挨拶を返さない在日ブラジル人

    自転車などで道を通っている時に 通りがかる人には出来るだけ挨拶するようにしています。 外国人もよくいますが(中国人 ブラジル人 欧米人)にも挨拶しています。 大抵は挨拶を返してくれますが ブラジル人だけはまったく 返ってきません、と言うか目さえ合わそうとしません、中国人でも反応しない人もいますが ニーハオ と言えばだいたい挨拶してくれます。 教えてください、ブラジル人はなぜ挨拶しないのでしょうか? オーラ ではダメですか?

  • 1について

    1/3 + 1/3 + 1/3 = 1 ですが、これを少数点にした場合 0.333・・・ + 0.333・・・ + 0.333・・・ = 0.999・・・ と、絶対に1にはなりません。 これはなぜですか?

  • PICのシリアル通信について

    現在PICで電子工作を勉強中です。 PIC16f628Aを使ってパソコンとのシリアル通信をしようと思っています。 しかし、PICから"Hit some key for test"という文字列をおくったところ、 文字化けして"ソ3!・ソ)5"といった感じで出力されてしまいました。 文字化けが起きる原因としては何が考えられるのでしょうか? なお、パソコン側の端末にはTera Termを使用しています。 どなたかご教授お願いします。 以下にソースコードを示します。 #include <pic.h> __CONFIG(MCLRDIS & PWRTEN & BORDIS & UNPROTECT & WDTDIS & LVPDIS & HS); __IDLOC(628A); unsigned char getchr(void) { while(RCIF == 0); return (RCREG); } void putchr(unsigned char c) { while(TXIF == 0); TXREG = c; } void puts(const unsigned char *s) { while(*s) putchr(*s++); } void main(void) { PORTB = 0; TRISB = 0b00000010; SPBRG = 129; TXSTA = 0b00100100; RCSTA = 0b10010000; puts("Hit some key for test\n"); puts("\n"); while(1) putchr(getchr()); }