2

RTC を制御する AVR-atmega プロセッサを使用しています。atmega では、RTC からの時間が構造体として保存されます。

typedef struct {
uint8_t    year;
uint8_t    month;
uint8_t    hours;
uint8_t    minutes;
"and so on..."
} time_t;

atmega にグローバル変数 "time" (volatile time_t *time;) があります。

RTCで正しい時刻を設定するために、現在の時刻の配列をUSB経由でatmegaに送信するCプログラムを作成しました。

atmegaのUSB機能では、コードは次のとおりです。

time = (void *) data;

data は、C プログラムから現在の時刻とともに送信された配列です。これは正しい方法ですか?私の問題は、atmegaから時間を読み取ろうとすると、つまりatmegaが構造体を返すときに、時々ランダムな値を取得しますが、ほとんどの場合、実際に設定された時間を取得します。

私はそれをいくらか理解できるように説明したことを願っています..

ありがとう

// ノクセット

4

3 に答える 3

-2

次のようなものを試してください

char data[10];
struct time_t myTime;
myTime.year = 2013; 
// ... snip
memcpy(data, myTime, sizeof(myTime)); // copy myTime to the array

受け取るには、パラメータを逆にして同じ操作です

memcpy(myTime, data, sizeof(myTime)); // copy data into myTime

構造体にポインターがあるとすぐに、このトリックは機能しなくなることに注意してください。

于 2013-05-23T22:15:15.863 に答える