Forum: Mikrocontroller und Digitale Elektronik Panasonic Plasma TV: EEPROM - Modifikation


von The SphereX (Gast)


Angehängte Dateien:

Lesenswert?

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

von Rainer U. (r-u)


Lesenswert?

The SphereX schrieb:
>> EEPROM-Adresse: 1010000

von falscher Adresse gelesen? das oben wäre 50 Hex, bei Dir A0 hex ?

von Quadro_augustus_longus (Gast)


Lesenswert?

The SphereX schrieb:
> Betriebsstunden: 15251
> Einschaltzyklen: 3419

The SphereX schrieb:
> Baujahr 2009

Schon mal über weniger TV Schauen nachgedacht?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

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
von Jojo S. (Gast)


Lesenswert?

im org. Code wird addr 0..9 gelesen, du liest 1..10, das dürfte ein 
Unterschied sein.
Was macht:
 I2cwbyte Eeprom_adress-1
?

von The SphereX (Gast)


Lesenswert?

@ 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

von Jojo S. (Gast)


Lesenswert?

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?

von Albert (Gast)


Lesenswert?

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.

von The SphereX (Gast)


Lesenswert?

@ 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

von Jojo S. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.