テクノロード掲示板
ようこそ! ゲスト   [登録]  [ログイン]
返答
 件名:Re:EX08_LOG_TXTデータ飛び.. 2010-05-18 14:43:14 
macjunkie
参加日時: 2010-05-11 22:03:40
投稿: 3
場所

ありがとうございました。

理想とするかたちになりそうです。

またよろしくお願いします。

 

IP Logged
引用
 件名:Re:EX08_LOG_TXTデータ飛び.. 2010-05-17 19:09:13 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 75
場所

>サンプルのLog_Dataファイルをそのまま使用させて

>いただいていますが、センサーを取り付けていないIOA1

>及びIOA2へもデータが書き込まれています。

>これは何が原因でしょうか。

 

Ex08のサンプルをそのままであればcoron_conf.hの中で

//全IOAポートADポートとして設定
#define IOA_AD_SET_PORT  IOA_pin_0|IOA_pin_1|IOA_pin_2|IOA_pin_3|IOA_pin_4|IOA_pin_5

としている為、IOA0~IOA2へのセンサー接続の有無にかかわらず、IOA全てのポートをA/D変換してIOA0~IOA2のログをとり続ける仕様になっています。

 

 

>この回数を変更することで書き込み回数も変更できると

>思いますが、上限はMicroSDカードの容量によって決まる

>ものでしょうか。

 

はい、ご指摘の通りその回数を変更することでログ計測回数が変わります。

上限は十分なサイズのTXTファイルがあればmicroSDの容量次第で最大2GByteほどまで記録できます。

 

 

>この書き込み回数を制限せず電源のONで書き込み開始・

>OFFで終了などとすることは可能でしょうか。

 

書き込み回数は用意されたTXTファイルのサイズ(最大約2GByte)で決まりますが、

ログの書き込みは随時行っているので、電源ON時に記録を開始して電源が入っている間中ログをとり続けることは可能です(途中で電源をOFFにしてもログは残ります)。

ただし、microSDカードに保存されているTXTファイルのサイズ以上のログ書き込みを続けると、意図しないカードの領域までデータを書き込んでしまう為、ファイルサイズに応じてログをストップするか、ログを始めから上書きループさせるような工夫が必要だと思います。

IP Logged
引用
 件名:Re:EX08_LOG_TXTデータ飛び.. 2010-05-17 17:10:43 
macjunkie
参加日時: 2010-05-11 22:03:40
投稿: 3
場所

早速ご回答頂き、ありがとうございます。

ご指摘の方法により、データ飛びは解消されました。

設定した割り込み周期でLD1も点滅しており、

問題なく動作しています。

ありがとうございました。

 

また、申し訳ありませんが重ねて質問させて頂きます。

サンプルのLog_Dataファイルをそのまま使用させて

いただいていますが、センサーを取り付けていないIOA1

及びIOA2へもデータが書き込まれています。

これは何が原因でしょうか。

 

また、サンプルプログラムでは書き込み回数が300回と

なっています。

この回数を変更することで書き込み回数も変更できると

思いますが、上限はMicroSDカードの容量によって決まる

ものでしょうか。

この書き込み回数を制限せず電源のONで書き込み開始・

OFFで終了などとすることは可能でしょうか。

初歩的な質問ばかりで申し訳ありませんが、

よろしくお願いします。

IP Logged
引用
 件名:Re:EX08_LOG_TXTデータ飛び.. 2010-05-17 13:15:39 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 75
場所

Coronご愛用ありがとうございます。

 

TIM_TimeBaseStructure.TIM_Periodは上限値が0xFFFF(65535)なので、

それ以上ログ周期を遅くするには同じ初期設定関数内の

/* Immediate load of TIM7 Precaler value */
 TIM_PrescalerConfig(TIM7,72-1, TIM_PSCReloadMode_Immediate);

TIM_PrescalerConfig(TIM7,720-1, TIM_PSCReloadMode_Immediate);

のように設定してください(これで10倍遅くなります)。

※TIM_TimeBaseStructure.TIM_Prescaler = (72-1); となっているところも特に意味は無いのですが

紛らわしいので上記と合わせて= (720-1);と変更してください。

 

設定値の計算方法としては、

割り込み周期[Hz] = 72000000[Hz] / ((Prescaler値+1) x Period値)

となります。

※Prescaler値,Period値共に0x0000~0xFFFF

 

サンプル初期値では,Prescaler値=(72-1),Period値=10000なので、

割り込み周期[Hz] = 72000000 / (72 x 10000) = 100[Hz](=10[ms])

になります。

 

これで周期を調整するとデータ飛びが恐らく改善すると思われますが、それでも改善されない場合はお手数おかけして申し訳ないのですがもう一度ご連絡ください。

 

宜しくお願い致します。

IP Logged
引用
 件名:Re:EX08_LOG_TXTデータ飛び.. 2010-05-16 22:11:09 
macjunkie
参加日時: 2010-05-11 22:03:40
投稿: 3
場所

はじめまして。 私もデータ飛びの現象が出ているのでこの掲示板を参考に TIM_TimeBaseStructure.TIM_Periodの値を2000000(2sec) に変更しましたが、依然としてデータ飛びの現象が出る事があります。 必ずではないのですが、データが飛ぶことが多い状態です。 測定開始当初の3行から4行付近のデータだけが飛びます。 他の箇所ではデータ飛びは見られません。 microSDカードはPanasonicの2GB CLASS4  10MB/S を使用しています。 何か解決策がありましたらよろしくお願いします。

IP Logged
引用
 件名:Re:EX08_LOG_TXTデータ飛び.. 2010-03-03 22:19:01 
akirafunatsu
参加日時: 2010-02-20 19:50:42
投稿: 3
場所

新規に購入したSDカードで試してみました。

TIM_TimeBaseStructure.TIM_Period = 10000;

で問題無く記録する事が出来ました。

値段もそれほど違わないのに結構書込み速度に違いがあるものなのですね。

ちなみにうまく書けたSDカードはサンディスクの2GBのものです。

ご親切に対応いただき感謝しております。

今後共よろしくお願いします。

IP Logged
引用
 件名:Re:EX08_LOG_TXTデータ飛び.. 2010-03-02 20:10:53 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 75
場所

割り込み速度変更のご確認有難うございました。

 

割り込み間隔を空けるとよくなったということは、やはり処理時間の問題のようなので

書き込み速度の速いmicroSDを使うか、同じmicroSDカードで速い周波数でセンサー値を保存するには処理そのものを速くするなどで対処する必要があります。

 

サンプルプログラムでは、処理速度の効率よりも使いやすさの方を重視している為にデータ取得毎データにmicroSDカードのテキストデータを上書きしているので、

一度データをRAMに保存しといて、ある程度まとめてSDカードに保存するなどの工夫をすれば大分速い周期でログがとれるようになると思います。

  

IP Logged
引用
 件名:Re:EX08_LOG_TXTデータ飛び.. 2010-03-01 22:52:01 
akirafunatsu
参加日時: 2010-02-20 19:50:42
投稿: 3
場所

早急に回答いただきありがとうございました。

早速試したところ 

TIM_TimeBaseStructure.TIM_Period = 50000;

ではかなり改善されましたが、まだデータ飛びの箇所があり

 TIM_TimeBaseStructure.TIM_Period = 60000;

では1行のみデータ飛びがありました。

他のSDカードは持っていないので、また購入したら試してみたいと思います。

IP Logged
引用
 件名:Re:EX08_LOG_TXTデータ飛び.. 2010-03-01 10:31:51 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 75
場所

Coronのご愛用ありがとうございます。

 

センサ値の書き込みが飛んでしまう直接の原因としては、

SDカードにデータを書き込むログ割込周期(サンプルだと10msec)に対して

割り込み処理の時間(=SDカード一回の書き込み時間+α)の方が時間がかかってしまった場合に、

その時の書き込みが終わらずデータが飛んでしまうようです。

 

ログ割り込み処理(書き込み時間)に時間がかかってしまう主な原因としては

①USB通信などの他の割り込みが立て込んでログ割り込みと重なってしまった

②microSDカード本体の書き込みスピードの性能差(メーカー・型番によって個体差が大きくあります)

が考えられます。

 

 

なので、もし上記のような原因であれば、とりあえず対処として

A.割り込み周期を遅くする

B.書き込み速度の速いmicroSDカードを使う

で対応できると思います。

(特にAはパラメータを1か所変更するだけなので原因の絞り込みの為にも一度やって頂けると幸いです)

 

割り込み速度を変更するには、

"src"フォルダ内の"coron_tim7int.c"ファイル45行目を

 

<変更前>(10msec)

 TIM_TimeBaseStructure.TIM_Period = 10000;

  ↓

 

<変更後>(50msec)

 TIM_TimeBaseStructure.TIM_Period = 50000;

 

と、してみてください。

(※TIM_Periodは割り込みカウンタの上限値(0~0xFFFF)を決めるパラメータです)

 

 

お手数おかけして申し訳ありませんが、宜しくお願いします。

IP Logged
引用
 件名:EX08_LOG_TXTデータ飛び.. 2010-02-27 21:32:40 
akirafunatsu
参加日時: 2010-02-20 19:50:42
投稿: 3
場所

EX08_LOG_TXTをコンパイルして実行してみたいのですが SDカードのデータを見ますと、一見ちゃんと取れているのですが 5行目から21行目、268行目から283行目のデータが全て0になっています。(時間もこの間は0になっている) 対処方法等ありましたら教えてください。よろしくお願いします。

IP Logged
引用
返答
ページ # 


Powered by ccBoard