バナー
 テクノロード掲示板
ようこそ! ゲスト   [登録]  [ログイン]
«最初12345最後»
 件名:Re:質問などこちらに.. 2011-02-02 15:12:16 
admin
参加日時: 2009-05-17 02:37:11
投稿: 34
場所

似たような質問をさがしやすくするように、御質問の際は、

新規にトピックを追加して投稿してもらえますでしょうか。

 

トピックの新規追加はここの左上のボタンから可能です。

お手数ですがよろしくお願い致します。

IP Logged
 件名:エラ-内容.. 2010-07-04 11:49:00 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所

解決しましたので削除しました

IP Logged
 件名:Re:質問などこちらに.. 2010-07-05 16:48:28 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

いつもご愛用有難うございます。

 

プログラムをざっと見て気になりますのが、RCサーボの出力をしているところで

rc_mot_ipos[RC1][2]=2000;

としていますが、rc_mot_ipos[ ][ ]は時間制御をした場合の目標値なので、

(時間制御無しの場合はrc_mot_pos[ ][ ])

動作開始関数RC_move(time)を実行しないと動作が始らないのですが、

どこか別のところ実行していますでしょうか?

  

 ex:

//指定時間で動かす時

rc_mot_ipos[RC1][2]=2000;  //目標値2000をセット

RC_move(50);                        // 目標値まで指定時間をかけてゆっくり動かす(20msec x (50) = 1sec)

 

//いきなり目標値を変える

rc_mot_pos[RC1][2]=2000;  //現在の出力が2000になる

 

 

IP Logged
 件名:割込み処理内の RCの動作.. 2010-07-02 07:03:04 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所

日頃 適切な アドバイス ありがとうございます。割込み処理内でRCを動作するプログラムを作ったのですがうまく動きません。DCモ-タは 同様な考えでうまく動いたのですが下記に プログラムの度の辺が間違っているかアドバイス願います  void TIM7_Intterupt(void)
{
 TIM_ClearFlag(TIM7, TIM_FLAG_Update);//TIM7割り込みフラグクリア
 
 LED_R_OFF;
 LED_G_OFF;
 LED_B_OFF;
 ActionFlag++;
 
 if( ActionFlag<10)
    {
      LED_R_ON;
      rc_mot_ipos[RC1][2]=2000;;
    }
 
 if((10<=ActionFlag)&&(ActionFlag)<20)
  {
      LED_G_ON;
      LED_R_OFF;
      rc_mot_ipos[RC1][2]=1500;
    
  }
 
 if((20<=ActionFlag)&&(ActionFlag)<30)
  {
       LED_G_OFF;
    LED_B_ON;
    rc_mot_ipos[RC1][2]=1000;
     
  }
 

IP Logged
 件名:再度確認結果.. 2010-07-05 16:39:31 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所

御回答ありがとう ございます。

一度 SOUNDホルダ-を消し 新たにまたホルダ-をつくり試したら45個は OKになりました。多分 SOUND 内の状態が少しおかくしなった ?のかも知れませんが 原因は不明です。

とりあえずは OKなのでまたデ-タを増やして確認してみます。    

 

============================[admin2 2010-06-28 10:59:45]:

>音声合成で wavファイルを作りサンプルプログラムで再生していますが38個までは 再生できるのですがそれ以上の再生は出来ません。

>実際は メモリも余裕があり、登録しているwav  ファイルは 50個以上です。  

Coronライブラリでは音声再生に必要なバッファを50個分にしてあるので、純粋にライブラリで再生できるのは50個までで制限されてしまっています。

しかし、バッファ数を増やせば増やした分だけ再生できるはずなので当方でいくつか試験をしてみましたところ、  

①ライブラリ(v2.1.0)をそのままで、SoundDataフォルダに45個WAVファイルを入れて再生 →45個全て再生OK  

②ライブラリ(v2.1.0)をそのままで、SoundDataフォルダに58個WAVファイルを入れて再生 →1個目から再生不可  

③coron_sdwav.cとcoron_sdwav.hのバッファを u32 wav_sector_num[100];  //各WAVファイルのセクタ番号u32 wav_size[100];   //WAVファイルのサイズchar wav_name[100][8];  //WAVファイルの名前と100個に変更して、②と同じSDカードを再生 →58個全て再生OK   となりました。ちなみにバッファ数を100個に変更した際に、

>extern u32 wav_sector_num[100];

>extern u32 wav_size[100];

>extern char wav_name[100][16];

とした以外に、coron_sdwav.cの方も上記のように変更されましたでしょうか?

(38個以上という数がかなり中途半端な為、的外れな原因かもしれないのですが・・・)  

もし、同様に変更していた場合、もう少し原因を絞り込みたいので、お手数をおかけして大変申し訳ないのですが、上記①~③と同じように試験して、どのようになるかご報告頂けますでしょうか。  

以上、宜しくお願い致します。  

IP Logged
 件名:Re:質問などこちらに.. 2010-06-28 10:59:45 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

>音声合成で wavファイルを作りサンプルプログラムで再生していますが38個までは 再生できるのですがそれ以上の再生は出来ません。

>実際は メモリも余裕があり、登録しているwav  ファイルは 50個以上です。

 

Coronライブラリでは音声再生に必要なバッファを50個分にしてあるので、純粋にライブラリで再生できるのは50個までで制限されてしまっています。

しかし、バッファ数を増やせば増やした分だけ再生できるはずなので当方でいくつか試験をしてみましたところ、

 

①ライブラリ(v2.1.0)をそのままで、SoundDataフォルダに45個WAVファイルを入れて再生

→45個全て再生OK

 

②ライブラリ(v2.1.0)をそのままで、SoundDataフォルダに58個WAVファイルを入れて再生

→1個目から再生不可

 

③coron_sdwav.cとcoron_sdwav.hのバッファを

u32 wav_sector_num[100];  //各WAVファイルのセクタ番号
u32 wav_size[100];   //WAVファイルのサイズ
char wav_name[100][8];  //WAVファイルの名前

と100個に変更して、②と同じSDカードを再生

→58個全て再生OK

 

となりました。

ちなみにバッファ数を100個に変更した際に、

>extern u32 wav_sector_num[100];

>extern u32 wav_size[100];

>extern char wav_name[100][16];

とした以外に、coron_sdwav.cの方も上記のように変更されましたでしょうか?

(38個以上という数がかなり中途半端な為、的外れな原因かもしれないのですが・・・)

 

もし、同様に変更していた場合、もう少し原因を絞り込みたいので、

お手数をおかけして大変申し訳ないのですが、

上記①~③と同じように試験して、どのようになるかご報告頂けますでしょうか。

 

以上、宜しくお願い致します。

 

IP Logged
 件名:Re:質問などこちらに.. 2010-06-28 10:27:29 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

>ロボットを動かしながら同時にSD_play_wavをしたいのですが通常ル-プでロボットを動作させ動作の状態を表すフラグを作りそのフラグにより

>TIMER7の割込み処理の中でSD_play_wavをしようとしたらTIMER7が止りました

>割込みを使用せずにSD_play_wav が終了しないうちに並列に動作させる方法はありますか

 

SDカードのWAV再生をタイマ割り込みなどの最中で呼ばれると、基本的にWAV再生が終わるまでは割り込み処理が終わったことにはならないので、ご指摘のように割り込み処理が一端止まってしまいます。

 

例えば、RCサーボ(DCモータ)動作+音声再生をするという場合、一番簡単なのが、

・音声再生→mainループ内(割り込み処理外)

・RCサーボ(DCモータ)動作→タイマ割り込みを使って出力するポジションを変更

という方法です。

こうすると、

①main関数内でスイッチなどのトリガにより音声再生(SD_play_wav)

②SD_play_wav再生中にタイマ割り込みが入る

③タイマ割り込み関数内でrc_mot_pos[][]を変更

④次の割り込み時間を設定

(※変数代入だけなので、処理は一瞬)

④割り込み処理が終了し、mainループに戻ってSD_play_wavの続きを再生

→①に戻る

 

といった具合で音声再生とモータ制御が同時にできます。

IP Logged
 件名:音声ファイルの登録限界について.. 2010-06-28 10:11:36 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所

日ごろ ご回答ありがとう ございます

 

音声合成で wavファイルを作りサンプルプログラムで再生していますが38個までは 再生できるのですがそれ以上の再生は出来ません。

 

実際は メモリも余裕があり、登録しているwav  ファイルは 50個以上です。

 

別のプログラムで 単独指定しても38個以上のファイルは 再生しませんちなみに 

extern u32 sound_sector;

extern u32 wav_sector_num[100];

extern u32 wav_size[100];

extern char wav_name[100][16];

と 変更しましたが ダメでした

 

何かの 制約でしょうか

Sound DATA  内の メモリは

ファイルすう  58  メモリ 17MB で 2GB に 対して余裕があると思われますが..... 

IP Logged
 件名:並列動作について.. 2010-06-28 10:10:06 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所

何時も回答ありがとうございます。

 

ロボットを動かしながら同時にSD_play_wavをしたいのですが通常ル-プでロボットを動作させ動作の状態を表すフラグを作りそのフラグにより

TIMER7の割込み処理の中でSD_play_wavをしようとしたらTIMER7が止りました

 

割込みを使用せずにSD_play_wav が終了しないうちに並列に動作させる方法はありますか

 

今はあくまでも SD_play_wavの再生終了後でないと 次の動作(サ-ボや DCモ-タ) の動作が始まりません 

IP Logged
 件名:Re:質問などこちらに.. 2010-06-25 11:14:37 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

いつもご愛用有難うございます。

CoronのRCサーボ出力ポートは、マイコンポートからの出力をデコーダICによってハードウェアで分配しているので、汎用の入出力ポートとしては利用できません。

(※CPU汎用出力4本→(デコーダIC)→RCサーボ用PWM出力8本)

ですので、RC1-ch0~7とRC2-ch0~7はRCサーボ用PWM出力で固定となりますことをご了承ください。

IP Logged
 件名:RC(サーボチャンネル)の置き換え.. 2010-06-25 07:46:25 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所
いつも回答ありがとうございます。CORONでは標準として16CHのサ-ポチャンネルがありましがこのうちの9~16の 8チャンネルを4CHを DI(入力)4CHを DO(出力)として使用したいのですか゜その場合の設定を教えて頂きませんか?
IP Logged
 件名:Re:質問などこちらに.. 2010-06-21 11:34:32 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

JTAGポートはGPIOとして利用することは可能です。

(※ただし、JTAGポートをGPIOとして利用することは推奨はできません。もし万が一にUSBのブートローダーを消去してしまって、更にJTAGポートをGPIOとして利用するプログラムが書き込まれてしまっていると、プログラムを上書きすることができなくなる可能性があることをご注意ください(書き込み手段が無くなります)。また、JTAGポートは10kΩでプルアップされています。)

 

 

大体のポートは主機能がGPIOで、オルタネート機能としてUSARTやI2Cなどの機能に設定します。

(IOAやCN-IOのポートなどがそうです。GPIOとして使う時は、特にオルタネート機能を意識しなくても使えます)

 

それに対して、JTAGポートはデフォルトがJTAG機能なので、オルタネート機能としてGPIOに設定します。

(IOAポートやCN-IOのGPIO初期化とは少し異なります。)

 

この辺の設定については、ここに書くよりもCPUのソフトウェアマニュアルのP102~に詳しく載っているのでご覧になってください。

また、どのポートが何の主機能で、どんなオルタネート機能を持っているかはCPUのハードウェアマニュアルP23~に一覧が載っています。こちらも合わせてご覧になってください。

 

 

IP Logged
 件名:JTAGのポートをDI/DOとして使う.. 2010-07-05 16:41:40 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所

たびたびすみません JTAGのポートを入力や出力として使えますか?

設定してみましたが 動きませんでした。設定は   関数内では

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3|GPIO_Pin_4; 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 

GPIO_Init(GPIOB, &GPIO_InitStructure);  

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_15; 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 

GPIO_Init(GPIOA, &GPIO_InitStructure);   

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_13|GPIO_Pin_14; 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

GPIO_Init(GPIOA, &GPIO_InitStructure);

ヘッダ-の定義は

#define LED01_ON  GPIO_SetBits(GPIOB, GPIO_Pin_4)

#define LED01_OFF  GPIO_ResetBits(GPIOB, GPIO_Pin_4)

#define LED02_ON     GPIO_SetBits(GPIOB, GPIO_Pin_3)

#define LED02_OFF    GPIO_ResetBits(GPIOB, GPIO_Pin_3)

#define BUS_ON      GPIO_SetBits(GPIOA, GPIO_Pin_15)

#define BUS_OFF   GPIO_ResetBits(GPIOA, GPIO_Pin_15)

/*  DI-----------------------------------------------------------------*/

#define  DI01 !GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_13)

#define  DI02 !GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_14)

IP Logged
 件名:adconv の増設結果.. 2010-06-19 19:50:11 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所

ご回答ありがとうごさ゜います。教えていただいた設定で実際の入力状態をUSBから デ-タをモニタするプログラムで評価しましたが下記の結果となりました。 1.IOA0のチャンネルが新規増設したPA5になっている 2.IOA1のチャンネルが新規増設したPA6になっている 3.通常のチャンネルは本来IOA2から始まるようになるつまり 増設2チャンネルはIOA0 IOA1 になり通常のチャンネルはIOA2から始まりIOA7に 割り当てられていますこの動きで良いのでしょうか ??

IP Logged
 件名:Re:質問などこちらに.. 2010-06-18 18:05:16 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

Coronご愛用有難うございます。

 

SDカードの再生を途中で止めるには、何のタイミングによって止めるのかによって大きく方法が変わると思いますが、

例えば少々強引ですが、グローバル変数でsound_stop_flagというものを作って、下記のようにcoron_sdwav.c内のSD_play_wav関数でsound_stop_flagが立った時に

再生を一気に飛ばして終了するという方法があります。

 

//2つ目以降のセクタを読み込む

for(n=1;n<(sec_num);n++){
     SD_read(512*(n + sct));
     if(sound_flag==2){
         for(i=0;i<512;i++){sound_buf[0][i]=buf512[i];}

        read_flag=1;

        while(sound_flag==2){

      if(sound_stop_flag){goto JUMP;}//ココ

         }
         read_flag=0;
     }
     else if(sound_flag==1){
         for(i=0;i<512;i++){sound_buf[1][i]=buf512[i];}

        read_flag=1;

         while(sound_flag==1){

      if(sound_stop_flag){goto JUMP;}//ココ

     }
         read_flag=0;
     }
    }

//...(省略)

//再生終わり

JUMP:

sound_stop_flag=0;

 

あとは、このsound_stop_flagをタイマ割り込みや、その他の割り込み処理(外部割り込みや受信割り込みなど)を使ってフラグを立たせてあげれば、

あるタイミングで強制的に音楽再生を止めることができます。

少し無理やりな感じですが、比較的ソースの編集が少なくて出来ると思います。

 

以上、宜しくお願い致します。

IP Logged
 件名:Re:質問などこちらに.. 2010-06-18 15:56:31 
hex
参加日時: 2010-06-18 15:51:06
投稿: 1
場所

SD内のWAVファイルを再生し、途中で再生を終了させて

他の処理をして

またWAVファイルを一から再生したいのですが

方法が分からず困っています。もしよろしければご教授願えないでしょうか?

IP Logged
 件名:Re:質問などこちらに.. 2010-06-18 13:05:05 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

>coron_IOA_ADValue[8]={0,0,0,0,0,0,0,0};     //AD結果収納バッファ<---変更
//==============================================================================//
>DMA_InitStructure.DMA_BufferSize =8;        //8ポート分のバッファ<-----変更    
>ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 8<-----変更; 
>ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channels configuration */
>if(IOA_pin_0==(port&0x0001)){ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, IOA_ADC_SampleTime);}
>if(IOA_pin_1==(port&0x0002)){ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, IOA_ADC_SampleTime);}
>if(IOA_pin_2==(port&0x0004)){ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3, IOA_ADC_SampleTime);}
>if(IOA_pin_3==(port&0x0008)){ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 4, IOA_ADC_SampleTime);}
>if(IOA_pin_4==(port&0x0010)){ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 5, IOA_ADC_SampleTime);}
>if(IOA_pin_5==(port&0x0020)){ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 6, IOA_ADC_SampleTime);} 
>//AD変換するポートを追加する場合下記を上記の下に追加するだけで良いでしょうか?? 
>ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 7, IOA_ADC_SampleTime);
>ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 8, IOA_ADC_SampleTime);

 

はい、基本的な使い方としてはそれだけで大丈夫です。

あとは、coron_IOA_ADValueのサイズの変更に合わせて、coron_ad.hのextern宣言のサイズも下記のように変えておくことと、

extern vu16 coron_IOA_ADValue[8];

 

数個前の投稿に書いたように、以下のGPIOの設定も一緒にしてください。

  GPIO_InitTypeDef GPIO_InitStructure;
       
    //PA5とPA6をAINに設定する
    GPIO_StructInit(&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

IP Logged
 件名:ADCH増設について.. 2010-07-05 16:43:10 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所

ご回答ありがとう ございます教えていただいた追加を coron-ad.cに下記のように変更しましたが最後のところが

//AD変換するポートを追加する場合のあとの追加が不安です======

coron_IOA_ADValue[8]={0,0,0,0,0,0,0,0};     //AD結果収納バッファ<---変更

//==============================================================================// DMA_InitStructure.DMA_BufferSize = 8;        //8ポート分のバッファ<-----変更     ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 8<-----変更; 

ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channels configuration */  

if(IOA_pin_0==(port&0x0001)){ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, IOA_ADC_SampleTime);} 

if(IOA_pin_1==(port&0x0002)){ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, IOA_ADC_SampleTime);} 

if(IOA_pin_2==(port&0x0004)){ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3, IOA_ADC_SampleTime);} 

if(IOA_pin_3==(port&0x0008)){ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 4, IOA_ADC_SampleTime);} 

if(IOA_pin_4==(port&0x0010)){ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 5, IOA_ADC_SampleTime);} 

if(IOA_pin_5==(port&0x0020)){ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 6, IOA_ADC_SampleTime);}   //AD変換するポートを追加する場合下記を上記の下に追加するだけで良いでしょうか??  

ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 7, IOA_ADC_SampleTime);}ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 8, IOA_ADC_SampleTime);}     

IP Logged
 件名:Re:質問などこちらに.. 2010-06-16 13:28:16 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

>1.現在ADCONVは標準で6chが確保されている状態に拡張ioの2ポ-トを追加して合計8chとしたい場合に

>coron_ad.h  に更に追加する場合値を格納するバッファーも確保したいのですが回答の内容で総トータル 

>adcov  のチャンネルが 8個に増やせるという事でしょうか?

前述の方法では、IOA4とIOA5はADポートとして利用できなくなります。

あくまでもCoronライブラリを編集せずに(バッファを6ch分のまま)

IOA4とIOA5をADポートして使わない代わりに、ADC_IN5とADC_IN6のAD変換結果をcoron_IOA_ADValue[4]とcoron_IOA_ADValue[5]に格納する方法となります。

 

CoronライブラリではAD6ch入力にしか対応していないので、新規に2ch増やす場合にはユーザ側で新しくライブラリを作成する必要があります。

coron_ad.cをベースにするのであれば、バッファを6→8chにするのと、変換するポートの設定を増やさないといけないので、以下の項目の設定を変えてください。

 

//AD変換結果が格納されるバッファのサイズを変更

vu16 coron_IOA_ADValue[6]={0,0,0,0,0,0};     //AD結果収納バッファ

vu16 coron_IOA_ADValue[8]={0,0,0,0,0,0,0,0}; //AD結果収納バッファ

 

//DMAで転送するバッファサイズを変更

DMA_InitStructure.DMA_BufferSize = 6;        //6ポート分のバッファ

DMA_InitStructure.DMA_BufferSize = 8        //8ート分のバッファ

 

//AD変換するポートの数を変更

ADC_InitStructure.ADC_NbrOfChannel = 6;

ADC_InitStructure.ADC_NbrOfChannel = 8;

 

//AD変換するポートを追加

ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 7, IOA_ADC_SampleTime);}
ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 8, IOA_ADC_SampleTime);}

 

 

 

>2. DIの設定を  ポ-ト名を COMPUSDATA1~4とする場合

>#define  COMPUSDATA1 !GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12)

>#define  COMPUSDATA2 !GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13)

>#define  COMPUSDATA3 !GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14)

>#define  DI4 !GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_15)  

>このように設定した場合と 回答のような設定では何処が違うのか 良くわかりません

>上記の設定は USERSW を入力に設定する方法をまねしたものですが、その違いを教えてください

 

前述の設定関数は、PB12~PB15をデジタル入力ポートとして初期化(準備)する為のものです。

SW_USERに関してもlib/src/coron_init.c内のcoron_GPIO_Configuration(void);で設定しています。

 

上記の#defineは、(デジタル入力ポートとして初期化されたポートの)入力状態を実際に取得するための関数GPIO_ReadInputDataBit()を使う為のものです。

 

 

以上、宜しくお願い致します。

 

 

 

IP Logged
 件名:拡張IOの設定について2.. 2010-07-05 16:44:11 
花里 貞利
参加日時: 2010-05-30 10:49:38
投稿: 18
場所

ご回答 ありがとう  ございます

1.現在ADCONV は標準で 6chが確保されている状態に拡張ioの2ポ-トを追加して 合計 8chとしたい場合に coron_ad.h  に更に追加 する場合 値を格納するバッファーも 確保したいのですが回答の内容で 総トータル adcov  のチャンネルが 8個に増やせるという事でしょうか ?

2. DIの設定を  ポ-ト名を COMPUSDATA1~4とする場合

#define  COMPUSDATA1 !GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12)

#define  COMPUSDATA2 !GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13)

#define  COMPUSDATA3 !GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14)

#define  DI4 !GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_15)  

このように設定した場合と 回答のような設定では何処が違うのか 良くわかりません上記の設定は USERSW を入力に設定する方法をまねしたものですが、その違いを教えてください

IP Logged
«最初12345最後»
ページ # 


Powered by ccBoard