2
\$\begingroup\$

I'm trying to get the DS1077 to work, but I can't for the life of me figure out what I'm doing wrong. I'm using the defaults for the MUX and BUS registers, and programming in my own DIV frequency has no effect. I can read out the registers over I2C and they return the values I set, but the oscillator output (as measured on my scope) is nothing like what it should be. I tried copying the values in from SparkFun's example (I'm using their breakout board) but the "40kHz" output is way above the 60MHz bandwidth of my scope.

I found an example on Maxim's website and they recommend you tie CTRL0 and CTRL1 to GND if you're not using them - but if I tie CTRL1 to GND mine stops responding to I2C messages! I have to tie CTRL1 to VCC to get it to respond over I2C (no mention of that in the datasheet), but that disables the oscillator output. Otherwise my "circuit" is the same as their example - SDA/SCL go to an Arduino, and the OUT pins go to my scope. VCC and GND are connected correctly and within spec.

I've got no idea what's going on, it seems really simple but I still can't get it to work :'-( Has anyone encountered anything like this before? Any ideas to help narrow down the problem?

\$\endgroup\$
1
\$\begingroup\$

I would recommend reading the datasheet again for that device. It sounds like CTRL0 and CTRL1 can also be used as output enables depending on the devices control registers MUX and BUS. This would explain why when you assert CTRL0/CTRL1 the oscillator output is disabled. Another thing to note is that the datasheet says the register values are store on an internal EEPROM, but only after a write command is executed. It could be possible that you think the registers are set one way, but when you power cycle the board the previous values are being loaded from EEPROM. I've worked a lot with I2C clock chips and every time things weren't working it was because I miss interpreted one of the register values. Write each register out on initialization then read them all back to make sure you initialized them properly. Compare the results to the datasheet to see if they make sense.

EDIT: It appears that the CTRL pins can also be used to place the device in a power-down mode which would explain why it's not responding to I2C at times.

\$\endgroup\$
  • \$\begingroup\$ Thanks for the info. I still don't quite understand why, but I've gotten it working now. You're right that the CTRL pins put the device in power down mode, they just don't seem to behave the way the datasheet indicates. The datasheet also fails to mention that you can either write to the device or update the values over I2C - it doesn't seem to be possible to have the device generating a signal while it's accessible over the I2C bus. Well at any rate, I've heard stories about badly written datasheets, I guess I've come across my first one :-) \$\endgroup\$ – Malvineous Mar 27 '10 at 7:41
  • \$\begingroup\$ @Malvineous - I'm having the same problem with the Div on the DS1077. How did you manage to solve this problem? I'm using a Arduino to program the device. thank you \$\endgroup\$ – user5067 Jul 18 '11 at 19:47
  • \$\begingroup\$ @jajomafa: Unfortunately I'm still not sure what I did, but I had some other I2C devices connected at the time which I suspect may have been interfering. I tried programming the DS1077 separately (out of circuit) and then connecting it up and that seemed to do the trick, although there was still a bit of trial and error getting the frequency I set to take hold. \$\endgroup\$ – Malvineous Jul 30 '11 at 9:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.