On 02/18/2013 10:32 PM, Herbert Poetzl wrote:
I'm new to the time-nuts community, so I simply start with a short info on how I got into this situation :) (skip forward to<ONTOPIC> if not interested) Not long ago, I decided to build a reasonably good frequency counter for my personal use and maybe if the result is simple and elegant, I'll publish the details so that everybody can build one ... It was clear to me, that it had to be able to count up to at least 1GHz and thus show at least nine, better ten significant digits, so a precise time base is required. After some online searches and investigations, my best options seemed to get a very stable oscillator and a high quality time reference to sync with, which in turn brought me to the idea to use a cheap rubidium normal and somehow tune/measure/sync it via GPS or DCF-77/MSF-60. Reading a lot of documentation and blogs from all over the world (sometimes in translation :) shed some light on the rubidium normal requirements, which I defined as: - has to have a 10MHz output not just the 1PPS - has to be programmable (i.e. can be tuned) - must be cheap I quickly found two different RB standard models, readily available on ebay for a reasonable price, namely the Efratom FRS-C and the FEI FE-5680A. I finally decided to go with the FE-5680A, mainly because I liked the package. A seller was quickly found offering something titled: 'FE-5680A Rubidium Atomic Frequency Standard Oscillator Transceivers 10Mhz Out' 'Programmable from 1Hz to 20MHz' Little did I know what that actually meant ... When the units (I ordered two of them) arrived, I couldn't wait to test if they actually work and get a lock, so I quickly wired them up (according to the pinout) and provided them with the advised 15V at up to 2A each. To my astonishment, they heated up rather quickly and got a lock in a little under two minutes, so I happily got my scope out to check the 10MHz signal, just to find that there is no such signal available on the 9pin D-sub connector. Measuring pins against ground (pin 2) and 15Vx (pin 1) I figured that neither pin 7 (10MHz) nor pin 8/9 (the rs232 interface for programming) was connected. and to my great disappointment, pin 6 (1PPS) didn't output much either (I later discovered that this was due to a defective unit, which is now being replaced) After contacting the seller, I opened up the units to investigate my options (and of course, because I wanted to take a look inside :), which in turn led to a number of high resolution scans and photos of all the bits and pieces. A (this time) more thorough search on the internet resulted in a deeper understanding of the various options the FE-5680A can have (or usually doesn't have) and the inner workings of the different FE-5680A models (of course, all labeled FE-5680A :) The DDS board, which actually can be programmed to output certain frequencies derived from the 'locked' 1:136 frequency of the rubidium 6.8GHz transition, caught my attention, as it has both, the '10Mhz' output and the programming interface, so I decided to analyze it further ... <ONTOPIC> The central part on this specific DDS board [1] is the AD9830A a Direct Digital Synthesizer (DDS) which basically produces a sine wave at a well defined multiple and phase of a given reference frequency. Besides some other components, this board also includes an RS-232C line driver (Sipex SP233A) a PIC16F84 microcontroller and two 74HC595 8bit shift registers, with buffered outputs. I read somewhere, that the blue buttons on that DDS board can be used to adjust the output frequency, this should be avoided, mainly because every button press is an update and will cause a write to the EEPROM data wearing it out. Now as I've played with PIC microcontrollers for a long time, I wanted to know what this specific controller is doing and how I could use that for my purposes ... The chip was quickly removed and the program as well as configuration memory retrieved (luckily FEI didn't utilize the code/data protection) and together with high resolution scans and photos, a documented and verified assembler listing [2] reverse engineered. Here are the (IMHO) quite interesting findings: - both FREQx registers can be adjusted - the PHASE0 register can be adjusted - none of the changes is permanent, unless you explicitely save the settings - there are only a few commands, without any plausibility checks and/or protection - and yes, the buttons increment/decrement the FREQx settings and trigger a write to the EEPROM after every update. - the serial interface is done in software - the DDS control words are shifted into the 74HC595, buffered and written ; S<CR> STATUS ; R=50255057.012932Hz F=2ABB504000000000 ; OK ; ; F=XXXXXXXXYYYYYYYY<CR> FREQxREG (set divider) ; OK ; ; G=XXXX<CR> PHASE (set phase register) ; OK ; ; R=XXXXXXXXYYYYYY<CR> RUBIDIUM (set calibrated freq) ; OK ; ; E<CR> EEPROM (save settings) ; OK Note that you can use the R= command to update all the settings at once or the F= command to update the FREQx and PHASE0 settings in one step, by simply adding more hex digits to the line. The next step I'm considering is to replace the PIC16F84A with a more powerful version (and a custom code) to support a smarter interface and some kind of dynamic adjustments (more details on that in another post, if there is interest)
It would be interesting if fractional resolution of the DDS would be developed using the PHASE interface. As PHASE ripples, a carry needs to be sent into the phase accumulator of the AD9830, or alternatively fiddling the frequency value would help.
Anyway, good work! Cheers, Magnus _______________________________________________ time-nuts mailing list -- time-nuts@febo.com To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts and follow the instructions there.