pyonmae の回答履歴

全114件中81~100件表示
  • 割り込みで並列処理

    ATmega168とWinAVRで割り込みのプログラミングをしています。 #include <avr/io.h> #include <avr/interrupt.h> ISR(TIMER1_OVF_vect) { TCNT1 = 65500; PORTC ^= 0x02; } int main() { int i; DDRC = 0x07; PORTC ^= 0x01; TCCR1B = 0x00; TCNT1 = 65500; TIMSK1 = _BV(TOIE1); TCCR1B = 0x05; sei(); while (1) { PORTC ^= 0x04; for(i=0;i=500;i++){} } } 上記のプログラムを組んでみたのですが。while文に入ってfor文に少し入ってからISRの処理が始まるのですが。ISRの処理が終わってから又for文の処理に戻ろうとしません。なのでPORTC0x04の点滅が起こりません。PORTC0x04の点滅もしながらPORTC0x02の点滅もしたいのですがどうすれば良いのでしょうか?

    • RWSP
    • 回答数6
  • ROMICEパートナーET2用のHEWの設定

    HEW(統合環境)でパートナーET2でデバックできるようにコンパイル(ビルドかな?)したいのですが、わからなくて困っています。言語はCです。評価版のHEWを使っています。何処をどう設定すればいいのでしょうか?詳しい方教えてください。また、何処かにそのやり方が書いてる場所があればそこでもいいので教えてください。※仕事でET2を使うのですが詳しい人が不在で困ってます。

  • プログラム上からUSBやLANから任意の高周波パルスを出力する方法を探しています。

    USBやLANポートを制御して、発信器のように使用できますか? プログラムから任意の周波数のパルスを出力したいです。 PCから制御できるファンクションジェネレータを使用すると大掛かりになってしまうので、代替方法を探しています。 可能ならばWindowsXPでC++等で実現する方法を教えて下さるとありがたいです。 振幅は問わず、~10MHzのパルス出力が可能な方法はないでしょうか。

  • パソコンのリカバリーについて

    買ってから4年ほど経つ「DELL Dimention9100」を使用しております。 OSはXPのhomeです。パソコンの立ちあがりやHPの閲覧がイライラするほど遅くなってきたので、そろそろリカバリーを考えています。いらないアプリケーションやスタートアップなども削ったのですが、なかなか買ったばかりの頃のようにはいきません。そこで、まずはバックアップ(メールのデータやお気に入りデータなど)は市販のソフト(ノートンゴースト)を使ったほうが無難でしょうか?次にリカバリーですが、これは付属していたリカバリーソフトで行えばいいのでしょうか?手順としては、データのバックアップ⇒リカバリー⇒OS・ドライバ・ソフトのインストールで問題ないでしょうか?出来れば詳しい手順を教えていただけるとありがたいです。よろしくお願い致します。

  • 指数関数?duty制御

    カテゴリー違いかもしれませんが、とりあえずこちらでご相談させていただきます。 picマイコンを使って、自動的に電球の明るさをフェードイン、 フェードアウトさせる照明を制作したいと考えています。 私はマイコンのプログラム部分だけの担当です。 電圧と、光の強さの関係がイコールでないため、 添付したような、グラフの関係になるのかと思うのですが これを数式で表すと、どのような式になるのかがわかりません。 (フェードイン、フェードアウトまでの時間をmsecとしています) ledの制御などでも、指数関数を用いたフェードインの仕方は よくやられているようなのですが。。 数学がほとんどわからず、またC言語、picに対しても 初心者です。 よろしければ、ご教授いただけると幸いです。

    • kassel
    • 回答数4
  • 組み込みCプログラムで実数型

    8~16bit、32bitのマイコンでCの組み込みプログラムを仕事で作りはじめました。 その中で、floatやdoubleといった実数型は使わないようにと教わりました。コードサイズが大きくなること、処理時間が大きくなることが理由だと考えていますが、定量的に考察したことがありません。 そこで、コンパイラのhelpを検索してみたところANSI-Cで決められているほど広くないにしても使えることが書いてありました。しかしながら、先輩たちはその使用をかたくなに拒みます。しかし、理由も先ほどのような感じです。 もし仮に、コードサイズや処理時間に問題ないとしても実数型を使わない理由を教えていただけませんでしょうか?

  • GB と Gbの違いの意味

    宜しくお願い致します。 現在、IC等の商品を勉強しております。 そこで、32Gb(4GB)と言うか書き方のICの容量を示しているのですが、ICは、Gbで表示せよとなっています。 この場合、割る3でバイト数が出てくると言っているのですが、割る8の数字が【】の中に入っているんです、、、 これはどういうことなのでしょうか? bitの計算とごちゃ混ぜになっているだけなのでしょうか? 宜しくお願い致します。

  • マイコン(AVR)で、ある式を記述すると hex データが跳ね上がってしまう

    サインカーブを算出するために以下の質問をし、計算式を回答していただきました http://okwave.jp/qa4751105.html ですが、別の問題にあたってしまいました 上記回答の計算式をプログラムに書き込むと、コンパイル後の容量が跳ね上がってしまいます 同様の計算式で、x y に直接数字を指定すると容量が跳ね上がることはなさそうです ですが、変数を指定できなければ意味がありません なぜこのようなことが起こるのでしょうか? また、解決方法はありますか? #define F_CPU 800000UL #include <avr/io.h> #define sbi(BYTE,BIT) BYTE|=_BV(BIT) #define cbi(BYTE,BIT) BYTE&=~_BV(BIT) #include <math.h> const int sin_max1 = 127, sin_max2 = 255; int main(void) { DDRA = 0b111; DDRB = 0b11111111; DDRD = 0b1111100; PORTA = 0; PORTB = 0; cbi(PORTD, PD2); cbi(PORTD, PD3); cbi(PORTD, PD4); cbi(PORTD, PD5); cbi(PORTD, PD6); int i = 0; while (1) { sin_get(sin_max1, i); i++; if (i > sin_max1) i = 0; } } void sin_get(const int x, const int y) { int z; z = 127.5 * sin(2 * M_PI * y / x) + 127.5; // y x を直接数字に置き換えると容量は跳ね上がらない PORTB = z; }

  • BIOS初期化について

    BIOS初期化の必要性について質問させて頂きます。 各色々な情報が錯綜する中正しい知識を今一理解出来ていません ※NOTE.DISKTOP問わず※各パ-ツ類交換.HDD.メモリ-.グラフイックカ-ド等々の 交換時の場合などは※BIOSの初期化は必ず必要なのでしょうか? 原因不明の不調な時※リカバリ-時には一応BIOS初期化を行ってはいます。 ※BIOS初期化の必要性について色々なご意見聞かせてください 現在3機NOTE.DISKTOP共.vista.sp1を使用しています。

    • ido-66
    • 回答数4
  • C言語でのFFTについて

    http://tsuyu.cocolog-nifty.com/blog/2007/03/publi.html に掲載されているVBAのFFTプログラムをC言語に書き換えて 実行しているのですがうまくいきません。 どこが、間違っているか教えてください。 ======以下FFTのサブルーチンソースコード===== void FFT(float Xr[], float Xi[]) { i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0; n=DN; m = log10(n)/log10(2); Table(c,s); l=n,h=1; for(g=1;g<=m;g++){ l/=2,k=0; for(q=1;q<=h;q++){ p=0; for(i=k;i<=l+k-1;i++){ j=i+l; a=Xr[i]-Xr[j], b=Xi[i]-Xi[j]; Xr[i] = Xr[i] + Xr[j], Xi[i] = Xi[i] + Xi[j]; if(p==0){ Xr[j]=a,Xi[j]=b; }else{ Xr[j] = a * c[p] + b * s[p], Xi[j] = b * c[p] - a * s[p]; } p+=h; } k+=l+l; } h+=h; } j=n/2; for(i=1;i<=n-1;i++){ k=n; if(j<i){ //ビットリバース swap(&Xr[i],&Xr[j]); swap(&Xi[i],&Xi[j]); } k=k/2; while(j>=k){ j=j-k; k /=2; } j = j + k; } }

  • C言語でのFFTについて

    http://tsuyu.cocolog-nifty.com/blog/2007/03/publi.html に掲載されているVBAのFFTプログラムをC言語に書き換えて 実行しているのですがうまくいきません。 どこが、間違っているか教えてください。 ======以下FFTのサブルーチンソースコード===== void FFT(float Xr[], float Xi[]) { i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0; n=DN; m = log10(n)/log10(2); Table(c,s); l=n,h=1; for(g=1;g<=m;g++){ l/=2,k=0; for(q=1;q<=h;q++){ p=0; for(i=k;i<=l+k-1;i++){ j=i+l; a=Xr[i]-Xr[j], b=Xi[i]-Xi[j]; Xr[i] = Xr[i] + Xr[j], Xi[i] = Xi[i] + Xi[j]; if(p==0){ Xr[j]=a,Xi[j]=b; }else{ Xr[j] = a * c[p] + b * s[p], Xi[j] = b * c[p] - a * s[p]; } p+=h; } k+=l+l; } h+=h; } j=n/2; for(i=1;i<=n-1;i++){ k=n; if(j<i){ //ビットリバース swap(&Xr[i],&Xr[j]); swap(&Xi[i],&Xi[j]); } k=k/2; while(j>=k){ j=j-k; k /=2; } j = j + k; } }

  • 組込み系のプログラム

    今仕事で組込み系の開発をしているのですが スレッド使い過ぎな設計なので不安です。 組込み系のプログラムって一般的にどのような感じでしょうか?

    • noname#115727
    • 回答数4
  • H8/2052Fインプットキャプチャ機能実装について

    現在、上記のマイコンを使い0.5ms程度のパルス波の入力と波長判断を行いたいと考えています。 そこで、インプットキャプチャ機能を使用したいと考えているのですが、うまくいきません。 外部入力を得て割り込み関数を呼び出すことすらできない段階です。 何かアドバイスをいただけないでしょうか? よろしくお願いいたします。 タイマ関数初期化の手順としては、 1.TCRレジスタの設定(TIU0.TCR.BYTE = 0x03;//φ/8分周) 2.TIORレジスタの設定(TIU0.TIOR.BYTE = 0xDC;//GRB立下り、GRA立ち上がり) 3.TIERレジスタの設定(TIU0.TIER.BYTE = 0xFB;//IMFB、IMFA割り込み許可 ) 4.TNCT、GRA、GRBレジスタの初期化 5.タイマスタート となっております。よろしくお願いいたします。

  • AD変換

    H8/3664でのAD変換についての質問なのですが、このマイコンだと通常8つあるAD変換をスキャンモードで1度で4つまでしか処理できないのですが グループ0のAN0とグループ1のAN4が同一レジスタで結果が格納されていると思われますが この二つを1度に処理したいのですが、どのようなプログラムにすればいいのですか? AD変換あたりのプログラムを抜粋したので、後半のAD.ADDRB をAN4のAD.ADDRAに変えた場合のプログラムを教えて下さい char aflag=0; //割り込みフラグ void main(void) { char carray0[20],carray1[20],carray2[20]; long ad_data_0,ad_data_1,arrey0,arrey1,ad0,ad1,t,G_data,A_data,hensa_now,hensa_mae,A_out_put; int i; timervset(); timeraset(); IO.PDR5.BYTE = 0xff; // ポート7の出力設定をあらかじめ1に設定 IO.PCR7 = 0x00; // ポート7を全て入力ポートに設定(タクトSW1,SW2,SW3) IO.PCR5 = 0xff; // ポート5を全て出力ポートに設定 IO.PCR1 = 0xa0; // ポート1のP15,P17を出力ポートに Init_rs(); //通信の初期化 AD.ADDRA=0; AD.ADDRB=0; AD.ADDRC=0; AD.ADDRD=0; //AD変換設定 //A/Dコンバータ設定 AD.ADCSR.BYTE = 0x33; // (0011 0011)*/ // スキャンモード,高速変換(70ステート),入力端子:AN0~AN3 set_imask_ccr(0); //割り込み可 while(1) { if(aflag==1){ aflag=0; ad_data_0=AD.ADDRA >> 6; // 「>>」:シフト演算子(ビットを右に6ずらす) ad0=ad_data_0*5000/1024; LToStr(G_data,carray0);//グローブ角度表示 rs_puts("ch.0="); rs_puts(carray0); rs_crlf(); wait(1); G_data=(ad0-2333)*(-0.0426);//グローブ角度 ad_data_1=AD.ADDRB >> 6; // 「>>」:シフト演算子(ビットを右に6ずらす) ad1=ad_data_1*5000/1024; LToStr(A_data,carray1);//アーム角度表示 rs_puts("ch.1="); rs_puts(carray1); rs_crlf(); wait(1);

  • SP2以降対応のマザーボード

    この度、OS無しのパソコンを買いました。 (現在、パソコン自体は注文中で手元にはありません) このパソコンに使われているマザーボードですが、 仕様を見ると、対象OS WindowsXP SP2以降となっております。(詳細はhttp://www.links.co.jp/items/gigabyte-intel/gag31mes2l.html ) 現在、SP1の製品版を所有しており、このパソコンにもこれを使おうと思っていたのですが、 対象がSP2以降となるとSP1はインストールすらできないのでしょうか? それとも、インストール後、SP2以降にバージョンアップすれば問題ないのでしょうか?

    • noname#104172
    • 回答数2
  • 実際、プログラマって職業はどうなんですか?

    現在、プログラマを目指して就職活動中です。 ネットでよくプログラマは3K(きつい、給料が安い、帰れない)だと聞きますが、実際どうなのでしょうか? さすがに入社した会社にもよるとは思いますが・・・ 私のプログラマのイメージとしては、仕事がきつくても一度安定した技術力を身につけてしまえば、今後の不況などでも食いっぱぐれることなく、格差社会にも飲まれることなく会社が潰れても転職も他の職業と比べると需要が多く、安定した収入を得られる職種だと思っています。 給料が安いと言っても、手取りが少ないわけではなく、ただ残業が多くて割に合わないってことですよね? 仕事がきついといっても、プログラマの大半が体を壊したり精神的にまいったりして辞めていくとか、そこまで過酷ではないですよね? 納期前は徹夜とか当たり前でも、それが365日ほぼ立て続けにあったりとかしないですよね? ネットでプログラマのことを調べていたら、やたらとマイナスイメージの方向ばかりふくらんでいって、正直かなり不安です。 プログラマはきついといっても、どの職業だって仕事がきついのは同じでしょうし・・・ ホントに、プログラマだけが他の職業と比べて極端に過酷な環境に置かれることが多いんでしょうか・・・? 実際にプログラマの職業をやっていた方や現役プログラマの方、知り合いにプログラマが居る方など、ご意見をくださいませ。 プログラムの仕事は多いに興味がありますが、現在、本当にこの職業を一生の職業と定めて動いて良いのか迷っています。 返信よろしくお願いいたします。

    • killey
    • 回答数6
  • AD変換

    H8/3664でのAD変換についての質問なのですが、このマイコンだと通常8つあるAD変換をスキャンモードで1度で4つまでしか処理できないのですが グループ0のAN0とグループ1のAN4が同一レジスタで結果が格納されていると思われますが この二つを1度に処理したいのですが、どのようなプログラムにすればいいのですか? AD変換あたりのプログラムを抜粋したので、後半のAD.ADDRB をAN4のAD.ADDRAに変えた場合のプログラムを教えて下さい char aflag=0; //割り込みフラグ void main(void) { char carray0[20],carray1[20],carray2[20]; long ad_data_0,ad_data_1,arrey0,arrey1,ad0,ad1,t,G_data,A_data,hensa_now,hensa_mae,A_out_put; int i; timervset(); timeraset(); IO.PDR5.BYTE = 0xff; // ポート7の出力設定をあらかじめ1に設定 IO.PCR7 = 0x00; // ポート7を全て入力ポートに設定(タクトSW1,SW2,SW3) IO.PCR5 = 0xff; // ポート5を全て出力ポートに設定 IO.PCR1 = 0xa0; // ポート1のP15,P17を出力ポートに Init_rs(); //通信の初期化 AD.ADDRA=0; AD.ADDRB=0; AD.ADDRC=0; AD.ADDRD=0; //AD変換設定 //A/Dコンバータ設定 AD.ADCSR.BYTE = 0x33; // (0011 0011)*/ // スキャンモード,高速変換(70ステート),入力端子:AN0~AN3 set_imask_ccr(0); //割り込み可 while(1) { if(aflag==1){ aflag=0; ad_data_0=AD.ADDRA >> 6; // 「>>」:シフト演算子(ビットを右に6ずらす) ad0=ad_data_0*5000/1024; LToStr(G_data,carray0);//グローブ角度表示 rs_puts("ch.0="); rs_puts(carray0); rs_crlf(); wait(1); G_data=(ad0-2333)*(-0.0426);//グローブ角度 ad_data_1=AD.ADDRB >> 6; // 「>>」:シフト演算子(ビットを右に6ずらす) ad1=ad_data_1*5000/1024; LToStr(A_data,carray1);//アーム角度表示 rs_puts("ch.1="); rs_puts(carray1); rs_crlf(); wait(1);

  • HEWでのプログラミングについて

    秋月のH8-3052(USB開発キット)を使っています。 開発環境はルネサスのHEWです。 USB通信を行うプログラミングを作りたいと考え、参考書やサンプルプログラムのコード、電子工作室(PICFUN)のサイトなどを見て学んでいます。 だいたいの手順は理解できたのですが、そのプログラムを自分で書くとなると???となってしまい困っています。 電子工作室では『基本デバイスプログラム』というプログラムが公開されていますが、HEWでそれと同じことをするにはやはり基本デバイスプログラムの流用では駄目なのでしょうか?

    • htk433
    • 回答数1
  • PIC 16F54 でTMR0割り込みを使いたい。

    最近PICによる電子工作を学び始めた初心者です。 値段が安いことにひかれて 16F54 を使っていろいろ学んでいこうと思ったのですが、TMR0割り込みを使ったプログラムを組もうとしたところ、行き詰まってしまいました。 他の 16F84A やその他のネットで紹介されている PIC の場合、INTCONレジスタのT0IEをセットしたり、T0IFをクリアにしたり、RETFIEで元の位置に戻ったりすると思うのですが、16F54にはINTCONレジスタも RETFIE命令もありません。 試しに、MPLABでINTCONレジスタの設定は無しにして、RETFIE命令は書き込んでアッセンブルしてみたらRETFIE命令に警告が出たものの、どうにか成功しました。 そこで試しにデバックしてみると、T0IEをセットしていないので当然なのですが、TMR0はカウントされるものの、割り込みは発生しませんでした。16F84Aや16F88等のPICも数百円で買えるので素直にこれらをチョイスすれば良いのでしょうが、百円を切る低コストの16F54に魅力を感じるし、何より疑問を解決しないまま、財力に任せて解決とすることに抵抗があります。 どなたかこんな私を助けてください。

  • 何度も書き直してしまう

    コーディングを何度も書き直してしまい完成することがありません。 仕事でも同じで納期に大幅に遅れて困っています。 コーディングにとどまらず文章を書くときも同じで何度も書き直してしまいます。 どうしたらいいでしょうか 教えてください。