Пришло время попробовать всё сказанное выше (с исправлениями) на практике.
Попробуем своими силами установить на приёмнике частоту 20 МГц в SSB (20 МГц потому что можно будет принять биения генератора от МК на PIC-е).
Рассчитываем частоту ГУНа синтезатора: 20001 + 55845 = 75846 кГц.
Коэффициент деления в ДПКД синтезатора: 75846 кГц / 1 кГц / 2 = 37923 = 0x9423 = 1001 0100 0010 0011
Приду с работы попробуем!
Код:
// Все три порта на выход
// RC0 => CE, RC1 => DI, RC2 => CLK
#define m_CE LATCbits.LATC0
#define m_DI LATCbits.LATC1
#define m_CLK LATCbits.LATC2
/////////////////////
setDataPLL(0x82); // address IN1
m_CE = 1; // включаем CE
setDataPLL(0x32); // данные 1-ый байт
setDataPLL(0x49); // данные 2-ой байт
setDataPLL(0x2B); // данные 3-ий байт
m_CE = 0; // выключаем CE
UsartFunc(0x92); // address IN2
m_CE = 1; // включаем CE
setDataPLL(0xE3); // данные 1-ый байт
setDataPLL(0x00); // данные 2-ой байт
setDataPLL(0x01); // данные 3-ий байт
m_CE = 0; // выключаем CE
/////////////////////
void setDataPLL(unsigned char dataByte) // dataByte - байт переданных данных
{
static byte i;
for(i = 0; i < 8; i++){
m_DI = UBit(dataByte, i); // перевести RC1 в состояние i-того бита байта переданных данных
m_CLK = 1; // сигнал CLK в "1" _-
m_CLK = 0; // сигнал CLK в "0" -_
}
}// end setDataPLL
BOOL UBit(unsigned char byteB, unsigned char bit0)
{
if(((byteB >> bit0) & 1) > 0)
{
return 1;
}else{
return 0;
}
}