Evo jedna moja zanimljiva konstrukcija za programibilni oscilator (VFO / clock) baziran na Silicon Labs Si5351 sa Microchip USB kontrolerom PIC16F1455.
U pitanju je sklop koji kada se poveze na USB sa racunarom u sistemu se pojavi nov seriski (COM) port preko koga moze da se komunicira sa ovim modulom iz nekog terminal programa.
Podesavanje frekvencije na jednom od 3 izlaza se vrsi postavljanjem odgovarajucih vrednosti u registre Si5351 oscilatora.
Posto je to previse komplikovano za pocetnike (a sticicete i dotle) u samom PIC kontroleru je ugradjen racun za freknciju i svodi se na jednostavno unosenje frekvencije poput "14.010" izrazenim u MHz preko terminala.
Ovaj racun poseduje dovoljnu preciznost za opste ne tako zahtevne namene jer postoji greska prilikom racuna i uzrokovana je limitom 24 bitne matematike implementirane u PIC kontroleru.
Pregled komandi:
Format komande je koncipiran tako da uvek prvi karakter predstavlja komandu (0,1,2,3,e,s,p,w) dok su ostali karakteri opcioni tj adresa i podatak.
Dakle kada se povezete preko terminala na uredjaj, stiskanjem tastera "0" (ASCII vrednost 0x30) PIC kontroler izvrsava podesavanje frekvecnije izlaza na 1,10 i 100MHz.
Stiskanjem tastera "1" se podesava drugi set frekvencija, isto tako za tastere "2" i "3".
Za postavljanje fekvencije npr 1.25MHz treba poslati komandu:
"c1.25"
Ili npr za 28.125MHz
"c28.125"
Za vecu preciznost je neophodan PC software koji radi racun frekvencije i kao rezultat daje potrebne vrednosti za registre koji se posle upisuju u Si5351. Za te potrebe, za pocetak se moze upotrebiti gotov Windows program od proizvodjaca dostupan na ovoj stranici:
http://www.silabs.com/products/clocksosc...tools.aspx
Sledi nastavak ...
U pitanju je sklop koji kada se poveze na USB sa racunarom u sistemu se pojavi nov seriski (COM) port preko koga moze da se komunicira sa ovim modulom iz nekog terminal programa.
Podesavanje frekvencije na jednom od 3 izlaza se vrsi postavljanjem odgovarajucih vrednosti u registre Si5351 oscilatora.
Posto je to previse komplikovano za pocetnike (a sticicete i dotle) u samom PIC kontroleru je ugradjen racun za freknciju i svodi se na jednostavno unosenje frekvencije poput "14.010" izrazenim u MHz preko terminala.
Ovaj racun poseduje dovoljnu preciznost za opste ne tako zahtevne namene jer postoji greska prilikom racuna i uzrokovana je limitom 24 bitne matematike implementirane u PIC kontroleru.
Pregled komandi:
Code:
//------------------------------------------------------------
//dekoder komandi --------------------------------------------
//------------------------------------------------------------
switch (RS232_Out_Data[0]) {
case 0x30:
//0 - write 1MHz 10MHz 100MHz without correction, 8pF
Write1 (mem_si_1_10_100, sizeof(mem_si_1_10_100));
putrsUSBUSART("OK");
break;
case 0x31:
//1 - write 70MHz + 4.545MHz
Write1 (mem_si_70, sizeof(mem_si_70));
putrsUSBUSART("OK");
break;
case 0x32:
//2 - write 80MHz
Write1 (mem_si_80, sizeof(mem_si_80));
putrsUSBUSART("OK");
break;
case 0x33:
//3 - write 3.7MHz (14.8MHz)
Write1 (mem_37_new, sizeof(mem_37_new));
break;
case 0x65:
//e - write regs from adres with len
Write_SI_Regs_x(RS232_Out_Data);
putrsUSBUSART("OK");
break;
case 0x73:
//s - set single register
WriteSi5351_single(RS232_Out_Data[1], RS232_Out_Data[2]);
break;
case 0x70:
//p - write PLLA regs to I2C
Write_SI_Regs_8(26, RS232_Out_Data);
putrsUSBUSART("OK");
break;
case 0x77:
//w - write MSO regs to I2C
Write_SI_Regs_8(42, RS232_Out_Data);
putrsUSBUSART("OK");
break;
default:
if(USBUSARTIsTxTrfReady())
{
putrsUSBUSART("ERR");
}
}
Format komande je koncipiran tako da uvek prvi karakter predstavlja komandu (0,1,2,3,e,s,p,w) dok su ostali karakteri opcioni tj adresa i podatak.
Dakle kada se povezete preko terminala na uredjaj, stiskanjem tastera "0" (ASCII vrednost 0x30) PIC kontroler izvrsava podesavanje frekvecnije izlaza na 1,10 i 100MHz.
Stiskanjem tastera "1" se podesava drugi set frekvencija, isto tako za tastere "2" i "3".
Za postavljanje fekvencije npr 1.25MHz treba poslati komandu:
"c1.25"
Ili npr za 28.125MHz
"c28.125"
Za vecu preciznost je neophodan PC software koji radi racun frekvencije i kao rezultat daje potrebne vrednosti za registre koji se posle upisuju u Si5351. Za te potrebe, za pocetak se moze upotrebiti gotov Windows program od proizvodjaca dostupan na ovoj stranici:
http://www.silabs.com/products/clocksosc...tools.aspx
Sledi nastavak ...