2009-07-20 7 views
1

私はEFSLを使用してATmega128にSDカードを接続しています。 カードが初期化されましたが、シリアルポート出力で「Unknown error 0xff(sandisk docs p5-13参照)」というエラーが発生しました。シリアル出力で文字を書式設定する!

これはすべてではありませんが、私はシリアルポートに表示する文字列を形成するために 'sprintf'を使用しました。困惑していることは、出力上に「%02d」のような実際の書式設定文字も表示されていることです。私は自分のアプリケーション自体がクラッシュしていると思います。私はソースコードを与えることができますが、大きすぎます。誰かがそれを見たいと思えば、ここにそれを貼り付けてコピーします。

私もp5-13サンディスクのドキュメントをチェックしましたが、私はそれを把握することはできません...

私は誰場合は私に知らせてください、この1男... のつもりニーズのヘルプですこれについて何かを知っている Thanxs ...

+0

私はあなたを2つの質問に分割する必要があると思います。 1つはsprintf用、もう1つはSDカード用です。両方とも、適切なコードスニペットと関連ドキュメント(ボード回路図、 "sandisk docs"など)へのリンクを投稿してください。 – Gabe

+0

私はここにコードを入れようとしていましたが、大きすぎます。生成される.hexファイルは28kBをわずかに上回ります。 しかし、あなたは 'sprintf'について正しいですが、私は真剣にこれが 'sprintf'の問題だと思っています... sprintfがそうする理由は何ですか?誰にもこの問題がありましたか? –

答えて

1

私はATmega8用のコードを書いたことがあり、シリアルポートhereに出力する自分のprintf関数を書いています。

SerWrite関数は、0で終了するunsigned char配列をシリアルポートに転送する関数です。

#define SIZE_STATUS 80 

void ser_printf(const char *fmt, ...) { 
    va_list args; 
    uchar STATUS[SIZE_STATUS]; 
    va_start(args, fmt); 
    uchar s = (uchar) vsnprintf(STATUS, SIZE_STATUS, fmt, args); 
    va_end(args); 
    SerWrite(STATUS, s); 
} 
1

私は方法はわかりませんが、別のカードを使用したときに問題は解決しました。私はFAT32フォーマットの2つの1/2GBカードを試しました。どちらもうまくいきませんでしたが、動作したカードはFAT12フォーマットの16 MBキャノンカードでした。これを理解しようとしています。もし私がそれを見つけると、私は答えを投稿します とにかくみんなありがとう...