Hallo, ich plane ein kleines Projekt mit OSD Anzeige. Dazu würde ich gerne den LC74776 verwenden. Den kann man bei http://www.elektronik-fundgrube.de für 5 EUR (bzw. 2,50 EUR) bestellen. Allerdings haben die einen Mindestversandwert von 25 EUR. Da die sonnst nicht interessantes für mich haben fällt das erstmal aus. Hat jemand von euch diesen vielleicht 1 oder 2 mal rumzuliegen oder weiß jemand wo man ihn noch bekommen kann für einen geringeren Mindestversandwert? Danke im Vorraus
@Thorsten: ja stimmt mir gehts recht gut, habe den Umzug hinter mir und es gefällt mir hier in Tübingen sehr gut. Inzwischen habe ich auch mit meinem Zivildienst angefangen und ne total genialen Platz abbekommen. Und zwar in der Uniklinik Tübingen. Die haben eine Funkwerkstatt wo Telefone, Pieper u.s.w. repariert werden, sowie die komplette Kommunikationsanlage gewartet wird. Das sind alles tolle Kollegen und die Arveit macht mir Spaß. Da es nicht ganz mein Lehrberuf ist, kann ich dabei sogar noch was lernen und dieser Zivi wird sich später wohl sehr gut im Lebenslauf machen. Leider ist es finanziell etwas schwieriger geworden. Ich muß nun warten bis die Unterhaltssicherungsbehörde meine Miete übernimmt (während des Zivis) und dann habe ich vielleicht wieder etwas Geld zum basteln. Daher möchte ich mir ja auch nicht 5 oder 10 Stück von diesem IC kaufen, wenn ich nur 1 oder 2 brauche :)
Hallo Netbandit, Wenn Du eine sammelbestellung machen möchtest ich hätte von http://www.elektronik-fundgrube.de noch ein paar sachen die haben möchte. Grüße Mark de Jong,
@Mark: wieviele Sachen hast du zu bestellen? Kommen wir da schon über 25 EUR oder wollen wir warten?
So ein mist. Ich habe heute nochmal etwas genauer ins Datenblatt gesehen und dabei herausgefunden, daß der Text nur eine Farbe haben kann (weiß). Ich hatte gedacht, daß der LC74776 relativ ähnlich zum stv5730a ist. Nun gut, jetzt muß ich erstmal überlegen, ob ich lieber den teuren und selten vorhandenen stv nehme oder ob ich dann doch beim billigen lc bleibe.
Hi Mark, der sieht an sich nicht schlecht aus, doch ist das zugleich ein RGB Vorverstärker, zur Ansteuerung einer CRT Röhre. Grundsätzlich bekommt man da wieder tolle Ideen, was man damit im zusammenhang mit dem heimischen TV so alles anstellen kann, aber für meinen Anwendungsbereich scheint er overkill zu sein. Ich habe leider keine anderen simplen OSD Chips gefunden als eben den stv oder den lc. Von Philips gab (gibt) es auch einen, doch der hat wieder ein RGB Out. Um damit was anfangen zu können müßte ich das Signal in FBAS wandeln, was dann wieder den Preis steigern würde. Trotzdem danke für den Tip, vielleicht kann ich den später mal verwenden :)
Also ich habe mir beide Datenblätter nochmal durchgelesen und schreibe mal die unterschiede auf: STV5730A: + "hohe" Auflösung (11x28 Zeichen) + Hintergrundfarbe Zeichenfarbe Blinken + 128 Zeichen welche jedoch alle selbst definiert werden können + leicht anzusteuern / viele Schaltpläne im Netz zu finden - schwer zu bekommen (bei ELV als Bausatz oder bei RS) - Teuer (ca. 15 EUR) - SMD LC74776: + billig (2,50 - 5 EUR) + DIP - Auflösung 12x24 Zeichen - nur blinken und Hintergrundfarbe - 256 Zeichen, jedoch alle fest und nicht defnierbar - kein Übersicht aller Zeichen gefunden - keine Zeichenfarbe So nun bin ich hin und her gerissen ;) Einerseits reizt mich der STV, weil man mit dem realativ einfach ne ganze Menge machen kann und die 8 Farben für die Zeichen sind auch ganz nett. Leider ist er eben teuer und nur in SMD verfügbar. Normalerweise habe ich kein Problem mit SMD, doch vor meinem Umzug habe ich Ätzmittel und Entwickler zum Müllhof gebracht und müsste mir das nun neu kaufen, was eine zusätzliche finanzielle belastung darstellt. Den LC kann ich mal nebenbei schnell auf eine Lochrasterplatte aufbauen.. dazu ist der LC eben auch schön billig :) Naja ich habe im Keller noch 2 alte VCRs zu stehen, vieleicht finde ich da zufällig einen der beiden ICs drinn und dann währe das Problem vielleicht gelöst. Aber vielleicht bestellt demnächst doch jemand bei dem Versandhaus welches oben angegeben ist, dann würde ich die 2,50 einfach investiren und das Teil mal ausprobieren. Wenn jemand soetwas noch rumzuliegen hat, oder sogar einen STV, dann einfach melden. Andere "einfache" OSD Chips habe ich im I Net leider nicht mehr gefunden :(
Na wer sagts denn... ich habe in einem alten Videorecoder tatsächlich einen OSD Chip gefunden. Den LC74781, welcher zwar noch schlechter ist als der LC74776 (weniger Zeichen) aber vielleicht bekomme ich da für die ersten Tests etwas hin :) Bin trotzdem noch an den besseren LC oder sogar den STV interessiert.
Bei uns im Sperrmüll steht auch gerade ein älterer VHS Videorekorder. Ich kann ja mal aufschrauben und gucken, was da drin ist :)
naja nicht so schlimm, danke dir aber trotzdem. Ich hba eine Entscheidung getroffen. Ich werde demnächst einen Plan + Layout für einen STV5730A entwickeln und bei der Gelegenheit auch meinen noch unbenutzten Atmega32 einsetzen. So kann ich mich mal mit AVRs beschäftigen :)
Hi Mark, der LM1246 ist für meinen Anwendungsbereich leider schlecht geeignet, da ich ja kein RGB Signal erzeugen möchte sondern ein FBAS. Allerdings währe das später interessant, man könnte damit so wie ich das sehe einen TV durch ein zusätzlich eigenes OSD im RGB Weg ergänzen und somit informationen im Bild anzeigen (Für E Mail überwachung, Hausbusüberwachung etc.) Aber trotzdem danke für dein Angebot, für mein derzeitiges Projekt benötige ich einen anderen OSD Chip.
Es ist doch kaum zu glauben: Im Datenblatt des STV steht drinne, daß alle Character außer 00H vom Nutzer definiert werden können. Allerdings wird nirgendwo erwähnt wie das geschehen soll. Nach etwas Google-befragung lese ich in einem englischen Forum, daß es wohl ein Fehler im Datenblatt sein muß, denn die chracter sind fest und lassen sich nur ab Werk ändern. Das ist wirklich ärgerlich :( Aber was solls. Ich habe übrings noch einen anderen guten OSD Chip ausfindig machen können: M35060 von Mitsubishi. Dieser hat mehr Zeichen und mehr Zeilen und soll generell besser und neuer sein. Leider habe ich keine Möglichkeut gefunden den in Deutschland zu bestellen. Also muß ich wohl oder übel beim stv bleiben.
Hallo Thorsten, ich habe einen LC74475 (SMD-Variante des LC74776) in Betireb bekommen. Allerdings habe ich Probleme bei der Initialisierung des Bausteins und nur vereinzelt verschobenen Text hinbekommen (in Schwarz, nicht wie angegeben in Weiß). Ich steuere den IC mit PAL-Signal an und gebe auch PAL wieder aus. Als Quarz habe ich einen Quarz bei 4 mal PAL-Träger genommen mit 17,734MHz. DIe Parametrierung der Register habe ich über einen AtMega8 mit drei Leitungen realisiert. Wenn ich mal nach viel Spielen mal wieder Text im Display habe kann ich frei schreiben wie ich Lust habe. Aber das läßt sich öfters nicht reproduzieren udn geht mit einem Mal nicht mehr. Hab schon laut Datenblatt an allen Registern Bit für Bit herumgeschraubt und versucht mich heranzutasten. Aber komme mit der Grundinitialisierung auf keine brauchbare Lösung. Den letzen Stand meiner Parameter habe ich noch kurz einkopiert, vieleicht weiß auch jemand noch eine Lösung. '|byte 1||byte 2| '7654321076543210 Call SendDataOSD(&b1100000000000000) ' Command 4 Display=off Call SendDataOSD(&b1100000001010111) ' Command 4 Display=on Call SendDataOSD(&b1010000001000000) ' Command 2 Freq=4xosc Call SendDataOSD(&b1011000001000000) ' Command 3 Call SendDataOSD(&b1101100010000000) ' Command 5 PAL-Signal Call SendDataOSD(&b1110000000000000) ' Command 6 Call SendDataOSD(&b1111000001100000) ' Command 7 Call SendDataOSD(&b1111000100000000) ' Command 8 ColorLine=1 Call SendDataOSD(&b1111001000000000) ' Command 9 ColorLine=2 Call SendDataOSD(&b1111001100000000) ' Command 10 ColorLine=3 Call SendDataOSD(&b1111010000000111) ' Command 11 Call SendDataOSD(&b1111010100010001) ' Command 12 Call SendDataOSD(&b1111101100000000) ' Command 18 Falls es interessiert, ic hhabe noch Bilder des Testmonitors gemacht auf dem man etwas sehen kann was der IC so produziert. http://www.mds-5.de/webinfo/data/images/RIMG0584.jpg http://www.mds-5.de/webinfo/data/images/RIMG0585.jpg Und eben der IC selbst den ich verwende http://www.mds-5.de/temp/RIMG0571.JPG Grüße Wolfgang
Hi, ich habe meinen Typen (den ich in einem VCR gefunden habe) gar nicht erst zum laufen bekommen... meiner sagt gar nichts :) Deswegen versuche ich jetzt wieder an den STV zu kommen. Du benutz aber schon die SPI Schnittstelle zur Übertragung der Daten oder?
Servus Netbandit Ich habe es nur über SPI um Laufen gebracht über die Pins /CS, SCLK und SIN (Pins 9 bis 11 am OSD/VPS-Chip. Ich habe nur ein Problem mit dem Rastermaß des SMD der leider ein Rastermaß von 1mm besitzt udn einfach die Platine aus dem Videorecorder herausesägt und dann noch etwas modifiziert mit einem Quarz. Der Quarz ist wichtig gewesen da die Buchstaben sonst horizontal zerrissen waren. Die Dot-Clock (foscx4) ist dann sehr stabil und die Schrift sehr scharf. Das Foto stammt leider von einem total alten Fernseher (Bj. vor 1980) und damit ist die Qualität nicht sonderlich gut, aber zum Test nehme ich den immer. Ich habe einfach noch en Schaltplan gezeichnet nach dem Schaltungsbeispiel im PDF-Datenblatt. Habe die Schaltung soweit umgezeichnet und mit Werten versehen wie sie meiner Anordnung nun entspricht Grüße Wolfgang
Hi @ All, Ich habe nun einigermaßen die Initialisierung herausgefunden. Es ist im Grunde nur eine Reihe von 16-Bit Werten die gesendet werden müssen. Dann kann man direkt per SPI auf dem OSD schreiben. Der zu den Initialdaten passende Anzeigetext ist der folgende: http://www.mds-5.de/webinfo/data/images/RIMG0585.jpg Die Sequenz ist wie folgt (Bit 8 bis 15 und Bit 0 bis 7) Einfach rechts rotierend über Bit 8 ausgeben im angegebenen Protokoll im Datenblatt des LC74775. Byte 1 Byte 2 7654321076543210 ---------------- 1100000100000000 1100000000000111 1010010100001010 1011010101011111 1101000000000000 1110000000000000 1111000001100000 1111010100000001 1100000000000111 Damit werden jetzt die ersten beiden Zeilen in doppelter Größe dargestellt und die nachfolgenden Zeilen in normaler Größe, Die unten befindlichen Zeilen dürfen normal nicht beschrieben werden da ein doppelt so großes Zeichen zwei Zeilen benötigt. Somit ist Zeile 1 = Zeile 1+2 und Zeile 2 = Zeile 3 und 4. die nachfolgende kleine 3. Zeile ist die Zeile 5 usw. Damit sind es nun 2 Große Zeilen und 12 - 4 Zeilen = 8 kleine Zeilen. Zum obrigne Schaltplaan von mir noch eine Abänderung. Quarz ist mit dem Gehäude an GND angelötet und die Bürdekondensatoren sind entfernt. Dann ist der Text sehr stabil. Grüße Wolfgang
Glückwunsch, daß du es geschafft hast :) Meiner sagt wie gesagt garnicht... der Quarz schwingt und auch die PLL, aber aus dem Ausgang kommen nichtmal Syncronsignale raus. Wenn ich ein Signal in den Eingang gebe, dann kommt aus dem Ausgang was raus, allerdings ohne Text. Nun frage ich mich, ob ich ihn falsch initialisiert habe oder ob er eventuell zerschossen ist. Wie sieht es bei dir aus, wenn du den LC nicht initialisierst.. hast du dann was am Ausgang? Du schreibst, daß wenn du die Daten nach "rechts rotierend über Bit 8 heraus gibst" also ich habe es bis jetzt immer mit der Hardware SPI meines PICs versucht...
Hallo Netbandit, Das ein Bild vom Eingang am Ausgang kommt ist richtig. Von sich aus macht er vorerst keine Bildsignale. Du hast den OSD sicher falsch initialisiert. Ich habe an diesem IC fast alles kurzgeschlossen bei den Tests und er hat alles überlebt ohne Probleme. Ich hbae eine eigene Routine programmiert die das 16-Bit Wort richtig mit /CS, SIN und CLK übergibt mit den im Datenblatt angegebenen Zeiten. Das Ganze Timing ist wie folgt: OsdWert = 16-Bit Zahl ... Cs = 0 2µs Pause Schleife 16x Clk = 0 Sin = OsdWert(Bit 8) 2µs Pause Clk = 1 2µs Pause OsdWert rechts rotieren (16-Bit) 4 µs Pause Cs = 1 2µs Pause ... Das war im Prinzip übersichtlich dargestellt meine Routine die das versorgt. Ich selbst benutze drei ganz normale digitale Ports als Ausgänge und steuere diese einfach an mit dem oben angedeuteten Prinzip. die Zeiten in den Pegeln habe ich relativ kurz dimensioniert soweit es gieng und die Übertragung noch erfolgreich war. Müßten also auch bei dir soweit funktionieren. Noch eine Frage, vieleicht weiß einer eine Lösung, ich habe nach einem Bauteil für Eagle in der Bibliothek gesucht das ein solches DIL30SD-Gehäuse besitzt. Bin jedoch nicht fündig geworden, auch nicht im Downloadbereich von CAD-Soft. Wenn jemand so etwas verfügbar hat würde ich mich freuen wenn er es mir zusenden könnte. Grüße Wolfgang
Hi Wolfgang, hmm ich habe mich schon totgefummelt an dem Teil :) Aber ich werde nochmal ein Versuch starten. was ist die absolut minimale Konfiguration, damit irgendetwas aus dem Ausgang rauskommt was irgendwie messbar ist? Mal gucken wie es bei mir läuft.. ürbings verwende ich den LC74781 das ist an sich der gleiche IC nur mit weniger Pins und weniger Funktionen...
Servus Netbandit! Es fehlt nach der von mir beschriebenen Initialisierungssequenz nur noch ein Text der angezeigt werden soll. Das geschieht im einfachsten Fall mit einem Positionieren an Zeile 1 und Spalte 1 mit einem ABC. Die Codefolge würde dafür nach der Initialisierung wie folgt aussehen damit du etwas sehen kannst: Byte 1 Byte 2 7654321076543210 ---------------- 1000000000000000 Positionieren auf Zeile 1 und Spalte 1 1001000001000001 Ausgabe "A" 1001000001000010 Ausgabe "B" 1001000001000011 Ausgabe "C" Wen du in der 3. Zeile und 3. Spalte auch einen Text ausgeben willst mit "ABC", dann würde es folgendermaßen aussehen: Byte 1 Byte 2 7654321076543210 ---------------- 1000000100000010 Positionieren auf Zeile 3 und Spalte 3 1001000001000001 Ausgabe "A" 1001000001000010 Ausgabe "B" 1001000001000011 Ausgabe "C" Bitte darauf achten das die Bits zuerst von Byte 1 von Bit 0 nach 7 und dann von Byte 2 von 0 nach 7 geschickt werden. Ist genau die Folge die im Datenblatt zu lesen ist (Seite 10, 11 und 7). Grüße Wolfgang
Hi Wolfgang, hab mich lange nicht mehr gemeldet. Ich habe mir einen STV5730A besorgt und mit dem etwas herumexperimentiert. Der geht wirklich ganz gut, ist aber ähnlich wie der LC qualitativ nicht allzu dolle. Aber er reicht. Habe dir ein Bild von den ersten Testergebnissen angehangen :)
@Netbandit: Ist die Qualität der Zeichen nicht so gut, oder die Qualität des durchgeschliffenen Videosignals? Ich will nämlich auch sowas bauen, aber wenn die Qualität des Videosignals nicht so berauschend ist, dann eher nicht. Es kann aber auch an deinem Schaltungsaufbau liegen, da Video ja recht hochfrequent ist.
@Lerner naja 5,5MHz sind in der Fernsehtechnik noch NF :) Also das mit dem durchgeschliffenen Bild weiß ich leider nicht, da ich den STV5730A nur als Bilderzeugenden Baustein nutze. Am Schaltungsaufbau wird es wohl auch nciht liegen. Der Fehler tritt auf, wenn in einer Zeile sehr viel Text ist und der dann auch noch möglichst hell. Dann fangen die Buchstaben an langsam kursiev zu werden und der Zeichenhintergrund bekommt einen leich anderen Farbton (etwas dunkler oder heller) Solange du nur ein paar Buchstaben in einer Zeile darstellst hält sich der Fehler in Grenzen, wenn du dieses Klötzchentextzeichen in der Zeile oft drinne hast, dann ist der Fehler sehr stark. Ich denke er reicht aus um eben etwas Text auf ein Videobild zu bringen aber keine großen "Textgrafiken". Du mußt unbedingt die Pins LESCREEN (23) und LECHAR (22) mit Potis versehen um dort nachzuregeln. Je nach Einstellung ist der Fehler nämlich stärker oder schwächer :) Viel Spaß
wenn du willst kannst du meinen schaltplan haben :) Sag mir mal wie stark bei dir der Fehler ausgeprägt ist, würde mich ja mal interessieren...
Gerne, kannst ihn ja mal posten. Sag mal, geht mit dem Ding auch folgendes? An Eingang liegt ein Signal an, der 74776 synct zum Eingangssignal, stellt aber trotzdem die Zeichen auf einem dunklen Hintergrund da. Man kann dann zwischen Videosignal und dem Text umschalten, ohne das er den Sync zwischendurch verliert.
Also die Zeichen können schon auf einen nicht farbigen Hintergrund dargestellt werden, wenn man im VideoIn Modus arbeitet. Aber ob das Hin und her Schalten ohne Syncverlust funktioniert... hmm da bin ich etwas skeptisch. Frag mal Uli ( http://www.ulrichradig.de/ ) der hat auch ein Projekt mit dem STV5730A realisiert. Grundsätzlich ist der STV5730A ein sehr einfacher Chip. Was aber gehen dürfte: Du schaltest den VideoIn Modus (Mixedmode) ein und schaltet gleichzeitig das Display aus. Schreibst dann deine Zeichen in den Speicher des STVs und machst dann das Display an und wieder aus. Das dürfte dann ohne Syncverlust laufen, da der STV das Zeichendisplay im Hintergrund syncronisiert. Falls es doch nicht so geht mußt du so ein umschalten per software realisieren. Aber eben leider ohne Farbe (im Mixed Mode)
@netbandit: Wo hast Du den STV5730A nun herbekommen? Ich würd auch gern damit etwas spielen. @Wolfgang: Kann der LC74776 nur schwarzen Text oder auch weißen? Gruß, Ethan
Servus Ethan! Der LC74776 kann im Grundzustand schwarz und weiß darstellen. Das hängt von der Hintergrund-Helligkeit im Bildsignal ab. Wird es dunkel, dann schaltet es auf Weiß udn und bei Hellem Bild eben entsprechend auf Schwarz. Allgemein können aber Farben dargestellt werden. Schau mal im Datenblatt. Unter PAL kann nur das Blau nicht angewählt werden. Bei SECAM geht das mit Blau eben auch noch. Grüße Wolfgang
Ich hab mittlerweile entdeckt daß ELV einen Bausatz mit dem STV anbietet für 29 EUR incl. MwSt, da hab ich auch gleich alle weiteren benötigten Teile für die Außenbeschaltung dabei, und einen MAX232 kann man immer gebrauchen :-) also wenn ich das wirklich anfange, dann werd ichs wohl dort holen. Trotzdem wäre der billige 74776 interessant für extrem-low-cost-anwendungen, wenn die Außenbeschaltung und die Programmierung nicht aufwändiger sind... Kann man diese automatische Farb-Umschaltung notfalls auch abschalten? Das wäre für meine Anwendung nicht angebracht. Hat jemand schon mal mit einem PIC (evtl. sogar einem 18Fxxxx) den 74776 angesteuert und würde mich seinen Code benutzen lassen? Auch Code für den STV auf einem PIC18Fxxxx würd mich interessieren, aber ich hab noch gar nicht richtig danach gesucht, vielleciht liegts schon überall rum ;-)
Hallo, durch den Bausatz von ELV bin ich damals erst auf den STV5730A gestoßen... Leider besteht der Bausatz aus zwei Teilen. Der eine Teil für 30 EUR beinhaltet nur den STV5730A und einen AT89C4051 (fertig programmiert und geschützt) sowie ein 24C16 und ein paar kleine Bauelemente. Ich glaube du kommst günstiger, wenn du dir das alles separat bestellt + 15 EUR für den STV5730A. Ich habe bei RS Components auch gleich den Quarz mit 17,734MHz mitbestellt, da es den bei Reichelt nicht gab. Code für einen ATMega32 könnte ich dir geben (wenn ich mit meinem Projekt fertig bin).
Ja soetwas in der Art habe ich ja selbst gemacht. Nur das mein Programm etwas umfangreicher mit einem wesendlich höheren Befehlssatz ist (ca. 53 Befehle)
Ich bau zurzeit (also momentan sitz ich am Layout, Programmierung folgt wohl nächste Woche, Teile hab ich schon alle hier) etwas ähnliches wie das hier (http://www.u-nav.com/osd-gps.htm) aber als SMD (viel kleiner+leichter) und mit dem 18F2550, der auch gleich diverse andere Sachen in Zukunft mit anzeigen/steuern soll (Akkuspannung, evtl. Magnetkompass, evtl. gewisse Autopilot-Funktionen durch Servoansteuerung, etc.). Gewählt hab ich den 18F2550 weil er mit 28pins noch kompakt ist, trotzdem sauviele Möglichkeiten hat (USB, I²C, PWM, LV-ICSP, etc...).
Achja, einen eingebauten 2.4Ghz Videosender wirds auch haben, und trotzdem noch billiger als 150$ sein.
Hallo Wolfgang, ich hab inzwischen den 74776 verbaut, bekomme aber kein Display. Wenn ein Signal anliegt, bekomme ich es auch wieder raus. Ich hab mal deine Initialisierungssequenz probiert, aber es tut sich nichts. Leider ist im Datenblatt des IC nichts erklärt, sondern nur die Befehle aufgelistet. Hat sich an deinen Werten noch was geändert? Ich hab sie mal etwas analysiert und du setzt an einer STelle den Oszi auf 2x, obwohl du wie ich einen 4x verwendest. Ich hab mir im Analyser auch angeschaut, was ich hinschicke und es sieht richtig aus. Als Timing sind ja nur Mindestwerte angegeben, also sollte es auch mit ewig langen Taktzyklen funktionieren. Ich hab jetzt 10µs pro Halbwelle. Jemand einen Tip?
Oh je, das gleiche Problem hatte ich ja auch mit einem 74776 kompatiblen Chip.. ich habe dann irgendwann aufgegeben :)
Servus Lerner! Hast du das SPI-Prozokoll auch mal wirklich von Hand progmmiert? Also ohen Harware-Register? ICh habe es extra mit einer eigenen Routine komplett so programmiert wie ich es schon am Anfang angegeben hatte mit der Schleife und den Calls. Die funktionierende Version habe ich wirklich mit 2x osc ansprechen müssen, ich habe alerdings 4x PAL-Frequenz als Quarz drin, also ca. 17MHz. Ist mir zwar unklar warum, aber es hat so funktioniert. Und die Codesequenzen funktionieren wie ich sie angegeben hatte, hab es mehrfach nach Power-On der kompletten Hardware getestet, bei mir tat sich auch lange nichts. Grüße Wolfgang
So, ich hab jetzt was hinbekommen. Ich hatte ein Problem mit meinem Taktgenerator. Ich hab jetzt auch einen Text auf dem Bildschirm. Nach dem aktivieren des Textes hab ich nur wilden Zeichensalat auf dem Bildschirm, den ich aber durch Zeichen überschreiben kann. Muß man den Chip generell beim Initialisieren löschen? Ich mußte übrigens 4x für den Takt einstellen, damit es geht. Liegt aber vielleicht daran, daß ich einen externen Oszillator verwende.
Nach dem alles im durchscheinenden Modus alles gut funktioniert, hab ich jetzt mal versucht, weiße Schrift auf schwarzen Hintergrund hinzubekommen. Der Hintergrund wurde bei mir aber nur grau. Kann ich den Level der Hintergrundfarbe irgendwie beeinflußen? Mit Command4 hab ich schon ein bischen rumgespielt, aber nichts erreicht. Vielleicht elektrisch? Beim STV5730 gibts ja da was entsprechendes, beim LC74776 wüßte ich jetzt nicht.
Ich hab ein ähnliches Problem mit dem STV5730A: Ich will weiße Schrift, schwarz umrandet, ins laufende Videosignal einblenden. Das funzt zwar im Grunde, aber die Schrift ist grau und halbtransparent, statt weiß. Alles andere ist ok. Ich such noch passende Parameter aber die Doku ist nicht gerade die am leichtesten zu verstehende... Als Schaltung hab ich, wie im Datenblatt bzw. einer anderen Beispielschaltung vorgeschlagen, beide Videoausgänge (1+2) mittels je 470R zusammengeführt.
Muß dazu sagen, ich hab die Pins LESCREEN und LECHAR auf Masse gelegt, und Bit 10 des ControlReg auf 0 gesetzt, dachte eigentlich das Ding wird schon weiß darstellen wenn er es können soll... Vielleicht sollte ich auch die Pins von Masse befreien, vielleicht zieht das die helligkeit runter? Im Bild die Kissenförmigen Linien sind nur im Foto, keine Ahnung woher das nun kommt. Die Bildqualität ist an sich recht gut, ich bin ganz zufrieden. Das Kamerabild (Hintergrund) zeigt den Blick aus dem Chaos meines Bastelplatzes, die 4 LEDs hängen an dem Bus zwischen OSD und PIC.
Also bei mir gab es mit Bit 10 im Cntrl Reg. auf 0 nur massive Probleme. Ich war sehr glücklich, daß ich einfach zwei Potis damals mit in das Layout eingeplant habe. Das würde den "Grau"-Fehler sicher gut erklären. Bei mir ist die Schrift übrings auch grau und nicht weiß, wenn ich mit LESCREEN und LECHAR versuche die Schrift weiß zu regeln, dann kommt es zu sehr unschönen Fehlern (schräge Schrift, ausreißen am Anfang und am Ende der Zeile, abhänig von der Buchstabenzahl auf der Zeile). Daher hatte ich schon oben erwähnt, daß ich die Qualität des STV5370A für Textgrafikanwendungen als unzureichend empfinde. Um wenige Infos in einem Videosignal oder auf einen farbigen Hintergrund darzustellen reicht sie allerdings aus. Der Fehler mit der Halbtransparenz scheint woanders zu liegen. Wie hast du VOUT1 und VOUT2 beschaltet? Bei mir ist VOUT1 an der Basis des Transistors dran und VOUT2 unbeschaltet. Allerdings gibt es Pläne im Netz und auch im Datenblatt wo VOUT2 über einen Widerstand zu VOUT1 eingekoppelt wurde. Dies ruft dann eine Halbtransparenz hervor in Abhänigkeit des Widerstandverhältnisses. Vielleicht ist dies bei dir der Fall.
Das mit der Transparenz hab ich hinbekommen, wenn man den einen Bit im Control entsprechend setzt (auf high impedance). Aber das mit der Textfarbe will mir nicht in den Kopf, es gibt einige Bilder im Netz von Projektem mit diesem Chip die richtig schöne weiße Schrift haben. Da muß es doch einen Weg geben... Hab zufällig beim Rumbasteln entdeckt, wenn man die Leitung zwischen Pins 1+28 mit dem Videoausgang versehentlich kurzschließt, ist dei schrift plötzlich knallweiß :-) (allerdings ohne Rand, also offenbar jedes erzeugte Pixel wird weiß). Vielleicht ist das irgendein Hinweis...? Momentan hab ich auch das Problem, daß ich ungefähr 20 Mal resetten (programm neustarten) muß bevor mein Testbild auf dem STV erscheint, es sieht fast so aus als wären datenfehler bei der übertragung, aber ich hab nun schon die geschwindigkeit runtergedrosselt ohne Ende (mehrere µS Pulslänge, auch im ms-Bereich schon probiert) und das scheint nicht zu helfen... Vielleicht irgendwelche anderen Störungen, die die Übertragung stören? Ich hab mich ziemlich genau an den Plan im Datenblatt gehalten.
Regel die Abstände zwischen den SPI Übertragungen runter da muß eine Pause von mehreren ms rein soweit ich weiß.
Laut spezifikation 4*maxHZ in µs, das sind bei mir (da ich kein Zoom verwende) 4 µs. Bei 12 MIPS muß ich dafür also 48 NOPs machen, das tue ich auch. (Hab sogar momentan testweise 125µs Pause drin). Interessanterweise hatte ich bei den ersten Versuchen keine Pausen drin, also kamen die Datenbits in etwa 100ns Takt, das hat auch noch (fast) so gut funktioniert wie jetzt...
Ah ja stimmt, bei mir sind es 16µs (hab gerade noch mal nachgeschaut). Wie resettest du den STV? Genau wie im Datenblatt? $3000,$3000,$00db,$1000? Vielleicht simmt irgend ein anderes Timing nicht? (keine 100ns Pause zwischen /CS und Datenanfang etc.)
Ich bin alle timings mehrfach sorgfältig durchgegangen (die meisten sind 100ns oder 200ns lang, bei 12 MIPS hat jeder Befehl 83ns (wenn ich richtig gerechnet hab?), also sollte es immer reichen solange 3 Befehle pro Pegelwechsel verarbeitet werden), hier und da ein NOP eingefügt, hilft nix... Ich bin relativ überzeugt daß es kein timingproblem mehr ist... Ich hab zwei Code-Varianten, eins von heute früh, umständlich und schlecht programmiert, aber funktioniert (zumindest nach 3-5 resets). Dann das zweite, etwas besser optimierte, das aber heute nachmittag irgendwann aufgehört hat zu funktionieren und nun krieg ich es nicht mehr hin, obwohl ich teilweise bei JEDEM pegelwechsel eine 125µs pause gemacht hab :-( vielleicht mag jemand ja mal reinschauen und sieht den fehler (ist für den PIC18F2550, nicht Atmel, aber vielleicht ist der Code trotzdem verständlich genug?)
Hi, ich habe lange nicht mehr mit PIC Assembler gearbeitet und kenne auch nur die PIC16 Typen... aber folgendes ist mir aufgefallen: Wai2 nop ; 83 cycles = 10µs (assuming 12 MIPS) Also bei 12 MIPS ist ein Zyklus 83ns lang. 83ns * 83 = 6,9µs Darauf baust du dann auf und wartest diese Zeit 249 mal und hoffst dabei auf 2,5ms zu kommen. Das sind in Wirklichkeit aber nur 1,7ms. Die wartest du am Anfang 200mal = 344ms anstatt der erwarteten 500ms. Ich warte am Anfang aber nur 250ms bevor ich den STV resette, also daran liegt es nicht. Dafür arbeite ich mit einem SPI Takt von nur 125KHz = 8µs pro Taktzyklus. Das ist also wesendlich langsamer als du :) genauso wartest du unten bei wait125 nicht 125µs sondern maximal 42µs Ich rechne jetzt für den decfz und den bra Befehl je 83ns = 166ns * 256 = 42,4µs Was aber laut Datenblatt auch ausreichend ist. Ansonnsten habe ich zumindest in der Senderoutine keine Fehler gefunden. Sie scheint ja auch sehr identisch zu sein zu Version 1 und die ging ja. Kannst du mal gucken was passiert wenn du die Senderoutine von Version2 in Version1 verwendest? Vielleicht liegt der Fehler auch im Reset bzw. in der Initialisierung selbst? Ich führe das Reset aus, dann springe ich zum Statusregister (12) und schicke die 5 Datenwords rüber. Danach schicke ich die 11 Zeilenwords (so ein standartwert)rüber und danach springe und danach die Restlichen 308 Zeichenwords (Zeichen $0B). Und nun fange ich eifach an mit ihm zu arbeiten...
Ach so was ich vergessen habe: Wie kommst du auf 12MIPS? Soweit ich weiß arbeiten die PIC18 maximal nur mit 40MHz und das sind dann nur 10MIPS oder?
Hi, vielen Dank für die Analyse :-) Mein PIC läuft mit 24Mhz Taktgeber (Quarzoszi) und wird intern verdoppelt, also 48 Mhz (wenn ich alles richtig gemacht hab). Die 125µs Zeitschleife hab ich mit einem Oszi getimt, also scheint das zu passen, wenigstens auf 10% genau. Vielleicht ist meine Taktung dann nicht so wie ich es gern hätte, aber hauptsache die Timings stimmen einigermaßen, und das tun sie, ich hab mal alle NOPs rausgenommen aus der Senderoutine und am Oszi hatte ich immer noch keine Pulse unter 100ns. Mittlerweile hab ich eine andere Vermutung, vielleicht ist mein PCB design schuld, ich hab nämlich etwa 6cm lange Leitungen für den Bus liegen, CSN/CLK/DATA dicht nebeneinander, evtl. kommen die Signale nicht sauber beim STV an, ich mess gleich mal direkt an den STV pins. Obwohl auch dann, bei mehreren ms Pause beim Takt, sollten kaum noch störungen auftreten... oder?
Also man kann einen PIC theoretisch mit 80MHz laufen lassen (Intern 20MIPS) wenn man einen 40MHz Quarz nimmt und ihn intern verdoppelt? Das wäre ein Grund wieder auf PIC umzusteigen ;) Also an der leitungslänge liegt es wohl nicht, meine Leitungen sind ähnlich angeordnet und ungefähr genauso lang. Versuche mal die CLK ebenfalls auf 125KHz zu reduzieren... (4µs low und 4µs high) vielleicht gibt es deswegen bei mir keine Störung?
ok, das war's nicht, das data-signal kommt noch wunderbar scharf an, sooo hoch sind die frequenzen offenbar doch nicht (siehe foto, timebase=10µs, also etwa 1µs pro Puls) hmmm... jetzt bin ich langsam mit meinem latein am ende... bei der osd.asm bekomme ich nach etwa 5-10 resets das gewünschte bild, beim osd2.asm (und weitere versionen) vielleicht nach 100 resets oder so, obwohl da kaum änderungen drin sind...
Ich glaube 24Mhz externer takt (48 mhz intern) ist maximum, guck sonst mal bei microchip.com ins datenblatt der 18fxxxx serie. ich hab gleich mit diesem recht großen Modell angefangen, damit ich bei einem modell bleiben kann und noch luft für viel rechenzeugs hab. dewegen bleib ich auch bei assembler, auch weil ich früher viel mit dem 6502 in maschinencode gemacht hab (hatte damals (1988 oder so) keinen assembler, hab alles auf papier in opcodes umgerechnet) und es mich gereizt hat, mal wieder richtig minimaliustisch-effizient zu programmieren, wie in den guten alten zeiten (als man gar keine andere wahl hatte g) allerdings muß ich nach etwas Einarbeitung sagen, es wär für manche sachen fast einfacher, mehrere kleine pics für mehrere zwecke einzusetzen, die dann miteinander sprechen, so muß man nicht so sehr drauf achten daß man mit timings für mehrere devices parallel durcheinanderkommt... oder vielleicht ein RTOS (real-time OS / multitasking) probieren :-) gibts ja auch für den PIC
Hat dieser PIC den du da verwendest kein Hardware SPI? Selbst mein damaliger PIC16F877 hatte das schon. Versuche es mal darüber, dann wird dir der großteil des Timings abgenommen. Ich bin auch ein Assemblerfan, weil es eben so direkt ist und ohne Umwege :) Auch ich vertrete die Theorie, daß es manchmal besser ist mehrere kleinere Prozessoren einzusetzen als einen großen :)
was ist "spi" :-) ser/par interface? i²c? ich hab mal im datenblatt rumgelesen aber soweit ich es verstanden habe, unterstützen die interfaces nur 8-bit transfers, keine 16/8/0 bit... aber vielleicht täusch ich mich auch...
Serial Peripheral Interface also Serielle Datenübertragung, jedoch nicht I2C. Beim SPI werden immer 8bit auf einmal übertragen. Das ist aber nicht schlimm, denn das /CS Signal schaltest du weiterhin manuell. Also wenn du zwischen zwei Übertragungen das /CS Signal nicht ausschaltest wirkt das wie eine 16bit Übertragung. Im Datenblatt meines PIC16 war das unter der Bezeichnung "MASTER SYNCHRONOUS SERIAL PORT (MSSP) MODULE" zusammengefasst und funktioniert auch gleichzeitig als I2C Schnitstelle (wird über ein Bit umgeschaltet). Wie das beim PIC18 weiß ich leider nicht.
Hmmm, ja der PIC18F hat auch SPI, ich hatte es noch nicht näher betrachtet, u.a. weil die meisten Beispiele die ich gefunden hab, das nicht benutzen sondern "manuell" fahren, also hab ich das auch so gemacht... Ich werd mich mal einlesen und es damit probieren... Mal was anderes, der PIC18F hat ja auch USB, allerdings wohl nur als Endgerät gedacht, nicht als Master/Host/wie auch immer man den PC im USB-Bus nennt. Mich würd interessieren ob ich mit dem PIC auch ein USB-Master realisieren kann, der z.B. von einer USB-GPS-Maus die Daten empfangen kann, oder einen USB-WLAN-Stick (oder Speicherstick, oder etc...) ansprechen kann.
Das haben die ja toll gemacht :-( die SPI pins sind fast alle auf PORTB, die UART (RS232) fast alle auf PORTC... Fast alles unabhängig voneinander nutzbar... ABER: UART RxD ist auf demselben Pin wie SSI TxD, genau die beiden Funktionen, die ich getrennt bräuchte. Grummel!!!
Also das ist ein kompliziertes Thema. Ich habe mich noch nicht in die USB Materie eingearbeitet, aber soweit ich weiß ist das USB vom PIC18F nur auf Slave ausgelegt. Dafür ist eben die Ansteuerung recht einfach, da vieles per Hardware gemacht wird. Es gibt allerdings auch Controller die USB Master haben, jedoch spielen die in einer anderen Liga (32Bit). Darüber hinaus gibt es von einigen Herstellern spezielle USB Copntroller. Eventuell haben die auch welche im Angebot die USB Master bewältigen können. USB Slave ist schon kompliztiert genug, USB Master ist eben nochmal ein anderes Thema. Allerdings würde ich auch bei diesem Thema sagen: Grundsätzlich ist es nicht unmöglich, nur mit der vom PIC18F gebotenen Hardware alleine ist es sicher nicht möglich.
Tatsächlich, beide auf dem Pin 18. Na das ist aber ein grober Fehler von Microchip... Naja das kommt eben bei raus, wenn man versucht viele Funktionen in ein kleines Gehäuse zu bringen. Aber zum Glück ist es der RXD (Recived Data) also meiner Meinung nach der Pin der RS232 Empfängt. Du mußt dann eben nur über die Kontroll-Leitungen des RS232 während einer SPI Übertragung den RS232 Sender aufhalten, damit er dir nicht dazwischen funkt.
Das Problem daran ist nur, daß die RS232 Daten zeitkritisch sind, und möglichst ohne jede Verzögerung zur Verfügung stehen sollen, und es wird auch noch recht viel /ständig übertragen (was somit auch ausschließt, den rs232-empfang manuell zu machen). Nun könnte ich im Datenstrom regelmäßige Lücken abwarten (das Format ist bekannt, also wären die Lücken vorhersehbar) und dann schnell den OSD updaten. Aber das macht die Sache wieder komplizierter. Also muß ich wohl entweder die SPI von Hand machen (wie bisher jetzt auch, nur daß da leider noch ein Bug drin ist) oder doch einen kleinen µC extra für den OSD nehmen... bah. Ich hatte mich so drauf gefreut alles wunderbar praktisch in einem zu machen...
Ich hab grad gesehen, daß ich nirgends den bank selector benutzt hab, laut Datenblatt verwendet jeder Speicherzugriff defaultmäßig den BSR, den ich nie gesetzt hab. Wenn man aber überall ",0" dranhängt wird immer die access bank benutzt, bei der die untere hälfte aus nutzbaren ram (GPR) und die obere aus den steuerregistern (SPR) besteht. Allerdings tut sich jetzt auch nicht mehr als vorher, also hab ich entweder nix verbessert, oder sogar verschlimmert...
Ich kenne mich zu schlecht mit dem inneren Aufbau der PIC18 aus, als daß ich dir da eine Hilfe sein könnte :) Aber versuche die ganze Ansteuerung einfach nochmal per Hardware SPI und wenn das hinhaut, dann weißt du ja schonmal woran an liegt :)
Also ich bin jetzt überzeugt daß es nicht primär am code oder steuerzeiten liegt. Wenn der chip mal nen richtigen init macht, dann läufts auch minutenlang fehlerfrei mit scrollendem text, also an der reinen datenübertragung liegts nicht. aber ich muß manchmal bis zu 100 mal (!) resetten bis es mal geht, zwischendurch werden immer wieder mal effekte von fehlern sichtbar (zwischen 2 resets wird die verstärkung auf +6db raufgesetzt, dann wieder runter, dann wird der hsync gestört (störzeilen im 1cm abstand im bild), dann verliert sich der vsync, dann passt wieder alles, und irgendwann mal kommt dann der richtige text. resette ich dann nochmal, fängt alles wieder von vorne an. kann es nicht irgendwas an der schaltung sein, irgendein kondensator vergessen oder so? eigtnlich hab ich alles nach datenblatt gebaut... siehe schaltplan, ist zwar noch nicht ganz die fertige version, aber die peripheriebeschaltung des STV wurde genau so umgesetzt. ich hab auch schon versucht, 1/2 sekunde (!) pause zwischen jedem übertragen byte zu machen, hilft auch nix...
endlich hab ich reproduzierbare ergebnisse! hab beim rumprobieren festgestellt, daß irgendein write zum control register NACH dem screenlöschen und zoomsetzen etc. sofort wirkung zeigt, es funktioniert zwar immer noch nicht alles ganz erwartungsgemäß, aber wenigstens tut es das was es tut jedesmal gleich und nicht erst nach tausend reset-versuchen freu so komm ich ja wenigstens mal weiter...
Hi, Also das erste was mir auffällt ist, daß du einen 17.754MHz Quarz hast und ich einen 17.734MHz Quarz (wie im Datenblatt beschrieben). Ich weiß zwar nicht genau wie sich eine Abweichung auswirkt (sollte ja immerhin ein vielfaches der PAL Farbträgerfrequenz sein) aber ich hatte mit einem anderen Quarz der leicht daneben lag einige Probleme (Bilder nur noch s/w etc.). Dann ist dein CSN Pin in der Schaltung auf GND. Das kann aber in deinem Aufbau nicht sein, da du ihn ja in deinem Programm schaltest und falls er doch auf GND sein sollte dürfte der STV gar keine Daten verarbeiten (da er nie weiß wann das Ende erreicht ist). Außerdem sind BAR, LESCREEN, LECHAR auf GND. Dagegen spricht zwar an sich nichts, aber eventuell belastet das den STV. Also vielleicht mal über einen PULL Down auf GND oder über einen PULL UP auf HIGH. Abgesehen von diesen wohl eher optischen Fehlern kann ich auf die schnelle nicht wirklich einen groben Fehler entdecken (bis auf den mit CSN der aber wohl in deinem Aufbau nicht drin ist)
Hmm die Resetabfolge für ich so gestalten: -> Pointer auf Zoomregister(12) setzen -> Zoomregister übertragen (12) -> Colorregister übertragen (13) -> Controlregister übertragen (14) -> Positionregister übertragen (15) -> Moderegister übertragen (16) -> Zeilenstatus für Zeile 0 übertragen -> Zeilenstatus für Zeile 1 übertragen ... -> Zeilenstatus für Zeile 9 übertragen -> Zeilenstatus für Zeile 10 übertragen -> Buchstabe 0 übertragen -> Buchstabe 1 übertragen ... -> Buchstabe 306 übertragen -> Buchstabe 307 übertragen Also ohne zwischendurch den Pointer neu zu setzen...
Hi, richtig, den CSN hatte ich nur im ersten Entwurf drin weil ich da noch nciht gesehen hatte daß er wirklich angesteuert werden muß (dachte zuerst an eine CS leitung aus den alten tagen, wo Bausteine noch parallel angesteuert wurden (Datenbus) :-) und hab gedacht, wenn die Datenleitungen eh dediziert für den STV sind, brauch ich das nicht. Aber egal, ist ja korrigiert, wie du vermutest, weil sonst würd ja gar nix gehen. Das mit der Quartzfrequenz ist ein Tippfehler von mir, es ist tatsächlich ein 17.73447MHz (zusammen mit dem STV bei RS gekauft, genau wie Du, andere Frequenzen haben die kaum, haben die wohl nur wegen dem STV überhaupt im Angebot (und bin froh drum!) Wozu ist BAR überhaupt da? Ich werd daraus nicht schlau. In irgendeiner Beispielschaltung hab ich gesehen daß man alle unbenutzten Inputs auf GND legen kann, also hab ich das getan. Hab allerdings mittlerwiele LECHAR wieder hochgebogen und stattdessen über 4.7k nach GND, 3.3K nach +5V auf 2.9V gelegt und damit sind nun meine weißen zeichen richtig schön weiß :-) (siehe Foto) Das mit den Timings war tatsächlich nie das wirkliche Problem, ich hab jetzt wirklich alles auf die 100-200ns laut Spezifikation getrimmt und es funzt auch (leider manchmal erst nach 2-3 resets, aber es hält sich nun im Rahmen, bei weiteren Resets gehts immer sofort). Die Schlüsselentdeckung war: Nach dem Reset, Init, Beschreiben aller Zeilenregister und Löschen des Screenbuffers, muß aus irgendeinem Grund mal kurz auf Fullscreen geschaltet werden, bevor MixedMode funktioniert. Das hat mich jetzt echt die 3 Tage gekostet, weil ich nie Fullscreen probiert hab, ich brauchs ja nicht, wollte nur mixed mode benutzen. Seit ich jetzt in der Init Sequenz auf Fullscreen (C0=1) schalte und später nach dem Schirmlöschen wieder auf Mixed (C0=0) gehe, funktionierts endlich. Einerseits bin ich froh es entdeckt zu haben, andererseits ärgert mich das nun wirklich sehr, so ein scheiss bug.. Und daß nach 10-jähriger Lebensdauer dieses Chips im Netz kein Wort davon erwähnt wird, obwohl schon soviele Leute dafür Projekte gebaut haben... versteh ich nicht... aber vielleicht ist es nur in der Revision, die ich erwischt hab... tx_osd movwf count bsf PORTB,OSD_CLK ; make sure clk is high nop ; for safe timing bcf PORTB,OSD_CSN ; set csn low (selected) nop ; for safe timing loop1 bcf PORTB,OSD_CLK ; clk output low rlcf OSD_L ; rotate low byte left into carry rlcf OSD_H ; rotate high byte left into carry bc hi ; branch if carry bcf PORTB,OSD_DATA ; set OSD data out low bra end1 hi bsf PORTB,OSD_DATA ; set OSD data out high end1 nop ; for safe timing (CLK low = 200ns) bsf PORTB,OSD_CLK ; CLK high --> data valid decfsz count ; skip next cmd if count is now zero bra loop1 ; process next bit bsf PORTB,OSD_CSN ; csn high (deselected)
Regsiter und Seiteninhalt so in einem Rutsch übertragen dürfte nicht gehen, da STRU[7:6] bei den Registern 11 ist, und DEPL[4:0] geht von 12-16 aber muß bei dem Row Attribute auf 0 sein, oder schreibst Du einfach 17...31 mit Müll voll, bis Bit 5 auf 1 springt? Anschließend würde zwar irgendwann DEPL und STRU auf 0 springen aber BUF wär dann auf 1, Du würdest dann in Reihe 1 (nicht 0) anfangen zu schreiben. Also zwischendurch den Pointer neu setzen muß schon sein...
Oh ich sehe gerade, ich habe doch tatsächlich die Zeilenregister und Zeichenregister zwischendurch adressiert. Sorry, ist schon ne Weile her, daß ich den Code geschrieben habe. Mixed Mode habe ich nie ausprobiert ich arbeite nur im FullMode. Du sagst, daß bei dir alles schön weiß ist etc. Könntest du mal in den FullMode schalten, einen blauen Hintergrund nehmen und das Zeichen $77 auf eine ganze Zeile schreiben? Bei mir kommt dann ein häßlicher Fehler. Die Zeichen werden kursiev und es kommt zum Ausreißen am Zeilenende und Anfang. Ich vermute, daß es sich dabei um noch einen unprotokollierten Fehler des STV hanelt.
Hi, mit blau hab ichs noch nicht probiert, aber wenn ich das im mixed mode mache sieht es relativ sauber aus, bis auf leichte helle schlieren rechts am rand (verlängerte zeile sozusagen), das liegt aber sehr wahrscheinlich daran daß mein videofunkempfänger noch nicht abgestimmt ist (ich hab gleich nen sender mit eingebaut). als ich zu testzwecken den monitor noch direkt dran hatte, war es absolut sauber. mit schwarzem hintergrund ist der effekt etwas stärker. ich hoffe ich krieg das mit besserer filterung (spannung/signal) am empfänger noch hin. momentan hab ich das problem, daß im fullscreen mode die zeilen zerpixelt werden, die buchstaben sehen aus wie aus lego und jemand hat jedes einzelne halb zertrümmert... Das GPS(NMEA)-parsen ist ein mega code geworden... andere Leute (http://www.vermontficks.org/gpsd.htm) haben hier 4kB an code gebraucht, weil sie es in C programmiert haben, das ist natürlich bequem aber ich machs lieber in asm... es paßt jetzt auch in 300bytes :-) (zumindest soweit wie ich momentan bin) was halt echt nervig ist, ist das Fehlen einer indizierten adressmethode... selbst der nun 25 jahre alte 6502 im Atari 800XL (auch als 6510 bekannt im C64) hatte einen LDA(addr,y) befehl (beim PIC wäre das wie "movf F+offset,W" aber beim PIC gibts das höchstens im erweiterten PIC18F befehlssatz... Macht also eine Pufferung sehr schwer, muß alles in Echtzeit verrechnet und abgelegt werden.
Hi, vielleicht hast du noch die Möglichkeit das ganze im Fullscreenmode zu testen. Diese Schlieren stellen bei mir die Vorstufe für das von mir beschriebe Verfahren da. Je mehr Zeichen in der Zeile geschrieben werden, desto stärker werden die Schlieren, die Zeichen fangen langsam an kursiv zu werden und irgendwann reißt der Zeilenanfang und das Ende komplett aus. Mit den LESCREEN und LECHAR Reglern kann ich das etwas nachbesern, wobei dadurch die Zeichen sehr dunkel werden. Also habe ich einen Kompromiss gefunden zwischen diesem Fehler und der Zeichenhelligkeit. Natürlich könnte dies auch an einem Defekt am STV oder an einer fehlerhaften Außenbeschaltung oder sogar fehlerhaften Einstellung liegen, jedoch habe ich nach sehr intensiven Suchen keine Möglichkeit gefunden diesen Fehler zu umgehen. Den Mixed Mode habe ich nie getestet, da ich hier in meiner Werkstatt kein Videosignal zur Verfügung habe. Mein Code ist jetzt inzwischen sehr groß (ca. 8KByte) und ebenfalls in Assembler. Sicher sind noch viele Teile nicht besonders effektiv, dafür ist auch der Funktionsumfang sehr groß. Ich habe zwei Unabhänig laufende Laufschriften, welche in verschiedener Geschwindigkeit und Laufrichtung laufen können und maximal 256 Zeichen je Laufschrift enthalten können. Außerdem speicher ich im RAM (2KByte) die kompletten Einstellungen und Zeichen zwischen (quasi parallel) was es mir ermöglichst das komplette Bild mit allen Einstellungen in einem externen EEPROM abzulegen und später wieder einzuladen. Bei diesem EEPROM (128kbit) passen dann 9 Bilder rein. Alle Einstellungen sowie Servicefunktionen können über RS232 oder einem 8bit Datenbus (da bin ich gerade bei) an den µC übertragen werden. Insgesammt sind es über 50 Befehle die ich dem µC senden kann. Das ganze soll als so eine Art Grafikkarte ein OSD für einen HDD MP3 Player funktionieren. So kann ich dann über den TV durch die Verzeichnisse der HDD gehen, Playlisten bearbeiten und Einstellungen vornehmen. Also mit anderen Worten habe ich noch eine ganze Menge vor mir :)
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.