Keyboard Shortcuts
Likes
Search
Re: Tuning clicks
Yes, the $10 Si570 has an onboard reference oscillator that is factory calibrated, and that's an advantage over the $1 Si5351. ?SiLabs could have included the Si570 correction value in ROM. ?Also the power-up frequency, as that is a major complication if in an environment where different power-up frequencies may get stuffed. ?Especially if you are on a uC with 2kbytes of flash that has plenty more to do, as I was at the time. Writing code for fixed point arithmetic is a bit of a lost art. ?If you really want to figure out how to write tight code for the Si570, the four lines mentioned in my old mail are worth coming to terms with. ?The techniques could be applied to the Si5351. ?One could argue that these days for $10 you can go to a decent processor and somebody else's library, but as code turns into huge hairballs tied together with cobwebs we lose the ability to understand and fix it. Amazing that the Si570 has been out for over a decade, yet still the best choice in many applications. Having an off-chip reference oscillator can be a win though. ?You can make it as stable as you want, perhaps GPS disciplined. ?The Si5351 is relatively noisy, other SiLabs products in that family have less phase noise. ?But at $1, the Si5351 is a very good choice for something like the Bitx40. Took me a while to figure out which Jerry, and which 2 month old message. ?Best if you can include at least parts of the old message so we can follow the discussion. Jerry, KE7ER On Fri, Mar 31, 2017 at 08:00 am, <aa0zz@...> wrote:
Feb 1???#21278?? There was a long discussion of the Si570 and possibly moving to the Si5351 on the minima mailing list a few years ago. ?Much of it still pertains, including discussion of holding the divide ratio constant, moving just the PLL where possible. ?I had written working C code for the Si570 that was about as tight and accurate as I cared to make it, that code is in four lines of code toward the bottom of ?? That code is 32 bit fixed point, with lots of shifts to scale the values to maintain maximum precision. ?Includes some type casts to uint64_t, but only to capture the 64 bit result of a 32x32 multiply. ?That result is immediately shifted an appropriate number of bits and stored as 32 bits. ?Along the line of python code at the top to precompute (and store in flash) a calibration value and some busy work to find values for n1_new and hsdiv_new when the PLL goes out of range, the 4 lines of C code toward the bottom are a complete and very accurate working example for the Si570. The Si570 was problematic in that they were factory programmed to a specific output frequency, but you could not easily determine what that frequency was by reading registers on the chip. ?And you needed that value to calibrate the reference oscillator inside the Si570. ?The Si5351 doesn't have that issue, as it uses an external 50ppm crystal reference, so we're forced to calibrate each unit individually. ?Registers are much different on the Si5351, but the same tricks of fixed point arithmetic will apply. Transmitting some of the digital modes is possible from a small uC by steering the Si5351 around and modulating the keying envelope. ?Receiving is much tougher, but possible in some cases. ?I wrote a program in 2006 for psk31 reception on a TI MSP430, that's in the files section on the yahoo AT-Sprint group under KE7ER/psk31uc.c ? It simulates well, though didn't have the patience to figure out Steve's assembly language for the AT-Sprint well enough to shoehorn in my C code. ?I'll try to move file that over to this group under files/KE7ER sometime today in case anybody's curious. ?A likely better PSK31 receiver is this from OK1IAK: ??? ? Both of these psk31 decoders should fit in uC's with something like 256 bytes of RAM and 2kbytes of flash. ?I haven't tried either one on the air. Jerry, KE7ER ? |