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 件のコメント:
コメントを投稿