Forum: HF, Funk und Felder Si570: merkwuerdige Register-Werte


von ul5255 (Gast)


Lesenswert?

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?

von Lattice User (Gast)


Lesenswert?

ul5255 schrieb:
> Der Wert von N1 kann doch eigentlich nicht sein.
> Lt. data sheet sind nur geradzahlige Werte und 1
> zulaessig?

Im Datasheet steht dass ungültige Werte aufgerundet werden.

von Ul5255 (Gast)


Lesenswert?

Ich habe das Problem  geloest! Zu denken gab mir, dass die HS_DIV Werte 
ja bis 11 hochgehen duerfen. Das passt natuerlich nicht in 3 bit hinein. 
Die SI Jungs haben deshalb einen Offset von 4 eingefuehrt. Der kleinste 
HS_DIV von 4 wird als 0 geschrieben! In meinem Fall also ist der 
richtige HS_DIV also 7 + 4 = 11. Aehnlich bei den N1 Werten: Da muss man 
jeweils eins dazuzaehlen, um den korrekten Wert zu bekommen, in meinem 
Fall also N1 = 7 + 1. Damit passen nun alle Werte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.