2012年3月16日金曜日

"W3PM WSPR Projects" Arduino版修正

Arduino Uno版は断念したが、色々やった中で・・・・
オリジナルが間違っているなと思われたところを、忘れる前に記録。

Uno/Mega2560 共通の修正場所
DDSのキャリブレーション値をEEPROMに保存しますが、書き込み/読み出しが
正しく行われていません。
*************************************************************************
void setup() の中の以下の部分を修正
// Get calfactor data
  //for(j=0; j<3; j++) {  // Step through 4 bytes to make 32 bit word
for(j=0; j<4; j++) {  // 3 を 4 に修正
    temp = EEPROM.read(50+j); // Get bytes 50 through 53
    for (i=0; i<8; i++){ // Set through 8 bit to make 1 byte
      //bitWrite(CalFactor,i*j+i,(bitRead(temp,i))); // Assemble bits to make 32 bit word
      bitWrite(CalFactor,j*8+i,(bitRead(temp,i))); //左のように修正
    }
  }
*************************************************************************
void calibrate() の中の以下の部分を修正
  // Writes CalFactor to address 50 + 3 bytes of EEprom
  //for (j=0; j<3; j++)  { // Step through 4 bytes to make 32 bit word
  for (j=0; j<4; j++)  { // 3 を 4 に修正
  for (i=0; i<8; i++) { // Step through 8 bit to make 1 byte
      //bitWrite(temp,i,(bitRead(CalFactor,j*i+i))); // Assemble bits to make 1 byte
      bitWrite(temp,i,(bitRead(CalFactor,j*8+i))); // 左のように修正
    }
    EEPROM.write(50+j,temp); // Write byte to EEprom
  }
*************************************************************************
Mega2560 の修正場所
これは、WSPRのPOWERの設定がおかしかった。  2012/03/19 追加
void setup() の中の以下の部分を修正
  // Set power level to default timeslot
  //power = timeslot_array [timeslot] [3]; //
  power = timeslot_array [timeslot] [2]; // 3 を 2 に修正
*************************************************************************

0 件のコメント:

コメントを投稿