ハムフェアで微弱電波のポケトラを試運転してみたところ、送信時にマイコンが固まる現象がでました。
プログラムで送信時にLからHレベルの検出をしてPLLで周波数切り替えをするように作ったのですが、周波数が移動せずフリーズします。
これはPLLがロックするのに時間がかかるのかと思ったりして、si5351が2つのPLLを内蔵しているので、初めから2つの周波数を出力するように作り変えてみました。
送受で、どちらかをオフにするシーケンスなのですが、結果は変わりませんでした。
うーん、わからない。しばらく悩みそうです
ちなみに、作ったプログラムは下のような感じです。DSP受信ボードも送信時にオフするようにしてます
void loop()
{
si5351.set_freq((vfo * SI5351_FREQ_MULT) - bfo, SI5351_PLL_FIXED, SI5351_CLK0);
si5351.set_freq((vfo * SI5351_FREQ_MULT) , SI5351_PLL_FIXED, SI5351_CLK2);
if (digitalRead(4) == HIGH) {
si5351.output_enable(SI5351_CLK0, 0);
si5351.output_enable(SI5351_CLK2, 1);
i2c_write(0x00, 0b00000010); //on,fm,tune,no-seek,no-seekup,no-mute,rsv,rs
delay(100);
}
else {
si5351.output_enable(SI5351_CLK0, 1);
si5351.output_enable(SI5351_CLK2, 0);
i2c_write(0x00, 0b10000000); //on,fm,tune,no-seek,no-seekup,no-mute,rsv,rs
delay(100);
}
void loop()
{
si5351.set_freq((vfo * SI5351_FREQ_MULT) - bfo, SI5351_PLL_FIXED, SI5351_CLK0);
si5351.set_freq((vfo * SI5351_FREQ_MULT) , SI5351_PLL_FIXED, SI5351_CLK2);
if (digitalRead(4) == HIGH) {
si5351.output_enable(SI5351_CLK0, 0);
si5351.output_enable(SI5351_CLK2, 1);
i2c_write(0x00, 0b00000010); //on,fm,tune,no-seek,no-seekup,no-mute,rsv,rs
delay(100);
}
else {
si5351.output_enable(SI5351_CLK0, 1);
si5351.output_enable(SI5351_CLK2, 0);
i2c_write(0x00, 0b10000000); //on,fm,tune,no-seek,no-seekup,no-mute,rsv,rs
delay(100);
}