I2C anstuern
-
- Neugieriger
- Beiträge: 12
- Registriert: Donnerstag 16. November 2006, 20:00
I2C anstuern
Hallo,
gibt es eine Möglichkeit den I2C Bus über serielle Schnittstelle oder LAN anzusteuern?
Es gibt ja Probleme mit dem Empfang der QAM256 Sender mit der Sagem. Ich habe mir vorgenommen mit dem Tuner ein wenig zu experimentieren. Dazu müßte ich in der Lage sein die Register des Tuners und der PLL zu beschreiben und zu lesen.
Gruß
gibt es eine Möglichkeit den I2C Bus über serielle Schnittstelle oder LAN anzusteuern?
Es gibt ja Probleme mit dem Empfang der QAM256 Sender mit der Sagem. Ich habe mir vorgenommen mit dem Tuner ein wenig zu experimentieren. Dazu müßte ich in der Lage sein die Register des Tuners und der PLL zu beschreiben und zu lesen.
Gruß
-
- Wissender
- Beiträge: 1839
- Registriert: Sonntag 17. August 2003, 01:39
-
- Tuxboxer
- Beiträge: 2614
- Registriert: Montag 20. Mai 2002, 10:49
- Image: JTG-Image [IDE] Version 2.4.4
- Image: (7025SS) Merlin
Das war hier.PauleFoul hat geschrieben:Da gibt es irgendwo im Forum eine Anleitung wie man die Tunerwerte
auslesen kann.
Greetz von DrStoned
Greetz von DrStoned
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
könnte für dich interessant sein.
http://www.nalanda.nitc.ac.in/industry/ ... oc1293.pdf
Carrier Recovery - Fine Tuning
The carrier recovery block allows the acquisition and tracking
of a frequency offset as high as 12% of the symbol rate,
even for low signal to noise ratios. The phase comparator
algorithm provides a high phase noise tolerance which
reduces the tuner cost. The frequency offset recovered by
the chip can be monitored through the I2C interface. This
information can be used to readjust the tuner frequency in
order to reduce the analog filtering degradation on the signal
and thus improves the Bit Error Rate. This information
is also provided automatically to the DDS in order to
recover the frequency with complete accuracy before
receive filtering.
----
General Monitoring
0x80 R LOCK Lock status of AGC1, AGC2, TIMING, CARRIER, EQUALIZER, FEC
0x81 - 0x83 R BER1 Bit error rate estimate
0x84 R BER2 Bit error rate estimate based on frame synchronization word
0x85 R NPERR Number of uncorrectable frames
0x86 - 0x88 R TIMFREQOFF Symbol rate frequency offset with respect to SYMRATE
0x89 - 0x8A R DDSFREQOFFSET Frequency offset recovered by DDS
0x8B - 0x8C R CARFREQOFFSET Residual frequency offset (normalized to symbol rate)
0x8D - 0x8E R PHASENOISE Phase noise estimation
0x8F - 0x90 R ADDITIVENOISE Additive noise estimation
0x91 R AGC1LEVEL AGC1 current value (external)
0x92 - 0x93 R AGC2LEVEL AGC2 current value (internal)
http://www.nalanda.nitc.ac.in/industry/ ... oc1293.pdf
Carrier Recovery - Fine Tuning
The carrier recovery block allows the acquisition and tracking
of a frequency offset as high as 12% of the symbol rate,
even for low signal to noise ratios. The phase comparator
algorithm provides a high phase noise tolerance which
reduces the tuner cost. The frequency offset recovered by
the chip can be monitored through the I2C interface. This
information can be used to readjust the tuner frequency in
order to reduce the analog filtering degradation on the signal
and thus improves the Bit Error Rate. This information
is also provided automatically to the DDS in order to
recover the frequency with complete accuracy before
receive filtering.
----
General Monitoring
0x80 R LOCK Lock status of AGC1, AGC2, TIMING, CARRIER, EQUALIZER, FEC
0x81 - 0x83 R BER1 Bit error rate estimate
0x84 R BER2 Bit error rate estimate based on frame synchronization word
0x85 R NPERR Number of uncorrectable frames
0x86 - 0x88 R TIMFREQOFF Symbol rate frequency offset with respect to SYMRATE
0x89 - 0x8A R DDSFREQOFFSET Frequency offset recovered by DDS
0x8B - 0x8C R CARFREQOFFSET Residual frequency offset (normalized to symbol rate)
0x8D - 0x8E R PHASENOISE Phase noise estimation
0x8F - 0x90 R ADDITIVENOISE Additive noise estimation
0x91 R AGC1LEVEL AGC1 current value (external)
0x92 - 0x93 R AGC2LEVEL AGC2 current value (internal)
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Code: Alles auswählen
/*
* Performance optimizations, should be done after autoconfig
*/
at76c651_writereg(i2c, 0x10, 0x06);
at76c651_writereg(i2c, 0x11, ((at76c651_qam == 5) || (at76c651_qam == 7)) ? 0x12 : 0x10);
at76c651_writereg(i2c, 0x15, 0x28);
at76c651_writereg(i2c, 0x20, 0x09);
at76c651_writereg(i2c, 0x24, ((at76c651_qam == 5) || (at76c651_qam == 7)) ? 0xC0 : 0x90);
at76c651_writereg(i2c, 0x30, 0x90);
if (at76c651_qam == 5)
at76c651_writereg(i2c, 0x35, 0x2A);
Die anderen habe ich alle gefunden.
[/code]
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
-
- Neugieriger
- Beiträge: 12
- Registriert: Donnerstag 16. November 2006, 20:00
Danke für die Anworten.
Das Datenblatt habe ich auch. Ist euch schon mal der Widerspruch aufgefallen:
The internal oscillator of the chip provides a direct, jitterfree
clock...
und ein paar Seiten weiter:
WARNING: Performance in 256-QAM may be affected
by the jitter on the oscillator. It is preferable to use an
external crystal oscillator if 256-QAM is required in the
final application. Atmel does not guarantee the BER
specifications given on page 20 and page 21 if a crystal
is used on its own.
Wie passt das zusammen? OK, der Takt für den Core wird noch über die PLL multipiziert. Vielleicht ist das das Problem. Aber warum dann nur bei QAM256? Bei QAM512 und 1024 müßte es sich umso heftiger auswirken. Das wird aber nicht erwähnt.
Ich habe schon das Forum zu diesem Thema durchforstet. Es wird viel geschrieben, aber niemand hat es analysiert. Ich habe den neusten Treiber. So richtig läuft es nicht. Mir ist auch aufgefallen, daß bei stärkerer Signaldämpfung es besser wird. Das deutet darauf hin, daß der Tuner übersteuert.
Was ich eingentlich vorhabe, ist den Tuner extern anzusteuern (z. B. mit einem Atmel Controller). Dann könnte ich die Tunereinstellungen selbst setzen, und durch Auslesen der Monitoring Register die Auswirkungen beobachten. Hoffe damit das Problem eingrenzen zu können.
Das müßte aber auch irgendwie mit Debugbefehen gehen. Nur wie? Von Linux habe ich leider nicht viel Ahnung.
Das Datenblatt habe ich auch. Ist euch schon mal der Widerspruch aufgefallen:
The internal oscillator of the chip provides a direct, jitterfree
clock...
und ein paar Seiten weiter:
WARNING: Performance in 256-QAM may be affected
by the jitter on the oscillator. It is preferable to use an
external crystal oscillator if 256-QAM is required in the
final application. Atmel does not guarantee the BER
specifications given on page 20 and page 21 if a crystal
is used on its own.
Wie passt das zusammen? OK, der Takt für den Core wird noch über die PLL multipiziert. Vielleicht ist das das Problem. Aber warum dann nur bei QAM256? Bei QAM512 und 1024 müßte es sich umso heftiger auswirken. Das wird aber nicht erwähnt.
Ich habe schon das Forum zu diesem Thema durchforstet. Es wird viel geschrieben, aber niemand hat es analysiert. Ich habe den neusten Treiber. So richtig läuft es nicht. Mir ist auch aufgefallen, daß bei stärkerer Signaldämpfung es besser wird. Das deutet darauf hin, daß der Tuner übersteuert.
Was ich eingentlich vorhabe, ist den Tuner extern anzusteuern (z. B. mit einem Atmel Controller). Dann könnte ich die Tunereinstellungen selbst setzen, und durch Auslesen der Monitoring Register die Auswirkungen beobachten. Hoffe damit das Problem eingrenzen zu können.
Das müßte aber auch irgendwie mit Debugbefehen gehen. Nur wie? Von Linux habe ich leider nicht viel Ahnung.
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
-
- Foren-Moderator
- Beiträge: 1119
- Registriert: Sonntag 9. Juni 2002, 13:28
Ist das so ? Wird der bei uns extern angesteuert ?It is preferable to use an
external crystal oscillator if 256-QAM is required in the
final application.
Ansonsten......WAS MUß ICH KAUFEN UND WO EINLÖTEN ?
Ich nehme mal an, einen per I2C steuerbaren Oszi ?!!!! Kann ja nicht die Welt kosten, aber wenn damit die QAM256 Probleme bei Sagem verschwinden...
Marc
-
- Developer
- Beiträge: 122
- Registriert: Sonntag 23. April 2006, 12:37
-
- Neugieriger
- Beiträge: 12
- Registriert: Donnerstag 16. November 2006, 20:00
ext. Oszillator ist ein Quarz mit intergriertem Schwingkreis (der befindet sich beim Atmel auf dem Chip). Man braucht allerdings 3,3V Typ. Reichelt hat z.B. nur 5V Typen im Angebot. Damit das Ganze Sinn macht, müßte man die doppelte Frequenz nehmen und die PLL abschalten (wenn es stimmt, daß der interne Oszillator keinen jitter hat). Dann würde aber der AD-Wandler auch mit der doppelten Frequenz laufen. Schaft er das? Oder müßte die Frequenz wieder halbiert werden?
Ich glaube nicht, daß es hilft. Habe das schon auf der Arbeit diskutiert. Die Ausagen zum jitter hat niemand verstanden.
Ich glaube nicht, daß es hilft. Habe das schon auf der Arbeit diskutiert. Die Ausagen zum jitter hat niemand verstanden.
-
- Developer
- Beiträge: 122
- Registriert: Sonntag 23. April 2006, 12:37
Hm, das steht in dem Datenblatt was ich hier habe nicht drin. Hast du eine andere Version? Der Atmel im Sagem-Frontend benutzt da ja 28,9 MHz Quartze, also keinen Oszillator (wie du schon schriebst).Artur hat geschrieben:WARNING: Performance in 256-QAM may be affected
by the jitter on the oscillator. It is preferable to use an
external crystal oscillator if 256-QAM is required in the
final application. Atmel does not guarantee the BER
specifications given on page 20 and page 21 if a crystal
is used on its own.
Wegen des Nichterwähnens von 512-QAM und 1024-QAM: diese sind in der EN 300429 nicht spezifiziert, sind wohl eher theoretischer Natur (der Demod kann es, aber benutzt wird es bei DVB nicht).
Ich weiß nicht genau warum du den Aufwand treiben willst, den Demod extern anzusteuern statt es einfach in den Treiber einzubauen aber wenn die Mikrocontroller eher deine Welt sind... hm, das geht glaube ich schon irgendwie, aber ich habe das noch nie machen wollen. Schau vielleicht mal bei http://www.lm-sensors.org/ vorbei, ich glaube, die hatten da Tools für.
Es kann aber sein, daß du dann eine Spezialversion vom Kernel auf der Box brauchst.
-
- Neugieriger
- Beiträge: 12
- Registriert: Donnerstag 16. November 2006, 20:00
in einem anständigen Datenblatt würde es stehen.Wegen des Nichterwähnens von 512-QAM und 1024-QAM: diese sind in der EN 300429 nicht spezifiziert, sind wohl eher theoretischer Natur (der Demod kann es, aber benutzt wird es bei DVB nicht).
Tja, wenn das für mich so einfach wäre, würde ich nicht fragen. Ich habe es bis jetzt nicht geschaft ein Image erzeugen. Bei der Gelegenheit kann ich mal fragen, was der Compilerfehler "keine Regel für Erstellung von U-Code.bin. Schluß" bedeutet (an den genauen Wortlaut kann ich mich nicht erinnern). Soweit ich es verstanden habe, stehen die Regel in den Makefiles und die werden durch Aufruf von configure automatisch erstellt. Richtig?Ich weiß nicht genau warum du den Aufwand treiben willst, den Demod extern anzusteuern statt es einfach in den Treiber einzubauen
Außerdem wird die U-code.bin doch aus BN image gewonnen und nach dem Flashen wieder eingespielt.
Zurück zum Thema. Ich glaube auch, daß ich eine angepasste Version brauche. Ich denke, man müßte eine zusätzliche Datei erzeugen (z. B. "i2c"), die Daten auf dem I2C ausgeben kann. Sie sollte beim Aufruf Daten von seriellen Schnittstelle empfangen und an den I2C weiterleiten.
Folgende Ablauf wäre denkbar:
1) Dbox mit dem neuen image starten und boot abbrechen
2) die Datei "i2c" über Terminal starten. Diese wartet dann in einer Endlosscheife auf Befehle die über serielle Schnittstelle kommen und gibt sie auf dem I2C aus. Der Befehlt könnte z.B. so aufgebaut sein: device-id,read/write,address,data. Eventuell müßten noch ein paar Bytes dazu (Länge,Checksumm) um es sicher zu machen. Die Anwort müßte auch noch definiert werden.
Vielleicht kann ein Profi es in ein paar Minuten programmieren. Die Module gibt es ja schon. Der Ansatz mit dem ext. Controller ist zwar aufwendig. Für mich aber einfacher als den Kernel anzupassen
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Ich hab mal ein bischl mit dem Treiber "rumgespielt", bezüglich QAM256.
Bin jetzt auch an den Punkt gekommen alles auf die Hardware, beziehungsweise auf die Taktung zu schieben
Nutze doch das /proc/bus/at76c651 um einige Daten während des Betriebes auszulesen. Leider hab ich selber keine Sagem, um einige Dinge zu testen.
Bin jetzt auch an den Punkt gekommen alles auf die Hardware, beziehungsweise auf die Taktung zu schieben
Nutze doch das /proc/bus/at76c651 um einige Daten während des Betriebes auszulesen. Leider hab ich selber keine Sagem, um einige Dinge zu testen.
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
-
- Tuxboxer
- Beiträge: 6044
- Registriert: Montag 17. November 2003, 06:48
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
Mag sein, aber bei den von mir getesteten Boxen (4 Stück) musste ich den Pegel so weit absenken das die AGC nicht mehr in betrieb war, danach ging die BER bis auf Null runter. (mit diesem Pegel hatte ich mit einer Nokia überhaupt keinen Empfang mehr).jmittelst hat geschrieben:Leider ja nicht bei allen Boxen (Tunern)...Gorcon hat geschrieben:Kann ich mir nicht vorstellen, denn dann wäre es ja nicht Pegelabhängig. (nimmt man den Pegel runter ist der Empfang i.O. )Könnte das mit QAM256 nicht ein i2c-Bus Speed Problem sein?
Gruß Gorcon
cu
Jens
Ich habe momentan hier noch 3 SagemBoxen stehen, jedoch kann ich mit QAM 256 nichts mehr testen da seit einem Monat ausser Premiere HD kein QAM 256 mehr eingesetzt wird.
Gruß Gorcon
-
- Wissender
- Beiträge: 1839
- Registriert: Sonntag 17. August 2003, 01:39
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
[OT]
Ich wurde bis vor kurzem von der KDG versorgt in einem NE4 Kabelnetz der Primacom.
Seit einem Monat hat sich die Primacom aber hier selbständig gemacht und hat der KDG die rote karte gezeigt. (Dadurch sind die Kabelgebühren auch gesenkt worden)
Seit dem gibts hier eben kein QAM 256 mehr da alle Programme jetzt mit QAM 64 eingespeist werden und das mit BER Werten von Null.
Die KDG Programme konnte man zuvor auch nur Illegal nutzen da sie nicht freigeschaltet wurden.
[/OT]
Gruß Gorcon
Ich wurde bis vor kurzem von der KDG versorgt in einem NE4 Kabelnetz der Primacom.
Seit einem Monat hat sich die Primacom aber hier selbständig gemacht und hat der KDG die rote karte gezeigt. (Dadurch sind die Kabelgebühren auch gesenkt worden)
Seit dem gibts hier eben kein QAM 256 mehr da alle Programme jetzt mit QAM 64 eingespeist werden und das mit BER Werten von Null.
Die KDG Programme konnte man zuvor auch nur Illegal nutzen da sie nicht freigeschaltet wurden.
[/OT]
Gruß Gorcon
-
- Neugieriger
- Beiträge: 12
- Registriert: Donnerstag 16. November 2006, 20:00
kennt jemand die Bedeutung von P0-P2 bei der PLL-Konfiguration:
Ich habe festgestellt, daß mit den Einstellungen P2=1, P1=1 und P0=0 der Empfang besser wird. Bei 121 MHz liegt BER bei <20 und bei 113 Mhz bei 1000-2500. Es gibt aber keine unkorrigierbaren Fehler mehr. P2=0, P1=1 und P0=1 bringt bessere Ergebnisse beim schwachen Signal (erklärt die Wirkung der Dämpfung). Ich habe es allerdings nicht verstanden. Laut Datenblatt sind das Ports, die keinen Einfluß auf die Funktion der PLL haben dürften.
Ich weiß auch nicht, ob die Werte von der Frequenz abhängen. Ich glaube eher, daß QAM64/256 entscheidend ist.
Code: Alles auswählen
static int tua6010_setfreq(struct dvb_i2c_bus *i2c, u32 freq)
{
u32 div;
u8 buf[4];
u8 vu, p2, p1, p0;
/* 47 MHz ... 862 MHz */
if ((freq < 47000000) || (freq > 862000000))
return -EINVAL;
div = (freq + 36118750 + 31250) / 62500;
if (freq > 401250000)
vu = 1; /* UHF */
else
vu = 0; /* VHF */
if (freq > 401250000)
p2 = 1, p1 = 0, p0 = 1;
else if (freq > 117250000)
p2 = 1, p1 = 1, p0 = 0;
else
p2 = 0, p1 = 1, p0 = 1;
buf[0] = (div >> 8) & 0x7f;
buf[1] = (div >> 0) & 0xff;
buf[2] = 0x8e;
buf[3] = (vu << 7) | (p2 << 2) | (p1 << 1) | p0;
return at76c651_pll_write(i2c, buf, 4);
}
Ich habe festgestellt, daß mit den Einstellungen P2=1, P1=1 und P0=0 der Empfang besser wird. Bei 121 MHz liegt BER bei <20 und bei 113 Mhz bei 1000-2500. Es gibt aber keine unkorrigierbaren Fehler mehr. P2=0, P1=1 und P0=1 bringt bessere Ergebnisse beim schwachen Signal (erklärt die Wirkung der Dämpfung). Ich habe es allerdings nicht verstanden. Laut Datenblatt sind das Ports, die keinen Einfluß auf die Funktion der PLL haben dürften.
Ich weiß auch nicht, ob die Werte von der Frequenz abhängen. Ich glaube eher, daß QAM64/256 entscheidend ist.
-
- Interessierter
- Beiträge: 44
- Registriert: Montag 26. Mai 2003, 14:18
Hi,
ich habe mir mal das Datenblatt vom AT76C651 angeschaut, da steht drin das der AT76C651 selber intern ein Quarz hat, der über P0, P1 und P2 gesteuert wird.
Weitherin steht am ende das für Qam256 ein externen Quarz empfohlen wird, da der interne Quarz bei Qam256 wohl zu viele Schwankungen hat, dieser Quarz ist auch verbaut und wenn ich es Richtig interpretiert habe muss damit der externe Quarz benutzt wird der interne Quarz auf den Tabellen-Wert n=2 eingestellt werden, n=2 ist P0=0 P1=0 P2=1, anscheinend gibt es um den externen Quarz zu benutzen dann noch ein weiteres Kommando.
So wie es aussieht wird aber mit dem derzeitigen Treiber der interne Quarz bei Qam256 benutzt und nicht der externe der für Qam256 gedacht ist.
ich habe mir mal das Datenblatt vom AT76C651 angeschaut, da steht drin das der AT76C651 selber intern ein Quarz hat, der über P0, P1 und P2 gesteuert wird.
Weitherin steht am ende das für Qam256 ein externen Quarz empfohlen wird, da der interne Quarz bei Qam256 wohl zu viele Schwankungen hat, dieser Quarz ist auch verbaut und wenn ich es Richtig interpretiert habe muss damit der externe Quarz benutzt wird der interne Quarz auf den Tabellen-Wert n=2 eingestellt werden, n=2 ist P0=0 P1=0 P2=1, anscheinend gibt es um den externen Quarz zu benutzen dann noch ein weiteres Kommando.
So wie es aussieht wird aber mit dem derzeitigen Treiber der interne Quarz bei Qam256 benutzt und nicht der externe der für Qam256 gedacht ist.
-
- Foren-Moderator
- Beiträge: 1119
- Registriert: Sonntag 9. Juni 2002, 13:28
hmm,nightcrawler252003 hat geschrieben:So wie es aussieht wird aber mit dem derzeitigen Treiber der interne Quarz bei Qam256 benutzt und nicht der externe der für Qam256 gedacht ist.
dann müsste man da mal genauer schauen/forschen...allerdings wirds bei mir mit der BN201 auch nicht besser mit den QAM256 Sendern....
Ist jetzt also auch die Frage ob der ext. Quarz von der BN201 angesteuert wird oder nicht....ich hatte vor Wochen mal hier jede Menge I2C Logs von meinen 2 Sagems gemacht...da war jedenfalls kein Unterschied zwischen den BN201 und dem damaligen Yadi Treibern zu erkennen...
Marc
-
- Interessierter
- Beiträge: 44
- Registriert: Montag 26. Mai 2003, 14:18