ich versuche ueber ein Arduino Sketch die Register
eines CMOS Si570 auszulesen. Die Ausgangsfrequenz
des Chips ist lt. Frequenzzaehler 56.32MHz. I2C
Adresse ist 0x55. SDA und SCL haben 4k7 pull-ups.
Der Ausgang vom Si 570 ist mit 100Ohm terminiert.
Ich bekomme folgende Register-Werte:
7: 11100001
8: 11000010
9: 10110110
10: 00110110
11: 01100000
12: 01011111
wenn ich das data sheet richtig interpretiere,
dann bedeutet dies:
HSDIV: 7
N1: 7
RFREQ: 43.388275500387
Ich gehe weiters von einer Referenzfrequenz des
internen Oszillators von ca. 114.285MHz aus.
Der Wert von N1 kann doch eigentlich nicht sein.
Lt. data sheet sind nur geradzahlige Werte und 1
zulaessig?
Folgender Sketch wurde verwendet (Arduino 1.0.1):
1 | #include <Wire.h>
|
2 |
|
3 | void setup() {
|
4 | Serial.begin(9600);
|
5 | Wire.begin();
|
6 | }
|
7 |
|
8 | void loop() {
|
9 | Wire.beginTransmission((uint8_t) 0x55);
|
10 | Wire.write((uint8_t) 7);
|
11 | Wire.endTransmission(false);
|
12 | Wire.requestFrom((uint8_t) 0x55, (uint8_t) 6);
|
13 | for (uint8_t i=0; i<6; i++) {
|
14 | Serial.print(7+i);
|
15 | Serial.print(": ");
|
16 | Serial.println(Wire.read(), BIN);
|
17 | };
|
18 | Wire.endTransmission();
|
19 | while (1) {};
|
20 | }
|
Ich habe auch versucht, die Register
eins nach dem anderen auszulesen: Immer
nur ein Register lesen, dann neuen Sketch
mit neuer Reg# hochladen. Das Ergebnis
ist immer das gleiche.
Mache ich einen Fehler bei der Interpretation
der Register-Werte?