Hi Leute !!! Ich habe einen Panasonic TX-P50GW10 Plasma TV, Baujahr 2009. Unter anderem bei Modellen dieses Baujahrs hat Panasonic eine Schaltung integriert, die in Abhängigkeit der Betriebsstunden und Einschaltzyklen eine Alterung der Plasmazellen durch kontinuierliche Erhöhung deren Grundspannung zu kompensieren versucht. Das Panel wird also über die Jahre immer "heller", was insbesondere beim Betrieb in vollständig abgedunkelten Räumen bei dunklen Bildanteilen auffällt. Kurzum, der Schwarzwert leidet, d. h. schwarz wird dann langsam eher zu dunklem grau. Irgendwann haben dann findige Tüftler herausgefunden, wie man diesen Prozess beeinflussen, d. h. von vornherein verhindern und sogar rückgängig machen kann. Dazu muß man lediglich die Werte für die Betriebsstunden sowie Einschaltzyklen, welche in einem EEPROM auf dem A-Board des TV gespeichert werden, auf 0 zurücksetzen. Der Speicher ist per I2C über den sogenannten "Service Connector" an der TV-Rückseite ansprechbar. Der AVS-Forum-User mironto hat dazu nachfolgend eine sehr ausführliche Anleitung verfaßt. Er bedient sich dabei eines Arduinos. http://panasonic.mironto.sk/ Und sein Kollege audiodane bietet sogar ein selbstentwickeltes Modul zum Kauf an (PMCv2: http://audiodane.dandk.org/pmcv2/), welches am Service Connector angesteckt auf Dauer am TV verbleiben kann und die "Black Level Restoration" immer dann automatisch durchführt, wenn die Betriebsstunden wieder einen bestimmten Wert erreicht haben. Da ich jedoch noch ein paar ATTiny µCs rumliegen habe, mit denen das Ganze ja eigentlich auch problemlos funktionieren müßte, sollte ich mir entsprechend die zumindest für das PMCv2 fällige Investition sparen können!? Soweit meine Überlegung. Also habe ich mir den Arduino-Code http://panasonic.mironto.sk/software/code_read_eeprom/ und die Erläuterungen dazu http://panasonic.mironto.sk/testing/basic_testbed/ in mirontos Anleitung angeschaut, um die Adresse des EEPROM sowie die Speicheradressen, die modifiziert werden müssen, in Erfahrung zu bringen. > EEPROM-Adresse: 1010000 > Speicherbereich: Bytes 1 - 7 Damit habe ich nachfolgend einen BASCOM-Code geschrieben, der die ersten 10 Bytes des EEPROM ausließt und anschließend im interne EEPROM des ATTiny13A speichert. Diesen lese ich dann mit dem PC aus. Bis dahin hat das Ganze problemlos funktioniert, d. h. der TV schaltet in den Service-Modus und ich bekomme auch 10 Werte aus dem EEPROM. ABER: Diese Werte können so nicht stimmen! 0x02 0x38 0x11 0x10 0xFF 0xFF 0xFF 0x51 0x10 0x9D Betriebsstunden (Bytes 1-2): 0x3811 -> 14353 Einschaltzyklen (Bytes 5-6): 0xFFFF -> 65535 Im Service-Menü des Fernsehers kann man sich die beiden Werte auch anzeigen lassen: Betriebsstunden: 15251 Einschaltzyklen: 3419 Aus Erfahrungsberichten geht zwar durchaus hervor, daß die Werte nicht immer exakt übereinstimmen (aus welchen Gründen auch immer), d. h. bei meinem Betriebsstundenwert könnte man wohl noch ein Auge zudrücken, die Einschaltzyklen mit 65535 sind allerdings sehr unwahrscheinlich. Außerdem kann ich die Werte auslesen wann ich will, sie bleiben stets unverändert. Demnach vermute ich, daß hier irgendwas nicht stimmt. Und da ich auch zum ersten Mal mit dem I2C-Bus zu tun habe, wäre es ja durchaus denkbar, daß ich vielleicht im BASCOM-Code einen Fehler gemacht habe. Kurzum: Wenn jemand hier evtl. so freundlich wäre, mal einen Blick auf meinen Programmcode zu werfen, würde mich das sehr freuen :-). Vielleicht habt Ihr ja auch noch andere Hinweise, die es in Bezug auf I2C zu beachten gibt. Grüße, The SphereX
The SphereX schrieb: >> EEPROM-Adresse: 1010000 von falscher Adresse gelesen? das oben wäre 50 Hex, bei Dir A0 hex ?
The SphereX schrieb: > Betriebsstunden: 15251 > Einschaltzyklen: 3419 The SphereX schrieb: > Baujahr 2009 Schon mal über weniger TV Schauen nachgedacht?
Rainer U. schrieb: > bei Dir A0 hex ? 0xA0 bzw. 0x50 wäre eine typische EEPROM Adresse für die 24CXX Reihe, das könnte also stimmen. Der Lesevorgang einer beliebigen Adresse bei diesen EEPROM ist aber nicht ganz ohne. Man schreibt mit der Schreibadresse den Addresspointer und liest dann per ' re-issued Startcondition' und Leseadresse die Daten. Zwischen Adresspointer schreiben und Lesevorgang ist eine STOP Bedingung u.U. schädlich. Anhängend die Sequenz für Random Read. Ob Bascom damit klar kommt, ist die Unbekannte, ebenso, ob die interne Schaltung der Glotze sich das so gefallen lässt.
:
Bearbeitet durch User
im org. Code wird addr 0..9 gelesen, du liest 1..10, das dürfte ein Unterschied sein. Was macht: I2cwbyte Eeprom_adress-1 ?
@ Rainer Unsinn " ... EEPROM-Adresse: 1010000 ... von falscher Adresse gelesen? das oben wäre 50 Hex, bei Dir A0 hex ? ... " Hier war ich etwas verunsichert, ob nun eine 7 Bit oder 8 Bit Adressierung anzuwenden ist. In der Anleitung von mironto wird ja 7 Bit adressiert, also mit &H50 (Schreibadresse) und &H51 (Leseadresse). Auch in der BASCOM-Hilfe ist im Zusammenhang mit I2C von 7 Bit die Rede. Wenn ich allerdings tatsächlich &H50 und &H51 verwende, bekomme ich zehnmal 0xFF, also quasi keine Werte beim EEPROM-Auslesen. Spreche ich den EEPROM mit &HA0 Und &HA1 an, erhalte ich die obengenannten Werte, die aber wie gesagt nicht zutreffend sind. @ mschoedlgen " ... Man schreibt mit der Schreibadresse den Addresspointer und liest dann per ' re-issued Startcondition' und Leseadresse die Daten. Zwischen Adresspointer schreiben und Lesevorgang ist eine STOP Bedingung u.U. schädlich. ... " Und genau so dachte ich eigentlich arbeitet mein Programmcode die ganze Sache auch richtigerweise ab. Den Code habe ich übrigens auch nur von http://rn-wissen.de/wiki/index.php?title=Bascom_und_I2C_EEprom und dann entsprechend angepaßt. @ jojos " ... im org. Code wird addr 0..9 gelesen, du liest 1..10, das dürfte ein Unterschied sein. ... " Hier war ich mir auch nicht ganz sicher, wie nun gezählt wird. Im Zweifel verschiebt sich das Ganze aber auch nur ein Byte nach rechts. Auch dann stimmen die ausgelesenen Werte leider nicht. " ... Was macht: I2cwbyte eprom_adress-1 ? ... " Zumindest in meinem Programmcode NICHTS, denn dort kommt diese Zeile gar nicht vor ;-). Grüße, The SphereX
The SphereX schrieb: > " ... Was macht: I2cwbyte eprom_adress-1 ? ... " > > Zumindest in meinem Programmcode NICHTS, denn dort kommt diese Zeile gar > nicht vor ;-). das war auch ein Vorschlag das so zu machen um die Bytes der addr 0..9 zu erhalten. Aber wie du schon geschrieben hast verschiebt es nur die erhaltenen Bytes um 1 und wenn es trotzdem nicht passt muss was anderes faul sein. Hast du die Leseroutine mal an einem anderen eeprom getestet?
The SphereX schrieb:
$regfile = "attiny13.dat" ' ATMEL
ATTiny13A @ 9,6 MHz
$crystal = 9600000
Bist du dir da sicher? 9,6 MHz ist eine etwas ungewöhnliche
Taktfrequenz.
@ jojos " ... das war auch ein Vorschlag das so zu machen ... " Ach so, dann habe ich Dich falsch verstanden ;-). " ... Hast du die Leseroutine mal an einem anderen eeprom getestet? ... " Leider habe ich keinen EEPROM zur Verfügung. Aber ich sehe schon, daß mir wohl keine andere Wahl bleibt, als mir z. B. einen 24C32 zu besorgen und das Ganze erst mal damit zu testen. Gerade die Schreibroutine, also das worum es bei dem ganzen Projekt eigentlich geht (Reset auf 0), werde ich unter diesen unsicheren Voraussetzungen mit Sicherheit nicht direkt am TV ausprobieren. Ich will ja schließlich noch 'ne Weile was von dem guten Stück haben ;-). @ Albert " ... Bist du dir da sicher? 9,6 MHz ist eine etwas ungewöhnliche Taktfrequenz. ... " Wieso ungewöhnlich? Das ist der Standard-Takt des ATTiny13A (ohne CKDIV8). Grüße, The SphereX
The SphereX schrieb: > Leider habe ich keinen EEPROM zur Verfügung. Hast du einen Monitor mit DVI Anschluss? Die haben ein eeprom drin, Stichwort 'EDID'. Das kann man über den DVI Stecker mit 5V versorgen und an die SCL/SDA Leitungen anklemmen. Was in dem eeprom drin steht bekommt man über Tools für Windows/Linux raus.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.